From ec14f9a4c696f795c94bf51ab48c598995729625 Mon Sep 17 00:00:00 2001 From: oreo639 Date: Tue, 16 Apr 2024 12:35:00 -0700 Subject: [PATCH] x11: Remove last_wmspec_check_time In fetch_net_wm_check_window(), before updating the wmspec_check_window, a check is performed to verify a 15s difference between last_wmspec_check_time and the current monotonic time. The comment suggests that this check is done to ensure that it doesn't check for a new check window repeatedly over and over again. While that was the case origionally, currently the last_wmspec_check_time only gets updated when wmspec_check_window is set, which is already checked earlier, making the time check useless. This check causes issues on cold boots where gtk4 applications are not able to obtain the wmspec_check_window until 15 seconds after boot, making gtk unable to check for extended wm_hints during that time. Fixes: #6558 --- gdk/x11/gdkdisplay-x11.c | 1 - gdk/x11/gdkscreen-x11.c | 7 ------- gdk/x11/gdkscreen-x11.h | 1 - 3 files changed, 9 deletions(-) diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index efd5107c52..4e24acc33b 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -665,7 +665,6 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator, if (x11_screen->wmspec_check_window == xevent->xdestroywindow.window) { x11_screen->wmspec_check_window = None; - x11_screen->last_wmspec_check_time = 0; g_free (x11_screen->window_manager_name); x11_screen->window_manager_name = g_strdup ("unknown"); diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c index 2456f14b29..c0584b2d59 100644 --- a/gdk/x11/gdkscreen-x11.c +++ b/gdk/x11/gdkscreen-x11.c @@ -1145,7 +1145,6 @@ fetch_net_wm_check_window (GdkX11Screen *x11_screen) { GdkDisplay *display; Window window; - guint64 now; int error; display = x11_screen->display; @@ -1155,11 +1154,6 @@ fetch_net_wm_check_window (GdkX11Screen *x11_screen) if (x11_screen->wmspec_check_window != None) return; /* already have it */ - now = g_get_monotonic_time (); - - if ((now - x11_screen->last_wmspec_check_time) / 1e6 < 15) - return; /* we've checked recently */ - window = get_net_supporting_wm_check (x11_screen, x11_screen->xroot_window); if (window == None) return; @@ -1184,7 +1178,6 @@ fetch_net_wm_check_window (GdkX11Screen *x11_screen) return; x11_screen->wmspec_check_window = window; - x11_screen->last_wmspec_check_time = now; x11_screen->need_refetch_net_supported = TRUE; x11_screen->need_refetch_wm_name = TRUE; diff --git a/gdk/x11/gdkscreen-x11.h b/gdk/x11/gdkscreen-x11.h index d3775b23e5..bfd014997b 100644 --- a/gdk/x11/gdkscreen-x11.h +++ b/gdk/x11/gdkscreen-x11.h @@ -48,7 +48,6 @@ struct _GdkX11Screen int xft_dpi; /* Window manager */ - gint64 last_wmspec_check_time; Window wmspec_check_window; char *window_manager_name;