diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2022-09-30 16:55:46 +0300 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2022-09-30 16:55:46 +0300 |
commit | f46db3ec524d8880f64c847984f3a18e394bac2a (patch) | |
tree | 213fba05933c5babf2e867128d95043db169ba1f /src/core | |
parent | 700d4aa07793740bf4b92c09f4aa0a97aca04bd6 (diff) | |
download | metacity-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.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/window-private.h | 1 | ||||
-rw-r--r-- | src/core/window-props.c | 28 | ||||
-rw-r--r-- | src/core/window.c | 1 |
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; |