Bug 23119 - "xdg-screensaver suspend" Can Cause Screen Burn-in When Display Never Sleeps Anymore
Summary: "xdg-screensaver suspend" Can Cause Screen Burn-in When Display Never Sleeps ...
Status: NEW
Alias: None
Product: Portland
Classification: Unclassified
Component: xdg-utils (show other bugs)
Version: 1.0
Hardware: x86 (IA32) Linux (All)
: high major
Assignee: Portland Bugs
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-08-03 13:15 UTC by Daniel Yek
Modified: 2011-05-13 07:04 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Yek 2009-08-03 13:15:52 UTC
"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!

REPRO. STEPS:
(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.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.