diff options
-rw-r--r-- | HISTORY | 5 | ||||
-rw-r--r-- | menu.c | 14 | ||||
-rw-r--r-- | menu.h | 3 | ||||
-rw-r--r-- | player.h | 7 |
4 files changed, 24 insertions, 5 deletions
@@ -9162,7 +9162,7 @@ Video Disk Recorder Revision History a subdirectory. - SVDRP peering can now be limited to the default SVDRP host (see MANUAL for details). -2018-01-29: Version 2.3.9 +2018-02-01: Version 2.3.9 - Updated the Italian OSD texts (thanks to Diego Pierotto). - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). @@ -9250,3 +9250,6 @@ Video Disk Recorder Revision History - The new function cStatus::MarksModified() can be implemented by plugins to get informed about any modifications to the editing marks of the currently played recording (based on a patch from Jörg Wendel). +- Fixed handling editing marks in the replay progress display, in case the marks are + deleted via the Info/Edit menu of the currently played recording (the progress + display still displayed them). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 4.56 2018/01/29 13:59:58 kls Exp $ + * $Id: menu.c 4.57 2018/02/01 15:48:54 kls Exp $ */ #include "menu.h" @@ -2699,7 +2699,7 @@ eOSState cMenuRecordingEdit::DeleteMarks(void) if (cControl *Control = cControl::Control(true)) { if (const cRecording *Recording = Control->GetRecording()) { if (strcmp(recording->FileName(), Recording->FileName()) == 0) - cStatus::MsgMarksModified(NULL); + Control->ClearEditingMarks(); } } } @@ -5578,6 +5578,16 @@ void cReplayControl::Stop(void) cMenuRecordings::SetRecording(NULL); // make sure opening the Recordings menu navigates to the last replayed recording } +void cReplayControl::ClearEditingMarks(void) +{ + cStateKey StateKey; + marks.Lock(StateKey); + while (cMark *m = marks.First()) + marks.Del(m); + StateKey.Remove(); + cStatus::MsgMarksModified(NULL); +} + void cReplayControl::SetRecording(const char *FileName) { fileName = FileName; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.h 4.5 2016/12/22 10:55:36 kls Exp $ + * $Id: menu.h 4.6 2018/02/01 15:35:48 kls Exp $ */ #ifndef __MENU_H @@ -326,6 +326,7 @@ public: virtual void Show(void); virtual void Hide(void); bool Visible(void) { return visible; } + virtual void ClearEditingMarks(void); static void SetRecording(const char *FileName); static const char *NowReplaying(void); static const char *LastReplayed(void); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: player.h 4.3 2017/11/26 14:29:12 kls Exp $ + * $Id: player.h 4.4 2018/02/01 15:34:51 kls Exp $ */ #ifndef __PLAYER_H @@ -102,6 +102,11 @@ public: ///< skins as a last resort, in case they want to display the state of the ///< current player. The return value is expected to be a short, single line ///< string. The default implementation returns an empty string. + virtual void ClearEditingMarks(void) {} + ///< Clears any editing marks this player might be showing. + ///< Deletion of the marks themselves is handled separately, calling + ///< this function merely tells the player to no longer display the + ///< marks, if it has any. double FramesPerSecond(void) const { return player ? player->FramesPerSecond() : DEFAULTFRAMESPERSECOND; } bool GetIndex(int &Current, int &Total, bool SnapToIFrame = false) const { return player ? player->GetIndex(Current, Total, SnapToIFrame) : false; } bool GetFrameNumber(int &Current, int &Total) const { return player ? player->GetFrameNumber(Current, Total) : false; } |