all repos — openbox @ e943c31bb008a4cef0891f5b86b84af523153323

openbox fork - make it a bit more like ryudo

only say xinerama is active if we can find some regions for it
Dana Jansens danakj@orodu.net
commit

e943c31bb008a4cef0891f5b86b84af523153323

parent

c293fd65caff1879a4d27fcc177966fda97ddfe5

1 files changed, 8 insertions(+), 2 deletions(-)

jump to
M src/BaseDisplay.ccsrc/BaseDisplay.cc

@@ -483,6 +483,8 @@ display_string = string("DISPLAY=") + default_string + '.' +

itostring(static_cast<unsigned long>(screen_number)); #ifdef XINERAMA + xinerama_active = False; + if (d->hasXineramaExtensions()) { if (d->getXineramaMajorVersion() == 1) { // we know the version 1(.1?) protocol

@@ -492,8 +494,7 @@ in this version of Xinerama, we can't query on a per-screen basis, but

in future versions we should be able, so the 'activeness' is checked on a pre-screen basis anyways. */ - xinerama_active = XineramaIsActive(d->getXDisplay()); - if (xinerama_active) { + if (XineramaIsActive(d->getXDisplay())) { /* If Xinerama is being used, there there is only going to be one screen present. We still, of course, want to use the screen class, but that

@@ -503,11 +504,16 @@ */

int num; XineramaScreenInfo *info = XineramaQueryScreens(d->getXDisplay(), &num); if (num > 0 && info) { + xinerama_areas.reserve(num); for (int i = 0; i < num; ++i) { xinerama_areas.push_back(Rect(info[i].x_org, info[i].y_org, info[i].width, info[i].height)); } XFree(info); + + // if we can't find any xinerama regions, then we act as if it is not + // active, even though it said it was + xinerama_active = True; } } }