summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeongmo Yang <jm80.yang@samsung.com>2016-01-06 19:18:41 +0900
committerJeongmo Yang <jm80.yang@samsung.com>2016-01-06 19:58:45 +0900
commit6a4e4e6264dfc043e8429426497a54eebb04b2a8 (patch)
tree13720e2d79b5e037fa1c0b17741f35d2803c20e7
parent1a6c7d791f6154b1ca6c61fe4cd2043300af641e (diff)
downloadrecorder-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.spec2
-rw-r--r--src/recorder.c33
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;