Add dmxCloseDisplay and make dmxOpenDisplay properly initilize

syncCookie and use AddEnableDevice.
This commit is contained in:
David Reveman 2008-07-20 23:14:26 -04:00
parent bfd41ad4cb
commit 96322ebffc
4 changed files with 20 additions and 12 deletions

View file

@ -1847,6 +1847,7 @@ dmxAttachScreen (int idx,
"WM running. cannot use back-end server "
"root window\n");
dmxCloseDisplay (dmxScreen);
/* Restore the old screen */
*dmxScreen = oldDMXScreen;
return 1;
@ -1918,9 +1919,7 @@ dmxAttachScreen (int idx,
dmxLogErrorSet (dmxWarning, errorSet, error, errorName,
"No matching visuals found");
XFree(dmxScreen->beVisuals);
XLIB_PROLOGUE (dmxScreen);
XCloseDisplay(dmxScreen->beDisplay);
XLIB_EPILOGUE (dmxScreen);
dmxCloseDisplay (dmxScreen);
/* Restore the old screen */
*dmxScreen = oldDMXScreen;
@ -1945,9 +1944,7 @@ dmxAttachScreen (int idx,
XFree(dmxScreen->beVisuals);
XFree(dmxScreen->beDepths);
XFree(dmxScreen->bePixmapFormats);
XLIB_PROLOGUE (dmxScreen);
XCloseDisplay(dmxScreen->beDisplay);
XLIB_EPILOGUE (dmxScreen);
dmxCloseDisplay (dmxScreen);
/* Restore the old screen */
*dmxScreen = oldDMXScreen;
@ -1961,9 +1958,7 @@ dmxAttachScreen (int idx,
XFree(dmxScreen->beVisuals);
XFree(dmxScreen->beDepths);
XFree(dmxScreen->bePixmapFormats);
XLIB_PROLOGUE (dmxScreen);
XCloseDisplay(dmxScreen->beDisplay);
XLIB_EPILOGUE (dmxScreen);
dmxCloseDisplay (dmxScreen);
/* Restore the old screen */
*dmxScreen = oldDMXScreen;

View file

@ -292,10 +292,23 @@ Bool dmxOpenDisplay(DMXScreenInfo *dmxScreen)
dmxScreen->fd = XConnectionNumber (dmxScreen->beDisplay);
dmxScreen->connection = XGetXCBConnection (dmxScreen->beDisplay);
dmxScreen->syncCookie.sequence = 0;
AddEnabledDevice (dmxScreen->fd);
dmxPropertyDisplay(dmxScreen);
return TRUE;
}
void dmxCloseDisplay(DMXScreenInfo *dmxScreen)
{
RemoveEnabledDevice (dmxScreen->fd);
XLIB_PROLOGUE (dmxScreen);
XCloseDisplay (dmxScreen->beDisplay);
XLIB_EPILOGUE (dmxScreen);
}
void dmxSetErrorHandler(DMXScreenInfo *dmxScreen)
{
XSetErrorHandler(dmxErrorHandler);

View file

@ -40,6 +40,7 @@
#include "scrnintstr.h"
extern Bool dmxOpenDisplay(DMXScreenInfo *dmxScreen);
extern void dmxCloseDisplay(DMXScreenInfo *dmxScreen);
extern void dmxSetErrorHandler(DMXScreenInfo *dmxScreen);
extern void dmxCheckForWM(DMXScreenInfo *dmxScreen);
extern void dmxGetScreenAttribs(DMXScreenInfo *dmxScreen);

View file

@ -55,6 +55,7 @@
#include "dmxdpms.h"
#include "dmxlog.h"
#include "dmxcb.h"
#include "dmxinit.h"
#ifdef PANORAMIX
#include "panoramiX.h"
@ -2374,9 +2375,7 @@ void dmxBECloseScreen(ScreenPtr pScreen)
#endif
/* Close display */
XLIB_PROLOGUE (dmxScreen);
XCloseDisplay(dmxScreen->beDisplay);
XLIB_EPILOGUE (dmxScreen);
dmxCloseDisplay (dmxScreen);
dmxScreen->beDisplay = NULL;
}