X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fdisplay.cc;h=7fafed0c092bc3611295042c9d9422a5f398970b;hb=52b83a9dbb2b7823d5f78781f5948dfd8d77d50b;hp=b6fcab07e94df3b18e367a5ac42e5f0c41e88a72;hpb=45c2589ef6e6576604543229dfa1582d471e6a94;p=chaz%2Fopenbox diff --git a/otk/display.cc b/otk/display.cc index b6fcab07..7fafed0c 100644 --- a/otk/display.cc +++ b/otk/display.cc @@ -1,4 +1,4 @@ -// -*- mode: C++; indent-tabs-mode: nil; -*- +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- #ifdef HAVE_CONFIG_H # include "../config.h" @@ -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) @@ -54,8 +59,11 @@ int OBDisplay::xerrorHandler(Display *d, XErrorEvent *e) #ifdef DEBUG char errtxt[128]; - XGetErrorText(d, e->error_code, errtxt, 128); - printf("X Error: %s\n", errtxt); + //if (e->error_code != BadWindow) + { + XGetErrorText(d, e->error_code, errtxt, 128); + printf("X Error: %s\n", errtxt); + } #else (void)d; (void)e; @@ -165,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); +}