From: Eunhae Choi Date: Mon, 10 Apr 2017 12:01:53 +0000 (+0900) Subject: [0.3.56] do not add ev if there is no registered cb X-Git-Tag: accepted/tizen/unified/20170420.154838^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F46%2F125346%2F1;p=platform%2Fcore%2Fapi%2Fplayer.git [0.3.56] do not add ev if there is no registered cb Change-Id: I4e8b7bfc0e6e13a39d8a5d1b8b69623d7506ef72 --- diff --git a/packaging/capi-media-player.spec b/packaging/capi-media-player.spec index 07d73c3..0998d9f 100644 --- a/packaging/capi-media-player.spec +++ b/packaging/capi-media-player.spec @@ -1,6 +1,6 @@ Name: capi-media-player Summary: A Media Player API -Version: 0.3.55 +Version: 0.3.56 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/player.c b/src/player.c index 6051b6b..4be7e6d 100644 --- a/src/player.c +++ b/src/player.c @@ -1188,7 +1188,7 @@ gboolean _player_event_job_function(void *user_data) return FALSE; } - /* LOGD("enter ev:%d", data->int_data); */ + LOGD("enter ev:%d", data->int_data); g_mutex_lock(&data->event_mutex); ev = data->int_data; @@ -1282,6 +1282,8 @@ static void *_player_event_queue_loop(void *param) } if (_player_need_sync_context(event_data->int_data)) { + if (cb_info->user_cb[event_data->int_data] && + _user_callbacks[event_data->int_data]) { g_mutex_lock(&ev->idle_ev_mutex); ev->idle_ev_list = g_list_append(ev->idle_ev_list, (gpointer)event_data); g_mutex_unlock(&ev->idle_ev_mutex); @@ -1292,6 +1294,14 @@ static void *_player_event_queue_loop(void *param) (GSourceFunc)_player_event_job_function, (gpointer)event_data, NULL); + } else { + LOGW("there is no registered cb for ev:%d", event_data->int_data); + if (event_data->recv_data) { + g_free(event_data->recv_data->buffer); + g_free(event_data->recv_data); + } + g_free(event_data); + } } else { _player_event_job_function(event_data); } @@ -1345,8 +1355,10 @@ static void _player_remove_idle_event(callback_cb_info_s *cb_info, muse_player_e LOGD("remove idle event[%d] or all[%d]", event_type, remove_all); - for (list = ev->idle_ev_list; list; list = g_list_next(list)) { + list = ev->idle_ev_list; + while (list) { event_data = list->data; + list = g_list_next(list); if (!event_data) { LOGW("Fail to remove idle event. The data is NULL"); @@ -1469,7 +1481,7 @@ static void _player_event_queue_add(player_event_queue * ev, _player_cb_data * d } } -static void _user_callback_handler(callback_cb_info_s * cb_info, muse_player_event_e event, _player_recv_data *recv_data) +static bool _user_callback_handler(callback_cb_info_s * cb_info, muse_player_event_e event, _player_recv_data *recv_data) { /* LOGD("get event %d", event); */ @@ -1479,15 +1491,20 @@ static void _user_callback_handler(callback_cb_info_s * cb_info, muse_player_eve data = g_new(_player_cb_data, 1); if (!data) { LOGE("fail to alloc mem"); - return; + return false; } data->int_data = (int)event; data->cb_info = cb_info; data->recv_data = recv_data; g_mutex_init(&data->event_mutex); _player_event_queue_add(&cb_info->event_queue, data); + + return true; } } + + LOGE("failed to add event to queue"); + return false; } static void _add_ret_msg(muse_player_api_e api, callback_cb_info_s * cb_info, int offset, int parse_len) @@ -1624,8 +1641,14 @@ static void *client_cb_handler(gpointer data) break; } g_mutex_unlock(&cb_info->player_mutex); - if (muse_core_msg_json_object_get_value("event", jobj, &event, MUSE_TYPE_INT)) - _user_callback_handler(cb_info, event, recv_data); + if (!muse_core_msg_json_object_get_value("event", jobj, &event, MUSE_TYPE_INT) || + !_user_callback_handler(cb_info, event, recv_data)) { + LOGE("failed to get value or add event to the queue."); + if (recv_data) { + g_free(recv_data->buffer); + g_free(recv_data); + } + } } else if (api == MUSE_PLAYER_CB_CREATE_ACK) { g_mutex_lock(&cb_info->player_mutex); cb_info->buff.recved++;