--- menu.h	2018/02/01 15:35:48	4.6
+++ menu.h	2018/04/02 13:41:49
@@ -300,7 +300,6 @@
   bool lastPlay, lastForward;
   int lastSpeed;
   time_t timeoutShow;
-  time_t lastProgressUpdate;
   bool timeSearchActive, timeSearchHide;
   int timeSearchTime, timeSearchPos;
   void TimeSearchDisplay(void);
--- menu.c	2018/03/24 11:43:40	4.70
+++ menu.c	2018/04/02 13:41:39
@@ -5564,7 +5564,6 @@
   lastPlay = lastForward = false;
   lastSpeed = -2; // an invalid value
   timeoutShow = 0;
-  lastProgressUpdate = 0;
   timeSearchActive = false;
   cRecording Recording(fileName);
   cStatus::MsgReplaying(this, Recording.Name(), Recording.FileName(), true);
@@ -5728,43 +5727,36 @@
 bool cReplayControl::ShowProgress(bool Initial)
 {
   int Current, Total;
-  if (Initial || lastSpeed != -1 || time(NULL) - lastProgressUpdate >= 1) {
-     if (GetFrameNumber(Current, Total) && Total > 0) {
-        if (!visible) {
-           displayReplay = Skins.Current()->DisplayReplay(modeOnly);
-           displayReplay->SetMarks(&marks);
-           SetNeedsFastResponse(true);
-           visible = true;
-           }
-        if (Initial) {
-           if (*fileName) {
-              LOCK_RECORDINGS_READ;
-              if (const cRecording *Recording = Recordings->GetByName(fileName))
-                 displayReplay->SetRecording(Recording);
-              }
-           lastCurrent = lastTotal = -1;
+  if (GetFrameNumber(Current, Total) && Total > 0) {
+     if (!visible) {
+        displayReplay = Skins.Current()->DisplayReplay(modeOnly);
+        displayReplay->SetMarks(&marks);
+        SetNeedsFastResponse(true);
+        visible = true;
+        }
+     if (Initial) {
+        if (*fileName) {
+           LOCK_RECORDINGS_READ;
+           if (const cRecording *Recording = Recordings->GetByName(fileName))
+              displayReplay->SetRecording(Recording);
            }
-        if (Current != lastCurrent || Total != lastTotal) {
-           time(&lastProgressUpdate);
-           if (Setup.ShowRemainingTime || Total != lastTotal) {
-              int Index = Total;
-              if (Setup.ShowRemainingTime)
-                 Index = Current - Index;
-              displayReplay->SetTotal(IndexToHMSF(Index, false, FramesPerSecond()));
-              if (!Initial)
-                 displayReplay->Flush();
-              }
-           displayReplay->SetProgress(Current, Total);
-           if (!Initial)
-              displayReplay->Flush();
-           displayReplay->SetCurrent(IndexToHMSF(Current, displayFrames, FramesPerSecond()));
-           displayReplay->Flush();
-           lastCurrent = Current;
+        lastCurrent = lastTotal = -1;
+        }
+     if (Current != lastCurrent || Total != lastTotal) {
+        if (Setup.ShowRemainingTime || Total != lastTotal) {
+           int Index = Total;
+           if (Setup.ShowRemainingTime)
+              Index = Current - Index;
+           displayReplay->SetTotal(IndexToHMSF(Index, false, FramesPerSecond()));
            }
-        lastTotal = Total;
-        ShowMode();
-        return true;
+        displayReplay->SetProgress(Current, Total);
+        displayReplay->SetCurrent(IndexToHMSF(Current, displayFrames, FramesPerSecond()));
+        displayReplay->Flush();
+        lastCurrent = Current;
         }
+     lastTotal = Total;
+     ShowMode();
+     return true;
      }
   return false;
 }
@@ -6007,8 +5999,6 @@
      return osEnd;
   if (Key == kNone && !marksModified)
      marks.Update();
-  if (Key != kNone)
-     lastProgressUpdate = 0;
   if (visible) {
      if (timeoutShow && time(NULL) > timeoutShow) {
         Hide();
