derekf pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ad5db090ab3ae156cc8d974aa0b366e5374c79be

commit ad5db090ab3ae156cc8d974aa0b366e5374c79be
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Tue May 8 12:26:36 2018 -0500

    edje: Add beta api for seat_data_get
    
    Summary:
    Currently this is only to help wayland CSD function correctly, so the
    opaque pointer is very poorly defined.
    Depends on D6116
    
    Reviewers: zmike, cedric
    
    Reviewed By: zmike
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D6117
---
 src/lib/edje/Edje_Common.h  | 18 ++++++++++++++++++
 src/lib/edje/edje_program.c | 10 ++++++++++
 2 files changed, 28 insertions(+)

diff --git a/src/lib/edje/Edje_Common.h b/src/lib/edje/Edje_Common.h
index b86ed7e851..60ec169708 100644
--- a/src/lib/edje/Edje_Common.h
+++ b/src/lib/edje/Edje_Common.h
@@ -2110,6 +2110,24 @@ EAPI const char *edje_object_part_object_name_get(const 
Evas_Object *obj);
  */
 EAPI Eina_Bool edje_3d_object_add(Evas_Object *obj, Eo **root_node, Eo *scene);
 
+/**
+ * @brief Gets seat data passed to callbacks.
+ *
+ * @return The seat data for that callback.
+ *
+ * When a callback is initiated by an input event from a seat, we try to
+ * provide seat information with it.
+ *
+ * Signals fired as programmed responses to these signals will also try
+ * to carry the seat data along.
+ *
+ * This returns an opaque pointer to the seat data.
+ *
+ * @see edje_object_signal_callback_add() for more on Edje signals.
+ * @since 1.21
+ */
+EAPI void *edje_object_signal_callback_seat_data_get(void);
+
 #endif
 
 /**
diff --git a/src/lib/edje/edje_program.c b/src/lib/edje/edje_program.c
index fe75adb647..0db9f6226a 100644
--- a/src/lib/edje/edje_program.c
+++ b/src/lib/edje/edje_program.c
@@ -1593,6 +1593,7 @@ break_prog:
 
 /* Extra data for callbacks */
 static void *callback_extra_data = NULL;
+static void *callback_seat_data = NULL;
 
 EAPI void *
 edje_object_signal_callback_extra_data_get(void)
@@ -1600,6 +1601,14 @@ edje_object_signal_callback_extra_data_get(void)
    return callback_extra_data;
 }
 
+#ifdef EFL_BETA_API_SUPPORT
+EAPI void *
+edje_object_signal_callback_seat_data_get(void)
+{
+   return callback_seat_data;
+}
+#endif
+
 /* FIXME: what if we delete the evas object??? */
 static void
 _edje_emit_cb(Edje *ed, const char *sig, const char *src, 
Edje_Message_Signal_Data *data, Eina_Bool prop)
@@ -1625,6 +1634,7 @@ _edje_emit_cb(Edje *ed, const char *sig, const char *src, 
Edje_Message_Signal_Da
         EINA_REFCOUNT_REF(m);
 
         callback_extra_data = (data) ? data->data : NULL;
+        callback_seat_data = (data) ? data->seat_data : NULL;
 
         if (eina_inarray_count(&ssp->u.callbacks.globing))
           r = edje_match_callback_exec(ssp,

-- 


Reply via email to