raster pushed a commit to branch master.

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

commit f372eb4b9230b4e72b55c6afe188b1bd4caace3a
Author: Shinwoo Kim <cinoo....@samsung.com>
Date:   Fri May 15 16:46:21 2015 +0900

    [ecore_evas_extn] add function to block mouse event.
    
    Summary: add ecore_evas_extn_socket_events_block_set/get
    
    Test Plan: add mouse event callback, and check whether it could get event 
or not
    
    Reviewers: raster, woohyun, jaehwan, Sergeant_Whitespace
    
    Reviewed By: Sergeant_Whitespace
    
    Subscribers: Sergeant_Whitespace, seoz, cedric
    
    Differential Revision: https://phab.enlightenment.org/D2268
---
 src/examples/ecore/ecore_evas_extn_plug_example.c  |  2 +-
 .../ecore/ecore_evas_extn_socket_example.c         |  4 +++-
 src/lib/ecore_evas/Ecore_Evas.h                    | 25 +++++++++++++++++++
 src/lib/ecore_evas/ecore_evas.c                    | 28 ++++++++++++++++++++++
 src/lib/ecore_evas/ecore_evas_private.h            |  1 +
 .../ecore_evas/engines/extn/ecore_evas_extn.c      | 21 ++++++++++++++++
 6 files changed, 79 insertions(+), 2 deletions(-)

diff --git a/src/examples/ecore/ecore_evas_extn_plug_example.c 
b/src/examples/ecore/ecore_evas_extn_plug_example.c
index e3d6e1c..1a88e02 100644
--- a/src/examples/ecore/ecore_evas_extn_plug_example.c
+++ b/src/examples/ecore/ecore_evas_extn_plug_example.c
@@ -4,7 +4,7 @@
  * For checking with ecore evas extn socket, please run with 
ecore_evas_extn_socket_example.
  *
  * @verbatim
- * gcc -o ecore_evas_extn_plug_example ecore_evas_extn_plug_example.c 
`pkg-config --libs --cflags ecore-evas`
+ * gcc -o ecore_evas_extn_plug_example ecore_evas_extn_plug_example.c 
`pkg-config --libs --cflags evas ecore ecore-evas`
  * @endverbatim
  */
 
diff --git a/src/examples/ecore/ecore_evas_extn_socket_example.c 
b/src/examples/ecore/ecore_evas_extn_socket_example.c
index e88adba..aff4975 100644
--- a/src/examples/ecore/ecore_evas_extn_socket_example.c
+++ b/src/examples/ecore/ecore_evas_extn_socket_example.c
@@ -6,7 +6,7 @@
  * You can check functions of ecore extn socket if you use ecore extn plug 
together.
  *
  * @verbatim
- * gcc -o ecore_evas_extn_socket_example ecore_evas_extn_socket_example.c 
`pkg-config --libs --cflags ecore-evas`
+ * gcc -o ecore_evas_extn_socket_example ecore_evas_extn_socket_example.c 
`pkg-config --libs --cflags evas ecore ecore-evas`
  * @endverbatim
  */
 
@@ -193,6 +193,8 @@ main(void)
    evas_object_show(sock_bg);
    ecore_evas_data_set(ee_socket, "bg", sock_bg);
 
+   ecore_evas_extn_socket_events_block_set(ee_socket, EINA_FALSE);
+
    ecore_main_loop_begin();
 
    ecore_evas_free(ee);
diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h
index 22ebe6f..1a035ab 100644
--- a/src/lib/ecore_evas/Ecore_Evas.h
+++ b/src/lib/ecore_evas/Ecore_Evas.h
@@ -2651,6 +2651,31 @@ EAPI Ecore_Evas *ecore_evas_extn_socket_new(int w, int 
h);
 EAPI Eina_Bool ecore_evas_extn_socket_listen(Ecore_Evas *ee, const char 
*svcname, int svcnum, Eina_Bool svcsys);
 
 /**
+ * @brief Set the blocking about mouse events to Ecore Evas.
+ *
+ * @param ee The Ecore_Evas.
+ * @param events_block The blocking about mouse events.
+ *
+ * @see ecore_evas_extn_socket_events_block_get()
+ *
+ * @since 1.15
+ */
+EAPI void ecore_evas_extn_socket_events_block_set(Ecore_Evas *ee, Eina_Bool 
events_block);
+
+/**
+ * @brief Get the blocking about mouse events to Ecore Evas.
+ *
+ * @param ee The Ecore_Evas.
+
+ * @return The blocking about mouse events.
+ *
+ * @see ecore_evas_extn_socket_events_block_set()
+ *
+ * @since 1.15
+ */
+EAPI Eina_Bool ecore_evas_extn_socket_events_block_get(Ecore_Evas *ee);
+
+/**
  * @brief Lock the pixel data so the socket cannot change it
  *
  * @param obj The image object returned by ecore_evas_extn_plug_new() to lock
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index a47c90e..05f702e 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -3779,6 +3779,34 @@ ecore_evas_extn_socket_listen(Ecore_Evas *ee, const char 
*svcname, int svcnum, E
 }
 
 EAPI void
+ecore_evas_extn_socket_events_block_set(Ecore_Evas *ee, Eina_Bool events_block)
+{
+   void (*set)(Ecore_Evas*, Eina_Bool);
+   Eina_Module *m = _ecore_evas_engine_load("extn");
+   EINA_SAFETY_ON_NULL_RETURN(m);
+
+   set = eina_module_symbol_get(m,
+         "ecore_evas_extn_socket_events_block_set_internal");
+   EINA_SAFETY_ON_NULL_RETURN(set);
+
+   set(ee, events_block);
+}
+
+EAPI Eina_Bool
+ecore_evas_extn_socket_events_block_get(Ecore_Evas *ee)
+{
+   Eina_Bool (*get)(Ecore_Evas*);
+   Eina_Module *m = _ecore_evas_engine_load("extn");
+   EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
+
+   get = eina_module_symbol_get(m,
+         "ecore_evas_extn_socket_events_block_get_internal");
+   EINA_SAFETY_ON_NULL_RETURN_VAL(get, EINA_FALSE);
+
+   return get(ee);
+}
+
+EAPI void
 ecore_evas_extn_plug_object_data_lock(Evas_Object *obj)
 {
    Ecore_Evas_Interface_Extn *iface;
diff --git a/src/lib/ecore_evas/ecore_evas_private.h 
b/src/lib/ecore_evas/ecore_evas_private.h
index 82e2620..312fd09 100644
--- a/src/lib/ecore_evas/ecore_evas_private.h
+++ b/src/lib/ecore_evas/ecore_evas_private.h
@@ -190,6 +190,7 @@ struct _Ecore_Evas
    Eina_Bool   alpha  : 1;
    Eina_Bool   transparent  : 1;
    Eina_Bool   in  : 1;
+   Eina_Bool   events_block  : 1; /* @since 1.14 */
 
    Eina_Hash  *data;
 
diff --git a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c 
b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
index 869005f..550166c 100644
--- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
+++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
@@ -1646,6 +1646,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MOUSE_IN:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Mouse_In))
            {
               Ipc_Data_Ev_Mouse_In *ipc = e->data;
@@ -1659,6 +1660,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MOUSE_OUT:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Mouse_Out))
            {
               Ipc_Data_Ev_Mouse_Out *ipc = e->data;
@@ -1672,6 +1674,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MOUSE_UP:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Mouse_Up))
            {
               Ipc_Data_Ev_Mouse_Up *ipc = e->data;
@@ -1685,6 +1688,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MOUSE_DOWN:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Mouse_Down))
            {
               Ipc_Data_Ev_Mouse_Up *ipc = e->data;
@@ -1698,6 +1702,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MOUSE_MOVE:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Mouse_Move))
            {
               Ipc_Data_Ev_Mouse_Move *ipc = e->data;
@@ -1711,6 +1716,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MOUSE_WHEEL:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Mouse_Wheel))
            {
               Ipc_Data_Ev_Mouse_Wheel *ipc = e->data;
@@ -1724,6 +1730,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MULTI_UP:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Multi_Up))
            {
               Ipc_Data_Ev_Multi_Up *ipc = e->data;
@@ -1737,6 +1744,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MULTI_DOWN:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Multi_Down))
            {
               Ipc_Data_Ev_Multi_Down *ipc = e->data;
@@ -1750,6 +1758,7 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void 
*event)
            }
          break;
       case OP_EV_MULTI_MOVE:
+         if (ee->events_block) break;
          if (e->size >= (int)sizeof(Ipc_Data_Ev_Multi_Move))
            {
               Ipc_Data_Ev_Multi_Move *ipc = e->data;
@@ -2245,5 +2254,17 @@ _ecore_evas_extn_interface_new(void)
    return iface;
 }
 
+EAPI void
+ecore_evas_extn_socket_events_block_set_internal(Ecore_Evas *ee, Eina_Bool 
events_block)
+{
+   ee->events_block = events_block;
+}
+
+EAPI Eina_Bool
+ecore_evas_extn_socket_events_block_get_internal(Ecore_Evas *ee)
+{
+   return ee->events_block;
+}
+
 EINA_MODULE_INIT(_ecore_evas_extn_module_init);
 EINA_MODULE_SHUTDOWN(_ecore_evas_extn_module_shutdown);

-- 


Reply via email to