Code cleanups I keep forgetting to commit...
This commit is contained in:
@@ -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.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user