aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-08-04 16:17:53 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-08-04 16:17:33 -0400
commit29b99a8e88998664bb3abc417cd6e208bb1b6bf9 (patch)
tree274b96a0f0651f532e2b6d7c99ac974d3bbcad79
parentecore-evas-wayland: rework window hint calcs to be more accurate (diff)
downloadefl-29b99a8e88998664bb3abc417cd6e208bb1b6bf9.tar.gz
efl-wl: add handling for external protocol interfaces
@feature
-rw-r--r--src/lib/efl_wl/Efl_Wl.h9
-rw-r--r--src/lib/efl_wl/efl_wl.c11
2 files changed, 20 insertions, 0 deletions
diff --git a/src/lib/efl_wl/Efl_Wl.h b/src/lib/efl_wl/Efl_Wl.h
index 8b28309fd0..818cc39cd4 100644
--- a/src/lib/efl_wl/Efl_Wl.h
+++ b/src/lib/efl_wl/Efl_Wl.h
@@ -122,6 +122,15 @@ EAPI void efl_wl_aspect_set(Evas_Object *obj, Eina_Bool set);
* @param set Whether to enable min/max setting
*/
EAPI void efl_wl_minmax_set(Evas_Object *obj, Eina_Bool set);
+
+/**
+ * Add an externally-managed global to the compositor
+ * @note The external implementation is expected to restrict access to authorized
+ * clients
+ * @see wl_global_create() docs
+ * @since 1.21
+ */
+EAPI void *efl_wl_global_add(Evas_Object *obj, const void *interface, uint32_t version, void *data, void *bind_cb);
#endif
#endif
diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index 575012e0e6..a5004f06af 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -5420,3 +5420,14 @@ efl_wl_minmax_set(Evas_Object *obj, Eina_Bool set)
evas_object_size_hint_max_set(obj, -1, -1);
}
}
+
+EAPI void *
+efl_wl_global_add(Evas_Object *obj, const void *interface, uint32_t version, void *data, void *bind_cb)
+{
+ Comp *c;
+
+ if (!eina_streq(evas_object_type_get(obj), "comp")) abort();
+ EINA_SAFETY_ON_NULL_RETURN_VAL(interface, NULL);
+ c = evas_object_smart_data_get(obj);
+ return wl_global_create(c->display, interface, version, data, bind_cb);
+}