summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-22 05:37:10 +0000
committerDana Jansens <danakj@orodu.net>2002-07-22 05:37:10 +0000
commite943c31bb008a4cef0891f5b86b84af523153323 (patch)
treebe01cbf043905b957902c785c9ce2b4bc6844b6c
parentc293fd65caff1879a4d27fcc177966fda97ddfe5 (diff)
only say xinerama is active if we can find some regions for it
-rw-r--r--src/BaseDisplay.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/BaseDisplay.cc b/src/BaseDisplay.cc
index 5aecac89..305973ac 100644
--- a/src/BaseDisplay.cc
+++ b/src/BaseDisplay.cc
@@ -483,6 +483,8 @@ ScreenInfo::ScreenInfo(BaseDisplay *d, unsigned int num) {
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 @@ ScreenInfo::ScreenInfo(BaseDisplay *d, unsigned int num) {
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 @@ ScreenInfo::ScreenInfo(BaseDisplay *d, unsigned int num) {
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;
}
}
}