X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=otk%2Fdisplay.cc;h=77111d3cbb4f5398d5f121ba896c138cc5986053;hb=c09095554429d93f2e1f4fef2d6028a523f6206c;hp=980fcaaadefa1ce89ba32f1ecd39a1d0cba5b781;hpb=16c00e34f310707bc8a8afde5c884e904c2e04db;p=chaz%2Fopenbox diff --git a/otk/display.cc b/otk/display.cc index 980fcaaa..77111d3c 100644 --- a/otk/display.cc +++ b/otk/display.cc @@ -11,6 +11,10 @@ extern "C" { #include +#ifdef SHAPE +#include +#endif // SHAPE + #ifdef HAVE_STDIO_H # include #endif // HAVE_STDIO_H @@ -47,6 +51,7 @@ int OBDisplay::_xinerama_event_basep = 0; unsigned int OBDisplay::_mask_list[8]; OBDisplay::ScreenInfoList OBDisplay::_screenInfoList; BGCCache *OBDisplay::_gccache = (BGCCache*) 0; +int OBDisplay::_grab_count = 0; int OBDisplay::xerrorHandler(Display *d, XErrorEvent *e) @@ -168,6 +173,21 @@ const ScreenInfo* OBDisplay::screenInfo(int snum) { } +void OBDisplay::grab() +{ + if (_grab_count == 0) + XGrabServer(display); + _grab_count++; +} + + +void OBDisplay::ungrab() +{ + if (_grab_count == 0) return; + _grab_count--; + if (_grab_count == 0) + XUngrabServer(display); +}