service state changed callback 29/226129/1
authorkismo <kismo.kim@samsung.com>
Tue, 28 Jan 2020 06:03:01 +0000 (15:03 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Thu, 27 Feb 2020 05:07:41 +0000 (05:07 +0000)
     - before : VC_SERVICE_STATE_NONE >> VC_SERVICE_STATE_READY changed callback is not called in main thread.
     - after : all the time, service state changed callback is called in main thread.

Change-Id: I3dffe70e463b1991ffedfff572d29d6afb876ce0
(cherry picked from commit fad6d24fdd7f6cf400fc0ade63ec349811fd830b)

client/vc_mgr.c [changed mode: 0644->0755]
server/vcd_server.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index eb6c3b8..ed9bd15
@@ -457,25 +457,6 @@ static Eina_Bool __vc_mgr_connect_daemon(void *data)
                        /* Success to connect */
                }
 
-               /* Set service state */
-               vc_service_state_e previous_service_state;
-               vc_mgr_client_get_service_state(g_vc_m, &previous_service_state);
-
-               vc_mgr_client_set_service_state(g_vc_m, (vc_service_state_e)service_state);
-
-               vc_service_state_changed_cb service_changed_callback = NULL;
-               void* user_data = NULL;
-               vc_mgr_client_get_service_state_changed_cb(g_vc_m, &service_changed_callback, &user_data);
-
-               if (NULL != service_changed_callback) {
-                       vc_mgr_client_use_callback(g_vc_m);
-                       service_changed_callback(previous_service_state, service_state, user_data);
-                       vc_mgr_client_not_use_callback(g_vc_m);
-                       SLOG(LOG_INFO, TAG_VCM, "Service state changed callback is called");
-               } else {
-                       SLOG(LOG_WARN, TAG_VCM, "[WARNING] Service state changed callback is null");
-               }
-
                /* Set foreground */
                vc_mgr_client_set_foreground(g_vc_m, foreground, true);
 
@@ -485,6 +466,7 @@ static Eina_Bool __vc_mgr_connect_daemon(void *data)
                vc_mgr_client_set_client_state(g_vc_m, VC_STATE_READY);
 
                vc_state_changed_cb changed_callback = NULL;
+               void* user_data = NULL;
                vc_mgr_client_get_state_changed_cb(g_vc_m, &changed_callback, &user_data);
 
                vc_state_e current_state;
old mode 100644 (file)
new mode 100755 (executable)
index d632034..98768a1
@@ -1613,6 +1613,15 @@ int vcd_server_get_foreground()
        return pid;
 }
 
+static Eina_Bool __vcd_send_service_state(void *data)
+{
+       vcd_config_set_service_state(VCD_STATE_READY);
+       vcdc_send_service_state(VCD_STATE_READY);
+
+       SLOG(LOG_INFO, TAG_VCD, "[Server Success] success to send service status for READY");
+
+       return EINA_FALSE;
+}
 
 /*
 * API for manager
@@ -1636,6 +1645,8 @@ int vcd_server_mgr_initialize(int pid)
        if (0 != vcdc_send_manager_pid(pid))
                SLOG(LOG_WARN, TAG_VCD, "[Server WARNING] Fail to send manager pid");
 
+       ecore_timer_add(0.05, __vcd_send_service_state, NULL);
+
        SLOG(LOG_ERROR, TAG_VCD, "[Server Success] Manager initialize : pid(%d)", pid);
 
        return VCD_ERROR_NONE;