As all effects have always been compiled into the same .so file it's
questionable whether resolving the effects through a library is useful
at all. By linking against the built-in effects we gain the following
advantages:
* don't have to load/unload the KLibrary
* don't have to resolve the create, supported and enabled functions
* no version check required
* no dependency resolving (effects don't use it)
* remove the KWIN_EFFECT macros from the effects
All the effects are now registered in an effects_builtins file which
maps the name to a factory method and supported or enabled by default
methods.
During loading the effects we first check whether there is a built-in
effect by the given name and make a shortcut to create it through that.
If that's not possible the normal plugin loading is used.
Completely unscientific testing [1] showed an improvement of almost 10
msec during loading all the effects I use.
[1] QElapsedTimer around the loading code, start kwin five times, take
average.
REVIEW: 115073
Videos for the following effects are added:
* Dim Inactive
* Dim Screen for Administration Mode
* Invert
* Looking Glass
* Magnifier
* Mouse Click
* Track Mouse
* Zoom
Link for Present Windows video fixed.
Most effects had a "collection" for one action. We don't need the
action collection, all it was used for is setting the object name.
With the removal of KActionCollection the effects do not need to link
XmlGui any more, though the dependency is still pulled in through
plasma.
* "" needs to be wrapped in QStringLiteral
* QString::fromUtf8 needed for const char* and QByteArray
* QByteArray::constData() needed to get to the const char*
Many headers included KLocale to use i18n and co. But those methods are
defined in KLocalizedString and not in KLocale.
With KF5 klocale.h does no longer include KLocalizedString causing lots
of compile errors.
The ShaderBinder class can be used for the case that a block of code
should be executed with a given Shader being bound. This is useful for
all the cases where there is a if-block for OpenGL2 execution with a
Shader being pushed in the first line to the ShaderManager and popped in
the last line of the block. With the helper this can be simplified to:
ShaderBinder binder(myCustomShader);
or
ShaderBinder binder(ShaderManager::GenericShader);
The ctor of ShaderBinder pushes the given Shader to the stack and once
the helper goes out of scope it will be popped again from the stack.
In addition the helper can take care of OpenGL 1 compositing, that is it
just does nothing. So it can also be used where there is a shared OpenGL1
and OpenGL2 code path where the Shader should only be pushed in OpenGL2.
This basically removes all the checks for the compositing type before
pushing/popping a Shader to the stack.
REVIEW: 106521
The main usage of ShaderManager::isValid was to have OpenGL2 specific
code pathes. Now we have an actual OpenGL2Compositing type and we know
that the ShaderManager is valid if we have this compositing type and we
know that it is not valid on OpenGL1Compositing. This gives us a much
better check and allows us to use the isValid method just for where we
want to check whether the shaders compiled successfully.
In addition some effects require OpenGL2, so we do not need to check
again that the ShaderManager is valid. Such usages are removed.
The CompositingType enum turns into flags and two new values are
introduced: OpenGL1Compositing and OpenGL2Compositing.
Those new values are or-ed to OpenGLCompositing so that a simple check
for the flag OpenGLCompositing works in case of one of those two new
values. To make the generic check for OpenGL compositing easier a method
in EffectsHandler is introduced to just check for this.
The scenes now return either OpenGL1Compositing or OpenGL2Compositing
depending on which Scene implementation. None returns OpenGLCompositing.
Effects can specify their minimum requirements in their
desktop file:
* OpenGL
* OpenGL 2 (GLSL required)
* Shaders (either ARB or OpenGL 2)
The configuration module uses this information in combination
with which backend KWin is currently using. So if e.g. OpenGL
is used and an effect requires OpenGL 2 a detailed error
message can be showed that OpenGL 2 is required.
BUG: 209213
FIXED-IN: 4.9.0
REVIEW: 104847
Effects that need GLSL require that OpenGL 2 is active.
It does not matter whether the GPU would support it if
OpenGL 2 is not used.
Cherry-picked from db42152
CCBUG: 299426
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
The uniforms textureWidth and textureHeight were only needed for
normal windows. For everything else it was just 1.0/1.0, that is
normalized.
The makeArrays method is changed to produce normalized texcoords
obsoleting the need for these uniforms. So two uniforms less, one
calculation in vertex shaders less and many many lines of code
removed.
At the same time makeArrays is also adjusted to take care of
yInverted of the texture, which is needed as we no longer can use
the enableUnnormalizedTexCoords which did the yInverted transformation.
REVIEW: 101646
Actually it's more a hack and should be addressed in the next
release cycle by allowing effects to modify the scene's blend
equation.
BUG: 274424
FIXED-IN: 4.7.0
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.
It uses a generic vertex shader and because of that it needs to
mark all windows which are inverted as transformed.
There is currently a conflict with Lanczos (or thumbnails) and with
the desktop in cube effect.
svn path=/trunk/KDE/kdebase/workspace/; revision=1213663
The following changes were in SVN, but were removed from git:
M wallpapers/Air/metadata.desktop
M wallpapers/Autumn/metadata.desktop
M wallpapers/Blue_Wood/metadata.desktop
M wallpapers/Grass/metadata.desktop
M wallpapers/Hanami/metadata.desktop
M wallpapers/Horos/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Quadros/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1191511
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Air/metadata.desktop
M wallpapers/Autumn/metadata.desktop
M wallpapers/Blue_Wood/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Grass/metadata.desktop
M wallpapers/Hanami/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Quadros/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1177799
The following changes were in SVN, but were removed from git:
M wallpapers/Blue_Wood/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Grass/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Quadros/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1098905
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Quadros/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1097842
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Air/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Quadros/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1085566
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Air/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Quadros/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1068486
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Air/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Quadros/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1068118
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Air/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
That way the thumbnail is passed through the whole rendering pass and has the same invert state as the window.
BUG: 212348
svn path=/trunk/KDE/kdebase/workspace/; revision=1059463
svn path=/trunk/KDE/kdebase/workspace/; revision=1042976
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Atra_Dot/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1024781
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Air/metadata.desktop
M wallpapers/Atra_Dot/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/EOS/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1014621
The following changes were in SVN, but were removed from git:
M wallpapers/Air/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1011290
The following changes were in SVN, but were removed from git:
M wallpapers/Air/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=985256
The following changes were in SVN, but were removed from git:
M wallpapers/Air/metadata.desktop
M wallpapers/Atra_Dot/metadata.desktop
M wallpapers/Blue_Curl/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Ladybuggin/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=984807
The following changes were in SVN, but were removed from git:
M wallpapers/Evening/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=984344
The following changes were in SVN, but were removed from git:
M wallpapers/Atra_Dot/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=940525
The following changes were in SVN, but were removed from git:
M wallpapers/Air/metadata.desktop
M wallpapers/Blue_Curl/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Flower_drops/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/HighTide/metadata.desktop
M wallpapers/Ladybuggin/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
M wallpapers/Vector_Sunset/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=939654
The following changes were in SVN, but were removed from git:
M wallpapers/Air/metadata.desktop
M wallpapers/Blue_Curl/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Flower_drops/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/HighTide/metadata.desktop
M wallpapers/Ladybuggin/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
M wallpapers/Vector_Sunset/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=936838
The following changes were in SVN, but were removed from git:
M wallpapers/Blue_Curl/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/EOS/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Flower_drops/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Ladybuggin/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
M wallpapers/Vector_Sunset/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=926053
The following changes were in SVN, but were removed from git:
M wallpapers/Air/metadata.desktop
M wallpapers/Blue_Curl/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/EOS/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Flower_drops/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/HighTide/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/There_is_Rain_on_the_Table/metadata.desktop
M wallpapers/Vector_Sunset/metadata.desktop
from kwin to kcm_kwin4_effect_xyz . That broke global shortcuts configuration.
CCMAIL: kwin@kde.org
CCMAIL: lmurray@undefinedfire.com
svn path=/trunk/KDE/kdebase/workspace/; revision=924534
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