41 lines
695 B
C++
41 lines
695 B
C++
#pragma once
|
|
|
|
#include <X11/Xutil.h>
|
|
|
|
#include "common.hpp"
|
|
|
|
LEMONBUDDY_NS
|
|
|
|
namespace xlib {
|
|
extern Display* g_display;
|
|
extern XVisualInfo g_visual_info;
|
|
|
|
extern Display* get_display();
|
|
extern Visual* get_visual(int screen = 0);
|
|
extern Colormap create_colormap(int screen = 0);
|
|
|
|
/**
|
|
* RAII wrapper for Xlib display locking
|
|
*/
|
|
class xlib_lock {
|
|
public:
|
|
explicit xlib_lock(Display* display) {
|
|
XLockDisplay(display);
|
|
m_display = display;
|
|
}
|
|
|
|
~xlib_lock() {
|
|
XUnlockDisplay(m_display);
|
|
}
|
|
|
|
protected:
|
|
Display* m_display;
|
|
};
|
|
|
|
inline auto make_display_lock() {
|
|
return make_unique<xlib_lock>(get_display());
|
|
}
|
|
}
|
|
|
|
LEMONBUDDY_NS_END
|