Remove SMACK rule file(.rule) according three domain model
[apps/core/preloaded/video-player.git] / src / mp-video-progressbar.c
old mode 100755 (executable)
new mode 100644 (file)
index 664b125..6ad16d7
@@ -1,43 +1,86 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright (c) [2012] Samsung Electronics Co., Ltd.
  *
- * Licensed under the Flora License, Version 1.0 (the "License");
+ * 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://www.tizenopensource.org/license
- * 
+ *
+ *     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,
+ * 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;
-Ecore_Timer *pProgressbarTimer = 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;
 
-#define PROGRESS_BAR_TERM                      40
+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)
 {
-       if (!pUserData) {
+       //VideoLogInfo("");
+
+       if (!pUserData) {
                VideoLogInfo("[ERR] No exist userdata.");
                return EINA_TRUE;
        }
@@ -45,7 +88,7 @@ static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData)
        VideoAppData *pAppData = (VideoAppData *)pUserData;
 
        double nPlayedRatio = 0.0;
-       char szPlayingTime[PLAY_TIME_LENGTH] = { 0 };
+       char szPlayingTime[PLAY_TIME_LENGTH] = { 0, };
 
        nPlayedRatio = ((double)nDragPosition / (double)pAppData->nDuration);
 
@@ -58,12 +101,19 @@ static Eina_Bool MpVideoProgressbarUpdateValue(void *pUserData)
        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)
 {
-       if (!pUserData) {
+       //VideoLogInfo("");
+
+       if (!pUserData) {
                VideoLogInfo("[ERR] No exist userdata.");
                return;
        }
@@ -76,6 +126,8 @@ static void MpVideoProgressbarUpdateBufferingValue(void *pUserData)
 
        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);
 }
@@ -85,6 +137,7 @@ static void MpVideoProgressbarUpdateBufferingValue(void *pUserData)
  */
 static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData)
 {
+       /* VideoLogInfo(""); */
 
        if (!pUserData) {
                VideoLogInfo("[ERR] No exist userdata.");
@@ -99,11 +152,11 @@ static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData)
                return EINA_TRUE;
        }
 
-       if (bIsDrag || bIsEventSkip)
+       if (bIsEventSkip || bIsDrag)
                return EINA_TRUE;
 
        double nPlayedRatio = 0.0;
-       char szPlayingTime[PLAY_TIME_LENGTH] = { 0 };
+       char szPlayingTime[PLAY_TIME_LENGTH] = { 0, };
 
        pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
 
@@ -113,12 +166,77 @@ static Eina_Bool MpVideoProgressbarTimerCb(void *pUserData)
        edje_object_part_drag_value_set(pProgressbarEdj, "progress.playing", nPlayedRatio, 0.0);
        edje_object_part_text_set(pProgressbarEdj, "progress.txt.played", szPlayingTime);
 
-       if (pAppData->nCurPlayerType == MP_STREAMING_PLAYER )
+       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)
 {
@@ -137,16 +255,47 @@ static void MpVideoProgressbarDownCb(void *pUserData, Evas * e,
        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;
 
-       bIsDrag = TRUE;
+       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 - PROGRESS_BAR_TERM;
+       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)
@@ -154,13 +303,27 @@ static void MpVideoProgressbarDownCb(void *pUserData, Evas * e,
 
        ratio = (double)current / w;
 
-       if (pAppData->nCurPlayerState == MP_PLAYER_STATE_PLAY ||
-           pAppData->nCurPlayerState == MP_PLAYER_STATE_RESUME) {
-               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlPause(pAppData);
-               pAppData->nPrePlayerState = MP_PLAYER_STATE_RESUME;
-       }
-
        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);
 
@@ -184,14 +347,58 @@ static void MpVideoProgressbarUpCb(void *pUserData, Evas * e, Evas_Object *obj,
        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 - PROGRESS_BAR_TERM;
+       current = ev->canvas.x - term;
+       w = w - w_term;
+
        if (current < 0)
                current = 0;
        else if (current > w)
@@ -207,21 +414,60 @@ static void MpVideoProgressbarUpCb(void *pUserData, Evas * e, Evas_Object *obj,
        if (pAppData->nSetPosition < 0)
                pAppData->nSetPosition = 0;
 
-       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlSetPosition(pAppData);
+       pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlGetPosition(pAppData);
 
-       if (pAppData->nPrePlayerState == MP_PLAYER_STATE_PLAY ||
-           pAppData->nPrePlayerState == MP_PLAYER_STATE_RESUME) {
-               pAppData->VideoAppCtrlCallbackFunc.VideoAppCtrlResume(pAppData);
-               pAppData->nPrePlayerState = MP_PLAYER_STATE_PAUSE;
+       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);
 
-       bIsDrag = FALSE;
-}
+               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("");
+//     VideoLogInfo("");
 
        if (!pUserData) {
                VideoLogInfo("[ERR]");
@@ -233,7 +479,7 @@ static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e,
                return;
        }
 
-       if (bIsEventSkip)
+       if (bIsEventSkip || bIsDrag == FALSE)
                return;
 
        VideoAppData *pAppData = (VideoAppData *)pUserData;
@@ -242,18 +488,81 @@ static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e,
        int w = 0, current = 0;
        double ratio = 0.0;
 
-       evas_object_geometry_get(progressbar, NULL, NULL, &w, NULL);
-       current = ev->canvas.x - PROGRESS_BAR_TERM;
-       if (current < 0)
-               current = 0;
-       else if (current > w)
-               current = w;
+       int term = 0;
+       int w_term = 0;
+       int width = 0;
+       int height = 0;
 
-       ratio = (double)current / w;
-       nDragPosition = ratio * pAppData->nDuration;
+       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;
 
-       MpVideoProgressbarUpdateValue(pUserData);
+       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);
+       }
 }
 
 /*
@@ -261,7 +570,7 @@ static void MpVideoProgressbarMoveCb(void *pUserData, Evas * e,
  */
 void MpVideoProgressbarSetSkipEvent(bool bSkip)
 {
-       VideoLogInfo("");
+//     VideoLogInfo("");
 
        bIsEventSkip = bSkip;
 }
@@ -326,8 +635,17 @@ void MpVideoProgressbarDestroy(void)
                pProgressbarTimer = NULL;
        }
 
+       if(pProgressAdjustCheckTimer) {
+               ecore_timer_del(pProgressAdjustCheckTimer);
+               pProgressAdjustCheckTimer = NULL;
+       }
+
+       if(pProgressAdjustRunTimer) {
+               ecore_timer_del(pProgressAdjustRunTimer);
+               pProgressAdjustRunTimer = NULL;
+       }
+
        bIsEventSkip = FALSE;
-       bIsDrag = FALSE;
        nDragPosition = 0;
 }
 
@@ -347,6 +665,20 @@ void MpVideoProgressbarCreateTimer(void *pUserData)
                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);
 }
 
@@ -358,6 +690,16 @@ void MpVideoProgressbarDeleteTimer(void)
                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)