[Release version 0.2.18] Fix bug - 1. fd leak, 2. does not stop foreach callback... 26/56326/2 accepted/tizen/mobile/20160107.101156 accepted/tizen/tv/20160107.101213 accepted/tizen/wearable/20160107.101228 submit/tizen/20160106.112016
authorJeongmo Yang <jm80.yang@samsung.com>
Wed, 6 Jan 2016 10:18:41 +0000 (19:18 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 6 Jan 2016 10:58:45 +0000 (19:58 +0900)
Change-Id: I7d1c5900fd17dd450ec848eab13a06a20ad59061
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/capi-media-recorder.spec
src/recorder.c

index 154327f447128d30a0406656d50c4522f5229065..84fa0187357716edd2dbc118dfc26b6af2eb19fb 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-recorder
 Summary:    A Recorder API
-Version:    0.2.17
+Version:    0.2.18
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index d846c3ed09eac9ccd7a5dc769207239ae7f5d8b5..6bbb4a22c5e1d72b5d636d9af787cc3c8729aed8 100644 (file)
@@ -213,8 +213,11 @@ static void _client_user_callback(recorder_cb_info_s *cb_info, char *recv_msg, m
 
                        muse_recorder_msg_get(codec, recv_msg);
 
-                       ((recorder_supported_audio_encoder_cb)cb_info->user_cb[event])((recorder_audio_codec_e)codec,
-                               cb_info->user_data[event]);
+                       if (((recorder_supported_audio_encoder_cb)cb_info->user_cb[event])((recorder_audio_codec_e)codec, cb_info->user_data[event]) == false) {
+                               cb_info->user_cb[event] = NULL;
+                               cb_info->user_data[event] = NULL;
+                               LOGD("stop foreach callback for SUPPORTED_AUDIO_ENCODER");
+                       }
                        break;
                }
        case MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_FILE_FORMAT:
@@ -223,8 +226,11 @@ static void _client_user_callback(recorder_cb_info_s *cb_info, char *recv_msg, m
 
                        muse_recorder_msg_get(format, recv_msg);
 
-                       ((recorder_supported_file_format_cb)cb_info->user_cb[event])((recorder_file_format_e)format,
-                               cb_info->user_data[event]);
+                       if (((recorder_supported_file_format_cb)cb_info->user_cb[event])((recorder_file_format_e)format, cb_info->user_data[event]) == false) {
+                               cb_info->user_cb[event] = NULL;
+                               cb_info->user_data[event] = NULL;
+                               LOGD("stop foreach callback for SUPPORTED_FILE_FORMAT");
+                       }
                        break;
                }
        case MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_ENCODER:
@@ -233,8 +239,11 @@ static void _client_user_callback(recorder_cb_info_s *cb_info, char *recv_msg, m
 
                        muse_recorder_msg_get(codec, recv_msg);
 
-                       ((recorder_supported_video_encoder_cb)cb_info->user_cb[event])((recorder_video_codec_e)codec,
-                               cb_info->user_data[event]);
+                       if (((recorder_supported_video_encoder_cb)cb_info->user_cb[event])((recorder_video_codec_e)codec, cb_info->user_data[event]) == false) {
+                               cb_info->user_cb[event] = NULL;
+                               cb_info->user_data[event] = NULL;
+                               LOGD("stop foreach callback for SUPPORTED_VIDEO_ENCODER");
+                       }
                        break;
                }
        case MUSE_RECORDER_EVENT_TYPE_FOREACH_SUPPORTED_VIDEO_RESOLUTION:
@@ -245,8 +254,11 @@ static void _client_user_callback(recorder_cb_info_s *cb_info, char *recv_msg, m
                        muse_recorder_msg_get(width, recv_msg);
                        muse_recorder_msg_get(height, recv_msg);
 
-                       ((recorder_supported_video_resolution_cb)cb_info->user_cb[event])(width, height,
-                               cb_info->user_data[event]);
+                       if (((recorder_supported_video_resolution_cb)cb_info->user_cb[event])(width, height, cb_info->user_data[event]) == false) {
+                               cb_info->user_cb[event] = NULL;
+                               cb_info->user_data[event] = NULL;
+                               LOGD("stop foreach callback for SUPPORTED_VIDEO_RESOLUTION");
+                       }
                        break;
                }
 
@@ -835,6 +847,11 @@ static void _client_callback_destroy(recorder_cb_info_s *cb_info)
 
        LOGD("event thread removed");
 
+       if (cb_info->fd > -1) {
+               muse_core_connection_close(cb_info->fd);
+               cb_info->fd = -1;
+       }
+
        if (cb_info->bufmgr) {
                tbm_bufmgr_deinit(cb_info->bufmgr);
                cb_info->bufmgr = NULL;