gtk4: fix grabbing X11 check window before 15s after boot
The check window is necessary to obtain extended wm hints.
This commit is contained in:
parent
a43ec522ca
commit
13d2cfc9fa
|
@ -0,0 +1,85 @@
|
||||||
|
From ab33b56ec95b1867cc44808d60caddaf67887ba7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: oreo639 <oreo6391@gmail.com>
|
||||||
|
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 efd5107c52d..4e24acc33bb 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 2456f14b29d..c0584b2d591 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 d3775b23e51..bfd014997ba 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;
|
||||||
|
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'gtk4'
|
# Template file for 'gtk4'
|
||||||
pkgname=gtk4
|
pkgname=gtk4
|
||||||
version=4.14.2
|
version=4.14.2
|
||||||
revision=2
|
revision=3
|
||||||
build_style=meson
|
build_style=meson
|
||||||
build_helper="gir"
|
build_helper="gir"
|
||||||
configure_args="-Dman-pages=true -Ddocumentation=true -Dbuild-tests=false
|
configure_args="-Dman-pages=true -Ddocumentation=true -Dbuild-tests=false
|
||||||
|
|
Loading…
Reference in New Issue