summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiyoun Park <jijibe99@gmail.com>2013-02-15 09:32:40 +0000
committerJiyoun Park <jijibe99@gmail.com>2013-02-15 09:32:40 +0000
commitc5a8a6b5ff3da760fdd5018fdfba05cc2b82588e (patch)
tree021977392dcc128263818e9c118dfd8ae94e25b4
parent98854667875ef83fc18a393a5d26b30603984b97 (diff)
Add infrastructure to handle message between ecore and parent ecore in Ecore_Evas
I add new example related with this. (ecore_evas_extn_socket & plug example) ecore extn use this infrasturcture, server app and client app can communicate each other later, this can be used to contorl access message SVN revision: 83942
-rw-r--r--ChangeLog4
-rw-r--r--NEWS1
-rw-r--r--src/examples/ecore/Makefile.am10
-rw-r--r--src/lib/ecore_evas/Ecore_Evas.h67
-rw-r--r--src/lib/ecore_evas/ecore_evas.c55
-rw-r--r--src/lib/ecore_evas/ecore_evas_buffer.c40
-rw-r--r--src/lib/ecore_evas/ecore_evas_ews.c4
-rw-r--r--src/lib/ecore_evas/ecore_evas_private.h4
-rw-r--r--src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c4
-rw-r--r--src/modules/ecore_evas/engines/extn/ecore_evas_extn.c73
-rw-r--r--src/modules/ecore_evas/engines/fb/ecore_evas_fb.c4
-rw-r--r--src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c4
-rw-r--r--src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c4
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c4
-rw-r--r--src/modules/ecore_evas/engines/win32/ecore_evas_win32.c4
-rw-r--r--src/modules/ecore_evas/engines/x/ecore_evas_x.c10
16 files changed, 280 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 269375cf74..801a39dfb4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
12013-02-15 Jiyoun Park (jypark)
2
3 * Add infrastructure to handle message between ecore and parent ecore in Ecore_Evas.
4
12013-02-14 Cedric Bail 52013-02-14 Cedric Bail
2 6
3 * Reduce memory consumption of Edje program handler. 7 * Reduce memory consumption of Edje program handler.
diff --git a/NEWS b/NEWS
index 33e9d8f0c3..cb86002098 100644
--- a/NEWS
+++ b/NEWS
@@ -63,6 +63,7 @@ Additions:
63 * added eet_data_descriptor_name_get() 63 * added eet_data_descriptor_name_get()
64 * Add eio_eet_sync symbols. 64 * Add eio_eet_sync symbols.
65 * Add infrastructure to handle buggy touchscreen in Ecore_Input_Evas. 65 * Add infrastructure to handle buggy touchscreen in Ecore_Input_Evas.
66 * Add infrastructure to handle message between ecore and parent ecore in Ecore_Evas.
66 67
67Deprecations: 68Deprecations:
68 * ecore_x: 69 * ecore_x:
diff --git a/src/examples/ecore/Makefile.am b/src/examples/ecore/Makefile.am
index 9a7ab0e530..5111834a74 100644
--- a/src/examples/ecore/Makefile.am
+++ b/src/examples/ecore/Makefile.am
@@ -43,6 +43,8 @@ ecore_con_url_headers_example \
43ecore_evas_basics_example \ 43ecore_evas_basics_example \
44ecore_evas_buffer_example_01 \ 44ecore_evas_buffer_example_01 \
45ecore_evas_buffer_example_02 \ 45ecore_evas_buffer_example_02 \
46ecore_evas_extn_socket_example \
47ecore_evas_extn_plug_example \
46ecore_evas_callbacks \ 48ecore_evas_callbacks \
47ecore_evas_ews_example \ 49ecore_evas_ews_example \
48ecore_evas_object_example \ 50ecore_evas_object_example \
@@ -141,6 +143,12 @@ ecore_evas_buffer_example_01_LDADD = $(ECORE_EVAS_COMMON_LDADD)
141ecore_evas_buffer_example_02_SOURCES = ecore_evas_buffer_example_02.c 143ecore_evas_buffer_example_02_SOURCES = ecore_evas_buffer_example_02.c
142ecore_evas_buffer_example_02_LDADD = $(ECORE_EVAS_COMMON_LDADD) 144ecore_evas_buffer_example_02_LDADD = $(ECORE_EVAS_COMMON_LDADD)
143 145
146ecore_evas_extn_socket_example_SOURCES = ecore_evas_extn_socket_example.c
147ecore_evas_extn_socket_example_LDADD = $(ECORE_EVAS_COMMON_LDADD)
148
149ecore_evas_extn_plug_example_SOURCES = ecore_evas_extn_plug_example.c
150ecore_evas_extn_plug_example_LDADD = $(ECORE_EVAS_COMMON_LDADD)
151
144ecore_evas_callbacks_SOURCES = ecore_evas_callbacks.c 152ecore_evas_callbacks_SOURCES = ecore_evas_callbacks.c
145ecore_evas_callbacks_LDADD = $(ECORE_EVAS_COMMON_LDADD) 153ecore_evas_callbacks_LDADD = $(ECORE_EVAS_COMMON_LDADD)
146 154
@@ -233,6 +241,8 @@ ecore_con_url_headers_example.c \
233ecore_evas_basics_example.c \ 241ecore_evas_basics_example.c \
234ecore_evas_buffer_example_01.c \ 242ecore_evas_buffer_example_01.c \
235ecore_evas_buffer_example_02.c \ 243ecore_evas_buffer_example_02.c \
244ecore_evas_extn_socket_example.c \
245ecore_evas_extn_plug_example.c \
236ecore_evas_callbacks.c \ 246ecore_evas_callbacks.c \
237ecore_evas_ews_example.c \ 247ecore_evas_ews_example.c \
238ecore_evas_object_example.c \ 248ecore_evas_object_example.c \
diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h
index 2393e313ee..839d7a6d50 100644
--- a/src/lib/ecore_evas/Ecore_Evas.h
+++ b/src/lib/ecore_evas/Ecore_Evas.h
@@ -683,6 +683,73 @@ EAPI void ecore_evas_window_available_profiles_set(Ecore_Evas *ee, const
683 */ 683 */
684EAPI Eina_Bool ecore_evas_window_available_profiles_get(Ecore_Evas *ee, char ***profiles, unsigned int *count); 684EAPI Eina_Bool ecore_evas_window_available_profiles_get(Ecore_Evas *ee, char ***profiles, unsigned int *count);
685/** 685/**
686 * @brief Send message to parent ecore
687 *
688 * @param ee The Ecore_Evas to set
689 * @param msg_domain The domain of message
690 * @param msg_id The id of message
691 * @param data The data of message
692 * @param size The size of message data
693 *
694 * @warning Support for this depends on the underlying windowing system.
695 * @since 1.8.0
696 *
697 * @see ecore_evas_msg_send()
698 * @see ecore_evas_callback_msg_parent_handle_set()
699 * @see eecore_evas_callback_msg_handle_set()
700 *
701 * This is a list of examples of these functions:
702 * @li @ref ecore_evas_extn_socket_example
703 * @li @ref ecore_evas_extn_plug_example
704 */
705EAPI void ecore_evas_msg_parent_send(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size);
706/**
707 * @brief Send message to child ecore
708 *
709 * @param ee The Ecore_Evas to set
710 * @param msg_domain The domain of message
711 * @param msg_id The id of message
712 * @param data The data of message
713 * @param size The size of message data
714 *
715 * @warning Support for this depends on the underlying windowing system.
716 * @since 1.8.0
717 *
718 * @see ecore_evas_msg_parent_send()
719 * @see ecore_evas_callback_msg_parent_handle_set()
720 * @see eecore_evas_callback_msg_handle_set()
721 */
722EAPI void ecore_evas_msg_send(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size);
723/**
724 * Set a callback for parent Ecore_Evas message.
725 *
726 * @param ee The Ecore_Evas to set callbacks on
727 * @param func_parent_handle The handle to be called when message arive.
728 *
729 * @warning Support for this depends on the underlying windowing system.
730 * @since 1.8.0
731 *
732 * @see ecore_evas_msg_parent_send()
733 * @see ecore_evas_msg_send()
734 * @see eecore_evas_callback_msg_handle_set()
735 */
736EAPI void ecore_evas_callback_msg_parent_handle_set(Ecore_Evas *ee, void (*func_parent_handle)(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size));
737/**
738 * Set a callback for child Ecore_Evas message.
739 *
740 * @param ee The Ecore_Evas to set callbacks on
741 * @param func_handle The handle to be called when message arive
742 *
743 * @warning Support for this depends on the underlying windowing system.
744 * @since 1.8.0
745 *
746 * @see ecore_evas_msg_parent_send()
747 * @see ecore_evas_msg_send()
748 * @see ecore_evas_callback_msg_parent_handle_set()
749 */
750EAPI void ecore_evas_callback_msg_handle_set(Ecore_Evas *ee, void (*func_handle)(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size));
751
752/**
686 * @brief Move an Ecore_Evas. 753 * @brief Move an Ecore_Evas.
687 * 754 *
688 * @param ee The Ecore_Evas to move 755 * @param ee The Ecore_Evas to move
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index daa12ea9c3..15b95736f3 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -2192,6 +2192,61 @@ ecore_evas_manual_render(Ecore_Evas *ee)
2192} 2192}
2193 2193
2194EAPI void 2194EAPI void
2195ecore_evas_msg_parent_send(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
2196{
2197 if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
2198 {
2199 ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
2200 "ecore_evas_msg_parent_send");
2201 return;
2202 }
2203 DBG("Msg(to parent): ee=%p msg_domain=%d msg_id=%d size=%d", ee, msg_domain, msg_id, size);
2204 IFC(ee, fn_msg_parent_send) (ee, msg_domain, msg_id, data, size);
2205 IFE;
2206}
2207
2208EAPI void
2209ecore_evas_msg_send(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
2210{
2211 if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
2212 {
2213 ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
2214 "ecore_evas_msg_send");
2215 return;
2216 }
2217 DBG("Msg: ee=%p msg_domain=%d msg_id=%d size=%d", ee, msg_domain, msg_id, size);
2218 IFC(ee, fn_msg_send) (ee, msg_domain, msg_id, data, size);
2219 IFE;
2220}
2221
2222EAPI void
2223ecore_evas_callback_msg_parent_handle_set(Ecore_Evas *ee, void (*func_parent_handle)(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size))
2224{
2225 if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
2226 {
2227 ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
2228 "ecore_evas_msg_parent_handle");
2229 return;
2230 }
2231 DBG("Msg Parent handle: ee=%p", ee);
2232 ee->func.fn_msg_parent_handle = func_parent_handle;
2233}
2234
2235EAPI void
2236ecore_evas_callback_msg_handle_set(Ecore_Evas *ee, void (*func_handle)(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size))
2237{
2238 if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
2239 {
2240 ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
2241 "ecore_evas_msg_handle");
2242 return;
2243 }
2244 DBG("Msg handle: ee=%p", ee);
2245 ee->func.fn_msg_handle = func_handle;
2246}
2247
2248
2249EAPI void
2195ecore_evas_comp_sync_set(Ecore_Evas *ee, Eina_Bool do_sync) 2250ecore_evas_comp_sync_set(Ecore_Evas *ee, Eina_Bool do_sync)
2196{ 2251{
2197 if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS)) 2252 if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c
index 96e5fb6cfe..c76af25ada 100644
--- a/src/lib/ecore_evas/ecore_evas_buffer.c
+++ b/src/lib/ecore_evas/ecore_evas_buffer.c
@@ -474,6 +474,42 @@ _ecore_evas_buffer_profile_set(Ecore_Evas *ee, const char *profile)
474 } 474 }
475} 475}
476 476
477static void
478_ecore_evas_buffer_msg_parent_send(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
479{
480 Ecore_Evas *parent_ee = NULL;
481 parent_ee = ecore_evas_data_get(ee, "parent");
482
483 if (parent_ee)
484 {
485 if (parent_ee->func.fn_msg_parent_handle)
486 parent_ee ->func.fn_msg_parent_handle(parent_ee, msg_domain, msg_id, data, size);
487 }
488 else
489 {
490 if (ee->func.fn_msg_parent_handle)
491 ee ->func.fn_msg_parent_handle(ee, msg_domain, msg_id, data, size);
492 }
493}
494
495static void
496_ecore_evas_buffer_msg_send(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
497{
498 Ecore_Evas *child_ee = NULL;
499 child_ee = ecore_evas_data_get(ee, "child");
500
501 if (!child_ee)
502 {
503 if (child_ee->func.fn_msg_handle)
504 child_ee->func.fn_msg_handle(child_ee, msg_domain, msg_id, data, size);
505 }
506 else
507 {
508 if (ee->func.fn_msg_handle)
509 ee->func.fn_msg_handle(ee, msg_domain, msg_id, data, size);
510 }
511}
512
477static Ecore_Evas_Engine_Func _ecore_buffer_engine_func = 513static Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
478{ 514{
479 _ecore_evas_buffer_free, 515 _ecore_evas_buffer_free,
@@ -534,7 +570,9 @@ static Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
534 570
535 _ecore_evas_buffer_render, 571 _ecore_evas_buffer_render,
536 NULL, // screen_geometry_get 572 NULL, // screen_geometry_get
537 NULL // screen_dpi_get 573 NULL, // screen_dpi_get
574 _ecore_evas_buffer_msg_parent_send,
575 _ecore_evas_buffer_msg_send
538}; 576};
539 577
540static void * 578static void *
diff --git a/src/lib/ecore_evas/ecore_evas_ews.c b/src/lib/ecore_evas/ecore_evas_ews.c
index 4f52ae2cba..936b70a415 100644
--- a/src/lib/ecore_evas/ecore_evas_ews.c
+++ b/src/lib/ecore_evas/ecore_evas_ews.c
@@ -697,7 +697,9 @@ static const Ecore_Evas_Engine_Func _ecore_ews_engine_func =
697 697
698 _ecore_evas_ews_render, 698 _ecore_evas_ews_render,
699 _ecore_evas_ews_screen_geometry_get, 699 _ecore_evas_ews_screen_geometry_get,
700 NULL // screen_dpi_get 700 NULL, // screen_dpi_get
701 NULL,
702 NULL // msg_send
701}; 703};
702 704
703void 705void
diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h
index f9c208b23d..793461fe73 100644
--- a/src/lib/ecore_evas/ecore_evas_private.h
+++ b/src/lib/ecore_evas/ecore_evas_private.h
@@ -122,6 +122,8 @@ struct _Ecore_Evas_Engine_Func
122 int (*fn_render) (Ecore_Evas *ee); 122 int (*fn_render) (Ecore_Evas *ee);
123 void (*fn_screen_geometry_get) (const Ecore_Evas *ee, int *x, int *y, int *w, int *h); 123 void (*fn_screen_geometry_get) (const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
124 void (*fn_screen_dpi_get) (const Ecore_Evas *ee, int *xdpi, int *ydpi); 124 void (*fn_screen_dpi_get) (const Ecore_Evas *ee, int *xdpi, int *ydpi);
125 void (*fn_msg_parent_send) (Ecore_Evas *ee, int maj, int min, void *data, int size);
126 void (*fn_msg_send) (Ecore_Evas *ee, int maj, int min, void *data, int size);
125}; 127};
126 128
127struct _Ecore_Evas_Interface 129struct _Ecore_Evas_Interface
@@ -295,6 +297,8 @@ struct _Ecore_Evas
295 void (*fn_post_render) (Ecore_Evas *ee); 297 void (*fn_post_render) (Ecore_Evas *ee);
296 void (*fn_pre_free) (Ecore_Evas *ee); 298 void (*fn_pre_free) (Ecore_Evas *ee);
297 void (*fn_state_change) (Ecore_Evas *ee); 299 void (*fn_state_change) (Ecore_Evas *ee);
300 void (*fn_msg_parent_handle) (Ecore_Evas *ee, int maj, int min, void *data, int size);
301 void (*fn_msg_handle) (Ecore_Evas *ee, int maj, int min, void *data, int size);
298 } func; 302 } func;
299 303
300 Ecore_Evas_Engine engine; 304 Ecore_Evas_Engine engine;
diff --git a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
index 7aecac07cc..5f0e865d22 100644
--- a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
+++ b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
@@ -471,7 +471,9 @@ static Ecore_Evas_Engine_Func _ecore_cocoa_engine_func =
471 471
472 NULL, // render 472 NULL, // render
473 NULL, 473 NULL,
474 NULL // screen_dpi_get 474 NULL, // screen_dpi_get
475 NULL,
476 NULL // msg_send
475 }; 477 };
476 478
477EAPI Ecore_Evas * 479EAPI Ecore_Evas *
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 aa96bbf579..f6b83503ba 100644
--- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
+++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
@@ -216,7 +216,9 @@ enum // opcodes
216 OP_EV_KEY_UP, 216 OP_EV_KEY_UP,
217 OP_EV_KEY_DOWN, 217 OP_EV_KEY_DOWN,
218 OP_EV_HOLD, 218 OP_EV_HOLD,
219 OP_LOCK_FILE2 219 OP_LOCK_FILE2,
220 OP_MSG_PARENT,
221 OP_MSG
220}; 222};
221 223
222enum 224enum
@@ -607,6 +609,7 @@ _ecore_evas_extn_free(Ecore_Evas *ee)
607 Extn *extn; 609 Extn *extn;
608 Ecore_Ipc_Client *client; 610 Ecore_Ipc_Client *client;
609 Ecore_Evas_Engine_Buffer_Data *bdata = ee->engine.data; 611 Ecore_Evas_Engine_Buffer_Data *bdata = ee->engine.data;
612 if (!bdata) return;
610 613
611 extn = bdata->data; 614 extn = bdata->data;
612 if (extn) 615 if (extn)
@@ -675,14 +678,16 @@ _ecore_evas_extn_free(Ecore_Evas *ee)
675 EVAS_CALLBACK_RENDER_POST, 678 EVAS_CALLBACK_RENDER_POST,
676 _ecore_evas_extn_plug_targer_render_post, 679 _ecore_evas_extn_plug_targer_render_post,
677 ee); 680 ee);
678 evas_object_del(bdata->image);
679 ee2 = evas_object_data_get(bdata->image, "Ecore_Evas_Parent"); 681 ee2 = evas_object_data_get(bdata->image, "Ecore_Evas_Parent");
680 if (ee2) 682 if (ee2)
681 { 683 {
682 ee2->sub_ecore_evas = eina_list_remove(ee2->sub_ecore_evas, ee); 684 ee2->sub_ecore_evas = eina_list_remove(ee2->sub_ecore_evas, ee);
683 } 685 }
686 evas_object_del(bdata->image);
687 bdata->image = NULL;
684 } 688 }
685 free(bdata); 689 free(bdata);
690 ee->engine.data = NULL;
686 extn_ee_list = eina_list_remove(extn_ee_list, ee); 691 extn_ee_list = eina_list_remove(extn_ee_list, ee);
687} 692}
688 693
@@ -1282,6 +1287,21 @@ _ecore_evas_extn_plug_profile_set(Ecore_Evas *ee, const char *profile)
1282 } 1287 }
1283} 1288}
1284 1289
1290static void
1291_ecore_evas_extn_plug_msg_parent_send(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
1292{
1293 Ecore_Evas_Engine_Buffer_Data *bdata = ee->engine.data;
1294 Extn *extn;
1295
1296 extn = bdata->data;
1297 if (!extn) return;
1298 if (!extn->ipc.server) return;
1299
1300 //ref = msg_domain
1301 //ref_to = msg_id
1302 ecore_ipc_server_send(extn->ipc.server, MAJOR, OP_MSG, msg_domain, msg_id, 0, data, size);
1303}
1304
1285static const Ecore_Evas_Engine_Func _ecore_extn_plug_engine_func = 1305static const Ecore_Evas_Engine_Func _ecore_extn_plug_engine_func =
1286{ 1306{
1287 _ecore_evas_extn_free, 1307 _ecore_evas_extn_free,
@@ -1341,7 +1361,9 @@ static const Ecore_Evas_Engine_Func _ecore_extn_plug_engine_func =
1341 1361
1342 NULL, // render 1362 NULL, // render
1343 NULL, // screen_geometry_get 1363 NULL, // screen_geometry_get
1344 NULL // screen_dpi_get 1364 NULL, // screen_dpi_get
1365 _ecore_evas_extn_plug_msg_parent_send,
1366 NULL // msg_send
1345}; 1367};
1346 1368
1347static Eina_Bool 1369static Eina_Bool
@@ -1529,6 +1551,18 @@ _ipc_server_data(void *data, int type EINA_UNUSED, void *event)
1529 /* profile change finished being sent - done now. */ 1551 /* profile change finished being sent - done now. */
1530 /* do something here */ 1552 /* do something here */
1531 break; 1553 break;
1554 case OP_MSG_PARENT:
1555 if ((e->data) && (e->size > 0))
1556 {
1557 //ref = msg_domain
1558 //ref_to = msg_id
1559 if (ee->func.fn_msg_handle)
1560 {
1561 INF("Message handle: ref=%d to=%d size=%d", e->ref, e->ref_to, e->size);
1562 ee->func.fn_msg_handle(ee, e->ref, e->ref_to, e->data, e->size);
1563 }
1564 }
1565 break;
1532 default: 1566 default:
1533 break; 1567 break;
1534 } 1568 }
@@ -2207,6 +2241,18 @@ _ipc_client_data(void *data, int type EINA_UNUSED, void *event)
2207 } 2241 }
2208 } 2242 }
2209 break; 2243 break;
2244 case OP_MSG:
2245 if ((e->data) && (e->size > 0))
2246 {
2247 //ref = msg_domain
2248 //ref_to = msg_id
2249 if (ee->func.fn_msg_parent_handle)
2250 {
2251 INF("Message parent handle: ref=%d to=%d size=%d", e->ref, e->ref_to, e->size);
2252 ee->func.fn_msg_parent_handle(ee, e->ref, e->ref_to, e->data, e->size);
2253 }
2254 }
2255 break;
2210 default: 2256 default:
2211 break; 2257 break;
2212 } 2258 }
@@ -2284,6 +2330,25 @@ _ecore_evas_extn_socket_available_profiles_set(Ecore_Evas *ee, const char **plis
2284 } 2330 }
2285} 2331}
2286 2332
2333static void
2334_ecore_evas_extn_socket_msg_send(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
2335{
2336 Ecore_Evas_Engine_Buffer_Data *bdata = ee->engine.data;
2337 Extn *extn;
2338 Eina_List *l;
2339 Ecore_Ipc_Client *client;
2340
2341 extn = bdata->data;
2342 if (extn)
2343 {
2344 EINA_LIST_FOREACH(extn->ipc.clients, l, client)
2345 ecore_ipc_client_send(client, MAJOR, OP_MSG_PARENT,
2346 msg_domain, msg_id, 0,
2347 data,
2348 size);
2349 }
2350}
2351
2287static const Ecore_Evas_Engine_Func _ecore_extn_socket_engine_func = 2352static const Ecore_Evas_Engine_Func _ecore_extn_socket_engine_func =
2288{ 2353{
2289 _ecore_evas_extn_free, 2354 _ecore_evas_extn_free,
@@ -2345,6 +2410,8 @@ static const Ecore_Evas_Engine_Func _ecore_extn_socket_engine_func =
2345 _ecore_evas_extn_socket_render, // render 2410 _ecore_evas_extn_socket_render, // render
2346 NULL, // screen_geometry_get 2411 NULL, // screen_geometry_get
2347 NULL, // screen_dpi_get 2412 NULL, // screen_dpi_get
2413 NULL,
2414 _ecore_evas_extn_socket_msg_send
2348}; 2415};
2349 2416
2350EAPI Ecore_Evas * 2417EAPI Ecore_Evas *
diff --git a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c
index d09ed346c5..5dd014a95e 100644
--- a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c
+++ b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c
@@ -559,7 +559,9 @@ static Ecore_Evas_Engine_Func _ecore_fb_engine_func =
559 559
560 NULL, // render 560 NULL, // render
561 NULL, // screen_geometry_get 561 NULL, // screen_geometry_get
562 NULL // screen_dpi_get 562 NULL, // screen_dpi_get
563 NULL,
564 NULL // msg_send
563 }; 565 };
564 566
565EAPI Ecore_Evas * 567EAPI Ecore_Evas *
diff --git a/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c b/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c
index 99bd9d4436..bef0b0dd41 100644
--- a/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c
+++ b/src/modules/ecore_evas/engines/psl1ght/ecore_evas_psl1ght.c
@@ -404,7 +404,9 @@ static Ecore_Evas_Engine_Func _ecore_psl1ght_engine_func =
404 404
405 NULL, // render 405 NULL, // render
406 _ecore_evas_screen_geometry_get, // screen_geometry_get 406 _ecore_evas_screen_geometry_get, // screen_geometry_get
407 NULL // screen_dpi_get 407 NULL, // screen_dpi_get
408 NULL,
409 NULL //msg_send
408}; 410};
409 411
410EAPI Ecore_Evas * 412EAPI Ecore_Evas *
diff --git a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c
index 262d15467f..1a33357e73 100644
--- a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c
+++ b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c
@@ -445,7 +445,9 @@ static Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
445 445
446 NULL, // render 446 NULL, // render
447 NULL, // screen_geometry_get 447 NULL, // screen_geometry_get
448 NULL // screen_dpi_get 448 NULL, // screen_dpi_get
449 NULL,
450 NULL // msg_send
449}; 451};
450 452
451static Ecore_Evas* 453static Ecore_Evas*
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
index ecccf923a7..aa8387dd1d 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
@@ -74,7 +74,9 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
74 NULL, // focus skip set 74 NULL, // focus skip set
75 _ecore_evas_wl_common_render, 75 _ecore_evas_wl_common_render,
76 _ecore_evas_wl_common_screen_geometry_get, 76 _ecore_evas_wl_common_screen_geometry_get,
77 _ecore_evas_wl_common_screen_dpi_get 77 _ecore_evas_wl_common_screen_dpi_get,
78 NULL,
79 NULL // msg_send
78}; 80};
79 81
80/* external variables */ 82/* external variables */
diff --git a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
index b6a9fc563c..73012e4f66 100644
--- a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
+++ b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
@@ -1152,7 +1152,9 @@ static Ecore_Evas_Engine_Func _ecore_win32_engine_func =
1152 1152
1153 NULL, // render 1153 NULL, // render
1154 NULL, // screen_geometry_get 1154 NULL, // screen_geometry_get
1155 _ecore_evas_win32_screen_dpi_get 1155 _ecore_evas_win32_screen_dpi_get,
1156 NULL,
1157 NULL // msg_send
1156}; 1158};
1157 1159
1158#endif /* BUILD_ECORE_EVAS_WIN32 */ 1160#endif /* BUILD_ECORE_EVAS_WIN32 */
diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c
index 5d86b76ff3..fb1626988f 100644
--- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c
+++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c
@@ -991,6 +991,12 @@ _ecore_evas_x_event_client_message(void *data EINA_UNUSED, int type EINA_UNUSED,
991 } 991 }
992 } 992 }
993 } 993 }
994 else if (e->message_type == ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL)
995 {
996 ///TODO after access structure determined
997 // if (ee->func.fn_msg_handle)
998 // ee->func.fn_msg_handle(ee, msg_domain, msg_id, data, size);
999 }
994 return ECORE_CALLBACK_PASS_ON; 1000 return ECORE_CALLBACK_PASS_ON;
995} 1001}
996 1002
@@ -3050,7 +3056,9 @@ static Ecore_Evas_Engine_Func _ecore_x_engine_func =
3050 3056
3051 NULL, // render 3057 NULL, // render
3052 _ecore_evas_x_screen_geometry_get, 3058 _ecore_evas_x_screen_geometry_get,
3053 _ecore_evas_x_screen_dpi_get 3059 _ecore_evas_x_screen_dpi_get,
3060 NULL,
3061 NULL //fn_msg_send
3054}; 3062};
3055 3063
3056/* 3064/*