20 #ifndef WINDOW_INFORMATION_H 21 #define WINDOW_INFORMATION_H 23 #include <cairoSurfaceImage.h> 24 #if defined(CAIRO_HAS_WIN32_SURFACE) && !defined(__CYGWIN__) 25 #define USE_WIN32_SURFACE 28 #elif defined(MAC_OSX_TK) 30 #elif defined(CAIRO_HAS_XLIB_SURFACE) 32 #include <cairo/cairo-xlib.h> 46 #ifdef USE_WIN32_SURFACE 47 HWND parentWindowId, childWindowId;
51 #elif defined(MAC_OSX_TK) 53 std::shared_ptr<std::lock_guard<std::mutex>> lock;
55 #elif defined(USE_X11) 56 Window parentWindowId;
57 Window childWindowId, bufferWindowId;
61 XWindowAttributes wAttr;
72 #if defined(MAC_OSX_TK) 74 #elif defined(USE_X11) 75 struct EventThread:
public Winfo,
public std::thread
78 EventThread(
const Winfo& w):
Winfo(w), thread([this]{run();}) {}
79 ~EventThread() {XDestroyWindow(display, childWindowId); join();}
82 std::unique_ptr<EventThread> eventThread;
89 std::function<void()>
draw;