case PLAYER_MESSAGE_PREPARED:
{
LOGW("PLAYER_MESSAGE_PREPARED");
+
+ LEGACY_PLAYER_USER_CB_LOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
if (handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
handle->state = PLAYER_STATE_READY;
((player_prepared_cb)handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE])(handle->user_data[MUSE_PLAYER_EVENT_TYPE_PREPARE]);
} else {
LOGE("null handle in PLAYER_MESSAGE_PREPARED");
}
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
}
break;
case PLAYER_MESSAGE_ERROR:
switch (message) {
case MM_MESSAGE_ERROR: /* 0x01 */
err_code = __player_convert_error_code(msg->code, (char *)__FUNCTION__);
+
+ LEGACY_PLAYER_USER_CB_LOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
if (PLAYER_ERROR_NOT_SUPPORTED_FILE == err_code && handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
LOGW("failed to pause, so prepare cb will be released soon");
handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
handle->user_data[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
}
}
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
break;
case MM_MESSAGE_STATE_CHANGED: /* 0x03 */
LOGI("STATE CHANGED INTERNALLY - from : %d, to : %d (CAPI State : %d)", msg->state.previous, msg->state.current, handle->state);
if ((handle->is_progressive_download && msg->state.previous == MM_PLAYER_STATE_NULL && msg->state.current == MM_PLAYER_STATE_READY) || (msg->state.previous == MM_PLAYER_STATE_READY && msg->state.current == MM_PLAYER_STATE_PAUSED)) {
+ LEGACY_PLAYER_USER_CB_LOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
if (handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
/* asyc && prepared cb has been set */
LOGI("[%s] Prepared! [current state : %d]", __FUNCTION__, handle->state);
PLAYER_TRACE_ASYNC_END("MM:PLAYER:PREPARE_ASYNC", *(int *)handle);
__ADD_MESSAGE(handle, PLAYER_MESSAGE_PREPARED);
}
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
}
break;
case MM_MESSAGE_READY_TO_RESUME: /* 0x05 */
__RELEASEIF_PREPARE_THREAD(handle->prepare_async_thread);
__RELEASEIF_MESSAGE_THREAD(handle->message_thread);
+ LEGACY_PLAYER_USER_CB_LOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
if (handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
if (handle->user_data[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
handle->user_data[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
}
}
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
int ret = mm_player_destroy(handle->mm_handle);
PLAYER_TRACE_ASYNC_BEGIN("MM:PLAYER:PREPARE_ASYNC", *(int *)handle);
PLAYER_STATE_CHECK(handle, PLAYER_STATE_IDLE);
+ LEGACY_PLAYER_USER_CB_LOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
+
handle->last_play_position = 0;
if (handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
LOGE("[%s] PLAYER_ERROR_INVALID_OPERATION (0x%08x) : preparing... we can't do any more ", __FUNCTION__, PLAYER_ERROR_INVALID_OPERATION);
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
return PLAYER_ERROR_INVALID_OPERATION;
} else {
/* LOGI("[%s] Event type : %d ",__FUNCTION__, MUSE_PLAYER_EVENT_TYPE_PREPARE); */
handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE] = callback;
handle->user_data[MUSE_PLAYER_EVENT_TYPE_PREPARE] = user_data;
}
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
ret = mm_player_set_message_callback(handle->mm_handle, __msg_callback, (void *)handle);
if (ret != MM_ERROR_NONE)
if (ret != 0) {
LOGE("[%s] failed to create thread ret = %d", __FUNCTION__, ret);
+ LEGACY_PLAYER_USER_CB_LOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
if (handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
/* user_data will be free at player_disp_prepare_async() */
handle->user_data[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
}
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
return PLAYER_ERROR_OUT_OF_MEMORY;
}
}
ERROR:
LOGW("prepare cb is released");
+ LEGACY_PLAYER_USER_CB_LOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
if (handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
/* user_data will be free at player_disp_prepare_async() */
handle->user_data[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
}
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
LOGE("LEAVE mm_err:0x%X", ret);
return __player_convert_error_code(ret, (char *)__FUNCTION__);
return PLAYER_ERROR_INVALID_STATE;
}
+ LEGACY_PLAYER_USER_CB_LOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
if (handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE]) {
LOGW("Need to check. prepare cb have to be reset before");
handle->user_cb[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
handle->user_data[MUSE_PLAYER_EVENT_TYPE_PREPARE] = NULL;
}
}
+ LEGACY_PLAYER_USER_CB_UNLOCK(handle, MUSE_PLAYER_EVENT_TYPE_PREPARE);
__RELEASEIF_PREPARE_THREAD(handle->prepare_async_thread);