diff options
Diffstat (limited to 'src/mp-video-progressbar.c')
-rw-r--r-- | src/mp-video-progressbar.c | 752 |
1 files changed, 752 insertions, 0 deletions
diff --git a/src/mp-video-progressbar.c b/src/mp-video-progressbar.c new file mode 100644 index 0000000..6ad16d7 --- /dev/null +++ b/src/mp-video-progressbar.c @@ -0,0 +1,752 @@ +/* + * Copyright (c) [2012] Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.1 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "mp-util.h" +#include "mp-video-log.h" +#include "video-player.h" +#include "mp-video-value-define.h" +#include "mp-video-service-ctrl.h" +#include "mp-video-progressbar.h" + +#define PROGRESS_BAR_START_TERM 130 +#define PROGRESS_BAR_WIDTH_TERM 200 + +#define PROGRESS_ADJUSTMENT_TIME_INTERVAL 2.0 +#define PROGRESS_ADJUSTMENT_RUN_INTERVAL 0.3 + +#define PROGRESS_ADJUSTMENT_MOVE_LIMIT 20 +#define PROGRESS_ADJUSTMENT_MODE_LIMIT 20 + + +static Evas_Object *pProgressbarEdj = NULL; +static Ecore_Timer *pProgressbarTimer = NULL; + +static Ecore_Timer *pProgressAdjustCheckTimer = NULL; +static Ecore_Timer *pProgressAdjustRunTimer = NULL; + +static bool bIsEventSkip = FALSE; +static bool bIsDrag = FALSE; +static int nDragPosition = 0; + +static bool bIsAdjustmentMode = FALSE; +static int nDownPosX = 0; +static int nOldPosX = 0; +static bool bPrevAdjustment = FALSE; + + +static void MpVideoProgressbarSetAdjustmentMode(bool bShow) +{ + VideoLogInfo(""); + + if(bShow) { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_SHOW, "*"); + } + else { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_ADJUSTMENT_HIDE, "*"); + } +} + + +static void MpVideoProgressbarSetPointerVisible(bool bVisible) +{ + VideoLogInfo(""); + + if(bVisible) { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_SHOW, "*"); + } + else { + edje_object_signal_emit(pProgressbarEdj, SIGNAL_PROGRESS_POINTER_HIDE, "*"); + } +} + +/* + * Internal function + */ +static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData) +{ + //VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + nPlayedRatio = ((double)nDragPosition / (double)pAppData->nDuration); + + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, + PLAY_TIME_ARGS(nDragPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", + nPlayedRatio, 0.0); + + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", + szPlayingTime); + + if(bIsAdjustmentMode) { + edje_object_part_text_set(pProgressbarEdj, "progress.adjustment.txt", + szPlayingTime); + } + + return EINA_TRUE; +} + +static void MpVideoProgressbarUpdateBufferingValue(void *pUserData) +{ + //VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + double buffering_ratio = 0.0; + pAppData-> + VideoAppCtrlCallbackFunc.VideoAppCtrlGetBufferingPosition(pAppData); + + buffering_ratio = ((double)pAppData->nBufferingPosition / (double)100); + + //VideoLogInfo("%d:%lf", pAppData->nBufferingPosition, buffering_ratio); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.buffering", + buffering_ratio, 0.0); +} + +/* + * Callback function. + */ +static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData) +{ + /* VideoLogInfo(""); */ + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pAppData->nDuration < 1) { + VideoLogInfo("Try to update duration time."); + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlReqDurationTime(pAppData); + return EINA_TRUE; + } + + if (bIsEventSkip || bIsDrag) + return EINA_TRUE; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration); + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType == MP_STREAMING_PLAYER) + { + MpVideoProgressbarUpdateBufferingValue(pUserData); + } + + return EINA_TRUE; +} + +static Eina_Bool MpVideoProgressbarAdjustmentTimerCb(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogError("[ERR] No exist userdata."); + return EINA_FALSE; + } + VideoAppData *pAppData = (VideoAppData *)pUserData; + + bIsAdjustmentMode = TRUE; + + VideoLogInfo("%d, %d",pAppData->nCurPosition , nDragPosition); + + pAppData->nSetPosition = nDragPosition; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode); + MpVideoProgressbarUpdateValue(pUserData); + return EINA_FALSE; +} + +static Eina_Bool MpVideoProgressbarAdjustmentRunTimerCb(void *pUserData) +{ +// VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR] No exist userdata."); + return EINA_TRUE; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + + if(bPrevAdjustment) { + pAppData->nSetPosition = nDragPosition - 1000; + } + else { + pAppData->nSetPosition = nDragPosition + 1000; + } + + if (pAppData->nSetPosition < 0) { + pAppData->nSetPosition = 0; + } + + if (pAppData->nSetPosition > pAppData->nDuration) { + pAppData->nSetPosition = pAppData->nDuration; + } + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + nDragPosition = pAppData->nSetPosition; + + MpVideoProgressbarUpdateValue((void *)pAppData); + + + + return EINA_TRUE; +} + + + +static void MpVideoProgressbarDownCb(void *pUserData, Evas * e, + Evas_Object *obj, void *event_info) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip) + return; + + MpVideoProgressbarDeleteTimer(); + MpVideoProgressbarSetPointerVisible(TRUE); + + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + pProgressAdjustCheckTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_TIME_INTERVAL, + MpVideoProgressbarAdjustmentTimerCb, (void *)pUserData); + + } + bIsDrag = TRUE; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + nDownPosX = ev->canvas.x; + nOldPosX = ev->canvas.x;; + current = ev->canvas.x - term; + w = w - w_term; + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + + nDragPosition = ratio * pAppData->nDuration; + pAppData->nSetPosition = nDragPosition; + + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_PAUSE; + } + pAppData->bSeekComplete = FALSE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + else { + if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME; + } + } + + MpVideoProgressbarUpdateValue(pUserData); + +} + +static void MpVideoProgressbarUpCb(void *pUserData, Evas * e, Evas_Object *obj, + void *event_info) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip) + return; + + bIsDrag = FALSE; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + MpVideoProgressbarSetPointerVisible(FALSE); + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(bIsAdjustmentMode) { + bIsAdjustmentMode = FALSE; + MpVideoProgressbarSetAdjustmentMode(bIsAdjustmentMode); + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + } + nOldPosX = 0; + return; + } + } + + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + current = ev->canvas.x - term; + w = w - w_term; + + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + + pAppData->nSetPosition = (int)pAppData->nDuration * ratio; + + if (pAppData->nSetPosition > pAppData->nDuration) + pAppData->nSetPosition = pAppData->nDuration; + + if (pAppData->nSetPosition < 0) + pAppData->nSetPosition = 0; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + MpVideoProgressbarCreateTimer((void *)pAppData); + + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + //pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData); + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + } + + if(!pAppData->bSeekComplete) + { + pAppData->nSeekPosition = pAppData->nSetPosition; + if((pAppData->nCurPosition < pAppData->nSeekPosition + 5000) && + (pAppData->nCurPosition > pAppData->nSeekPosition - 5000)) + { + VideoLogError("Skip for same position"); + pAppData->nSeekPosition = 0; + } + } + else + { + if((pAppData->nCurPosition < pAppData->nSetPosition + 5000) && + (pAppData->nCurPosition > pAppData->nSetPosition - 5000)) + { + VideoLogError("Skip for same position"); + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + } + } + else + { + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + MpVideoProgressbarCreateTimer((void *)pAppData); + + if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY || + pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) { + pAppData->nSeekPlayerState = MP_PLAYER_STATE_RESUME; + pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE; + } + + } +} +static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e, + Evas_Object *obj, void *event_info) +{ +// VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + if (!event_info) { + VideoLogInfo("[ERR]"); + return; + } + + if (bIsEventSkip || bIsDrag == FALSE) + return; + + VideoAppData *pAppData = (VideoAppData *)pUserData; + Evas_Event_Mouse_Up *ev = event_info; + Evas_Object *progressbar = obj; + int w = 0, current = 0; + double ratio = 0.0; + + int term = 0; + int w_term = 0; + int width = 0; + int height = 0; + + ecore_x_window_size_get(ecore_x_window_root_first_get(),&width, &height); + term = PROGRESS_BAR_START_TERM * width/DEFAULT_SCALE_WIDTH; + w_term = PROGRESS_BAR_WIDTH_TERM * width/DEFAULT_SCALE_WIDTH; + + evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL); + if(bIsAdjustmentMode) { + if((nOldPosX + PROGRESS_ADJUSTMENT_MODE_LIMIT) < ev->canvas.x) { + if(bPrevAdjustment == TRUE) { + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + bPrevAdjustment = FALSE; + nOldPosX = ev->canvas.x; + } + else if((nOldPosX - PROGRESS_ADJUSTMENT_MODE_LIMIT) > ev->canvas.x) { + if(bPrevAdjustment == FALSE) { + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + bPrevAdjustment = TRUE; + nOldPosX = ev->canvas.x; + } + + if(pProgressAdjustRunTimer == NULL) { + pProgressAdjustRunTimer = ecore_timer_add(PROGRESS_ADJUSTMENT_RUN_INTERVAL, + MpVideoProgressbarAdjustmentRunTimerCb, (void *)pAppData); + + } + + } + else { + if(((nDownPosX + PROGRESS_ADJUSTMENT_MOVE_LIMIT) < ev->canvas.x ) || + ((nDownPosX - PROGRESS_ADJUSTMENT_MOVE_LIMIT) > ev->canvas.x)) { + VideoLogInfo("Adjustment Off"); + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + } + current = ev->canvas.x - term; + w = w - w_term; + + if (current < 0) + current = 0; + else if (current > w) + current = w; + + ratio = (double)current / w; + nDragPosition = ratio * pAppData->nDuration; + pAppData->nSetPosition = nDragPosition; + int nTmpPlayerType = MpVideoServiceCtrlGetPlayerTypeWithoutLog(); + if(nTmpPlayerType != MP_STREAMING_PLAYER) + { + if(pAppData->bSeekComplete) { + pAppData->bSeekComplete = FALSE; + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData); + } + } + MpVideoProgressbarUpdateValue(pUserData); + } +} + +/* + * External function + */ +void MpVideoProgressbarSetSkipEvent(bool bSkip) +{ +// VideoLogInfo(""); + + bIsEventSkip = bSkip; +} + +void *MpVideoProgressbarGetEdjHandle(void) +{ + VideoLogInfo(""); + + if (pProgressbarEdj) { + return (void *)pProgressbarEdj; + } else { + VideoLogInfo("Progressbar edj handle is null."); + return NULL; + } +} + +void *MpVideoProgressbarInit(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return NULL; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + Evas *pMainWindowEvas = evas_object_evas_get(pAppData->pMainWindow); + + pProgressbarEdj = (Evas_Object *)MpUtilLoadEdjFile(pMainWindowEvas, + VIDEO_PLAYER_PROGRESS_EDJ, + PROGRESS_EDJ_GROUP); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_DOWN, + MpVideoProgressbarDownCb, pAppData); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_UP, + MpVideoProgressbarUpCb, pAppData); + + evas_object_event_callback_add(pProgressbarEdj, + EVAS_CALLBACK_MOUSE_MOVE, + MpVideoProgressbarMoveCb, pAppData); + + MpVideoProgressbarUpdateDurationTime("--:--:--"); + + return (void *)pProgressbarEdj; +} + +void MpVideoProgressbarDestroy(void) +{ + VideoLogInfo(""); + + if (pProgressbarEdj) { + evas_object_del(pProgressbarEdj); + pProgressbarEdj = NULL; + } + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } + + bIsEventSkip = FALSE; + nDragPosition = 0; +} + +void MpVideoProgressbarCreateTimer(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if (bIsEventSkip) + return; + + double nPlayedRatio = 0.0; + char szPlayingTime[PLAY_TIME_LENGTH] = { 0, }; + + pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData); + + nPlayedRatio = ((double)pAppData->nCurPosition / (double)pAppData->nDuration); + snprintf(szPlayingTime, PLAY_TIME_LENGTH, "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pAppData->nCurPosition / 1000)); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime); + + pProgressbarTimer = ecore_timer_add(0.3, MpVideoProgressbarTimerCb, (void *)pAppData); +} + +void MpVideoProgressbarDeleteTimer(void) +{ + VideoLogInfo(""); + + if (pProgressbarTimer) { + ecore_timer_del(pProgressbarTimer); + pProgressbarTimer = NULL; + } + + if(pProgressAdjustCheckTimer) { + ecore_timer_del(pProgressAdjustCheckTimer); + pProgressAdjustCheckTimer = NULL; + } + + if(pProgressAdjustRunTimer) { + ecore_timer_del(pProgressAdjustRunTimer); + pProgressAdjustRunTimer = NULL; + } +} + +void MpVideoProgressbarUpdateDurationTime(char *szDurationTime) +{ + VideoLogInfo(""); + + if (!szDurationTime) { + VideoLogInfo("Fail to ser duration time"); + return; + } + + edje_object_part_text_set(pProgressbarEdj, "progress.txt.total", + szDurationTime); +} + +void MpVideoProgressbarBeginOfStream(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + VideoAppData *pAppData = (VideoAppData *)pUserData; + + MpVideoProgressbarDeleteTimer(); + + pAppData->nCurPosition = 0; + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00"); + + MpVideoProgressbarCreateTimer(pUserData); +} + +void MpVideoProgressbarReset(void *pUserData) +{ + VideoLogInfo(""); + + if (!pUserData) { + VideoLogInfo("[ERR]"); + return; + } + + MpVideoProgressbarDeleteTimer(); + + edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", 0.0, 0.0); + edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", "00:00:00"); +} + |