X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fbasedisplay.cc;h=81f8879f290cf787b0b72e5c9c08260a0ceeb6e3;hb=ace8c8896aa13a6fc4e489277cf9c96f49175322;hp=72b0dbb021c29de388591b4b79b966d4440deb51;hpb=7bf96a9123a9f6b29a4c6168f7391db72f374f8a;p=chaz%2Fopenbox diff --git a/src/basedisplay.cc b/src/basedisplay.cc index 72b0dbb0..81f8879f 100644 --- a/src/basedisplay.cc +++ b/src/basedisplay.cc @@ -47,14 +47,6 @@ extern "C" { # include #endif // HAVE_SIGNAL_H -#ifndef SA_NODEFER -# ifdef SA_INTERRUPT -# define SA_NODEFER SA_INTERRUPT -# else // !SA_INTERRUPT -# define SA_NODEFER (0) -# endif // SA_INTERRUPT -#endif // SA_NODEFER - #ifdef HAVE_SYS_WAIT_H # include # include @@ -80,7 +72,7 @@ static int handleXErrors(Display *d, XErrorEvent *e) { #ifdef DEBUG char errtxt[128]; - XGetErrorText(d, e->error_code, errtxt, 128); + XGetErrorText(d, e->error_code, errtxt, 128); // XXX: use this!! fprintf(stderr, "%s: X error: %s(%d) opcodes %d/%d\n resource 0x%lx\n", base_display->getApplicationName(), errtxt, e->error_code, e->request_code, e->minor_code, e->resourceid); @@ -357,108 +349,3 @@ BGCCache* BaseDisplay::gcCache(void) const { return gccache; } - - -ScreenInfo::ScreenInfo(BaseDisplay *d, unsigned int num) { - basedisplay = d; - screen_number = num; - - root_window = RootWindow(basedisplay->getXDisplay(), screen_number); - - rect.setSize(WidthOfScreen(ScreenOfDisplay(basedisplay->getXDisplay(), - screen_number)), - HeightOfScreen(ScreenOfDisplay(basedisplay->getXDisplay(), - screen_number))); - /* - If the default depth is at least 8 we will use that, - otherwise we try to find the largest TrueColor visual. - Preference is given to 24 bit over larger depths if 24 bit is an option. - */ - - depth = DefaultDepth(basedisplay->getXDisplay(), screen_number); - visual = DefaultVisual(basedisplay->getXDisplay(), screen_number); - colormap = DefaultColormap(basedisplay->getXDisplay(), screen_number); - - if (depth < 8) { - // search for a TrueColor Visual... if we can't find one... - // we will use the default visual for the screen - XVisualInfo vinfo_template, *vinfo_return; - int vinfo_nitems; - int best = -1; - - vinfo_template.screen = screen_number; - vinfo_template.c_class = TrueColor; - - vinfo_return = XGetVisualInfo(basedisplay->getXDisplay(), - VisualScreenMask | VisualClassMask, - &vinfo_template, &vinfo_nitems); - if (vinfo_return) { - int max_depth = 1; - for (int i = 0; i < vinfo_nitems; ++i) { - if (vinfo_return[i].depth > max_depth) { - if (max_depth == 24 && vinfo_return[i].depth > 24) - break; // prefer 24 bit over 32 - max_depth = vinfo_return[i].depth; - best = i; - } - } - if (max_depth < depth) best = -1; - } - - if (best != -1) { - depth = vinfo_return[best].depth; - visual = vinfo_return[best].visual; - colormap = XCreateColormap(basedisplay->getXDisplay(), root_window, - visual, AllocNone); - } - - XFree(vinfo_return); - } - - // get the default display string and strip the screen number - string default_string = DisplayString(basedisplay->getXDisplay()); - const string::size_type pos = default_string.rfind("."); - if (pos != string::npos) - default_string.resize(pos); - - display_string = string("DISPLAY=") + default_string + '.' + - itostring(static_cast(screen_number)); - -#ifdef XINERAMA - xinerama_active = False; - - if (d->hasXineramaExtensions()) { - if (d->getXineramaMajorVersion() == 1) { - // we know the version 1(.1?) protocol - - /* - 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. - */ - 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 - is why no screen number is used in this function call. There should - never be more than one screen present with Xinerama active. - */ - 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; - } - } - } - } -#endif // XINERAMA -}