X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fdisplay.cc;h=98288bd02dcdf54990437673a55fb1e9d14264f4;hb=e8f5cf2940667a60698d28fe0cae208792357676;hp=6fc6117cd2e5a72af0a40de1523ff26201c2f642;hpb=19eb13679dff7cb492f09b848e34b1fe6c081cbc;p=chaz%2Fopenbox diff --git a/otk/display.cc b/otk/display.cc index 6fc6117c..98288bd0 100644 --- a/otk/display.cc +++ b/otk/display.cc @@ -7,22 +7,27 @@ #include "display.hh" #include "screeninfo.hh" #include "gccache.hh" +#include "util.hh" extern "C" { #include +#ifdef XKB +#include +#endif // XKB + #ifdef SHAPE #include #endif // SHAPE +#ifdef XINERAMA +#include +#endif // XINERAMA + #ifdef HAVE_STDIO_H # include #endif // HAVE_STDIO_H -#ifdef HAVE_STDLIB_H -# include -#endif // HAVE_STDLIB_H - #ifdef HAVE_SIGNAL_H # include #endif // HAVE_SIGNAL_H @@ -44,6 +49,8 @@ namespace otk { Display *OBDisplay::display = (Display*) 0; +bool OBDisplay::_xkb = false; +int OBDisplay::_xkb_event_basep = 0; bool OBDisplay::_shape = false; int OBDisplay::_shape_event_basep = 0; bool OBDisplay::_xinerama = false; @@ -100,13 +107,14 @@ line argument.\n\n")); // set the DISPLAY environment variable for any lauched children, to the // display we're using, so they open in the right place. // XXX rm -> std::string dtmp = "DISPLAY=" + DisplayString(display); - if (putenv(const_cast((std::string("DISPLAY=") + - DisplayString(display)).c_str()))) { - printf(_("warning: couldn't set environment variable 'DISPLAY'\n")); - perror("putenv()"); - } + putenv(std::string("DISPLAY=") + DisplayString(display)); // find the availability of X extensions we like to use +#ifdef XKB + _xkb = XkbQueryExtension(display, &junk, &_xkb_event_basep, &junk, NULL, + NULL); +#endif + #ifdef SHAPE _shape = XShapeQueryExtension(display, &_shape_event_basep, &junk); #endif