Commit graph

452 commits

Author SHA1 Message Date
Andriy Rysin
e94f58dd1b Make kwin compile without OpenGL libs
REVIEW: 101418
2011-09-29 23:27:16 -04:00
Marco Martin
a95019e713 Merge branch 'master' into ksplash/ksplash-qml 2011-09-26 14:11:29 +02:00
Martin Gräßlin
6e15c0c208 Change timers to QElapsedTimers
Instead of calculating the elapsed time from epoch clock, using
a QElapsedTimer as well as reusing the timer object instead of
creating a new one in the scene each frame.

REVIEW: 102473
2011-08-29 06:48:44 +02:00
Thomas Lübking
e930a50f8a coding style 2011-08-28 20:25:58 +02:00
Thomas Lübking
9d4a7c3d19 drop ignored damage events from the X11 event queue 2011-08-28 14:23:56 +02:00
Martin Gräßlin
4fb110383d Drop an unused timer 2011-08-28 10:05:00 +02:00
Thomas Lübking
12b9b1c79e fix xsync protocol
BUG: 160393
REVIEW: 102311
2011-08-24 01:39:34 +02:00
Martin Gräßlin
0c47ca5e97 Remove defines for X extensions
The following dependencies have become mandatory build deps:
* XRandR
* XRender
* XFixes
* XDamage
* XComposite
2011-08-13 16:46:43 +02:00
Martin Gräßlin
987bc837d9 Remove define KWIN_HAVE_OPENGL_COMPOSITING
Due to changes in build system we have always either OpenGL or OpenGL ES.
This allows to remove the KWIN_HAVE_OPENGL_COMPOSITING define. In the
effects the define is kept as KWIN_HAVE_OPENGL which can be used in
future to build also an XRender only effect system.
2011-08-13 16:46:43 +02:00
Martin Gräßlin
b7d2b16b8d Remove define KWIN_HAVE_COMPOSITING
Building the workspaces requires to have all the build dependencies
which were required for KWIN_HAVE_COMPOSITING to be set. This allows
us to remove all the ifdefs for this and gives us a cleaner code.
2011-08-13 16:46:43 +02:00
Thomas Lübking
2843436393 add some damageRatio = 0.0 resets, required for esp. GTK+ popups 2011-08-13 10:36:35 +02:00
Martin Gräßlin
c3cf4482a3 Move GLX detection from kwinglobals to CompositingPrefs
Removes the Extension::glxAvailable() from kwinglobals and
implements the functionality in CompositingPrefs, where it
is only needed. There used to be one additional check in
scene_opengl_glx.cpp which is moved into composite.cpp
before the OpenGL Scene is created.

REVIEW: 102002
2011-07-27 18:34:31 +02:00
Arthur Arlt
04fd63b201 Move scene->windowAdded() to Toplevel's setupCompositing() function
Moved the function call of scene->windowAdded() to setupComposition() of
Toplevel. The function calls from Workspace were removed, since
windowAdded() is called by setupCompositing() now, which is called anyway.

REVIEW: 102047
2011-07-25 12:27:43 +02:00
Philipp Knechtges
fc5e74f4e2 kwin: make decoration repaints window-specific
This gives the new Scene::paintSimpleScreen more room for optimizations.
2011-07-15 10:27:11 +02:00
Thomas Lübking
f0492f9b02 fix shadow fix
(cherry picked from commit 55986b32de9e5f5f66ac0c3448b26863cfc2dee0)
2011-07-13 23:08:03 +02:00
Thomas Lübking
d20b841713 fix GL-less kwin compilation
BUG: 277667
2011-07-13 04:09:35 +02:00
Thomas Lübking
7057bb2c25 fix new shadows
(cherry picked from commit 6f03f28509834cb145b8548dfd0322cc6d62364f)
2011-07-12 22:20:21 +02:00
Philipp Knechtges
85c5181a81 kwin: Avoid painting damaged areas which are occluded by another opaque window.
So far we have not used the information that damage events are window-specific, resulting in the
behavior that we repainted the damaged area although it might be hidden behind another window.
E.g. the CPU-Monitor plasmoid is almost all day occluded by a browser etc. and before this patch
we have been repainting the appropiate area every time the plasmoid has been updated.

Thx to Thomas Lübking for optimizing the patch.

REVIEW: 101846
2011-07-11 19:35:29 +02:00
Martin Gräßlin
b4de899b2c Fix broken creation of OverlayWindow
The HAVE_XCOMPOSITE_OVERLAY define had not been moved to the new
overlaywindow.cpp file causing the OverlayWindow to not be created
at all. In fact after moving the define to the new file the code
did not even compile as that code parts still used m_overlayWindow
instead of m_window.

The regression would have been easy to spot when testing with all
backends as the GLES/EGL backend still requires the overlay window.

CCMAIL: a.arlt@stud.uni-heidelberg.de
2011-07-11 19:12:56 +02:00
Thomas Lübking
cf66e4c86d KWin: Make damageNotifyEvent handling more aggressively aggregate rects
and skip damage handling if the window is already completely damaged.
Also avoid QRegion handling during this since we know about the rects and
the region is handled when adding the damage anyway.
2011-07-10 00:10:43 +02:00
Arthur Arlt
d8072be54d Move OverlayWindow from Workspace to its own class
All the functionality of Overlay Window is moved to its own class
OverlayWindow. It is created and owned by class Scene, since almost
all function calls are called from this class.

REVIEW: 101866
2011-07-09 19:08:48 +02:00
Martin Gräßlin
e766fe0a82 Remove the compositing too slow checks
The heuristic never worked reliable.

REVIEW: 101750
2011-06-26 09:18:08 +02:00
Philipp Knechtges
2c0b0e9f18 Performance bugfix.
In case we use OpenGL compositing and KWin is started with the raster graphicssystem,
the decoration gets painted with the raster backend.
REVIEW: 101370
2011-05-18 21:27:11 +02:00
Thomas Lübking
364ce6fbfc Allow the user to rearm OpenGLIsUnsafe KWIn autocrash protection
Also add a usable "doesn't work why" info and WARN! the user about clicking the rearm button.
Merge "OpenGLIsUnsafe" and "CheckIsSafe" config keys
Move the entire checking into CompositingPrefs

BUG:250865
FIXED-IN:4.7
2011-05-11 20:16:08 +02:00
Ivan Čukić
0f7f8a833e KWin effect support for ksplashqml 2011-05-01 16:17:21 +02:00
Martin Gräßlin
f97c92fde9 KWin does not require a decoration plugin any more
With config option "NoPlugin" in group "Style" it is possible to
no request that KWin should be run without a decoration plugin.
This is a change for Plasma Active to properly support no decorations.

As well if a decoration plugin cannot be loaded, KWin will no longer
exit, but continue to run just without a decoration. As a nice
side-effect changes in Oxygen no longer destroy my kwin build ;-)

BUG: 224440
FIXED-IN: 4.7.0
CCMAIL: sebas@kde.org
2011-04-28 16:05:23 +02:00
Martin Gräßlin
320de6abc6 Merge branch 'master' into oxygen-shadows
Conflicts:
	kwin/atoms.cpp
	kwin/atoms.h
2011-04-04 18:09:59 +02:00
Thomas Lübking
31278d570e add rule/property based composite blocking 2011-04-04 01:59:52 +02:00
Martin Gräßlin
24f36b7fae Shadow is read when Scene::Window is created 2011-04-03 12:13:20 +02:00
Martin Gräßlin
89aa8ee8db Fix repainting of shadow after window closes
Unmanaged needs to repaint the complete geometry including shadow
when it ends compositing. Therefore we need to track the shadow
passing to deleted correctly. Disadvantage: when turning off
compositing the shadow is kept. Need to solve in a better way!
2011-04-01 21:49:44 +02:00
Martin Gräßlin
12220a0d59 Initial implementation of new Shadows in KWin
For a complete documentation of new functionality refer to:
http://community.kde.org/KWin/Shadow

The current implementation includes a new Shadow class and Toplevel
holds a pointer to an instance of this class. The Shadow class reads
the data from the X11 Property. There is one extended class located
in SceneOpenGL to render the shadow.

Compositor is adjusted to include the shadow region into the painting
passes.

Implementation for XRender still missing and Shadow needs to respond
to size changes of the Toplevel to update cached shadow region and
WindowQuads.
2011-03-27 12:33:07 +02:00
Martin Gräßlin
b52975a57e Merge branch 'libkwineffects'
The branch contains the first step in reworking the kwineffects
library. This includes:
* replacing virtuals by signals and slots
* dropping some unused methods
* remove KWin::TimeLine

More to come.

Conflicts:
	kwin/workspace.cpp
2011-03-16 19:46:59 +01:00
Martin Gräßlin
6e7e1c530b Remove transformWindowDamage effects hook
It is not used by any effect, so we save one complete go through
all effects pass on each window damage.

The functionality which could be provided by this hook can also be
implemented using the window damaged signal.
2011-03-15 20:38:37 +01:00
Martin Gräßlin
88d50727ee WindowDamaged becomes a signal 2011-03-12 15:04:22 +01:00
Thomas Lübking
0c5d47f3ae unify composite activation, 'Enable' only controls initial state 2011-03-06 22:35:13 +01:00
Fredrik Höglund
09dc033e8c kwin: Use QDateTime::currentMSecsSinceEpoch() instead of QTime::currentTime(). 2011-02-01 16:38:06 +01:00
Fredrik Höglund
2d81d28e7a kwin: Use QBasicTimer instead of managing the timer ID manually. 2011-02-01 16:35:51 +01:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Thomas Lübking
337e1eac18 revert vsync strategy, fix timeouts
differecens to patch atteched to 258971:
- removed debug statements
- fixed indention...
- NON vsync strategy does not rely on the estimation, but on the time passed since the last repaint trigger, allowing a precise framerate

CCBUG: 258971


svn path=/trunk/KDE/kdebase/workspace/; revision=1210445
2010-12-31 13:14:11 +00:00
Thomas Lübking
e2dcfff601 commiting http://svn.reviewboard.kde.org/r/6120/#review9304
this should improve v'syncing, maybe v'synced "smoothness"
remaining and exposed issue are "dirty textures" w/o damage events (see the requst description)
can be diminished by increasing MaxFPS above the fastest update (or shadowed below the slowest one)
CCBUG: 258971

svn path=/trunk/KDE/kdebase/workspace/; revision=1207577
2010-12-18 16:51:43 +00:00
Thomas Lübking
c7a3a21116 support nvidias proprietary refreshrate through asking nvidia-settgins
svn path=/trunk/KDE/kdebase/workspace/; revision=1201396
2010-11-27 15:27:54 +00:00
Martin Gräßlin
3e689ff201 Cache generated Lanczos textures.
This provides a significant performance improvement especially for Present Windows.
Whenever a lanczos resampling is done the resulted texture is cached, till the
window is damaged or a texture of different size is required. This means that
for a taskbar thumbnail the resampling only occurs once unless the window is damaged
and for present windows it only occurs when the windows are resized and then only
after the windows have already been moved. Highlighting windows does not cause
a resampling any more.
See review request http://svn.reviewboard.kde.org/r/5708/

svn path=/trunk/KDE/kdebase/workspace/; revision=1191874
2010-11-01 10:46:11 +00:00
Martin Gräßlin
12918d3ee8 Disabling the fallback to XRender. It's causing more trouble than the benefits.
With Intel drivers currently the self check at KWin startup fails (no idea why) and KWin falls back to XRender. This is probably an explanation for all the complaints about slow kwin in 4.5 and the missing effects. So let's fail and make it possible to restart compositing via systemsettings and alt+shift+f12.
Nevertheless it would be nice to fix the the failing selfcheck...

svn path=/trunk/KDE/kdebase/workspace/; revision=1148315
2010-07-10 08:44:40 +00:00
Aaron J. Seigo
c83c168c16 'composit[e|ing]' is technical jargon; use the terminology we use elsewhere in the UI (particularly the config UI) consistently everywhere. tested on real life users(tm)
svn path=/trunk/KDE/kdebase/workspace/; revision=1103845
2010-03-16 01:17:36 +00:00
Lucas Murray
8960c552d2 Remove OpenGL driver whitelist; Add protection against crashy glXQuery
functions and share the value with the KCM; Fallback to XRender
compositing if OpenGL fails to work correctly; Rearrange setting order
in options.h slightly and fix variable names

svn path=/trunk/KDE/kdebase/workspace/; revision=1079919
2010-01-25 10:02:08 +00:00
Jacopo De Simoi
71a73acae8 Avoids a nasty race condition that caused corrupted window decorations
BUG:199735


svn path=/trunk/KDE/kdebase/workspace/; revision=1046461
2009-11-08 19:47:58 +00:00
Lucas Murray
20f1a79d04 Less warnings please.
svn path=/trunk/KDE/kdebase/workspace/; revision=1031490
2009-10-05 09:47:13 +00:00
Hugo Pereira Da Costa
3004fba3ce notify decorations when compositing is suspended
svn path=/trunk/KDE/kdebase/workspace/; revision=1021802
2009-09-10 05:05:44 +00:00
Martin Gräßlin
47366d5720 Reset Repaints on a Toplevel has to include the decoration shadows if used.
svn path=/trunk/KDE/kdebase/workspace/; revision=1006788
2009-08-04 12:20:33 +00:00
Martin Gräßlin
8981223956 Reimplement addRepaintFull() in Client and add the padding to the repaint region.
CCBUG: 201596

svn path=/trunk/KDE/kdebase/workspace/; revision=1004121
2009-07-29 11:48:55 +00:00
Martin Gräßlin
ba27d2ebb0 Copy decoration pixmaps to Deleted. By that we see the decoration also when having a fade out animation.
As this is a bigger commit I will wait with backporting to 4.3 for something about two or three weeks and will only backport if nobody yells.
BUG: 201780

svn path=/trunk/KDE/kdebase/workspace/; revision=1004096
2009-07-29 11:07:28 +00:00
Lucas Murray
ae71d8300f Be more strict in KWIN_COMPOSE handling.
svn path=/trunk/KDE/kdebase/workspace/; revision=987507
2009-06-26 08:36:25 +00:00
Lucas Murray
ce0a650857 Display debugging messages when compositing mode has been forced by
KWIN_COMPOSE or KDE_FAILSAFE environment variables.

svn path=/trunk/KDE/kdebase/workspace/; revision=987409
2009-06-26 01:28:15 +00:00
Lucas Murray
a20ba6a900 Prevent KWin from automatically disabling compositing when the user
changes the system time or timezone.
BUG: 184607

svn path=/trunk/KDE/kdebase/workspace/; revision=986962
2009-06-25 10:09:09 +00:00
Martin Gräßlin
9868b062c1 When finishing compositing we have to trigger a decoration repaint or there will be artefacts.
svn path=/trunk/KDE/kdebase/workspace/; revision=961903
2009-04-30 22:08:33 +00:00
Martin Gräßlin
63edbaff81 Show current compositing state (disabled/suspended/active) in Desktop Effects KCM and add a button to resume/suspend compositing. So it should be easier for the user to resume compositing if he does not know about the shortcut.
CCBUG: 188118

svn path=/trunk/KDE/kdebase/workspace/; revision=955636
2009-04-18 10:07:16 +00:00
Martin Gräßlin
253793dfff Use custom notification for compositing suspended via dbus.
svn path=/trunk/KDE/kdebase/workspace/; revision=949932
2009-04-06 09:33:43 +00:00
Martin Gräßlin
9174c43eb0 Show notification when compositing is suspended via dbus.
svn path=/trunk/KDE/kdebase/workspace/; revision=948322
2009-04-02 19:14:48 +00:00
Aike J. Sommer
f30b3e2373 Resize the overlay-window to allow compositing to continue working after xrandr-events.
CCBUG:180994

svn path=/trunk/KDE/kdebase/workspace/; revision=937637
2009-03-10 08:06:49 +00:00
Luboš Luňák
1c2ba6ea17 I forgot to actually implement the resetCompositing() slot for the previous commit.
svn path=/trunk/KDE/kdebase/workspace/; revision=924759
2009-02-11 14:29:32 +00:00
Luboš Luňák
4d82d2291e Don't needlessly setup compositing twice during startup.
Xrandr seems to like to send events about "changes" right
after application startup.


svn path=/trunk/KDE/kdebase/workspace/; revision=923829
2009-02-09 14:31:42 +00:00
Lucas Murray
cbea219964 Missing code from mouse polling commit. Stop polling when compositing is
disabled and increment the effect API version number.

svn path=/trunk/KDE/kdebase/workspace/; revision=920963
2009-02-04 07:09:47 +00:00
Lucas Murray
752d5fa642 Extracted mouse polling out of the composite timer to allow effects to
detect mouse movement and modifier key changes even when KWin is idle.
As the track mouse effect requires polling to always be active disabling
it by default to prevent wasting CPU usage in the default install.

svn path=/trunk/KDE/kdebase/workspace/; revision=919711
2009-02-01 15:16:52 +00:00
Martin Gräßlin
6a25ea49ee Deactivate scene idle during active fullscreen effect. So mouse events aren't dropped and mouse is usable in fullscreen effects, again. Of course this is not the best solution.
BUG: 177226

svn path=/trunk/KDE/kdebase/workspace/; revision=906064
2009-01-05 13:34:41 +00:00
Martin Gräßlin
f07944389e Redirect windows when there is an active fullscreen effect. This solves the problem of unredirected fullscreen applications blocking effects like present windows or desktop grid.
BUG: 176996

svn path=/trunk/KDE/kdebase/workspace/; revision=906014
2009-01-05 12:52:27 +00:00
Luboš Luňák
e53a9e8701 Maybe slightly better debug output.
svn path=/trunk/KDE/kdebase/workspace/; revision=904310
2009-01-01 21:17:58 +00:00
Jason vanRijn Kasper
fb0a01228f This change allows KWin to use the new NETWinInfo2 class (binary
compatibility class) and subsequently properly handle the
_NET_WM_FULLSCREEN_MONITORS EWMH spec hint.

svn path=/trunk/KDE/kdebase/workspace/; revision=885362
2008-11-17 08:03:39 +00:00
Laurent Montel
5535a9de5e Fix iterator
svn path=/trunk/KDE/kdebase/workspace/; revision=883047
2008-11-11 23:09:11 +00:00
Albert Astals Cid
5f7174a27e Saying
"If this was only a temporary problem, you can resume using the 'Empty' shortcut.\n"
if no shortcut is found makes no sense, reworked to avoid it

Tried my best to do correct indentation but make failed

svn path=/trunk/KDE/kdebase/workspace/; revision=878365
2008-10-31 23:54:52 +00:00
Albert Astals Cid
6581455b93 we are showing the shortcut to the user so use QKeySequence::NativeText to get it translated
svn path=/trunk/KDE/kdebase/workspace/; revision=878357
2008-10-31 23:49:17 +00:00
Luboš Luňák
c12172d291 A hack to disable unredirect for login splashscreen, better solution would
be to add support for effects refcounting the window.
BUG: 172276


svn path=/trunk/KDE/kdebase/workspace/; revision=871255
2008-10-14 10:34:35 +00:00
Hasso Tepper
b19ba265f6 Fix compile on systems without XComposite.
svn path=/trunk/KDE/kdebase/workspace/; revision=870784
2008-10-13 09:56:13 +00:00
Albert Astals Cid
882b909364 Add const & so we don't copy all that objects for nothing, faster effects for free!
svn path=/trunk/KDE/kdebase/workspace/; revision=869928
2008-10-11 12:38:46 +00:00
Luboš Luňák
9ad12bc391 Add one more check for paints taking too much time, this time
also detect not-so-bad-but-still-slow paint times over a longer
period of time, i.e. the old check is for systems which are pathetically
slow, this one is for systems that are just slow. Possibly may need
tweaking for cases like high system load, but right now it seems
that e.g. a compilation running cannot trigger this check because
it cannot cause many long repaints in a row.


svn path=/trunk/KDE/kdebase/workspace/; revision=866636
2008-10-01 14:29:56 +00:00
Luboš Luňák
f8163eac9d Use setOverlayShape() instead of doing it manually.
svn path=/trunk/KDE/kdebase/workspace/; revision=863939
2008-09-23 15:22:25 +00:00
Luboš Luňák
e433f92374 Avoid useless repeated processing of checking whether to unredirect.
svn path=/trunk/KDE/kdebase/workspace/; revision=863933
2008-09-23 14:51:21 +00:00
Luboš Luňák
503bf3e767 Add a check that measures time needed for one compositing pass.
If three successive ones take more than 1 sec, suspend compositing,
as that very likely means the system is totally incapable of decent
compositing. Perhaps may need little tweaking.


svn path=/trunk/KDE/kdebase/workspace/; revision=861906
2008-09-17 13:42:12 +00:00
Luboš Luňák
8eedfa3456 Another attempt at self-check, this time done directly during setup
(so that it can fail immediately).


svn path=/trunk/KDE/kdebase/workspace/; revision=859960
2008-09-11 16:37:26 +00:00
Andreas Hartmetz
af3b302b05 be more strict about acceptable frame intervals - system time really *can* change without notice.
svn path=/trunk/KDE/kdebase/workspace/; revision=859340
2008-09-10 04:35:28 +00:00
Andreas Hartmetz
56a323877e fix kwin-composite lockup at time of day == 00:00:00. also note that compositeRate is misnamed, it is an interval. CCMAIL:l.lunak@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=859300
2008-09-09 23:14:52 +00:00
Luboš Luňák
c6230db535 Stop the compositing timer when idle.
FEATURE: 155694


svn path=/trunk/KDE/kdebase/workspace/; revision=854913
2008-08-30 15:28:47 +00:00
Luboš Luňák
19a9dd4095 Fix the flicker caused by unredirecting code - apparently setting the same
shape with X is not a no-op.


svn path=/trunk/KDE/kdebase/workspace/; revision=854107
2008-08-28 20:43:40 +00:00
Luboš Luňák
7704c8f3fa Apparently it is possible to switch compositing between starting
and getting a zero-timeout timer.


svn path=/trunk/KDE/kdebase/workspace/; revision=852355
2008-08-25 19:49:42 +00:00
Luboš Luňák
14ae8d2dc9 Support for unredirecting fullscreen windows, i.e. games etc. can paint directly
and not be slowed down by going through compositing. Turned on and no UI option
in the naive hope that it won't cause any real problems. Maybe effects doing
window previews should get API to suspend unredirect though.


svn path=/trunk/KDE/kdebase/workspace/; revision=851742
2008-08-24 13:32:57 +00:00
Luboš Luňák
09d81b7e87 Cache the result of XQueryTree().
svn path=/trunk/KDE/kdebase/workspace/; revision=851667
2008-08-24 10:35:45 +00:00
Luboš Luňák
ffc4bc5040 Make sure idling does not actually cause big load by a repeating
quick timer caused by dynamically adjusting the next repaint
when using vsync. Ideally there should be no idle ticks at all,
somewhen later.
BUG: 154270
CCBUG: 155694


svn path=/trunk/KDE/kdebase/workspace/; revision=850941
2008-08-22 15:57:31 +00:00
Luboš Luňák
49660876c1 When confirming compositing in the configuration module,
wait for KWin to initialize it and report if it fails.
FEATURE: 161900


svn path=/trunk/KDE/kdebase/workspace/; revision=847403
2008-08-15 11:09:07 +00:00
Luboš Luňák
ff13bd5ed5 Don't assign the return value to a member variable.
svn path=/trunk/KDE/kdebase/workspace/; revision=845784
2008-08-12 11:45:06 +00:00
Luboš Luňák
63b01aff5d Rework handling of mapping and unmapping windows, in particular:
- the NormalState/IconicState things in ICCCM need to match exactly
  the real mapping state, so ensure that, no matter how superfluous that is
- extend the option for having live window previews either for all
  windows or for only all shown windows (default)
FEATURE: 163385


svn path=/trunk/KDE/kdebase/workspace/; revision=845772
2008-08-12 11:02:58 +00:00
Luboš Luňák
085abe58b2 Don't lose the desktop submenu in Alt+F3.
svn path=/trunk/KDE/kdebase/workspace/; revision=843596
2008-08-07 11:51:20 +00:00
Luboš Luňák
20a2c36677 Discard Deleted windows when finishing compositing, so that they're
not reused if compositing is started again.
BUG: 152914


svn path=/trunk/KDE/kdebase/workspace/; revision=838646
2008-07-28 11:49:43 +00:00
Luboš Luňák
f56fd92540 No initial overlay window contents.
BUG: 166514


svn path=/trunk/KDE/kdebase/workspace/; revision=837331
2008-07-24 13:00:06 +00:00
Luboš Luňák
905b5676b2 Try to handle gracefully the case when there are many small changes
on the screen and the X server has absolutely no problem with flooding
KWin with a huge number of damage events, overloading both the X connection
and QRegion.
BUG: 163643


svn path=/trunk/KDE/kdebase/workspace/; revision=836664
2008-07-22 18:20:42 +00:00
Luboš Luňák
79bb84e119 Use KWin's internal stacking order for managed windows, not the X one.
Fixes composited drawing of windows on other desktops.
BUG: 161436


svn path=/trunk/KDE/kdebase/workspace/; revision=828060
2008-07-04 14:06:23 +00:00
Luboš Luňák
5d0f9b66dd Fix last commit.
svn path=/trunk/KDE/kdebase/workspace/; revision=827111
2008-07-02 10:11:16 +00:00
Luboš Luňák
2bae5f1f4b Fix a possible pixmap leak.
svn path=/trunk/KDE/kdebase/workspace/; revision=826826
2008-07-01 14:51:38 +00:00
Luboš Luňák
ecedf122b3 Disable the code that prevented clients not-yet-ready-for-painting
from being shown. There is a bug somewhere and it should be improved
in general.
BUG: 160393


svn path=/trunk/KDE/kdebase/workspace/; revision=825817
2008-06-29 13:11:01 +00:00
Lucas Murray
d515abb82c Added screenNumber() and addRepaint(QRegion) to effects API
svn path=/trunk/KDE/kdebase/workspace/; revision=822215
2008-06-19 14:16:21 +00:00
Luboš Luňák
ed2d087f9b Shortcut for temporarily suspending compositing. Useful when
one wants to run something graphically intensive like a game
or when compositing goes awry and one wants to see the checkbox
that turns it off.
FEATURE: 155581


svn path=/trunk/KDE/kdebase/workspace/; revision=810031
2008-05-19 21:48:47 +00:00
Luboš Luňák
4c5fc70aa3 One more hopefully useful document.
svn path=/trunk/KDE/kdebase/workspace/; revision=807814
2008-05-14 19:49:29 +00:00
Luboš Luňák
5d1c5d355f Skip windows not ready for painting before computing screen area to redraw.
svn path=/trunk/KDE/kdebase/workspace/; revision=807441
2008-05-13 20:49:56 +00:00
Luboš Luňák
9bd87cb271 Redo timing of next painting with vsync used, try harder not to miss
every other sync just by a small time.


svn path=/trunk/KDE/kdebase/workspace/; revision=806443
2008-05-11 12:03:42 +00:00
Luboš Luňák
53cc35b649 Show the composite overlay window only before the first painting pass
actually needs to flush the output to the screen. Avoids windows
temporarily disappearing during KDE startup or similar visual glitches.


svn path=/trunk/KDE/kdebase/workspace/; revision=806387
2008-05-11 09:48:34 +00:00
Luboš Luňák
2f8d2751a1 Fix handling of stacking order of unmanaged windows. Could maybe use a little
bit more of optimization.
BUG: 157878


svn path=/trunk/KDE/kdebase/workspace/; revision=800581
2008-04-24 12:53:03 +00:00
Luboš Luňák
2fb2f76168 Reshuffle compositing init a bit, and make KWIN_COMPOSE work even
if compositing is turned off in options.


svn path=/trunk/KDE/kdebase/workspace/; revision=772299
2008-02-08 10:31:40 +00:00
Luboš Luňák
4b792d000e Make error messages about compositing use kError(), so that they show up
even in release builds. Point to release notes in case of error.


svn path=/trunk/KDE/kdebase/workspace/; revision=768132
2008-01-29 14:23:26 +00:00
Luboš Luňák
110f76ecd8 Change some of the debug messages to warnings, so compositing setup failures
show up also in release builds.


svn path=/trunk/KDE/kdebase/workspace/; revision=762175
2008-01-16 12:44:45 +00:00
Luboš Luňák
7b0b67b988 Change kError's to kDebug as they don't tell the user anything
useful in release builds anyway.


svn path=/trunk/KDE/kdebase/workspace/; revision=761477
2008-01-14 22:16:29 +00:00
Rivo Laks
0d64af45ce Make elevatedWindows() return list of EffectWindow pointers instead
of Toplevel ones. This makes it independant of the Toplevel objects
  and fixes a crash when an elevated window is closed.

svn path=/trunk/KDE/kdebase/workspace/; revision=760802
2008-01-13 13:00:15 +00:00
Luboš Luňák
e64ddaba99 Do not fall back to XRender due to XRender not doing very well.
svn path=/trunk/KDE/kdebase/workspace/; revision=756727
2008-01-03 16:51:20 +00:00
Luboš Luňák
bb433ac40e No longer include config*.h files in installed headers.
Also slightly redo the #define's for effects, now it's:
- #ifdef KWIN_HAVE_COMPOSITING to check whether there's any compositing support at all
- #ifdef KWIN_HAVE_OPENGL_COMPOSITING to check for OpenGL-based compositing
- #ifdef KWIN_HAVE_XRENDER_COMPOSITING the same for XRender
CCMAIL: kwin@kde.org


svn path=/trunk/KDE/kdebase/workspace/; revision=749628
2007-12-17 14:14:53 +00:00
Luboš Luňák
01bf6cbb4c License cleanup - add headers where missing, be explicit about GPL
being v2+ (right now it says just GPL, which according to GPL itself
means any GPL). Decoration clients will come later.
CCMAIL: kwin@kde.org


svn path=/trunk/KDE/kdebase/workspace/; revision=742302
2007-11-27 19:40:25 +00:00
Luboš Luňák
eb0d793157 Default to SeparateScreenFocus being false, to be consistent with KDE3.
(and e.g. #141997).


svn path=/trunk/KDE/kdebase/workspace/; revision=739693
2007-11-21 15:54:06 +00:00
Luboš Luňák
5c9fd52311 Make debug output say that compositing is not available also
if opengl/xrender weren't found at compile time.


svn path=/trunk/KDE/kdebase/workspace/; revision=739692
2007-11-21 15:46:58 +00:00
Luboš Luňák
e13c612922 Don't keep the compositing manager selection when not doing compositing.
svn path=/trunk/KDE/kdebase/workspace/; revision=736335
2007-11-13 23:51:46 +00:00
Luboš Luňák
76a9bdcc85 Fix crash.
svn path=/trunk/KDE/kdebase/workspace/; revision=728490
2007-10-23 13:07:15 +00:00
Luboš Luňák
0e55f109c5 Don't do any compositing when nothing is visible anyway (e.g. when switched
away from the X session).


svn path=/trunk/KDE/kdebase/workspace/; revision=726713
2007-10-18 17:58:08 +00:00
Luboš Luňák
dddcbd06b5 Re-enable throttling, with lower time.
svn path=/trunk/KDE/kdebase/workspace/; revision=725842
2007-10-16 10:17:14 +00:00
Luboš Luňák
0493a2f4b9 Try to disable the throttling code, it decreases smoothness of animations.
svn path=/trunk/KDE/kdebase/workspace/; revision=724532
2007-10-12 15:30:12 +00:00
Andreas Pakulat
39e322fc83 Merge the KConfig branch. This are the 3 main modules (+kdeadmin), which are
needed now because friday is the last BC day. The rest of the modules will
follow as fast as my laptop allows.

svn path=/trunk/KDE/kdebase/workspace/; revision=721704
2007-10-05 22:21:25 +00:00
Rivo Laks
68f7504fb0 - Add CompositingPrefs::compositingPossible() to check if compositing is supported at all.
- Use it in setupCompositing()

svn path=/trunk/KDE/kdebase/workspace/; revision=717330
2007-09-26 16:34:08 +00:00
Luboš Luňák
8985ca0b7f Properly reload compositing settings on reconfigure.
svn path=/trunk/KDE/kdebase/workspace/; revision=716806
2007-09-25 09:41:23 +00:00
Rivo Laks
59f21e39fe Add automatic driver detection for compositing options.
This is used to set sane defaults and work around possible driver bugs.
Also, if you have a "whitelisted" driver (nvidia >= 96.39 or intel >= 20061017)
  then compositing will be enabled by default for you.

svn path=/trunk/KDE/kdebase/workspace/; revision=714004
2007-09-18 13:59:06 +00:00
Laurent Montel
994c800d79 Adapt to new KWarning/kFatal/kDebug api
svn path=/trunk/KDE/kdebase/workspace/; revision=695877
2007-08-03 06:59:24 +00:00
Rivo Laks
824f005f58 Add beginnings of kwincompositing config module, meant to replace kwintranslucency one
svn path=/trunk/KDE/kdebase/workspace/; revision=689947
2007-07-19 16:20:05 +00:00
Philip Falkner
c2ff6a4d7a Make sure to unbind the texture in tfp_mode when the underlying pixmap
is discarded.  Windows that have previously been mapped and unmapped now
update properly when mapped again.


svn path=/trunk/KDE/kdebase/workspace/; revision=683977
2007-07-05 19:59:55 +00:00
Luboš Luňák
8d929cb3fc Overlay window also needs input shape.
svn path=/trunk/KDE/kdebase/workspace/; revision=683158
2007-07-04 09:52:03 +00:00
Luboš Luňák
162d6ac7c9 Support for _NET_WM_SYNC_REQUEST, based on a patch
by Rayiner Hashem <gtg990h@mail.gatech.edu>.


svn path=/trunk/KDE/kdebase/workspace/; revision=679986
2007-06-25 08:51:44 +00:00
Rivo Laks
34d9b03aff More debugging when compositing is disabled
svn path=/trunk/KDE/kdebase/workspace/; revision=672265
2007-06-06 15:24:17 +00:00
Luboš Luňák
a352c5d349 Fall back to XRender if OpenGL fails.
svn path=/trunk/KDE/kdebase/workspace/; revision=671719
2007-06-05 12:50:18 +00:00
Luboš Luňák
1caa3f95ed Properly check for all needed extensions and handle gracefully absence.
svn path=/trunk/KDE/kdebase/workspace/; revision=669827
2007-05-30 14:22:09 +00:00
Luboš Luňák
b70a68b02b Debug output of composite/damage extensions are not available.
svn path=/trunk/KDE/kdebase/workspace/; revision=669803
2007-05-30 13:05:06 +00:00
Luboš Luňák
278e721494 Support for keeping a window temporarily at the very top,
desktop grid effect raises the window being moved this way.


svn path=/trunk/KDE/kdebase/workspace/; revision=667944
2007-05-24 14:41:56 +00:00
Luboš Luňák
1040404a2a Track stacking order of unmanaged windows.
svn path=/trunk/KDE/kdebase/workspace/; revision=667686
2007-05-23 16:22:59 +00:00
Harri Porten
1768b04b53 compile without Xfixes extension
svn path=/trunk/KDE/kdebase/workspace/; revision=661762
2007-05-06 14:38:28 +00:00
Luboš Luňák
f52b8e48cd branches/work/kwin_composite becomes new trunk kwin.
svn path=/trunk/KDE/kdebase/workspace/; revision=659202
2007-04-29 17:35:43 +00:00
Luboš Luňák
2b7e1f4993 Remove kwin, kwin_composite will become new trunk kwin, missing merges
from trunk will be merged in.


svn path=/trunk/KDE/kdebase/workspace/; revision=659200
2007-04-29 17:34:49 +00:00
Luboš Luňák
672c95e435 Work properly even with idle paint passes (react on mouse events).
svn path=/branches/work/kwin_composite/; revision=653927
2007-04-14 16:10:58 +00:00
Rivo Laks
02032f8587 Move most (all?) internal methods from EffectsHandler to EffectsHandlerImpl.
The ugly side effect of this is that there are tons of static_casts in the code now... maybe it
  would be better to add effectImpl() convenience method and use that?

svn path=/branches/work/kwin_composite/; revision=652348
2007-04-10 18:47:13 +00:00
Rivo Laks
0353f3376e Make effects actual plugins, so it's possible to load them on runtime.
There's also a kwineffects library now, containing the effects API, which makes it possible to write
  third-party effects.
API isn't complete yet and for now just two effects have been converted but I'm working on it :-)

svn path=/branches/work/kwin_composite/; revision=652226
2007-04-10 13:02:08 +00:00
Luboš Luňák
e3b865cd5f namespace KWinInternal -> KWin - shorter typing of names in gdb, yay
svn path=/branches/work/kwin_composite/; revision=650770
2007-04-05 12:07:35 +00:00
Luboš Luňák
8b5b40e4e8 Shadows. Right not it's only flat black rectangle, but otherwise
everything should work.


svn path=/branches/work/kwin_composite/; revision=646315
2007-03-25 10:48:07 +00:00
Luboš Luňák
f6ad1881e1 Support for window thumbnails.
svn path=/branches/work/kwin_composite/; revision=640344
2007-03-07 17:50:33 +00:00
Luboš Luňák
e61ecff9b9 Check that getting compositing pixmap of a window succeeded.
It may fail (or "fail") if the window is not mapped or if the geometry
doesn't match, both of which may happen due to the asynchronous
nature of X.


svn path=/branches/work/kwin_composite/; revision=637741
2007-02-27 16:13:34 +00:00
Luboš Luňák
1f318fbe52 When discarding window pixmap always damage the window, even
if there was no window pixmap.


svn path=/branches/work/kwin_composite/; revision=636660
2007-02-23 19:16:54 +00:00
Philip Falkner
6909f8a678 Fix some memory leaks.
svn path=/branches/work/kwin_composite/; revision=633714
2007-02-14 23:37:13 +00:00
Philip Falkner
8299541652 Add build checks for XComposite, XDamage, XRender, OpenGL, and XShm.
KWin should now build and run with/without any or all of the above.

svn path=/branches/work/kwin_composite/; revision=633387
2007-02-13 23:28:36 +00:00
Luboš Luňák
4019dff500 Distinguish between damage and repaints - damage is when windows contents
change, repaint just triggers repaint of the area (without e.g. the texture
updating for OpenGL).
addDamage() -> addRepaint()
CCMAIL: kwin@kde.org


svn path=/branches/work/kwin_composite/; revision=632866
2007-02-12 15:22:43 +00:00
Luboš Luňák
24eacc4908 Move NETWinInfo and few more things from Client to the base class.
svn path=/branches/work/kwin_composite/; revision=632380
2007-02-10 21:56:24 +00:00
Luboš Luňák
bb5f7a9519 Compress damage events.
svn path=/branches/work/kwin_composite/; revision=632376
2007-02-10 21:49:57 +00:00
Luboš Luňák
00136f014f Configurable effects loading by Cedric Borgese.
svn path=/branches/work/kwin_composite/; revision=630276
2007-02-04 22:19:17 +00:00
Luboš Luňák
35206efd25 Managed clients may be also in the 'desktop's list.
svn path=/branches/work/kwin_composite/; revision=629751
2007-02-03 17:14:13 +00:00
Luboš Luňák
0ae5a772e7 Add EffectWindow as a window representation for effects,
to hide the change from Client/Unmanaged and eventually also
act as the only API available to effects.


svn path=/branches/work/kwin_composite/; revision=626360
2007-01-22 22:57:22 +00:00
Luboš Luňák
77f803a563 Instead of the somewhat fragile way of trying to clean up Client/Unmanaged
instances and keeping them around after the window is closed, create
class Deleted as a representation of a closed window.


svn path=/branches/work/kwin_composite/; revision=626356
2007-01-22 22:51:30 +00:00
Luboš Luňák
ff6f889ffc Add support for showing effects for windows which have already been deleted.
Add a fade-out effect.


svn path=/branches/work/kwin_composite/; revision=623872
2007-01-15 18:03:04 +00:00
Luboš Luňák
8a3af8dcca X.org docs have moved again.
svn path=/branches/work/kwin_composite/; revision=623807
2007-01-15 14:58:35 +00:00
Luboš Luňák
603a1d4686 Discard backing pixmap when finishing compositing.
svn path=/branches/work/kwin_composite/; revision=623759
2007-01-15 13:01:43 +00:00
Philip Falkner
e3cf0dd455 Move window_pix into Toplevel, allowing the backing pixmap to be kept even after a window is unmapped.
This is needed for effects to make use of unavailable windows, such as when closing a window.

svn path=/branches/work/kwin_composite/; revision=622777
2007-01-12 23:21:36 +00:00
Luboš Luňák
92652a187d Support in scene painting code for drawing also hidden windows.
svn path=/branches/work/kwin_composite/; revision=621337
2007-01-08 17:05:58 +00:00
Luboš Luňák
1765551277 Support for "input windows" that let effects intercept mouse events
when they e.g. want to let the user select from window thumbnails.


svn path=/branches/work/kwin_composite/; revision=620305
2007-01-05 16:45:56 +00:00
Luboš Luňák
a643ff2b00 Try to use XComposite overlay also with XRender.
svn path=/branches/work/kwin_composite/; revision=610137
2006-12-03 13:38:16 +00:00
Luboš Luňák
6a66250620 Better synchronization of refresh rate and vsyncing,
patch by Philip Falkner.


svn path=/branches/work/kwin_composite/; revision=610110
2006-12-03 13:29:14 +00:00
Luboš Luňák
3374f1fbda It seems there's a different place in fd.o git where docs are stored.
svn path=/branches/work/kwin_composite/; revision=608405
2006-11-27 14:20:40 +00:00
Luboš Luňák
d426d9dcd4 Don't let the damage region be larger than the window,
prevent painting errors when shrinking a window.


svn path=/branches/work/kwin_composite/; revision=607510
2006-11-24 21:50:10 +00:00
Luboš Luňák
049460fa2e Reset window damage after updating the damaged areas of the OpenGL texture
or Xrender picture, not after every repaint.
This also allows removing the confusing initPaint()/postPaint() calls in Scene.


svn path=/branches/work/kwin_composite/; revision=607500
2006-11-24 21:28:00 +00:00
Luboš Luňák
38f4f76b31 Detect screen refresh rate for finding out optimal compositing
redraw speed. Patch by Philip Falkner.


svn path=/branches/work/kwin_composite/; revision=607253
2006-11-23 21:16:49 +00:00
Luboš Luňák
8e257f251f Use kwin debug area.
svn path=/branches/work/kwin_composite/; revision=605290
2006-11-16 09:05:40 +00:00
Luboš Luňák
a222c2a675 Gee, map also the child X window. Qt makes some things way too simple.
svn path=/branches/work/kwin_composite/; revision=604018
2006-11-11 09:05:45 +00:00
Luboš Luňák
154d8a588b Use the compositing manager _NET_WM_CM_S<n> manager selection.
svn path=/branches/work/kwin_composite/; revision=603322
2006-11-08 15:08:20 +00:00
Luboš Luňák
5040859ee3 Force re-creating of the Alt+F3 popup (opacity option).
svn path=/branches/work/kwin_composite/; revision=603312
2006-11-08 14:45:30 +00:00
Luboš Luňák
4110fc1c3a Support for XComposite overlay window.
svn path=/branches/work/kwin_composite/; revision=603137
2006-11-07 22:44:39 +00:00
Luboš Luňák
c3ac9d79ac kwin_composite currently doesn't build without libs for compositing.
svn path=/branches/work/kwin_composite/; revision=601780
2006-11-04 12:26:59 +00:00
Luboš Luňák
d92d3a8165 Document the compositing framework and the scene backends,
describe the design, add links to external docs.
Restructure COMPOSITE_TODO into sections and add sort of priorities.


svn path=/branches/work/kwin_composite/; revision=600163
2006-10-29 19:23:45 +00:00
Luboš Luňák
3f9b754ee7 Add post-painting pass to be used for triggering
repaints with animations.


svn path=/branches/work/kwin_composite/; revision=600156
2006-10-29 19:07:10 +00:00
Luboš Luňák
6b41c062c8 Remove the WrapperEffect hack, it's ugly.
svn path=/branches/work/kwin_composite/; revision=600155
2006-10-29 19:06:32 +00:00
Luboš Luňák
3f46d36bb9 Add convenience functions for damaging full area.
svn path=/branches/work/kwin_composite/; revision=598834
2006-10-24 19:28:17 +00:00
Luboš Luňák
10b31e7222 Support for animations, still some todo's pending.
svn path=/branches/work/kwin_composite/; revision=598831
2006-10-24 19:17:48 +00:00
Luboš Luňák
23b30bb2fa Throttle composite repaints in order not to starve everything else.
svn path=/branches/work/kwin_composite/; revision=598820
2006-10-24 18:31:33 +00:00
Luboš Luňák
d50c63e451 Missing part of the don't-cache-window-pixmap commit.
svn path=/branches/work/kwin_composite/; revision=593732
2006-10-08 21:17:38 +00:00
Luboš Luňák
06203d0652 Don't bother with trying to transform window damage,
when there are any transformations, it should simply
repaint everything (todo).


svn path=/branches/work/kwin_composite/; revision=593450
2006-10-07 21:18:36 +00:00
Luboš Luňák
e194246f73 $KWIN_COMPOSE for overriding which compositing system to use
svn path=/branches/work/kwin_composite/; revision=593447
2006-10-07 21:17:30 +00:00
Luboš Luňák
fba72ecdfe Update only damaged areas.
svn path=/branches/work/kwin_composite/; revision=590678
2006-09-30 16:17:54 +00:00
Luboš Luňák
b09713532a Debug about which backend is enabled.
svn path=/branches/work/kwin_composite/; revision=590658
2006-09-30 15:48:31 +00:00
Luboš Luňák
649887d6c2 Looks like using XserverRegion for keeping damage regions
wasn't that good idea. Changed to QRegion.


svn path=/branches/work/kwin_composite/; revision=590648
2006-09-30 15:40:03 +00:00
Luboš Luňák
1c7e7bb2b7 Keeping scene-related data in opengl scene.
svn path=/branches/work/kwin_composite/; revision=590319
2006-09-29 19:05:36 +00:00
Luboš Luňák
efff218441 A very crude OpenGL-based compositing code.
svn path=/branches/work/kwin_composite/; revision=590265
2006-09-29 16:49:34 +00:00
Luboš Luňák
e24815411a Keep damage info separately for every window.
svn path=/branches/work/kwin_composite/; revision=561966
2006-07-13 18:17:49 +00:00
Luboš Luňák
03fedc56dd No effects when not compositing.
svn path=/branches/work/kwin_composite/; revision=560594
2006-07-10 18:34:57 +00:00
Luboš Luňák
e6c23e4cd3 Ok, I give up, whoever wants more complicated transformations than just
translation are welcome to implement it themselves. I'm no graphics guy
after all and this seems to be far beyond me.


svn path=/branches/work/kwin_composite/; revision=559182
2006-07-06 18:22:01 +00:00
Luboš Luňák
0516e1e73b Add support for translation and add two "plugins" that
make windows transparent or shake them while moving.


svn path=/branches/work/kwin_composite/; revision=559013
2006-07-06 13:17:44 +00:00
Luboš Luňák
1719127d3f Make the opacity slider and wheel operations work again.
svn path=/branches/work/kwin_composite/; revision=558740
2006-07-05 22:26:34 +00:00
Luboš Luňák
bab62bf88f Use kwinrc:[Translucency]:UseTranslucency for controlling compositing.
svn path=/branches/work/kwin_composite/; revision=558712
2006-07-05 21:46:01 +00:00
Luboš Luňák
c7f515630d Support for transparency.
svn path=/branches/work/kwin_composite/; revision=558690
2006-07-05 20:52:57 +00:00
Luboš Luňák
f400646a6d xrender compositing work - now it uses damage areas
to reduce amount of painting


svn path=/branches/work/kwin_composite/; revision=558580
2006-07-05 16:04:11 +00:00
Luboš Luňák
29111875e1 Very basic compositing with xrender.
svn path=/branches/work/kwin_composite/; revision=558481
2006-07-05 13:26:08 +00:00
Luboš Luňák
afcc9b6897 Prepare for scene rendering with different engines.
svn path=/branches/work/kwin_composite/; revision=558442
2006-07-05 12:30:03 +00:00
Luboš Luňák
e76564c165 Proper stacking order even for unmanaged windows.
svn path=/branches/work/kwin_composite/; revision=558427
2006-07-05 12:00:13 +00:00
Luboš Luňák
4f12c1e606 Some first attempt at effects interface.
svn path=/branches/work/kwin_composite/; revision=558191
2006-07-04 20:51:01 +00:00
Luboš Luňák
06e47c10db Remove the temporary hacks again.
svn path=/branches/work/kwin_composite/; revision=558185
2006-07-04 20:32:43 +00:00
Luboš Luňák
157372f2e7 And add a silly moving-in animation for new windows.
Now it's time to add plugins interface so that people who can
do this for real do it.


svn path=/branches/work/kwin_composite/; revision=558173
2006-07-04 20:07:58 +00:00
Luboš Luňák
c2e60957d5 Add a silly snowing-like effect to windows so that it's visible
there's something going on.


svn path=/branches/work/kwin_composite/; revision=558171
2006-07-04 20:05:52 +00:00
Luboš Luňák
571ba9cf9e Basic compositing support. It doesn't actually do anything
besides drawing what should be drawn anyway, and there are
still some things missing like stacking order for override
redirect windows, but KWin is basically a compositing manager now.


svn path=/branches/work/kwin_composite/; revision=558168
2006-07-04 20:02:07 +00:00