Name: libmm-player
Summary: Multimedia Framework Player Library
-Version: 0.6.28
+Version: 0.6.29
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
*(returning zero when getting current position in paused state
* and when failed to get postion during seeking
*/
- if ((current_state == MM_PLAYER_STATE_PAUSED)
- || (!ret)) {
- //|| (player->last_position != 0 && pos_msec == 0))
+ if ((current_state == MM_PLAYER_STATE_PAUSED) || (!ret)) {
LOGD("pos_msec = %"GST_TIME_FORMAT" and ret = %d and state = %d", GST_TIME_ARGS(pos_msec), ret, current_state);
if (player->playback_rate < 0.0)
if (player->sound_focus.keep_last_pos) {
LOGD("return last pos as stop by asm, %"GST_TIME_FORMAT, GST_TIME_ARGS(player->last_position));
pos_msec = player->last_position;
- } else
+ } else {
player->last_position = pos_msec;
+ }
}
switch (format) {
if (ret != MM_ERROR_NONE)
LOGE("failed to release sound focus, ret(0x%x)\n", ret);
- if (!player->resource_manager.by_rm_cb &&
+ if (!player->resource_manager.by_rm_cb && /* is being released */
_mmplayer_resource_manager_get_state(&player->resource_manager, &resource_state) == MM_ERROR_NONE) {
if (resource_state >= RESOURCE_STATE_ACQUIRED) {
ret = _mmplayer_resource_manager_release(&player->resource_manager);
LOGD(" - resource set is released");
player->resource_manager.state = RESOURCE_STATE_PREPARED;
MMPLAYER_RESOURCE_SIGNAL(&player->resource_manager);
+
+ /* mm player was unrealized by resource conflict. */
+ if (player->resource_manager.by_rm_cb == TRUE) {
+ LOGD(" - delete resource set ");
+ if (player->resource_manager.rset) {
+ mrp_res_delete_resource_set(player->resource_manager.rset);
+ player->resource_manager.rset = NULL;
+ }
+ player->resource_manager.state = RESOURCE_STATE_INITIALIZED;
+ player->resource_manager.by_rm_cb = FALSE;
+ }
}
MMPLAYER_RESOURCE_UNLOCK(&player->resource_manager);
LOGW("no need to interrupt, so leave");
} else {
if (resource_released) {
- player->resource_manager.by_rm_cb = TRUE;
+ player->resource_manager.by_rm_cb = TRUE; /* will be reset in state cb */
LOGD("video resource conflict so, resource will be freed by unrealizing");
result = _mmplayer_unrealize((MMHandleType)player);
if (result)
LOGW("failed to unrealize");
- player->resource_manager.by_rm_cb = FALSE;
- } else
+ } else {
LOGW("could not find videobin");
+ }
/* lock is called in __mmplayer_can_do_interrupt() */
MMPLAYER_CMD_UNLOCK(player);