summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY5
-rw-r--r--menu.c14
-rw-r--r--menu.h3
-rw-r--r--player.h7
4 files changed, 24 insertions, 5 deletions
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; }