aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Edmundson <kde@davidedmundson.co.uk>2023-05-17 12:03:32 +0300
committerDavid Edmundson <davidedmundson@kde.org>2023-08-07 13:38:01 +0000
commitedb943dc6464697ba13d7df277aef277721764b7 (patch)
tree07d1ef7496c3e78acfd906d20be379413c3338c1
parentci: upgrade FreeBSD to 13.2 (diff)
downloadwayland-edb943dc6464697ba13d7df277aef277721764b7.tar
wayland-edb943dc6464697ba13d7df277aef277721764b7.tar.gz
wayland-edb943dc6464697ba13d7df277aef277721764b7.tar.bz2
wayland-edb943dc6464697ba13d7df277aef277721764b7.tar.lz
wayland-edb943dc6464697ba13d7df277aef277721764b7.tar.xz
wayland-edb943dc6464697ba13d7df277aef277721764b7.tar.zst
wayland-edb943dc6464697ba13d7df277aef277721764b7.zip
client: Add method to get display for a given proxy
This can be useful for additional validation purposes when handling proxies. This is similar to existing server side API wl_global_get_display. Signed-off-by: David Edmundson <david@davidedmundson.co.uk>
-rw-r--r--src/wayland-client-core.h3
-rw-r--r--src/wayland-client.c14
-rw-r--r--tests/proxy-test.c2
3 files changed, 19 insertions, 0 deletions
diff --git a/src/wayland-client-core.h b/src/wayland-client-core.h
index ce91a6f..af50f1e 100644
--- a/src/wayland-client-core.h
+++ b/src/wayland-client-core.h
@@ -219,6 +219,9 @@ wl_proxy_get_tag(struct wl_proxy *proxy);
const char *
wl_proxy_get_class(struct wl_proxy *proxy);
+struct wl_display *
+wl_proxy_get_display(struct wl_proxy *proxy);
+
void
wl_proxy_set_queue(struct wl_proxy *proxy, struct wl_event_queue *queue);
diff --git a/src/wayland-client.c b/src/wayland-client.c
index 607fdb4..489f0a8 100644
--- a/src/wayland-client.c
+++ b/src/wayland-client.c
@@ -2338,6 +2338,20 @@ wl_proxy_get_class(struct wl_proxy *proxy)
return proxy->object.interface->name;
}
+/** Get the display of a proxy object
+ *
+ * \param proxy The proxy object
+ * \return The wl_display the proxy is associated with
+ *
+ * \memberof wl_proxy
+ * \since 1.23
+ */
+WL_EXPORT struct wl_display *
+wl_proxy_get_display(struct wl_proxy *proxy)
+{
+ return proxy->display;
+}
+
/** Assign a proxy to an event queue
*
* \param proxy The proxy object
diff --git a/tests/proxy-test.c b/tests/proxy-test.c
index c09468d..2a8f425 100644
--- a/tests/proxy-test.c
+++ b/tests/proxy-test.c
@@ -118,6 +118,8 @@ TEST(proxy_tag)
wl_proxy_set_tag((struct wl_proxy *) client.callback_b,
&tag_b);
+ assert(wl_proxy_get_display((struct wl_proxy *) client.callback_b) == client.display);
+
wl_display_flush(client.display);
while (server.sync_count < 2) {