querying for Xinerama should be done per display, not per screen, so

move chuck to display init; allows some shuffling to occur limiting
screen_init_xinerama()'s scope while keeping order intact.
This commit is contained in:
okan 2012-07-06 14:18:00 +00:00
parent 315f25f7ab
commit cb893d0aa9
4 changed files with 12 additions and 13 deletions

View File

@ -97,7 +97,7 @@ main(int argc, char **argv)
static void
dpy_init(const char *dpyname)
{
int i;
int i, fake;
XSetErrorHandler(x_errorhandler);
@ -110,6 +110,9 @@ dpy_init(const char *dpyname)
XSync(X_Dpy, False);
XSetErrorHandler(x_errorhandler);
if (XineramaQueryExtension(X_Dpy, &fake, &fake) == 1 &&
((HasXinerama = XineramaIsActive(X_Dpy)) == 1))
HasXinerama = 1;
HasRandr = XRRQueryExtension(X_Dpy, &Randr_ev, &i);
}
@ -157,7 +160,6 @@ x_setupscreen(struct screen_ctx *sc, u_int which)
Window *wins, w0, w1;
XWindowAttributes winattr;
XSetWindowAttributes rootattr;
int fake;
u_int nwins, i;
sc->which = which;
@ -201,17 +203,8 @@ x_setupscreen(struct screen_ctx *sc, u_int which)
screen_updatestackingorder(sc);
if (XineramaQueryExtension(X_Dpy, &fake, &fake) == 1 &&
((HasXinerama = XineramaIsActive(X_Dpy)) == 1))
HasXinerama = 1;
if (HasRandr)
XRRSelectInput(X_Dpy, sc->rootwin, RRScreenChangeNotifyMask);
/*
* initial setup of xinerama screens, if we're using RandR then we'll
* redo this whenever the screen changes since a CTRC may have been
* added or removed
*/
screen_init_xinerama(sc);
XSync(X_Dpy, False);
}

View File

@ -360,7 +360,6 @@ void search_print_client(struct menu *, int);
XineramaScreenInfo *screen_find_xinerama(struct screen_ctx *, int, int);
struct screen_ctx *screen_fromroot(Window);
void screen_init_xinerama(struct screen_ctx *);
void screen_update_geometry(struct screen_ctx *);
void screen_updatestackingorder(struct screen_ctx *);

View File

@ -30,6 +30,8 @@
#include "calmwm.h"
static void screen_init_xinerama(struct screen_ctx *);
struct screen_ctx *
screen_fromroot(Window rootwin)
{
@ -65,6 +67,10 @@ screen_updatestackingorder(struct screen_ctx *sc)
XFree(wins);
}
/*
* If we're using RandR then we'll redo this whenever the screen
* changes since a CTRC may have been added or removed
*/
void
screen_init_xinerama(struct screen_ctx *sc)
{
@ -114,6 +120,8 @@ screen_update_geometry(struct screen_ctx *sc)
sc->xmax = DisplayWidth(X_Dpy, sc->which);
sc->ymax = DisplayHeight(X_Dpy, sc->which);
screen_init_xinerama(sc);
xu_ewmh_net_desktop_geometry(sc);
xu_ewmh_net_workarea(sc);
}

View File

@ -366,7 +366,6 @@ xev_handle_randr(XEvent *ee)
if (sc->which == (u_int)i) {
XRRUpdateConfiguration(ee);
screen_update_geometry(sc);
screen_init_xinerama(sc);
}
}
}