Commit graph

172 commits

Author SHA1 Message Date
Martin Gräßlin
0c86d31ff2 Remove kde4_no_enable_final from CMakeLists.txt
Tried to build KWin with enable final: it doesn't work. So if nobody uses
it, we don't need it in the CMakeLists to make it work.

Also it's removed in KF5 which means that removing it right now removes
differences in the build system.

REVIEW: 109357
2013-03-14 12:32:06 +01:00
Martin Gräßlin
fb65c07bf7 Use a QDeclarativeView for button views in Present Windows and Desktop Grid
Declarative UI++

REVIEW: 109409
2013-03-12 08:40:46 +01:00
Martin Gräßlin
5a2d14baf7 More fine grained linking than X11_LIBRARIES
Use X11_X11_LIB and actually needed additional libs instead of
everything coming with X11_LIBRARIES.

REVIEW: 109141
2013-03-06 10:14:21 +01:00
Martin Gräßlin
c6be37bc84 Effects no longer need xfixes and xrender from XLib 2013-03-06 10:14:15 +01:00
Martin Gräßlin
d2371e7478 CMake cleanup: empty else() 2013-03-06 10:14:15 +01:00
Martin Gräßlin
928e5d4912 Split the libs we link to into multiple variables
Using a lib variable for:
* own libs
* qt libs
* kde libs
* xlib libs
* xcb libs

and link those groups together in target_link_libraries. This should
make the code easier to read and easier to support in future for some
time both Qt4 and Qt5.
2013-03-06 10:14:15 +01:00
Martin Gräßlin
ea83a9c578 Cmake cleanup: empty endfoo() 2013-03-06 10:14:15 +01:00
Martin Gräßlin
5ea22e362d CMake Cleanup: empty endif 2013-03-06 10:14:15 +01:00
Martin Gräßlin
4c402e8045 Rewrite of Login effect to JavaScript
Main motivation for this rewrite is the fact that the login effect had
been designed under the assumption that there is only one login splash
window. This assumption does no longer hold with the QML based splash,
which creates a window per screen.

By using a JavaScript based effect, the animation effect is implicityly
used which supports animating multiple windows at the same time in a
better and safer way.

BUG: 313061
FIXED-IN: 4.11
REVIEW: 108403
2013-03-04 10:31:27 +01:00
Martin Gräßlin
b8c6831a1f Port Screenshot effect to XCB
This includes:
* getting cursor image through xcb_xfixes
* using xcb_image_get for reading screen content in xrender case
* using xcb_put_image to upload the generated screenshot into shared xpix

Overall this means that QPixmap as an X Pixmap wrapper is no longer used.
The conversion from xcb_image_t to QImage still needs some code for not
matching byte order. I'm a little bit unsure about adding the code as I
would not be able to test it.

REVIEW: 109076
2013-02-25 13:31:50 +01:00
Martin Gräßlin
368de6842a Wrapper class to create an xcb_xfixes_region_t from a QRegion
Replaces the previously existing method to convert a QRegion which did
not take care of freeing the region again.

Usages are ported over.
2013-02-14 14:20:26 +01:00
Martin Gräßlin
06895db1a9 New Glow on approaching Screen Edge Effect
Feature stolen from hidden Plasma Panel now available for all edges on
approach by mouse.
2013-02-07 09:48:09 +01:00
Martin Gräßlin
c5bebcd809 Port Magnifier Effect to XCB
First XRender effect which gets ported over. Therefore required bits are
added to CMakeLists.txt.

Port to xcb is luckily rather straight forward. Though the QPixmap usage
needs to be replaced by xcb_pixmap_t together with a XRenderPicture.
2013-02-04 08:33:24 +01:00
Martin Gräßlin
12bea5f682 New Maximize Window Effect
Animation for going from restored to maximized and vice versa.

BUG: 308990
FIXED-IN: 4.10
REVIEW: 107050
2012-10-28 09:51:01 +01:00
Filip Wieladek
378a4f8fe4 Mouse Click animation effect
An effect which visualy animates when a mouse button is pressed or
released.

REVIEW: 105780
BUG: 309006
FIXED-IN: 4.10
2012-10-26 09:47:22 +02:00
Martin Gräßlin
cf5de22586 Introduce a build option KWIN_BUILD_OPENGL_1_COMPOSITING
If the build option is enabled KWIN_HAVE_OPENGL_1 is passed as a compile
flag when build against OpenGL.

This compile flag is meant to replace the KWIN_HAVE_OPENGLES. So far code
has been ifdefed for special behavior of OpenGL ES 2.0 and to remove
fixed functionality calls which are not available in OpenGL ES 2.0.

With this build flag the fixed functionality calls which are only used in
the OpenGL1 Compositor can be removed and keeping the KWIN_HAVE_OPENGLES
for the real differences between OpenGL 2.x and OpenGL ES 2.0.

E.g. a call like glColor4f should be in an
glColor4f(1.0, 1.0, 1.0, 1.0);

while a call like glPolygonMode should be in an
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

Building for OpenGL ES 2.0 of course implies that KWIN_HAVE_OPENGL_1 is
not defined.
2012-10-25 11:34:12 +02:00
Martin Gräßlin
b2922f6675 Remove compile flag KWIN_HAVE_OPENGL
KWIN_HAVE_OPENGL is not used anymore inside KWin, so no need to pass it
as a compile flag to the binaries.
2012-10-25 11:34:12 +02:00
Martin Gräßlin
3125333f76 Fix logout effect including port to OpenGL 2
The logout effect was rather broken. First of all it was
excluded from build if OpenGL ES is present at build time. The
reason for this is that the effect did not work with GLES.

In order to fix that the vignetting is ported over to OpenGL 2
by using a dedicated shader. As well the lod based blur is
added through a dedicated shader and uses framebuffer blit to
get the current rendered buffer before rendering the logout
window into a texture.

Last but not least the isActive method was broken and is fixed
by checking whether the logout window is around.

BUG: 303096
FIXED-IN: 4.9.0
REVIEW: 105459
2012-07-09 21:02:57 +02:00
Martin Gräßlin
f3443a6b07 Add CMake variable to rename kwin binaries
A CMake variable is used to specify the name of the binary.
By default this is "kwin" but building for PA changes the
name to "kwinactive". The variable adjusts all names, e.g.
kwinnvidiahack becomes kwinactivenvidiahack.

The remaining usage of kwinrc in core and libs is replaced
by a cmakedefine for the configuration name and all data
installations are moved to the defined name. Dynamic loading
for scripts & co is adjusted for loading based on defined name.

This change allows the side-by-side installation of both kwin
for desktop and kwin for Plasma Desktop without the known
issues like conflicts in config files or missing build options
if kwin desktop is used for Plasma Active.

Likewise the KCMs are not adjusted as they are not intended to
be used for kwinactive.

REVIEW: 104299
BUG: 296084
FIXED-IN: 4.9.0
CCMAIL: active@kde.org
2012-05-10 10:25:15 +02:00
Michael Palimaka
c04fca92f9 Fix KWin build failure when OpenGL is disabled and OpenGLES is enabled.
Some old restructuring caused -DKWIN_HAVE_OPENGLES to no longer be
passed to the compiler, causing OpenGL-specific code to be built
while the libraries to link it were not available.

REVIEW: 104558
2012-04-15 05:12:41 +10:00
Martin Gräßlin
ab0daa1701 FadeDesktop effect ported to JavaScript 2012-03-12 21:37:42 +01:00
Martin Gräßlin
f8c0616574 Fade effect goes JavaScript
Our first effect written in JavaScript to replace an existing C++
effect. Fade effect has been chosen as it has shown to be problematic
in the past and would have needed a migration to AnimationEffect anyway.
2012-03-12 21:37:42 +01:00
Martin Gräßlin
1ed900552b Remove test effects
Most effects would not compile anymopre as they are not adjusted
to changes in the effect system (e.g. change to slots).

Also we have enough proper effects to no longer need some demo or
howto effects.

REVIEW: 103744
2012-01-27 08:20:01 +01:00
Philipp Knechtges
0740a01c6a kwin: fix kcm_kwin4_effect_builtins build
Add the missing definition of KWIN_HAVE_OPENGL, which has been a part of kwinconfig.h before.
2011-09-04 18:36:04 +02:00
Martin Gräßlin
b5279af212 Bring back the magnifier effect
Effect uses framebuffer blit to copy the zoomed are in a scaled
way into an offscreen texture and render the texture after the
rendering. This means instead of two rendering passes we now need
only one pass, but require the blit extension.
2011-08-20 10:58:43 +02:00
Martin Gräßlin
623db51c9b Remove unused files 2011-08-13 18:34:24 +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
df75644817 Fix compilation with OpenGL ES and without OpenGL
If we have OpenGL ES but not OpenGL the KWIN_HAVE_OPENGL is set
causing the first compile pass to fail as it tries to build
against OpenGL. As a solution the first pass links against
OpenGL ES if OpenGL is not found.

This means both kwin and kwin_gles are built against GLES.
2011-08-03 16:39:36 +02:00
Martin Gräßlin
1f89dcf25d All effects need to link X11
The Plasma Active build of kwin was broken because of that.
We really should get the effects X free...
2011-08-02 19:44:35 +02:00
Martin Gräßlin
68bba98e5f Remove duplicated xfixes include 2011-07-27 18:34:32 +02:00
Martin Gräßlin
997634c813 Remove a not working include directory
The kwin/lib directory does not exist for one
release cycle now.
2011-07-27 18:34:32 +02:00
Martin Gräßlin
92d32de087 Effects do not need kephal 2011-07-27 18:34:32 +02:00
Martin Gräßlin
808c29109a Build effects twice - once with GL, once with GLES 2011-07-27 18:34:31 +02:00
Martin Gräßlin
e6b5a428ea Disable build of MagnifierEffect
Magnifier is broken without PaintClipper.
Needs a better implementation, see:
http://lists.kde.org/?l=kwin&m=130972453005390&w=2
2011-07-05 20:22:44 +02:00
Martin Gräßlin
55bcd2ed10 Add new build option KWIN_MOBILE_EFFECTS
The new build option restricts the building of effects to those
useable for Plasma Active:
* blur
* dialogparent
* fade
* login
* outline
* presentwindows
* slidingpopups
* taskbarthumbnails
* screenshot

Additionally all effect KCMs are excluded from building in the
assumption that when building with this option, KWIN_BUILD_KCMS
is turned off.
CCMAIL: sebas@kde.org
2011-05-10 18:28:53 +02:00
Martin Gräßlin
915d28d797 Outline effect to replace rendering of the outline
It just uses the selection of the EffectFrame for the outline.
FEATURE: 247316
FIXED-IN: 4.7.0
2011-04-28 13:49:23 +02:00
Martin Gräßlin
54c0a913b9 Fixing broken Invert effect build.
Forgot to remove the header file for shadereffect, though
it was not used anymore in the effect.
CCMAIL: hein@kde.org
2011-02-01 20:13:26 +01:00
Eike Hein
39f57a472f Disable the invert effect to unbreak the workspace build.
invert.cpp refers to the apparently removed kwinshadereffect.h,
so it's probably missing out on some sort of porting activity.

CCMAIL:kde@martin-graesslin.com
2011-02-01 19:52:03 +01:00
Martin Gräßlin
cf03487331 Remove Shadow Effect.
The shadow effect is known to be broken since at least 4.5.
It is unfortunately in a state which makes it difficult to maintain
and the architecture has some serious drawbacks. Therefore it is the
best solution to replace the effect with a new and better
implementation. For more information about the new implementation
please see the discussion on KWin mailinglist:
http://lists.kde.org/?l=kwin&m=129607406517609&w=2

This also "fixes" all existing bug reports about the shadow effect.
Most of the bugs will really be fixed when the new shadow system is
implemented, if not it is a new bug and a new report should be created
for it.

Please excuse that we go this unnormal approach to mark bugs as
fixed with code removal.
BUG: 164084
BUG: 160948
BUG: 189241
BUG: 229164
BUG: 258663
BUG: 216709
BUG: 243890
FIXED-IN: 4.7.0
2011-01-30 14:26:58 +01:00
Martin Gräßlin
65e6a1b03b Removing Snow Effect.
The usefulness of the snow effect is doubtable and it is rather
difficult to port the effect to the new rendering architecture
introduced with GLES. It is probably easier to rewrite the complete
effect from scratch, therefore it is removed for now.

I might consider readding it for 4.7.

This kind of "fixes" snow related bug reports.
BUG: 259362
BUG: 254498
FIXED-IN: 4.7.0
2011-01-30 14:24:48 +01:00
Martin Gräßlin
debb747797 Removing the Sharpen Effect.
The effect has been known to cause some problems for quite some time
and is not really useful. Therfore dropping the effect.
See discussion on kwin mailinglist:
http://lists.kde.org/?l=kwin&m=129597766829618&w=2
2011-01-30 14:20:05 +01:00
Martin Gräßlin
8c4fc28e1a Blur ported to GLES.
It now uses a GLShader for GLSL shaders and pushes it using the
ShaderManager.

It does not work with the nouveau driver plus GLES, but it works
with fglrx + desktop GL 2.x, so I assume it is a driver problem here.
2011-01-30 14:12:06 +01:00
Martin Gräßlin
0f7ebac00e Explosion portet to GLES.
I'm not completely sure if this is how the effect should look like.
But I cannot verify, it fails on fglrx and cannot find a video on Youtube.
2011-01-30 14:12:05 +01:00
Martin Gräßlin
b7ee35bba1 Invert effect ported to GLES.
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.
2011-01-30 14:12:05 +01:00
Martin Gräßlin
863726a085 LookingGlass ported to GLES.
LookingGlass does not inherit ShaderEffect any more and uses just a
fragment shader. It still renders to a FBO, this could probably be
improved.
2011-01-30 14:12:05 +01:00
Martin Gräßlin
75e926a6d7 Here comes the ported Magnifier 2011-01-30 14:12:05 +01:00
Martin Gräßlin
5d74f9ece7 StartupFeedback ported to GLES. 2011-01-30 14:12:05 +01:00
Martin Gräßlin
c5c318a342 Screenshot Effect ported to GLES 2011-01-30 14:12:05 +01:00
Martin Gräßlin
22d7c6c5f1 ShowFPS effect ported to GLES 2011-01-30 14:12:04 +01:00
Martin Gräßlin
82b8faadab Welcome back Cube effect
Currently working:
* cube slide
* basic cube
* rotations
* reflections

Not working:
* Cube Inside effects
* Reflection plane (needs to be done in a shader)
* cube caps
* sphere/cylinder
* filled in areas in multi desktop
2011-01-30 14:12:01 +01:00