We now initialize/destroy the display in Xlib::init/shutdown that is called in UnixApplication::init/shutdown and therefore is valid through the whole lifetime. So no need for classes to keep references.
34 lines
572 B
C++
34 lines
572 B
C++
|
|
#include <assert.h>
|
|
#include "Xlib.h"
|
|
|
|
namespace sp { namespace Xlib {
|
|
|
|
namespace _priv {
|
|
// Define a global display (for simplicity, we always connect to local one.)
|
|
::Display* display = NULL;
|
|
};
|
|
|
|
void init()
|
|
{
|
|
_priv::display = XOpenDisplay(NULL);
|
|
}
|
|
|
|
void shutdown()
|
|
{
|
|
XCloseDisplay(_priv::display);
|
|
_priv::display = NULL;
|
|
}
|
|
|
|
::Display* getDisplay()
|
|
{
|
|
assert(_priv::display != NULL);
|
|
return _priv::display;
|
|
}
|
|
|
|
::Atom getAtom(const std::string& name, bool onlyIfExists)
|
|
{
|
|
return XInternAtom(getDisplay(), name.c_str(), onlyIfExists);
|
|
}
|
|
|
|
} } // namespace sp::Xlib
|