summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;