Make use of new extension of protocol for magic number -1.
If offset is -1 KWin has to decide the offset. This fixes all the
incorrect animations and allows us to perform clipping again by
filtering out the window quads which should not be visible.
Additionally the effect now sanitizes the offset. That is for e.g.
Yakuake setting an offset of 0, but there is a strut on the top
corner causing Yakuake not to appear on 0, but with an offset of
the strut. Such cases are now considered as well and the animation
is fixed.
REVIEW: 103367
BUG: 287602
CCBUG: 261159
CCBUG: 278760
FIXED-IN: 4.8.0
Each effect is able to declare itself as currently being active,
that is transforming windows or painting or screen or doing anything
during the current rendered frame.
This change eliminates the hottest path inside KWin identified by
callgrind.
REVIEW: 102449
As this area was not repainted it caused visual garbage during
animationgs. Most visible with yakuake and a panel at the top.
Offset in that case is the upper screenedge while yakuake is
positioned below the panel. The area of the panel did not get
repainted causing the garbage.
CCBUG: 264765
The KWin::TimeLine class was only a small wrapper around QTimeLine
without adding anything to QTimeLine what is not present in QTimeLine.
The initial idea was to make it possible to provide more curve shapes.
This is now obsoleted by Qt shipping more useful curves with QTimeLine.
So let's clean up a little bit and use QTimeLine directly instead of
the small wrapper.
All effects are adjusted to use QTimeLine directly.
Client and Unmanaged use a signal to notify that they are about to be closed.
The EffectsHandlerImpl is connected to those signals and emits the appropriate
windowClosed signal to which the effects are connected.
All previously existing windowAdded methods are renamed to slotWindowAdded.
EffectsHandlerImpl is connected to Workspace's clientAdded signal, which is
emitted a little bit earlier than the previous direct method call. This might
change behavior.
Another signal is added to Workspace to signal that an unmanaged is added.
Since the EffectFrames have been moved into KWin core nothing in the
Effects lib actually used Plasma. The only remaining method is moved
to core as it's not used in the Effects. The Effects itself still
link against Plasma, so nothing changes for them.
The Plasma includes in the kwineffects header seemed to pull in
quite some additional headers, so the includes in some effects have
to be adjusted (most often KConfigGroup). This should speed up the
compilation of the library and the effects.
It is not always required to do a full repaint in each frame. E.g. in sliding popups the repaint areas are known and tracked.
This change reduces the painting overhead to just the window area.
Nevertheless I consider this change as experimental and will revert the commit in case it introduces rendering glitches.
Other effects which are good candidates for this flag is wobbly windows, magic lamp, minimize or in general all effects which transform just one window.
svn path=/trunk/KDE/kdebase/workspace/; revision=1158838
the logout by using new information provided by KSMServer; Allow effects
to read and detect root window property notify events.
svn path=/trunk/KDE/kdebase/workspace/; revision=1083335
As the effect is doing full repaints all the time due to PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS this one extra repaint doesn't matter.
BUG: 215400
svn path=/trunk/KDE/kdebase/workspace/; revision=1080634
windows.
the slidingpopups effect adds its managed windows to the ignored list of
the fadeeffect, making them mutually exclusive
svn path=/trunk/KDE/kdebase/workspace/; revision=1021321
a number identifying north/south/west/east and a screen coord) will
appear with a slide animation.
used for popups that come out of panels
svn path=/trunk/KDE/kdebase/workspace/; revision=1001604