check vc_m handle before use 14/191114/2 accepted/tizen/5.0/unified/20181102.022435 accepted/tizen/unified/20181012.083516 submit/tizen/20181011.122951 submit/tizen_5.0/20181101.000005
authorWonnam Jang <wn.jang@samsung.com>
Thu, 11 Oct 2018 10:46:06 +0000 (19:46 +0900)
committersooyeon.kim <sooyeon.kim@samsung.com>
Thu, 11 Oct 2018 12:17:20 +0000 (21:17 +0900)
Change-Id: I49c9f14e30c30208597fb8f41470e55d65cd9e20
Signed-off-by: Wonnam Jang <wn.jang@samsung.com>
client/vc_mgr.c

index 516db90..70c7190 100644 (file)
@@ -384,69 +384,77 @@ static Eina_Bool __vc_mgr_connect_daemon(void *data)
 
        g_m_connect_timer = NULL;
 
-       vc_audio_streaming_mode_e streaming_mode;
-       vc_mgr_client_get_audio_streaming_mode(g_vc_m, &streaming_mode);
+       /* check handle */
+       if (true == vc_mgr_client_is_valid(g_vc_m)) {
+               SLOG(LOG_DEBUG, TAG_VCM, "[DEBUG] g_vc_m is valid");
 
-       ret = vc_mgr_dbus_request_initialize(g_vc_m->handle, (int)streaming_mode, &service_state, &foreground, &g_daemon_pid);
+               vc_audio_streaming_mode_e streaming_mode;
+               vc_mgr_client_get_audio_streaming_mode(g_vc_m, &streaming_mode);
 
-       if (VC_ERROR_ENGINE_NOT_FOUND == ret) {
-               SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to initialize : %s", __vc_mgr_get_error_code(ret));
+               ret = vc_mgr_dbus_request_initialize(g_vc_m->handle, (int)streaming_mode, &service_state, &foreground, &g_daemon_pid);
 
-               vc_mgr_client_set_error(g_vc_m, VC_ERROR_ENGINE_NOT_FOUND);
-               ecore_main_loop_thread_safe_call_async(__vc_mgr_notify_error, (void*)g_vc_m);
+               if (VC_ERROR_ENGINE_NOT_FOUND == ret) {
+                       SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to initialize : %s", __vc_mgr_get_error_code(ret));
 
-               SLOG(LOG_DEBUG, TAG_VCM, "@@@");
-               return EINA_FALSE;
+                       vc_mgr_client_set_error(g_vc_m, VC_ERROR_ENGINE_NOT_FOUND);
+                       ecore_main_loop_thread_safe_call_async(__vc_mgr_notify_error, (void*)g_vc_m);
 
-       } else if (0 != ret) {
-               SLOG(LOG_ERROR, TAG_VCM, "[WARNING] Fail to connection. Retry to connect : %s", __vc_mgr_get_error_code(ret));
-               return EINA_TRUE;
-       } else {
-               /* Success to connect */
-       }
+                       SLOG(LOG_DEBUG, TAG_VCM, "@@@");
+                       return EINA_FALSE;
 
-       /* Set service state */
-       vc_service_state_e previous_service_state;
-       vc_mgr_client_get_service_state(g_vc_m, &previous_service_state);
+               } else if (0 != ret) {
+                       SLOG(LOG_ERROR, TAG_VCM, "[WARNING] Fail to connection. Retry to connect : %s", __vc_mgr_get_error_code(ret));
+                       return EINA_TRUE;
+               } else {
+                       /* Success to connect */
+               }
 
-       vc_mgr_client_set_service_state(g_vc_m, (vc_service_state_e)service_state);
+               /* Set service state */
+               vc_service_state_e previous_service_state;
+               vc_mgr_client_get_service_state(g_vc_m, &previous_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);
+               vc_mgr_client_set_service_state(g_vc_m, (vc_service_state_e)service_state);
 
-       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_DEBUG, TAG_VCM, "Service state changed callback is called");
-       } else {
-               SLOG(LOG_WARN, TAG_VCM, "[WARNING] Service state changed callback is null");
-       }
+               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);
 
-       /* Set foreground */
-       vc_mgr_client_set_foreground(g_vc_m, foreground, true);
+               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_DEBUG, TAG_VCM, "Service state changed callback is called");
+               } else {
+                       SLOG(LOG_WARN, TAG_VCM, "[WARNING] Service state changed callback is null");
+               }
 
-       SLOG(LOG_ERROR, TAG_VCM, "[SUCCESS] Connected daemon");
+               /* Set foreground */
+               vc_mgr_client_set_foreground(g_vc_m, foreground, true);
 
-       /* Set client state */
-       vc_mgr_client_set_client_state(g_vc_m, VC_STATE_READY);
+               SLOG(LOG_ERROR, TAG_VCM, "[SUCCESS] Connected daemon");
 
-       vc_state_changed_cb changed_callback = NULL;
-       vc_mgr_client_get_state_changed_cb(g_vc_m, &changed_callback, &user_data);
+               /* Set client state */
+               vc_mgr_client_set_client_state(g_vc_m, VC_STATE_READY);
 
-       vc_state_e current_state;
-       vc_state_e before_state;
+               vc_state_changed_cb changed_callback = NULL;
+               vc_mgr_client_get_state_changed_cb(g_vc_m, &changed_callback, &user_data);
 
-       vc_mgr_client_get_before_state(g_vc_m, &current_state, &before_state);
+               vc_state_e current_state;
+               vc_state_e before_state;
 
-       if (NULL != changed_callback) {
-               vc_mgr_client_use_callback(g_vc_m);
-               changed_callback(before_state, current_state, user_data);
-               vc_mgr_client_not_use_callback(g_vc_m);
-               SLOG(LOG_DEBUG, TAG_VCM, "State changed callback is called");
+               vc_mgr_client_get_before_state(g_vc_m, &current_state, &before_state);
+
+               if (NULL != changed_callback) {
+                       vc_mgr_client_use_callback(g_vc_m);
+                       changed_callback(before_state, current_state, user_data);
+                       vc_mgr_client_not_use_callback(g_vc_m);
+                       SLOG(LOG_DEBUG, TAG_VCM, "State changed callback is called");
+               } else {
+                       SLOG(LOG_WARN, TAG_VCM, "[WARNING] State changed callback is null");
+               }
        } else {
-               SLOG(LOG_WARN, TAG_VCM, "[WARNING] State changed callback is null");
+               SLOG(LOG_ERROR, TAG_VCM, "[Not ERROR] g_vc_m is not valid. It is destroyed."); //LCOV_EXCL_LINE
+               return EINA_FALSE;
        }
 
        SLOG(LOG_DEBUG, TAG_VCM, "@@@");
@@ -454,6 +462,7 @@ static Eina_Bool __vc_mgr_connect_daemon(void *data)
        return EINA_FALSE;
 }
 
+
 static void __start_prepare_thread(void *data, Ecore_Thread *thread)
 {
        SLOG(LOG_ERROR, TAG_VCM, "@@@ Start prepare thread");