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'
|
||||
pkgname=gtk4
|
||||
version=4.14.2
|
||||
revision=2
|
||||
revision=3
|
||||
build_style=meson
|
||||
build_helper="gir"
|
||||
configure_args="-Dman-pages=true -Ddocumentation=true -Dbuild-tests=false
|
||||
|
|
Loading…
Reference in New Issue