Add codes to unlock command lock when after calling __mmplayer_can_do_interrupt() 94/51394/1 accepted/tizen/mobile/20151110.070150 accepted/tizen/tv/20151110.070211 accepted/tizen/wearable/20151110.070243 submit/tizen/20151110.015124
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 9 Nov 2015 08:20:36 +0000 (17:20 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Mon, 9 Nov 2015 08:20:36 +0000 (17:20 +0900)
Change-Id: If16382cecffd28a86628a1c1b022eef236bb7517

packaging/libmm-player.spec
src/server/mm_player_priv.c
src/server/mm_player_resource.c

index db11b36..72edfa9 100644 (file)
@@ -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
index 5598c0d..76893e8 100644 (file)
@@ -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);
                }
index 58c913e..ffcddd9 100644 (file)
@@ -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();