xc/programs/Xserver/hw/xfree86/common/xf86Events.c

//bugs.freedesktop.org/show_bug.cgi?id=1933) attachment #1392
    (https://bugs.freedesktop.org/attachment.cgi?id=1392): Improving DPMS
    handling on VT swich and server termination/abort: previous version
    called the driver directly and too late. Patch by Egbert Eich
    <eich@freedesktop.org>
This commit is contained in:
Roland Mainz 2004-12-15 05:36:14 +00:00
parent b380853db9
commit b6b4d6b342
2 changed files with 13 additions and 12 deletions

View file

@ -49,7 +49,7 @@
*/
/* $XConsortium: xf86Events.c /main/46 1996/10/25 11:36:30 kaleb $ */
/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Events.c,v 1.2 2004/04/23 19:20:32 eich Exp $ */
/* $XdotOrg: xc/programs/Xserver/hw/xfree86/common/xf86Events.c,v 1.3 2004/07/30 20:56:53 eich Exp $ */
/* [JCH-96/01/21] Extended std reverse map to four buttons. */
@ -1333,6 +1333,10 @@ xf86VTSwitch()
#ifdef DEBUG
ErrorF("xf86VTSwitch: Leaving, xf86Exiting is %s\n",
BOOLTOSTRING((dispatchException & DE_TERMINATE) ? TRUE : FALSE));
#endif
#ifdef DPMSExtension
if (DPMSPowerLevel != DPMSModeOn)
DPMSSet(DPMSModeOn);
#endif
for (i = 0; i < xf86NumScreens; i++) {
if (!(dispatchException & DE_TERMINATE))
@ -1353,13 +1357,9 @@ xf86VTSwitch()
}
#endif /* !__UNIXOS2__ */
xf86EnterServerState(SETUP);
for (i = 0; i < xf86NumScreens; i++) {
#ifdef DPMSExtension
if (xf86Screens[i]->DPMSSet)
xf86Screens[i]->DPMSSet(xf86Screens[i],DPMSModeOn,0);
#endif
for (i = 0; i < xf86NumScreens; i++)
xf86Screens[i]->LeaveVT(i, 0);
}
for (ih = InputHandlers; ih; ih = ih->next)
xf86DisableInputHandler(ih);
xf86AccessLeave(); /* We need this here, otherwise */

View file

@ -96,6 +96,7 @@ extern int xtest_command_key;
#ifdef DPMSExtension
#define DPMS_SERVER
#include "extensions/dpms.h"
#include "dpmsproc.h"
#endif
@ -1244,7 +1245,7 @@ AbortDDX()
/*
* try to deinitialize all input devices
*/
if (xf86Info.pKeyboard)
if (xf86Info.kbdProc && xf86Info.pKeyboard)
(xf86Info.kbdProc)(xf86Info.pKeyboard, DEVICE_CLOSE);
/*
@ -1253,6 +1254,10 @@ AbortDDX()
#ifdef HAS_USL_VTS
/* Need the sleep when starting X from within another X session */
sleep(1);
#endif
#ifdef DPMSExtension /* Turn screens back on */
if (DPMSPowerLevel != DPMSModeOn)
DPMSSet(DPMSModeOn);
#endif
if (xf86Screens) {
if (xf86Screens[0]->vtSema)
@ -1265,10 +1270,6 @@ AbortDDX()
* screen explicitely.
*/
xf86EnableAccess(xf86Screens[i]);
#ifdef DPMSExtension
if (xf86Screens[i]->DPMSSet)
xf86Screens[i]->DPMSSet(xf86Screens[i],DPMSModeOn,0);
#endif
(xf86Screens[i]->LeaveVT)(i, 0);
}
}