diff options
author | Jeongmo Yang <jm80.yang@samsung.com> | 2016-01-06 19:18:41 +0900 |
---|---|---|
committer | Jeongmo Yang <jm80.yang@samsung.com> | 2016-01-06 19:58:45 +0900 |
commit | 6a4e4e6264dfc043e8429426497a54eebb04b2a8 (patch) | |
tree | 13720e2d79b5e037fa1c0b17741f35d2803c20e7 | |
parent | 1a6c7d791f6154b1ca6c61fe4cd2043300af641e (diff) | |
download | recorder-6a4e4e6264dfc043e8429426497a54eebb04b2a8.tar.gz recorder-6a4e4e6264dfc043e8429426497a54eebb04b2a8.tar.bz2 recorder-6a4e4e6264dfc043e8429426497a54eebb04b2a8.zip |
[Release version 0.2.18] Fix bug - 1. fd leak, 2. does not stop foreach callback even though callback returns falsesubmit/tizen/20160106.112016accepted/tizen/wearable/20160107.101228accepted/tizen/tv/20160107.101213accepted/tizen/mobile/20160107.101156
Change-Id: I7d1c5900fd17dd450ec848eab13a06a20ad59061
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
-rw-r--r-- | packaging/capi-media-recorder.spec | 2 | ||||
-rw-r--r-- | src/recorder.c | 33 |
2 files changed, 26 insertions, 9 deletions
diff --git a/packaging/capi-media-recorder.spec b/packaging/capi-media-recorder.spec index 154327f..84fa018 100644 --- a/packaging/capi-media-recorder.spec +++ b/packaging/capi-media-recorder.spec @@ -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 diff --git a/src/recorder.c b/src/recorder.c index d846c3e..6bbb4a2 100644 --- a/src/recorder.c +++ b/src/recorder.c @@ -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; |