"xdg-screensaver suspend" Can Cause Screen Burn-in When Display Never Sleeps Anymore After An Application Used "xdg-screensaver suspend" And was Then Killed.
"xdg-screensaver suspend" was designed to stop when the window it monitored vanished, and thus allowing the ScreenSaver to resume and allowing the monitor/display to go back to sleep when the session became idle.
However, monitor-window-and-quit functionality is not working, causing displays to never sleep if an application using "xdg-screensaver suspend" was killed.
The effect of this bug is, potentially, very bad, so I'm hoping that this issue can be addressed.
I don't know how this bug happened, but I can speculate a few possibilities:
(1) The "monitor-window-and-quit" functionality was initially working during the initial development, but forking to background xdg-screensaver process feature was added later (pure speculation as I don't know have code history) and since now the xdg-screensaver is no longer a child process, it is not killed when the application exited.
(2) "xprop -id <window id> -spy" used to receive window event and quitted when the monitored window vanished. xprop is no longer subscribing to the window event.
If this is the case, maybe xprop.c's:
XSelectInput(dpy, target_win, PropertyChangeMask);
needs to be changed to:
XSelectInput(dpy, target_win, StructureNotifyMask | PropertyChangeMask);
for it to be notified about the window deletion!
(Just vague repro. steps for now.)
1. Create a HelloWorld GUI application.
2. Calls "xdg-screensaver suspend <The App.'s Main Window ID>" from the application.
3. Kill the application.
4. Observe that xdg-screensaver and xprop don't quit and the display can suffer burn-in.
-- GitLab Migration Automatic Message --
This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.
You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xdg/xdg-utils/issues/34.