Merge branch 'tizen' into tizen_line_coverage 21/196621/1
authorJeongmo Yang <jm80.yang@samsung.com>
Thu, 3 Jan 2019 04:27:20 +0000 (13:27 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Thu, 3 Jan 2019 04:27:34 +0000 (13:27 +0900)
Change-Id: I1735fdf5c951e0d62ee9ce9c8ff505589cf41abd
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
1  2 
src/recorder.c

diff --combined src/recorder.c
@@@ -43,6 -43,7 +43,7 @@@ static GList *g_rec_dev_state_changed_c
  static int g_rec_dev_state_changed_cb_id;
  static GDBusConnection *g_rec_dev_state_changed_cb_conn;
  static guint g_rec_dev_state_changed_cb_subscribe_id;
+ static GMutex g_rec_idle_event_lock;
  
  
  
@@@ -345,7 -346,6 +346,7 @@@ static void _recorder_client_user_callb
                        }
                        break;
                }
 +//LCOV_EXCL_START
        case MUSE_RECORDER_EVENT_TYPE_ERROR:
                {
                        int error = 0;
                                cb_info->user_data[event]);
                        break;
                }
 +//LCOV_EXCL_STOP
        case MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_AUDIO_ENCODER:
                {
                        int codec = 0;
  }
  
  
- static bool _recorder_idle_event_callback(void *data)
+ static gboolean _recorder_idle_event_callback(gpointer data)
  {
        recorder_cb_info_s *cb_info = NULL;
        recorder_idle_event_s *rec_idle_event = (recorder_idle_event_s *)data;
  
        if (rec_idle_event == NULL) {
                LOGE("rec_idle_event is NULL");
-               return false;
+               return FALSE;
        }
  
        /* lock event */
-       g_mutex_lock(&rec_idle_event->event_mutex);
+       g_mutex_lock(&g_rec_idle_event_lock);
  
        cb_info = rec_idle_event->cb_info;
        if (cb_info == NULL) {
                LOGW("recorder cb_info is NULL. event %p %d", rec_idle_event, rec_idle_event->event);
+               g_mutex_unlock(&g_rec_idle_event_lock);
                goto IDLE_EVENT_CALLBACK_DONE;
        }
  
        /* remove event from list */
-       g_mutex_lock(&cb_info->idle_event_mutex);
        if (cb_info->idle_event_list)
                cb_info->idle_event_list = g_list_remove(cb_info->idle_event_list, (gpointer)rec_idle_event);
  
-       /*LOGD("remove recorder idle event %p, %p", rec_idle_event, cb_info->idle_event_list);*/
-       g_mutex_unlock(&cb_info->idle_event_mutex);
+       g_mutex_unlock(&g_rec_idle_event_lock);
  
        /* user callback */
        _recorder_client_user_callback(cb_info, rec_idle_event->recv_msg, rec_idle_event->event);
  
-       /* send signal for waiting thread */
-       g_cond_signal(&cb_info->idle_event_cond);
  IDLE_EVENT_CALLBACK_DONE:
-       /* unlock and release event */
-       g_mutex_unlock(&rec_idle_event->event_mutex);
-       g_mutex_clear(&rec_idle_event->event_mutex);
+       /* release event */
        g_free(rec_idle_event);
        rec_idle_event = NULL;
  
-       return false;
+       return FALSE;
  }
  
  
@@@ -472,14 -463,13 +465,13 @@@ static void _recorder_deactivate_idle_e
  {
        recorder_idle_event_s *rec_idle_event = NULL;
        GList *list = NULL;
-       gint64 end_time = 0;
  
        if (cb_info == NULL) {
                LOGE("cb_info is NULL");
                return;
        }
  
-       g_mutex_lock(&cb_info->idle_event_mutex);
+       g_mutex_lock(&g_rec_idle_event_lock);
  
        if (cb_info->idle_event_list == NULL) {
                LOGD("No event");
  
                                cb_info->idle_event_list = g_list_remove(cb_info->idle_event_list, (gpointer)rec_idle_event);
  
-                               g_mutex_clear(&rec_idle_event->event_mutex);
                                g_free(rec_idle_event);
                                rec_idle_event = NULL;
  
                                continue;
                        }
  
-                       LOGW("remove idle event %p failed", rec_idle_event);
-                       if (!g_mutex_trylock(&rec_idle_event->event_mutex)) {
-                               LOGW("lock failed, %p event is calling now", rec_idle_event);
-                               end_time = g_get_monotonic_time() + G_TIME_SPAN_MILLISECOND * 100;
-                               if (g_cond_wait_until(&cb_info->idle_event_cond, &cb_info->idle_event_mutex, end_time))
-                                       LOGW("signal received");
-                               else
-                                       LOGW("timeout");
-                               continue;
-                       }
                        LOGW("set NULL cb_info for event %p %d, it will be freed on idle callback",
                                rec_idle_event, rec_idle_event->event);
  
                        rec_idle_event->cb_info = NULL;
  
                        cb_info->idle_event_list = g_list_remove(cb_info->idle_event_list, (gpointer)rec_idle_event);
-                       g_mutex_unlock(&rec_idle_event->event_mutex);
                }
  
                g_list_free(cb_info->idle_event_list);
                cb_info->idle_event_list = NULL;
        }
  
-       g_mutex_unlock(&cb_info->idle_event_mutex);
+       g_mutex_unlock(&g_rec_idle_event_lock);
  
        return;
  }
@@@ -886,14 -858,14 +860,14 @@@ static void *_recorder_msg_handler_func
  
                                rec_idle_event->event = rec_msg->event;
                                rec_idle_event->cb_info = cb_info;
-                               g_mutex_init(&rec_idle_event->event_mutex);
                                strncpy(rec_idle_event->recv_msg, rec_msg->recv_msg, sizeof(rec_idle_event->recv_msg) - 1);
  
                                /*LOGD("add recorder event[%d, %p] to IDLE", rec_msg->event, rec_idle_event);*/
  
-                               g_mutex_lock(&cb_info->idle_event_mutex);
+                               g_mutex_lock(&g_rec_idle_event_lock);
                                cb_info->idle_event_list = g_list_append(cb_info->idle_event_list, (gpointer)rec_idle_event);
-                               g_mutex_unlock(&cb_info->idle_event_mutex);
+                               g_mutex_unlock(&g_rec_idle_event_lock);
  
                                g_idle_add_full(G_PRIORITY_DEFAULT,
                                        (GSourceFunc)_recorder_idle_event_callback,
@@@ -965,11 -937,9 +939,11 @@@ static void *_recorder_msg_recv_func(gp
        while (g_atomic_int_get(&cb_info->msg_recv_running)) {
                recv_length = muse_core_msg_recv(cb_info->fd, recv_msg, MUSE_MSG_MAX_LENGTH);
                if (recv_length <= 0) {
 +//LCOV_EXCL_START
                        cb_info->is_server_connected = FALSE;
                        LOGE("receive msg failed - server disconnected");
                        break;
 +//LCOV_EXCL_STOP
                }
  
                recv_msg[recv_length] = '\0';
                                if (single_length < MUSE_RECORDER_MSG_MAX_LENGTH) {
                                        /* check remained msg */
                                        if (remained_length > 0) {
 +//LCOV_EXCL_START
                                                if (remained_msg) {
                                                        strncpy(single_msg, remained_msg, remained_length);
                                                        strncpy(single_msg + remained_length, recv_msg + prev_pos, single_length);
                                                }
  
                                                remained_length = 0;
 +//LCOV_EXCL_STOP
                                        } else {
                                                strncpy(single_msg, recv_msg + prev_pos, single_length);
                                                single_msg[single_length] = '\0';
  
                /* check incompleted message */
                if (recv_msg[recv_length - 1] != '}') {
 +//LCOV_EXCL_START
                        remained_length = recv_length - prev_pos;
  
                        LOGW("incompleted message [len %d]", remained_length);
                        } else {
                                LOGE("failed to alloc for remained msg");
                        }
 +//LCOV_EXCL_STOP
                } else {
                        remained_length = 0;
                }
        LOGD("client cb exit - server connected %d", cb_info->is_server_connected);
  
        if (!cb_info->is_server_connected) {
 +//LCOV_EXCL_START
                /* send error msg for server disconnection */
                char *error_msg = muse_core_msg_new(MUSE_RECORDER_CB_EVENT,
                        MUSE_TYPE_INT, "error", RECORDER_ERROR_SERVICE_DISCONNECTED,
                error_msg = NULL;
  
                LOGE("add error msg for service disconnection done");
 +//LCOV_EXCL_STOP
        }
  
  CB_HANDLER_EXIT:
@@@ -1121,7 -1085,6 +1095,7 @@@ static bool __create_msg_handler_thread
        handler_info->thread = g_thread_try_new(thread_name,
                _recorder_msg_handler_func, (gpointer)handler_info, NULL);
        if (handler_info->thread == NULL) {
 +//LCOV_EXCL_START
                LOGE("t:%d thread failed", type);
  
                g_mutex_clear(&handler_info->mutex);
                handler_info->queue = NULL;
  
                return false;
 +//LCOV_EXCL_STOP
        }
  
        LOGD("t:%d done", type);
@@@ -1196,9 -1158,6 +1170,6 @@@ static recorder_cb_info_s *_recorder_cl
                g_cond_init(&cb_info->api_cond[i]);
        }
  
-       g_mutex_init(&cb_info->idle_event_mutex);
-       g_cond_init(&cb_info->idle_event_cond);
        for (i = 0 ; i < MUSE_RECORDER_EVENT_TYPE_NUM ; i++)
                g_mutex_init(&cb_info->user_cb_mutex[i]);
  
        cb_info->is_server_connected = TRUE;
  
        return cb_info;
 -
 +//LCOV_EXCL_START
  ErrorExit:
        if (cb_info) {
                __destroy_msg_handler_thread(&cb_info->msg_handler_info);
                for (i = 0 ; i < MUSE_RECORDER_EVENT_TYPE_NUM ; i++)
                        g_mutex_clear(&cb_info->user_cb_mutex[i]);
  
-               g_mutex_clear(&cb_info->idle_event_mutex);
-               g_cond_clear(&cb_info->idle_event_cond);
                for (i = 0 ; i < MUSE_RECORDER_API_MAX ; i++) {
                        g_mutex_clear(&cb_info->api_mutex[i]);
                        g_cond_clear(&cb_info->api_cond[i]);
        }
  
        return NULL;
 +//LCOV_EXCL_STOP
  }
  
  static int _recorder_client_wait_for_cb_return(muse_recorder_api_e api, recorder_cb_info_s *cb_info, int time_out)
@@@ -1425,9 -1380,6 +1393,6 @@@ static void _recorder_client_callback_d
        for (i = 0 ; i < MUSE_RECORDER_EVENT_TYPE_NUM ; i++)
                g_mutex_clear(&cb_info->user_cb_mutex[i]);
  
-       g_mutex_clear(&cb_info->idle_event_mutex);
-       g_cond_clear(&cb_info->idle_event_cond);
        for (i = 0 ; i < MUSE_RECORDER_API_MAX ; i++) {
                g_mutex_clear(&cb_info->api_mutex[i]);
                g_cond_clear(&cb_info->api_cond[i]);
@@@ -1542,11 -1494,9 +1507,11 @@@ static int _recorder_create_common(reco
  
        sock_fd = muse_client_new();
        if (sock_fd < 0) {
 +//LCOV_EXCL_START
                LOGE("muse_client_new failed - returned fd %d", sock_fd);
                ret = RECORDER_ERROR_INVALID_OPERATION;
                goto _ERR_RECORDER_EXIT;
 +//LCOV_EXCL_STOP
        }
  
        if (type == MUSE_RECORDER_TYPE_AUDIO) {
        }
  
        if (!send_msg) {
 +//LCOV_EXCL_START
                LOGE("NULL msg");
                ret = RECORDER_ERROR_OUT_OF_MEMORY;
                goto _ERR_RECORDER_EXIT;
 +//LCOV_EXCL_STOP
        }
  
        LOGD("sock_fd : %d, msg : %s", sock_fd, send_msg);
        send_msg = NULL;
  
        if (send_ret < 0) {
 +//LCOV_EXCL_START
                LOGE("send msg failed %d", errno);
                ret = RECORDER_ERROR_INVALID_OPERATION;
                goto _ERR_RECORDER_EXIT;
 +//LCOV_EXCL_STOP
        }
  
        pc->cb_info = _recorder_client_callback_new(sock_fd);
  
        muse_recorder_msg_get_pointer(handle, pc->cb_info->recv_msg);
        if (handle == 0) {
 +//LCOV_EXCL_START
                LOGE("Receiving Handle Failed!!");
                ret = RECORDER_ERROR_INVALID_OPERATION;
                goto _ERR_RECORDER_AFTER_CREATE;
 +//LCOV_EXCL_STOP
        }
  
        if (!_recorder_client_get_root_directory(&root_directory) || root_directory == NULL) {
 +//LCOV_EXCL_START
                LOGE("failed to get root directory of internal storage");
                ret = RECORDER_ERROR_INVALID_OPERATION;
                goto _ERR_RECORDER_AFTER_CREATE;
 +//LCOV_EXCL_STOP
        }
  
        LOGD("root directory [%s]", root_directory);
        pc->remote_handle = handle;
        pc->cb_info->bufmgr = bufmgr;
  
-       LOGD("recorder[type %d] %p create success : remote handle 0x%x",
+       LOGD("recorder[type %d] %p create success : remote handle 0x%td",
                type, pc, pc->remote_handle);
  
        *recorder = (recorder_h)pc;
        LOGD("done");
  
        return RECORDER_ERROR_NONE;
 -
 +//LCOV_EXCL_START
  _ERR_RECORDER_AFTER_CREATE:
        _recorder_msg_send(MUSE_RECORDER_API_DESTROY, pc->cb_info, &destroy_ret, RECORDER_CB_TIMEOUT);
        LOGE("destroy return 0x%x", destroy_ret);
@@@ -1678,7 -1620,6 +1643,7 @@@ _ERR_RECORDER_EXIT
        }
  
        return ret;
 +//LCOV_EXCL_STOP
  }
  
  
@@@ -1710,7 -1651,7 +1675,7 @@@ int recorder_get_state(recorder_h recor
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, remote_handle : %x", pc->remote_handle);
+       LOGD("Enter, remote_handle : %td", pc->remote_handle);
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
  
@@@ -1793,7 -1734,6 +1758,7 @@@ int recorder_unprepare(recorder_h recor
        LOGD("ENTER");
  
        if (pc->camera) {
 +//LCOV_EXCL_START
                ret = camera_get_state(pc->camera, &camera_state);
                if (ret != CAMERA_ERROR_NONE) {
                        LOGE("failed to get camera state 0x%x", ret);
                                return RECORDER_ERROR_INVALID_OPERATION;
                        }
                }
 +//LCOV_EXCL_STOP
        }
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
@@@ -1833,7 -1772,6 +1798,7 @@@ int recorder_start(recorder_h recorder
        LOGD("ENTER");
  
        if (pc->camera) {
 +//LCOV_EXCL_START
                ret = recorder_get_state(recorder, &current_state);
                if (ret != RECORDER_ERROR_NONE) {
                        LOGE("failed to get current state 0x%x", ret);
                                return RECORDER_ERROR_INVALID_OPERATION;
                        }
                }
 +//LCOV_EXCL_STOP
        }
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_NO_TIMEOUT);
@@@ -1897,7 -1834,6 +1862,7 @@@ int recorder_commit(recorder_h recorder
        LOGD("ENTER");
  
        if (pc->camera) {
 +//LCOV_EXCL_START
                ret = recorder_get_state(recorder, &current_state);
                if (ret != RECORDER_ERROR_NONE) {
                        LOGE("failed to get current state 0x%x", ret);
                                return RECORDER_ERROR_INVALID_OPERATION;
                        }
                }
 +//LCOV_EXCL_STOP
        }
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
@@@ -2056,7 -1991,7 +2021,7 @@@ int recorder_foreach_supported_video_re
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_RESOLUTION] = foreach_cb;
        pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_RESOLUTION] = user_data;
@@@ -2117,7 -2052,7 +2082,7 @@@ int recorder_set_filename(recorder_h re
        length = strlen(filename);
  
        if (length >= RECORDER_FILENAME_MAX - 1) {
-               LOGE("too long file name [%d]", length);
+               LOGE("too long file name [%zu]", length);
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
@@@ -2315,7 -2250,7 +2280,7 @@@ int recorder_set_state_changed_cb(recor
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
  
@@@ -2375,7 -2310,7 +2340,7 @@@ int recorder_set_interrupted_cb(recorde
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
  
@@@ -2435,7 -2370,7 +2400,7 @@@ int recorder_set_interrupt_started_cb(r
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
  
@@@ -2495,7 -2430,7 +2460,7 @@@ int recorder_set_audio_stream_cb(record
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
  
@@@ -2555,7 -2490,7 +2520,7 @@@ int recorder_set_muxed_stream_cb(record
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
  
@@@ -2615,7 -2550,7 +2580,7 @@@ int recorder_set_error_cb(recorder_h re
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
  
@@@ -2675,7 -2610,7 +2640,7 @@@ int recorder_set_recording_status_cb(re
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        _recorder_msg_send(api, pc->cb_info, &ret, RECORDER_CB_TIMEOUT);
  
@@@ -2793,7 -2728,7 +2758,7 @@@ int recorder_foreach_supported_file_for
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_FILE_FORMAT] = foreach_cb;
        pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_FILE_FORMAT] = user_data;
@@@ -3244,7 -3179,7 +3209,7 @@@ int recorder_foreach_supported_audio_en
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_AUDIO_ENCODER] = foreach_cb;
        pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_AUDIO_ENCODER] = user_data;
@@@ -3268,7 -3203,7 +3233,7 @@@ int recorder_foreach_supported_video_en
                return RECORDER_ERROR_INVALID_PARAMETER;
        }
  
-       LOGD("Enter, handle :%x", pc->remote_handle);
+       LOGD("Enter, handle :%td", pc->remote_handle);
  
        pc->cb_info->user_cb[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_ENCODER] = foreach_cb;
        pc->cb_info->user_data[MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_ENCODER] = user_data;
@@@ -3506,11 -3441,9 +3471,11 @@@ int recorder_get_device_state(recorder_
  
        sock_fd = muse_client_new();
        if (sock_fd < 0) {
 +//LCOV_EXCL_START
                LOGE("muse_client_new failed - returned fd %d", sock_fd);
                ret = RECORDER_ERROR_INVALID_OPERATION;
                goto _GET_DEVICE_STATE_EXIT;
 +//LCOV_EXCL_STOP
        }
  
        send_msg = muse_core_msg_new(MUSE_RECORDER_API_GET_DEVICE_STATE,
                MUSE_TYPE_INT, PARAM_RECORDER_TYPE, type,
                NULL);
        if (!send_msg) {
 +//LCOV_EXCL_START
                LOGE("NULL msg");
                ret = RECORDER_ERROR_OUT_OF_MEMORY;
                goto _GET_DEVICE_STATE_EXIT;
 +//LCOV_EXCL_STOP
        }
  
        LOGD("sock_fd : %d, msg : %s", sock_fd, send_msg);
        send_msg = NULL;
  
        if (ret < 0) {
 +//LCOV_EXCL_START
                LOGE("send msg failed %d", errno);
                ret = RECORDER_ERROR_INVALID_OPERATION;
                goto _GET_DEVICE_STATE_EXIT;
 +//LCOV_EXCL_STOP
        }
  
        ret = muse_core_msg_recv(sock_fd, recv_msg, MUSE_RECORDER_MSG_MAX_LENGTH);
        if (ret <= 0) {
 +//LCOV_EXCL_START
                LOGE("recv msg failed %d", errno);
                ret = RECORDER_ERROR_INVALID_OPERATION;
                goto _GET_DEVICE_STATE_EXIT;
 +//LCOV_EXCL_STOP
        }
  
        if (!muse_recorder_msg_get(ret, recv_msg)) {
 +//LCOV_EXCL_START
                LOGE("failed to get return value from msg [%s]", recv_msg);
                ret = RECORDER_ERROR_INVALID_OPERATION;
                goto _GET_DEVICE_STATE_EXIT;
 +//LCOV_EXCL_STOP
        }
  
        if (ret == RECORDER_ERROR_NONE) {
@@@ -3645,7 -3570,6 +3610,7 @@@ int recorder_add_device_state_changed_c
  
  _DONE:
        if (ret != RECORDER_ERROR_NONE) {
 +//LCOV_EXCL_START
                if (info) {
                        g_free(info);
                        info = NULL;
                        g_object_unref(g_rec_dev_state_changed_cb_conn);
                        g_rec_dev_state_changed_cb_conn = NULL;
                }
 +//LCOV_EXCL_STOP
        }
  
        g_mutex_unlock(&g_rec_dev_state_changed_cb_lock);