diff options
-rw-r--r-- | CONTRIBUTORS | 2 | ||||
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | menu.c | 66 | ||||
-rw-r--r-- | menu.h | 3 |
4 files changed, 34 insertions, 41 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index b1ff906a..0aa8f74a 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -716,6 +716,8 @@ Oliver Endriss <o.endriss@gmx.de> channels for fixing a possible stack overflow in cListBase::Sort() for reporting a crash when deleting a recording + for reporting a problem with sluggish setting of editing marks and a jumping progress + display with very short recordings Reinhard Walter Buchner <rw.buchner@freenet.de> for adding some satellites to 'sources.conf' @@ -9317,7 +9317,7 @@ Video Disk Recorder Revision History - Modified cMenuTimers::Delete() to avoid a lengthy lock on the Timers list while prompting the user. -2018-04-02: Version 2.4.0 +2018-04-03: Version 2.4.0 - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk). - Fixed processing SVDRP client responses in case the caller doesn't want the actual @@ -9335,3 +9335,5 @@ Video Disk Recorder Revision History broadcasters who transmit faulty EIT data. - Updated the Macedonian OSD texts (thanks to Dimitar Petrovski). - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). +- Fixed sluggish setting of editing marks and a jumping progress display with very + short recordings (reported by Oliver Endriss). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 4.70 2018/03/24 11:43:40 kls Exp $ + * $Id: menu.c 4.71 2018/04/02 13:41:39 kls Exp $ */ #include "menu.h" @@ -5564,7 +5564,6 @@ cReplayControl::cReplayControl(bool PauseLive) 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 @@ void cReplayControl::ShowMode(void) 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 @@ eOSState cReplayControl::ProcessKey(eKeys Key) return osEnd; if (Key == kNone && !marksModified) marks.Update(); - if (Key != kNone) - lastProgressUpdate = 0; if (visible) { if (timeoutShow && time(NULL) > timeoutShow) { Hide(); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.h 4.6 2018/02/01 15:35:48 kls Exp $ + * $Id: menu.h 4.7 2018/04/02 13:41:49 kls Exp $ */ #ifndef __MENU_H @@ -300,7 +300,6 @@ private: bool lastPlay, lastForward; int lastSpeed; time_t timeoutShow; - time_t lastProgressUpdate; bool timeSearchActive, timeSearchHide; int timeSearchTime, timeSearchPos; void TimeSearchDisplay(void); |