Code cleanups I keep forgetting to commit...

This commit is contained in:
Ben Anderson
2005-03-26 16:39:53 +00:00
parent 9b68e25fc8
commit 80d6e78069
+45 -48
View File
@@ -10,27 +10,14 @@
#include "RageThreads.h" // Don't make me list everything... #include "RageThreads.h" // Don't make me list everything...
vector<long> pMasks; // Currently open masks vector<long> pMasks; // Currently open masks
bool pHaveWin = false; // Do we have a window?
unsigned short int pCt = 0; // Number of subsystems unsigned short int pCt = 0; // Number of subsystems
// using the X connection // using the X connection
Display *X11Helper::Dpy = NULL; Display *X11Helper::Dpy = NULL;
Window X11Helper::Win; Window X11Helper::Win;
int protoErrorCallback(Display *d, XErrorEvent *err) int protoErrorCallback(Display*, XErrorEvent*);
{ int protoFatalCallback(Display*);
char errText[512];
XGetErrorText(d, err->error_code, errText, 512);
LOG->Warn("X11 Protocol error %s (%d) has occurred, caused by request %d,%d, resource ID %d",
errText, err->error_code, err->request_code, err->minor_code, err->resourceid);
return 0; // Xlib ignores our return value
}
int protoFatalCallback(Display *d)
{
RageException::Throw("Fatal I/O error communicating with X server.");
}
bool X11Helper::Go() bool X11Helper::Go()
{ {
@@ -49,36 +36,24 @@ bool X11Helper::Go()
return true; return true;
} }
static bool pApplyMasks() void X11Helper::Stop()
{ {
unsigned int i; pCt--;
long finalMask = 0;
LOG->Trace("X11Helper: Reapplying event masks."); if(pCt == 0)
i = 0;
while(i < pMasks.size() )
{ {
finalMask |= pMasks[i]; XCloseDisplay(Dpy);
i++; Dpy = NULL; // For sanity's sake
pMasks.clear();
} }
if(XSelectInput(X11Helper::Dpy, X11Helper::Win, finalMask) == 0) { return false; }
return true;
} }
static bool pApplyMasks();
bool X11Helper::OpenMask(long mask) bool X11Helper::OpenMask(long mask)
{ {
pMasks.push_back(mask); pMasks.push_back(mask);
if(pHaveWin)
{
return pApplyMasks(); return pApplyMasks();
}
else
{
return true;
}
} }
bool X11Helper::CloseMask(long mask) bool X11Helper::CloseMask(long mask)
@@ -93,27 +68,45 @@ bool X11Helper::CloseMask(long mask)
pMasks.erase(i); pMasks.erase(i);
break; break;
} }
if(i == pMasks.end() ) { return false; } if(i == pMasks.end() ) { return true; } // Never set in the
// first place...
i++; i++;
} }
if(pHaveWin)
{
return pApplyMasks(); return pApplyMasks();
} }
else
static bool pApplyMasks()
{
if(X11Helper::Dpy != NULL)
{ {
return true; long finalMask = 0;
LOG->Trace("X11Helper: Reapplying event masks.");
unsigned int i = 0;
while(i < pMasks.size() )
{
finalMask |= pMasks[i];
i++;
} }
if(XSelectInput(X11Helper::Dpy, X11Helper::Win, finalMask) == 0) { return false; }
}
return true;
} }
bool X11Helper::MakeWindow(int screenNum, int depth, Visual *visual, int width, int height) bool X11Helper::MakeWindow(int screenNum, int depth, Visual *visual, int width, int height)
{ {
static bool pHaveWin = false;
vector<long>::iterator i; vector<long>::iterator i;
if(pCt == 0) { return false; } if(pCt == 0) { return false; }
if(pHaveWin) { XDestroyWindow(Dpy, Win); pHaveWin = false; } if(pHaveWin) { XDestroyWindow(Dpy, Win); pHaveWin = false; }
// pHaveWin will stay false if an error occurs once I do error
// checking here...
XSetWindowAttributes winAttribs; XSetWindowAttributes winAttribs;
@@ -140,15 +133,19 @@ bool X11Helper::MakeWindow(int screenNum, int depth, Visual *visual, int width,
return true; return true;
} }
void X11Helper::Stop() int protoErrorCallback(Display *d, XErrorEvent *err)
{ {
pCt--; char errText[512];
XGetErrorText(d, err->error_code, errText, 512);
LOG->Warn("X11 Protocol error %s (%d) has occurred, caused by request %d,%d, resource ID %d",
errText, err->error_code, err->request_code, err->minor_code, err->resourceid);
if(pCt == 0) return 0; // Xlib ignores our return value
{ }
XCloseDisplay(Dpy);
pMasks.clear(); int protoFatalCallback(Display *d)
} {
RageException::Throw("Fatal I/O error communicating with X server.");
} }
/* /*