add mutex lock to resource set state callback 29/77429/2 accepted/tizen/common/20160704.145327 accepted/tizen/ivi/20160704.090640 accepted/tizen/mobile/20160704.090544 accepted/tizen/tv/20160704.090525 accepted/tizen/wearable/20160704.090427 submit/tizen/20160704.004002
authorVolodymyr Brynza <v.brynza@samsung.com>
Thu, 30 Jun 2016 14:12:42 +0000 (17:12 +0300)
committerVolodymyr Brynza <v.brynza@samsung.com>
Thu, 30 Jun 2016 14:12:42 +0000 (17:12 +0300)
Change-Id: I064f1e241186a223701be75efb8d5c071874f37d
Signed-off-by: Volodymyr Brynza <v.brynza@samsung.com>
src/mm_player_resource.c

index aecb7ab9eef88f227015cdd5ab35a6f403f067da..89292918f5b8f5e0b56e66ece945fb467ae7cb86 100644 (file)
@@ -162,17 +162,18 @@ static void mrp_rset_state_callback(mrp_res_context_t *cx, const mrp_res_resourc
 
        MMPLAYER_FENTER();
 
+       MMPLAYER_RESOURCE_LOCK(&player->resource_manager);
+
        if(!mrp_res_equal_resource_set(rs, player->resource_manager.rset)) {
                LOGW("- resource set(%p) is not same as this player handle's(%p)", rs, player->resource_manager.rset);
+               MMPLAYER_RESOURCE_UNLOCK(&player->resource_manager);
                return;
        }
 
        if (rs->state == MRP_RES_RESOURCE_ACQUIRED) {
                player->resource_manager.state = RESOURCE_STATE_ACQUIRED;
 
-               MMPLAYER_RESOURCE_LOCK(&player->resource_manager);
                MMPLAYER_RESOURCE_SIGNAL(&player->resource_manager);
-               MMPLAYER_RESOURCE_UNLOCK(&player->resource_manager);
        }
 
        LOGD(" - resource set state of player(%p) is changed to [%s]\n", player, state_to_str(rs->state));
@@ -188,6 +189,7 @@ static void mrp_rset_state_callback(mrp_res_context_t *cx, const mrp_res_resourc
 
        mrp_res_delete_resource_set(player->resource_manager.rset);
        player->resource_manager.rset = mrp_res_copy_resource_set(rs);
+       MMPLAYER_RESOURCE_UNLOCK(&player->resource_manager);
 
        MMPLAYER_FLEAVE();
 }
@@ -483,8 +485,10 @@ int _mmplayer_resource_manager_unprepare(MMPlayerResourceManager *resource_manag
        }
        else
        {
+               MMPLAYER_RESOURCE_LOCK(resource_manager);
                mrp_res_delete_resource_set(resource_manager->rset);
                resource_manager->rset = NULL;
+               MMPLAYER_RESOURCE_UNLOCK(resource_manager);
        }
 
        resource_manager->state = RESOURCE_STATE_INITIALIZED;