add code to handle E_COMP_WL_HOOK_CLIENT_REUSE hook 94/143294/1
authorDoyoun Kang <doyoun.kang@samsung.com>
Wed, 9 Aug 2017 08:12:34 +0000 (17:12 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Wed, 9 Aug 2017 08:12:34 +0000 (17:12 +0900)
Change-Id: I2e7f12956fc12ecb435a833384fe85c51c07c501

src/e_mod_processmgr.c

index cb4d600..5333056 100644 (file)
@@ -6,6 +6,8 @@
 
 static Eina_List *hooks_ec = NULL;
 static Eina_List *_e_processmgr_ec_handlers = NULL;
+static Eina_List *_e_processmgr_wl_hooks = NULL;
+
 Eldbus_Connection *_e_processmgr_conn;
 Eldbus_Service_Interface *_e_processmgr_iface;
 
@@ -387,6 +389,22 @@ _e_processmgr_cb_client_remove(void *data EINA_UNUSED, int type EINA_UNUSED, voi
    return ECORE_CALLBACK_PASS_ON;
 }
 
+static void
+_e_processmgr_cb_client_reuse(void *data EINA_UNUSED, E_Client *ec)
+{
+   e_comp_object_signal_callback_del_full(ec->frame,
+                                          "e,action,launch_real,done",
+                                          "e",
+                                          _e_processmgr_cb_launch_done,
+                                          ec);
+
+   e_comp_object_signal_callback_add(ec->frame,
+                                     "e,action,launch_real,done",
+                                     "e",
+                                     _e_processmgr_cb_launch_done,
+                                     ec);
+}
+
 EAPI Eina_Bool
 e_mod_processmgr_init(void)
 {
@@ -403,6 +421,8 @@ e_mod_processmgr_init(void)
    E_LIST_HANDLER_APPEND(_e_processmgr_ec_handlers, E_EVENT_CLIENT_ADD, _e_processmgr_cb_client_add, NULL);
    E_LIST_HANDLER_APPEND(_e_processmgr_ec_handlers, E_EVENT_CLIENT_REMOVE, _e_processmgr_cb_client_remove, NULL);
 
+   E_COMP_WL_HOOK_APPEND(_e_processmgr_wl_hooks, E_COMP_WL_HOOK_CLIENT_REUSE, _e_processmgr_cb_client_reuse, NULL);
+
    return EINA_TRUE;
 }
 
@@ -415,6 +435,7 @@ e_mod_processmgr_shutdown(void)
 
    eldbus_shutdown();
 
+   E_FREE_LIST(_e_processmgr_wl_hooks, e_comp_wl_hook_del);
    E_FREE_LIST(_e_processmgr_ec_handlers, ecore_event_handler_del);
    EINA_LIST_FREE(hooks_ec, hook)
      e_process_hook_del(hook);