screenlocker: don't leave behind screensaver processes

Review Request #117644 - Created April 22, 2014 and submitted

Wolfgang Bauer
kde-workspace, plasma
Currently the screen locker just kills the greeter (kscreenlocker_greet) when the screen is unlocked by the user during the grace time.
But apparently this can leave behind running screensaver processes launched by the greeter, see the bug report (which has the highest number of  votes of all open bugs AFAICS).

This patch changes this to only terminate the greeter, and adds a signal handler to the greeter to exit gracefully in this case.
The signal handler exits with return code 1, so that it is not possible to circumvent the password input by just sending a SIGTERM. (the screen locker restarts the greeter in case it doesn't quit with exit code 0)
Configure a legacy screensaver in Systemsettings->Display and Monitor->Screen Locker, be sure to leave "Require Password after" disabled.
Wait for the screen locker to kick in.
Unlock the screen by moving the mouse or pressing a key.
Check the process list.

Without this patch at least kswarm.kss and kblankscreen.kss reliably kept running after unlocking the screen on my system.
With this patch they quit themselves.

I'm using this patch for over two weeks now, and I haven't seen any left-over screen saver processes any more (and I even set the timeout to 1 minute).

I also tried to terminate kscreenlocker_greet manually by running "killall kscreenlocker_greet" from a text console in case of a password required, and the locker didn't quit, you still have to enter the password.
Wolfgang Bauer
Thomas Lübking
Martin Flöser
Wolfgang Bauer
Thomas Lübking
Commit Hook
Commit Hook
This review has been submitted with commit b1fa2678d36f6ce215e8d8ec1d57608079f36c89 by Wolfgang Bauer to branch master.
Wolfgang Bauer
Review request changed

Status: Closed (submitted)