Bug 303096 - Logout effect completely broken
Summary: Logout effect completely broken
Alias: None
Product: kwin
Classification: Plasma
Component: effects-various (show other bugs)
Version: 4.8.90
Platform: unspecified Linux
: NOR normal
Target Milestone: 4.9 RC 2
Assignee: Martin Flöser
URL: https://git.reviewboard.kde.org/r/105...
: 304239 (view as bug list)
Depends on:
Reported: 2012-07-06 08:52 UTC by Martin Flöser
Modified: 2012-07-29 11:52 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In: 4.9.0
mgraesslin: ReviewRequest+


Note You need to log in before you can comment on or make changes to this bug.
Description Martin Flöser 2012-07-06 08:52:17 UTC
The logout effect in it's current state is completely broken.
* it does not get compiled if OpenGL ES is available at compile time (independent of compiled backend)
* the isActive() hook is implemented in a way that it always evaluates to false
* the effect makes strong use of fixed functionality, rendering it unusable with the OpenGL 2 backend.

These issues have at least been present since the 4.8, most likely since 4.7. Although there will be another 4.8 release I will target 4.9 for the fix.
Comment 1 Thomas Lübking 2012-07-06 10:55:06 UTC
Just thrown a quick look on it.

a) xrender /can/ paint a vignette (XRenderCreateRadialGradient, i'll write the part if you want) but it can NOT "do a stronger desaturation" - it actually can't desaturate at all.
it can possibly have a blur as well (since it's not gaussian anyway) so we'll likely need no special casing here at all.

b) i'd stay away from testing ksmserver class (the dialog could someday move to plasma or kded or whatever - actually having the ksmserver daemon link GUI classes only to show that dialog when it quits looks like a design flaw to me)

c) to get it active it should be sufficient to set progress to 0.01 in slotWindowAdded
Comment 2 Martin Flöser 2012-07-06 11:40:38 UTC
> c) to get it active it should be sufficient to set progress to 0.01 in
> slotWindowAdded
I have most things already fixed here. For c it's a simple || logoutWindow as 
logoutWindow is only not null in case the effect is active.
Comment 3 Martin Flöser 2012-07-09 19:05:20 UTC
Git commit 2697a2732c8bebd0ffaa95ba6438ea27f37e3dcc by Martin Gräßlin.
Committed on 09/07/2012 at 19:04.
Pushed by graesslin into branch 'KDE/4.9'.

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.
FIXED-IN: 4.9.0
REVIEW: 105459

M  +0    -3    kwin/effects/CMakeLists.txt
M  +6    -0    kwin/effects/logout/CMakeLists.txt
A  +9    -0    kwin/effects/logout/data/logout-blur.frag
A  +8    -0    kwin/effects/logout/data/vignetting.frag
M  +127  -58   kwin/effects/logout/logout.cpp
M  +5    -0    kwin/effects/logout/logout.h

Comment 4 Thomas Lübking 2012-07-29 11:52:25 UTC
*** Bug 304239 has been marked as a duplicate of this bug. ***