diff --git a/HISTORY b/HISTORY index e1e1ae2b..adfc2432 100644 --- a/HISTORY +++ b/HISTORY @@ -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). diff --git a/menu.c b/menu.c index bbaa0bab..e69f4db6 100644 --- a/menu.c +++ b/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.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; diff --git a/menu.h b/menu.h index 9a971ad0..08c51f7a 100644 --- a/menu.h +++ b/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.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); diff --git a/player.h b/player.h index 01b5f5c9..d67bf2a9 100644 --- a/player.h +++ b/player.h @@ -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; }