[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
This commit is contained in:
Shinwoo Kim 2015-05-15 16:46:21 +09:00 committed by Carsten Haitzler (Rasterman)
parent bb13b45e80
commit f372eb4b92
6 changed files with 79 additions and 2 deletions

View File

@ -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
*/

View File

@ -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);

View File

@ -2650,6 +2650,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
*

View File

@ -3778,6 +3778,34 @@ ecore_evas_extn_socket_listen(Ecore_Evas *ee, const char *svcname, int svcnum, E
return iface->listen(ee, svcname, svcnum, svcsys);
}
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)
{

View File

@ -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;

View File

@ -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);