On Mon, Aug 17, 2009 at 09:36:25AM +0100, Richard Hughes wrote: > 2009/8/17 Peter Hutterer <[email protected]>: > > On Fri, Aug 14, 2009 at 12:07:28PM +0100, Richard Hughes wrote: > >> When we change the DPMS mode, don't play games with the last event > >> time as this breaks applications using IDLETIME to turn the backlight > >> off after a preset time. > >> > >> This patch fixes gnome-power-manager and xfce-power-manager. > >> Previously gnome-power-manager was working around the idletime reset > >> by setting a 1ms second timer and ignoring the first if there was a > >> DPMS action in the last few ms. This was racey as hell, and it's > >> probably best just to fix the X bug once and for all. > >> > >> The comment for TimeSinceLastInputEvent even says "Function used for > >> screensaver purposes by the os module. Returns the time in > >> milliseconds since there last was any input." so it's clearly for use > >> for screensavers and power managers rather than "what's the last time > >> of any action in the server". > >> > >> Patch attached. Please review. > > > > Tested, seems to work fine. > > Pushed as c1d901d723c3bee523736eacc15b44a7dff484fe, thanks for the patch! > > (btw. next time please send patches to [email protected]) > > Will do, thanks. With the patch the explicit lastDeviceEventTime does > not happen (good), although dixSaveScreens still resets this on DPMS > change (not good). You can still see this if you using > http://people.freedesktop.org/~hughsient/temp/idlecounter-demo.c and > then do: > > sleep 10 && xset dpms force off && sleep 1 && xset dpms force on > > You'll see that the DPMS setting off /still/ resets the idletime. > > The attached patch removes the reset of lastDeviceEventTime when we do > dixSaveScreens to turn on the screensaver, when the screen is turned > off. I can now remove all the bodges working around X bugs with the > previous and this patch added to Fedora 11. > > Please review, > > Richard.
> From 9c5fcee00d247c5bcf8a9af3a2e332ea4416f7e8 Mon Sep 17 00:00:00 2001 > From: Richard Hughes <[email protected]> > Date: Mon, 17 Aug 2009 09:15:32 +0100 > Subject: [PATCH 2/2] Do not reset lastDeviceEventTime when we do > dixSaveScreens > > When we turn off DPMS with DPMSModeOff and do dixSaveScreens, don't reset the > event time else session clients using IDLETIME will be reset. > --- > dix/window.c | 2 -- > 1 files changed, 0 insertions(+), 2 deletions(-) > > diff --git a/dix/window.c b/dix/window.c > index 32e26d9..1a645f6 100644 > --- a/dix/window.c > +++ b/dix/window.c > @@ -3128,8 +3128,6 @@ dixSaveScreens(ClientPtr client, int on, int mode) > > if (on == SCREEN_SAVER_FORCER) > { > - UpdateCurrentTimeIf(); > - lastDeviceEventTime = currentTime; > if (mode == ScreenSaverReset) > what = SCREEN_SAVER_OFF; > else > -- > 1.6.2.5 > pushed as 6b5978dcf1f7ac3ecc2f22df06f7000f360e2066, thanks again for the patches. Cheers, Peter _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
