diff --git a/src/event.c b/src/event.c index faa72e9..2608b7b 100644 --- a/src/event.c +++ b/src/event.c @@ -503,6 +503,7 @@ unmapnotify(XUnmapEvent *ev) void xrandrnotify(XEvent *ev) { + /* Update configuration */ XRRUpdateConfiguration(ev); /* Reload WMFS to update the screen(s) geometry changement */ @@ -562,12 +563,13 @@ getevent(XEvent ev) case MappingNotify: mappingnotify(&ev.xmapping); break; case PropertyNotify: propertynotify(&ev.xproperty); break; case UnmapNotify: unmapnotify(&ev.xunmap); break; + default: + /* Check Xrandr event */ + if(ev.type == xrandr_event) + xrandrnotify(&ev); + break; } - /* Check Xrandr event */ - if(ev.type == xrandr_event) - xrandrnotify(&ev); - wait(&st); return; diff --git a/src/screen.c b/src/screen.c index 6b7dda4..1e4e935 100644 --- a/src/screen.c +++ b/src/screen.c @@ -158,7 +158,7 @@ screen_get_sel(void) void screen_init_geo(void) { - int i, n, randr_e, d; + int i, n, d; XineramaScreenInfo *xsi; sgeo = emalloc(screen_count(), sizeof(XRectangle)); @@ -187,11 +187,9 @@ screen_init_geo(void) spgeo[0].height = MAXH; } - /* Init Xrandr stuff for event */ - if(XRRQueryExtension(dpy, &randr_e, &d)) - xrandr_event = randr_e + RRScreenChangeNotify; - else - xrandr_event = -1; + /* Init Xrandr stuff */ + XRRSelectInput(dpy, ROOT, 1); + XRRQueryExtension(dpy, &xrandr_event, &d); ewmh_set_desktop_geometry(); ewmh_set_workarea();