diff --git a/hw/dmx/dmxextension.c b/hw/dmx/dmxextension.c index 2f2bceb0f..24b5f19d5 100644 --- a/hw/dmx/dmxextension.c +++ b/hw/dmx/dmxextension.c @@ -1512,6 +1512,10 @@ dmxAttachScreen (int idx, if (!dmxScreen->scrnWin) dmxScreen->scrnWin = DefaultRootWindow (dmxScreen->beDisplay); + XSelectInput (dmxScreen->beDisplay, + dmxScreen->scrnWin, + StructureNotifyMask); + dmxSetErrorHandler(dmxScreen); dmxGetScreenAttribs(dmxScreen); @@ -1584,7 +1588,7 @@ dmxAttachScreen (int idx, dmxScreen->name = strdup(attr->name); else dmxScreen->name = strdup(attr->displayName); - + dmxScreen->beAttachedDisplay = dmxScreen->beDisplay; dmxScreen->beDisplay = NULL; diff --git a/hw/dmx/dmxscrinit.c b/hw/dmx/dmxscrinit.c index 3550e71e4..ba5c097db 100644 --- a/hw/dmx/dmxscrinit.c +++ b/hw/dmx/dmxscrinit.c @@ -148,10 +148,6 @@ void dmxBEScreenInit(int idx, ScreenPtr pScreen) /* Handle screen savers and DPMS on the backend */ dmxDPMSInit(dmxScreen); - XSelectInput (dmxScreen->beDisplay, - dmxScreen->scrnWin, - StructureNotifyMask); - #ifdef RANDR dmxBERRScreenInit (pScreen); #endif @@ -991,7 +987,7 @@ dmxScreenBlockHandler (pointer blockData, ScreenPtr pScreen = (ScreenPtr) blockData; DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum]; - if (dmxScreen->beDisplay) + if (dmxScreen->alive) { xcb_flush (dmxScreen->connection); dmxScreenCheckForIOError (pScreen); @@ -1006,7 +1002,7 @@ dmxScreenWakeupHandler (pointer blockData, ScreenPtr pScreen = (ScreenPtr) blockData; DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum]; - if (dmxScreen->beDisplay) + if (dmxScreen->alive) dmxBEDispatch (pScreen); } @@ -1193,7 +1189,12 @@ Bool dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[]) dmxScreen->beBPP); if (!dmxScreen->scrnWin && dmxScreen->beDisplay) + { dmxScreen->scrnWin = DefaultRootWindow (dmxScreen->beDisplay); + XSelectInput (dmxScreen->beDisplay, + dmxScreen->scrnWin, + StructureNotifyMask); + } #ifdef MITSHM ShmRegisterDmxFuncs (pScreen); diff --git a/hw/dmx/dmxsync.c b/hw/dmx/dmxsync.c index 230bc79ba..98c18a74d 100644 --- a/hw/dmx/dmxsync.c +++ b/hw/dmx/dmxsync.c @@ -88,7 +88,7 @@ dmxWaitForResponse (void) for (i = 0; i < dmxNumScreens; i++) { - if (dmxScreens[i].beDisplay && dmxScreens[i].alive) + if (dmxScreens[i].alive) { xcb_flush (dmxScreens[i].connection);