diff options
author | Sangchul Lee <sc11.lee@samsung.com> | 2015-11-09 17:20:36 +0900 |
---|---|---|
committer | Sangchul Lee <sc11.lee@samsung.com> | 2015-11-09 17:20:36 +0900 |
commit | 1c1de18dda064e8c3cac4c0a0df93e5e1cee8c97 (patch) | |
tree | cf83c4ebf4b106d30f3600817a3456d8248547a5 | |
parent | af291b8b2bda0f0bfa6d3ad2f21ee968e56ac59e (diff) | |
download | libmm-player-1c1de18dda064e8c3cac4c0a0df93e5e1cee8c97.tar.gz libmm-player-1c1de18dda064e8c3cac4c0a0df93e5e1cee8c97.tar.bz2 libmm-player-1c1de18dda064e8c3cac4c0a0df93e5e1cee8c97.zip |
Add codes to unlock command lock when after calling __mmplayer_can_do_interrupt()submit/tizen/20151110.015124accepted/tizen/wearable/20151110.070243accepted/tizen/tv/20151110.070211accepted/tizen/mobile/20151110.070150
Change-Id: If16382cecffd28a86628a1c1b022eef236bb7517
-rw-r--r-- | packaging/libmm-player.spec | 2 | ||||
-rw-r--r-- | src/server/mm_player_priv.c | 23 | ||||
-rw-r--r-- | src/server/mm_player_resource.c | 6 |
3 files changed, 20 insertions, 11 deletions
diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index db11b36..72edfa9 100644 --- a/packaging/libmm-player.spec +++ b/packaging/libmm-player.spec @@ -3,7 +3,7 @@ Name: libmm-player Summary: Multimedia Framework Player Library -Version: 0.5.66 +Version: 0.5.67 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/server/mm_player_priv.c b/src/server/mm_player_priv.c index 5598c0d..76893e8 100644 --- a/src/server/mm_player_priv.c +++ b/src/server/mm_player_priv.c @@ -9016,10 +9016,10 @@ __mmplayer_can_do_interrupt(mm_player_t *player) goto INTERRUPT; } -FAILED: +FAILED: /* with CMD UNLOCKED */ return FALSE; -INTERRUPT: +INTERRUPT: /* with CMD LOCKED */ return TRUE; } @@ -9086,7 +9086,7 @@ void __mmplayer_sound_focus_watch_callback(int id, mm_sound_focus_type_e focus_t if (!__mmplayer_can_do_interrupt(player)) { LOGW("no need to interrupt, so leave"); - goto EXIT; + goto EXIT_WITHOUT_UNLOCK; } if (player->sound_focus.session_flags & MM_SESSION_OPTION_UNINTERRUPTIBLE) @@ -9169,9 +9169,13 @@ void __mmplayer_sound_focus_watch_callback(int id, mm_sound_focus_type_e focus_t DONE: player->sound_focus.by_asm_cb = FALSE; player->sound_focus.cb_pending = FALSE; - MMPLAYER_CMD_UNLOCK( player ); EXIT: + MMPLAYER_CMD_UNLOCK( player ); + LOGW("dispatched"); + return; + +EXIT_WITHOUT_UNLOCK: LOGW("dispatched"); return; } @@ -9190,7 +9194,7 @@ __mmplayer_sound_focus_callback(int id, mm_sound_focus_type_e focus_type, mm_sou if (!__mmplayer_can_do_interrupt(player)) { LOGW("no need to interrupt, so leave"); - goto EXIT; + goto EXIT_WITHOUT_UNLOCK; } if (player->sound_focus.session_flags & MM_SESSION_OPTION_UNINTERRUPTIBLE) @@ -9323,9 +9327,13 @@ DONE: player->sound_focus.by_asm_cb = FALSE; } player->sound_focus.cb_pending = FALSE; - MMPLAYER_CMD_UNLOCK( player ); EXIT: + MMPLAYER_CMD_UNLOCK( player ); + LOGW("dispatched"); + return; + +EXIT_WITHOUT_UNLOCK: LOGW("dispatched"); return; } @@ -9982,7 +9990,7 @@ _mmplayer_unrealize(MMHandleType hplayer) } ret = _mmplayer_resource_manager_release(&player->resource_manager); - if ( ret == MM_ERROR_RESOURCE_INVALID_STATE ) + if (ret == MM_ERROR_RESOURCE_INVALID_STATE) { LOGW("it could be in the middle of resource callback or there's no acquired resource\n"); ret = MM_ERROR_NONE; @@ -9992,6 +10000,7 @@ _mmplayer_unrealize(MMHandleType hplayer) LOGE("failed to release resource, ret(0x%x)\n", ret); } ret = _mmplayer_resource_manager_unprepare(&player->resource_manager); + if (ret != MM_ERROR_NONE) { LOGE("failed to unprepare resource, ret(0x%x)\n", ret); } diff --git a/src/server/mm_player_resource.c b/src/server/mm_player_resource.c index 58c913e..ffcddd9 100644 --- a/src/server/mm_player_resource.c +++ b/src/server/mm_player_resource.c @@ -104,14 +104,13 @@ static void mrp_state_callback(mrp_res_context_t *context, mrp_res_error_t err, LOGE(" - user data is null\n"); return; } + player = (mm_player_t*)user_data; if (err != MRP_RES_ERROR_NONE) { - LOGE(" - error message received from Murphy, err(0x%x)\n", err); + LOGE(" - error message received from Murphy, for the player(%p), err(0x%x)\n", player, err); return; } - player = (mm_player_t*)user_data; - switch(context->state) { case MRP_RES_CONNECTED: @@ -236,6 +235,7 @@ static void mrp_resource_release_cb (mrp_res_context_t *cx, const mrp_res_resour } else LOGW("could not find videobin"); + MMPLAYER_CMD_UNLOCK(player); } MMPLAYER_FLEAVE(); |