mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Fixed sluggish setting of editing marks and a jumping progress display with very short recordings
This commit is contained in:
		| @@ -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' | ||||
|   | ||||
							
								
								
									
										4
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -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). | ||||
|   | ||||
							
								
								
									
										70
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								menu.c
									
									
									
									
									
								
							| @@ -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 (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; | ||||
|            } | ||||
|         lastTotal = Total; | ||||
|         ShowMode(); | ||||
|         return true; | ||||
|   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 (Current != lastCurrent || Total != lastTotal) { | ||||
|         if (Setup.ShowRemainingTime || Total != lastTotal) { | ||||
|            int Index = Total; | ||||
|            if (Setup.ShowRemainingTime) | ||||
|               Index = Current - Index; | ||||
|            displayReplay->SetTotal(IndexToHMSF(Index, false, FramesPerSecond())); | ||||
|            } | ||||
|         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(); | ||||
|   | ||||
							
								
								
									
										3
									
								
								menu.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								menu.h
									
									
									
									
									
								
							| @@ -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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user