summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2020-03-03 12:27:43 -0500
committerMike Blumenkrantz <zmike@samsung.com>2020-03-03 12:27:43 -0500
commitf6f4c1fcc8ced945e9f5ea9294037a98ea98ee1f (patch)
tree8bfa74854696fa6a4ecb43b5b97b92ed4ba7b247
parent146cf9da7e917d1d9e282a7378258d98610057d0 (diff)
downloadefl-f6f4c1fcc8ced945e9f5ea9294037a98ea98ee1f.tar.gz
efl-wl: add function to get pid of a surface
Summary: this is useful for tracking surfaces of specific clients Reviewers: bu5hm4n, devilhorns Reviewed By: devilhorns Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11438
-rw-r--r--src/lib/efl_wl/Efl_Wl.h11
-rw-r--r--src/lib/efl_wl/efl_wl.c12
2 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/efl_wl/Efl_Wl.h b/src/lib/efl_wl/Efl_Wl.h
index 62f43e0d2b..3bf4aeea20 100644
--- a/src/lib/efl_wl/Efl_Wl.h
+++ b/src/lib/efl_wl/Efl_Wl.h
@@ -178,6 +178,17 @@ EAPI void *efl_wl_global_add(Evas_Object *obj, const void *interface, uint32_t v
EAPI Eina_Bool efl_wl_surface_extract(Evas_Object *surface);
/**
+ * Return the pid for the surface's client
+ *
+ * Get the pid of the underlying client that created the surface.
+ *
+ * @param surface The surface to extract
+ * @return The pid of the surface, or -1 on failure
+ * @since 1.24
+ */
+EAPI int32_t efl_wl_surface_pid_get(Evas_Object *surface);
+
+/**
* Get the Evas_Object for an extracted wl_surface resource created by an efl_wl object
*
* @note Passing anything other than a valid wl_surface resource from an efl_wl object will guarantee a crash.
diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index d872a4a426..4b1afa64ec 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -5909,6 +5909,18 @@ extracted_changed(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event
shell_surface_send_configure(data);
}
+int32_t
+efl_wl_surface_pid_get(Evas_Object *surface)
+{
+ Comp_Surface *cs;
+ int32_t pid;
+ if (!eina_streq(evas_object_type_get(surface), "comp_surface")) abort();
+ cs = evas_object_smart_data_get(surface);
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(cs->dead, -1);
+ wl_client_get_credentials(wl_resource_get_client(cs->res), &pid, NULL, NULL);
+ return pid;
+}
+
Eina_Bool
efl_wl_surface_extract(Evas_Object *surface)
{