summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2022-09-30 16:55:46 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2022-09-30 16:55:46 +0300
commitf46db3ec524d8880f64c847984f3a18e394bac2a (patch)
tree213fba05933c5babf2e867128d95043db169ba1f
parent700d4aa07793740bf4b92c09f4aa0a97aca04bd6 (diff)
downloadmetacity-f46db3ec524d8880f64c847984f3a18e394bac2a.tar.gz
window-props: re-add support for _NET_WM_PID
We will use _NET_WM_PID when xserver does not have XRes extension or its version is too old. This partially reverts 9135966673e9fd430b9e8252abdb9c946295e25b.
-rw-r--r--src/core/window-private.h1
-rw-r--r--src/core/window-props.c28
-rw-r--r--src/core/window.c1
3 files changed, 30 insertions, 0 deletions
diff --git a/src/core/window-private.h b/src/core/window-private.h
index 67ade36a..ff1a606c 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -131,6 +131,7 @@ struct _MetaWindow
char *startup_id;
char *gtk_theme_variant;
+ int net_wm_pid;
pid_t client_pid;
Window xtransient_for;
diff --git a/src/core/window-props.c b/src/core/window-props.c
index 23b10e29..0b42e569 100644
--- a/src/core/window-props.c
+++ b/src/core/window-props.c
@@ -389,6 +389,28 @@ reload_wm_window_role (MetaWindow *window,
}
static void
+reload_net_wm_pid (MetaWindow *window,
+ MetaPropValue *value,
+ gboolean initial)
+{
+ if (value->type != META_PROP_VALUE_INVALID)
+ {
+ gulong cardinal = (int) value->v.cardinal;
+
+ if (cardinal <= 0)
+ {
+ g_warning ("Application set a bogus _NET_WM_PID %lu", cardinal);
+ }
+ else
+ {
+ window->net_wm_pid = cardinal;
+ meta_verbose ("Window has _NET_WM_PID %d\n",
+ window->net_wm_pid);
+ }
+ }
+}
+
+static void
reload_net_wm_user_time (MetaWindow *window,
MetaPropValue *value,
gboolean initial)
@@ -1782,6 +1804,12 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
LOAD_INIT | INCLUDE_OR
},
{
+ display->atom__NET_WM_PID,
+ META_PROP_VALUE_CARDINAL,
+ reload_net_wm_pid,
+ LOAD_INIT | INCLUDE_OR
+ },
+ {
XA_WM_NAME,
META_PROP_VALUE_TEXT_PROPERTY,
reload_wm_name,
diff --git a/src/core/window.c b/src/core/window.c
index 7933a0f9..1512a18e 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -567,6 +567,7 @@ meta_window_new (MetaDisplay *display,
window->startup_id = NULL;
window->gtk_theme_variant = NULL;
+ window->net_wm_pid = -1;
window->client_pid = -1;
window->xtransient_for = None;