1
0
Fork 0
spectre/source/Platform/Unix/X11SharedDisplay.cpp

40 lines
696 B
C++

#include <assert.h>
#include "X11SharedDisplay.h"
namespace sp {
// Define a global display (for simplicity, we always connect to local one.)
::Display* sharedDisplay = NULL;
unsigned int refcount = 0;
::Display* XGetDisplay() {
// Create if we dont have any references.
if (refcount == 0) {
sharedDisplay = XOpenDisplay(NULL);
}
refcount++;
return sharedDisplay;
}
void XReleaseDisplay(::Display* disp) {
assert(disp == sharedDisplay);
if (refcount < 1) {
return;
}
if (--refcount == 0) {
XCloseDisplay(sharedDisplay);
}
}
Atom getAtom(const std::string& name, bool onlyIfExists) {
return XInternAtom(sharedDisplay, name.c_str(), onlyIfExists);
}
} // namespace sp