Bug 311116

Summary: Simple lock doesn't respond to escape or anyother way to blank again
Product: kscreensaver Reporter: Dave Gilbert <gilbertd+kde>
Component: locker-qmlAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: martin.sandsmark, notmart, oliver.henshaw, thomas.luebking, wstephenson
Priority: NOR    
Version: 4.9.80 Beta1   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: Patch, not tested
fixing patch
makes the screenlocker widget a black window

Description Dave Gilbert 2012-12-03 21:16:16 UTC
(Ubuntu Raring as of yesterday).
The simple locker doesn't seem to have a way to cause the display to reblank; on most screensavers hitting escape at the password prompt will blank again; it's the exception.

Reproducible: Always

Steps to Reproduce:
1. Lock screen, wait for it to go blank
2. Start watching TV
2. Accidentally knock mouse - password box comes up
3. Hit escape
Actual Results:  
Nothing happens

Expected Results:  
Password box disappears and screen blanks
Comment 1 Oliver Henshaw 2013-01-11 13:11:46 UTC
If/when this is fixed, then an equivalent of the fix in bug 254767 also needs to be restored.
Comment 2 Aaron J. Seigo 2013-01-12 18:14:23 UTC
*** Bug 313020 has been marked as a duplicate of this bug. ***
Comment 3 Thomas Lübking 2013-01-12 19:20:16 UTC
The greeter installs an application event filter and by this receives (too many, but sufficiently) escape keys and intends to show the "screensaver" window in return.

Wild guess is that they lack the atom since the ::prepareShow() function is only invoked once after the application started the eventloop.

Qt will usually destroy and recreate the drawable, ie. tl;dr

Atom setting belongs into the showEvent of the screensaver window and not some random slot on the greeter app.

Does anybody work on this?
(And -sidenote- what is the config key to aktivate the legacy "screensaver"?)


Confirming since it cannot work the way it's done.
Comment 4 Thomas Lübking 2013-01-12 19:31:27 UTC
There's a bug in bugzilla - dupig should copy attached users, shouldn't?
Comment 5 Thomas Lübking 2013-01-12 21:19:24 UTC
Created attachment 76428 [details]
Patch, not tested

Attached is an untested patch.
As soon as somebody tells me what i need to install and activate to get one of those "batterywasters" i'll also happily test it (i've not installed any screensvers atm, nor the screensaver kcm stuff from git master - and i frankly don't want to)
Comment 6 Thomas Lübking 2013-01-12 23:50:14 UTC
Created attachment 76431 [details]
fixing patch

found a way to test w/o installing a screensaver.
Comment 7 Thomas Lübking 2013-01-13 11:26:47 UTC
updated version of the patch.
the attached one isn't entirely correct.

https://git.reviewboard.kde.org/r/108375/
Comment 8 Thomas Lübking 2013-01-14 19:43:36 UTC
Git commit 17053ae6ec7dd9435b944e6a4f2ad435a91df269 by Thomas Lübking.
Committed on 13/01/2013 at 11:14.
Pushed by luebking into branch 'KDE/4.10'.

fix screenlocker "hiding", event processing, screen adaptation

REVIEW: 108375

M  +111  -55   ksmserver/screenlocker/greeter/greeterapp.cpp
M  +1    -1    ksmserver/screenlocker/greeter/greeterapp.h
M  +9    -0    ksmserver/screenlocker/greeter/screensaverwindow.cpp

http://commits.kde.org/kde-workspace/17053ae6ec7dd9435b944e6a4f2ad435a91df269
Comment 9 Thomas Lübking 2013-01-14 19:44:13 UTC
Git commit ed7b99f14f52b9ab43b06996af1e5f36a50c4d77 by Thomas Lübking.
Committed on 13/01/2013 at 11:14.
Pushed by luebking into branch 'master'.

fix screenlocker "hiding", event processing, screen adaptation

REVIEW: 108375

M  +111  -55   ksmserver/screenlocker/greeter/greeterapp.cpp
M  +1    -1    ksmserver/screenlocker/greeter/greeterapp.h
M  +9    -0    ksmserver/screenlocker/greeter/screensaverwindow.cpp

http://commits.kde.org/kde-workspace/ed7b99f14f52b9ab43b06996af1e5f36a50c4d77
Comment 10 Oliver Henshaw 2013-01-16 13:32:29 UTC
This doesn't work for me, with vnc/cirrus and spice/qxl in kvm and the blank screensaver. 

Pressing escape with the unlock dialog shown just makes the dialog flicker but doesn't hide the dialog box. In fact, if I type a few letters into the box and press escape the letters appear to disappear. So maybe the blank screensaver doesn't redraw properly.

What screensaver did you test with?
Comment 11 Thomas Lübking 2013-01-16 14:04:11 UTC
No screensaver, i ensured to be able to see the screensaver holding widget and get the locker fill all screens.

I don't have any "screensavers" installed and don't intend to.

However, this (flicker) is pretty much what i saw w/o manipulating the screensaver widget, since it sets it's background to a pixmap screenshot of the  locker widget (i wonder why so and whether it would make sense to just make it black instead, "faking" the blank screensaver) so you may be right about the blank screensaver not redrawing.
I don't know.
Comment 12 Oliver Henshaw 2013-01-16 14:54:26 UTC
So this only works with screensaver and not the Simple Locker or Desktop Widgets?
Comment 13 Thomas Lübking 2013-01-16 15:00:19 UTC
I've no idea.

You found the reviews to force dpms off, but i have *no* idea whether or how the "screensaver" widget works internally - someone else will have to answer that question, sorry.
Comment 14 Thomas Lübking 2013-01-16 15:47:23 UTC
Created attachment 76511 [details]
makes the screenlocker widget a black window

Sidenote:
for some reason the show on the first "escape" press is not correctly performed after the mouse has been moved to show  the locker (i actually only tested keyboard activation)

If you stay away from the mouse and press escape a second time, the saver widget (see 'nother patch for testing) is shown again.
Comment 15 Thomas Lübking 2013-01-23 21:11:34 UTC
Git commit dcac558b7d9267f3afa13b26741bdbede30518e2 by Thomas Lübking.
Committed on 16/01/2013 at 17:02.
Pushed by luebking into branch 'KDE/4.10'.

prevent false positive mouse deactivation

REVIEW: 108441

M  +6    -1    ksmserver/screenlocker/greeter/screensaverwindow.cpp

http://commits.kde.org/kde-workspace/dcac558b7d9267f3afa13b26741bdbede30518e2
Comment 16 Thomas Lübking 2013-01-23 21:12:17 UTC
Git commit 2d234a76e269a2a42d78ca5744021f12f6120d99 by Thomas Lübking.
Committed on 16/01/2013 at 17:02.
Pushed by luebking into branch 'master'.

prevent false positive mouse deactivation

REVIEW: 108441

M  +6    -1    ksmserver/screenlocker/greeter/screensaverwindow.cpp

http://commits.kde.org/kde-workspace/2d234a76e269a2a42d78ca5744021f12f6120d99