The effect did not check whether the ShaderManager is valid causing
a null pointer access when trying to use the shader.
Additionally this change moves the Shader init into the close window
slot as close window referrenced windows without checking whether the
effect would work. If the effect would not work each closed window
would be referrenced without any chance to being unreffed again as this
code is in a block checking whether the effect is valid.
BUG: 291390
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
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.
its own directory, cleaned up the effect config macros and renamed
"MakeTransparent" to "Translucency" so that it matches its visible name.
svn path=/trunk/KDE/kdebase/workspace/; revision=921749
of Effect::animationTime() for how-to-use.
TODO: Effects need to reload config after doing the change in the kcm.
NOTE: Default TimeLine constructor now creates invalid object, it is
necessary to explicitly call setDuration() in order to ensure all
animations respect this setting.
CCMAIL: kwin@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=854690
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
Reverting r700026 and changing floats to doubles again. I'd probably like
to change even the ones interfacing with OpenGL which I've left for now.
svn path=/trunk/KDE/kdebase/workspace/; revision=707987
for use in effects (and not only). Now a list of window quads (=window areas)
is created at the beginning of the paint pass, prepaint calls can modify
the split itself (i.e. divide it into more parts). The actual paint calls
can then modify these quads (i.e. transform their geometry). This will allow
better control of how the split is done and also allow painting e.g. only
the decoration differently. Still work in progress, but it works.
Also pass data to prepaint functions in a struct, as there is
already quite a number of them.
svn path=/trunk/KDE/kdebase/workspace/; revision=684893
without kwin4_effect_ prefix, so change the name in those macros to lowercase.
Some modifications to the macros themselves as well.
Effect loading via dcop might work again now.
svn path=/trunk/KDE/kdebase/workspace/; revision=669033
This way we won't request the window to be painted when loading fails or has failed.
Also remove 2 lines of obsolete code.
svn path=/branches/work/kwin_composite/; revision=647139
Also add SceneOpenGL::Texture class, based on GLTexture. Optimised for SceneOpenGL::Window, this adds support for loading from an X Pixmap, as well as taking advantage of texture_from_pixmap/shm when available. Automatically detects what texture target should be used, so be sure to enableUnnormalizedTexCoords() before painting.
Make SceneOpenGL::Window, BoxSwitchEffect, and ExplosionEffect use the new classes.
svn path=/branches/work/kwin_composite/; revision=645125
Add ExplosionEffect which makes the windows blow up into small pieces when they're closed.
In the future this could be used only when user kills (an unresponsive) window.
svn path=/branches/work/kwin_composite/; revision=643135