From e356ef8c058d174f8261b2c8508e93998b8c7d79 Mon Sep 17 00:00:00 2001 From: "Carlos R. Mafra" Date: Tue, 30 Dec 2025 20:18:03 +0000 Subject: [PATCH] Revert "Prevent unnecessary RandR wmaker restart" This reverts commit 3579c85af1a44458081867957091db8d685199b8. As pointed out by David Maciejak himself, this patch triggers an odd behavior: "Now I cannot do a rectangular selection on the desktop with the left click of the mouse like I used to do. Seems the XRRQueryVersion call to get randr version is messing up with the X events. I tried to move up the call in src/startup.c and src/main.c instead to the point where the bug cannot be reproduced if I am putting the XRRQueryVersion code just before the call to wDefaultsInitDomain "WMWindowAttributes" (in src/startup.c) which is really weird." --- src/event.c | 20 ++++++++------------ src/screen.c | 11 ++--------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/event.c b/src/event.c index 3b93ffee..67d30098 100644 --- a/src/event.c +++ b/src/event.c @@ -575,18 +575,14 @@ static void handleExtensions(XEvent * event) } #endif /*KEEP_XKB_LOCK_STATUS */ #ifdef USE_RANDR - if (w_global.xext.randr.supported) { - int base = w_global.xext.randr.event_base; - if (event->type == base + RRScreenChangeNotify || - (event->type == base + RRNotify && ((XRRNotifyEvent*)event)->subtype == RRNotify_CrtcChange)) { - /* From xrandr man page: "Clients must call back into Xlib using - * XRRUpdateConfiguration when screen configuration change notify - * events are generated */ - XRRUpdateConfiguration(event); - WCHANGE_STATE(WSTATE_RESTARTING); - Shutdown(WSRestartPreparationMode); - Restart(NULL,True); - } + if (w_global.xext.randr.supported && event->type == (w_global.xext.randr.event_base + RRScreenChangeNotify)) { + /* From xrandr man page: "Clients must call back into Xlib using + * XRRUpdateConfiguration when screen configuration change notify + * events are generated */ + XRRUpdateConfiguration(event); + WCHANGE_STATE(WSTATE_RESTARTING); + Shutdown(WSRestartPreparationMode); + Restart(NULL,True); } #endif } diff --git a/src/screen.c b/src/screen.c index 59fc8aa9..3a2fd3b7 100644 --- a/src/screen.c +++ b/src/screen.c @@ -669,15 +669,8 @@ WScreen *wScreenInit(int screen_number) #endif /* KEEP_XKB_LOCK_STATUS */ #ifdef USE_RANDR - if (w_global.xext.randr.supported) { - int major, minor; - if (XRRQueryVersion(dpy, &major, &minor)) { - if (major >= 1 && minor >= 2) - XRRSelectInput(dpy, scr->root_win, RRCrtcChangeNotifyMask); - else - XRRSelectInput(dpy, scr->root_win, RRScreenChangeNotifyMask); - } - } + if (w_global.xext.randr.supported) + XRRSelectInput(dpy, scr->root_win, RRScreenChangeNotifyMask); #endif XSync(dpy, False);