Re: Fixing the flicker problem when toplevel windows pop up over a running screensaver



Hi,
So, yeah, I think the remaining issues relate to the concept of idle.
And from what I heard in Ajax's talk at GUADEC there isn't agreement
among Xorg developers for what idle time in the server even means.
I'm pretty sceptical that they can solve the problem without
introducing policy.
Well, I guess idle could be handled outside of the screensaver
extension in the mean time.  We could basically use the screensaver
extension as as a glorified GetCompositeWindow() call that works when
a compositing manager is running.

Stepping back a bit...
I guess this autologin/lock model would work OK.  However, you'd
likely have some a11y issues.  I'm not sure we can really get the
screensaver working perfectly in that case.  It is likely much easier
to handle at the GDM greeter.
hmmm, but aren't those issues present /now/ when the user locks the
screen anyway?

I'm attaching a patch for some minor bugs.
Thanks, commited.   It's mainly just a throw away scratch program for
showing the idea, though, so I wouldn't spend too much time debugging
it :-)

There still seems to be a race creating a toplevel:
Oh, I just added a "system ("xset s active &")" or something at the
bottom of the main, so I didn't have to wait the idle timeout
everytime I ran the program.  There's clearly a race there.

** (test-screensaver-extension:18654): DEBUG: received screensaver event
** (test-screensaver-extension:18654): DEBUG: querying for updated
server screensaver state information
** (test-screensaver-extension:18654): DEBUG: updating internal state
from server screensaver state informati
on
** (test-screensaver-extension:18654): DEBUG: server says screensaver is active
** (test-screensaver-extension:18654): DEBUG: updating toplevel window
from server screensaver state informat
ion

** ERROR **: could not set up screensaver toplevel for 0x63
aborting...
Aborted
Oh funky, that means gdk_window_foreign_new
(xid_of_the_screensaver_window) failed.  Not sure why that would
happen....OH!  Did you move the mouse immediately after starting the
program? It could be that the screensaver window got destroyed between
getting the event that the screensaver was activated and actually
trying to use the mapped screensaver window.

--Ray



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]