summaryrefslogtreecommitdiff
path: root/menu.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2018-01-17 10:27:37 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2018-01-17 10:27:37 +0100
commita343b375dfbc56a6b9489ef38e28c1fee4384d24 (patch)
treed6c1d8546c98c564fcb063b74634e533a848afbe /menu.c
parent28b6ee47e3220a0faad79ffd6c4e96660965b316 (diff)
downloadvdr-a343b375dfbc56a6b9489ef38e28c1fee4384d24.tar.gz
vdr-a343b375dfbc56a6b9489ef38e28c1fee4384d24.tar.bz2
Now unlocking the Recordings list before displaying an error message in cMenuPathEdit::ApplyChanges() and cReplayControl::Stop()
Diffstat (limited to 'menu.c')
-rw-r--r--menu.c42
1 files changed, 26 insertions, 16 deletions
diff --git a/menu.c b/menu.c
index 300732d3..d823ea2d 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.53 2017/12/15 13:27:20 kls Exp $
+ * $Id: menu.c 4.54 2018/01/17 10:21:29 kls Exp $
*/
#include "menu.h"
@@ -2492,13 +2492,18 @@ eOSState cMenuPathEdit::ApplyChanges(void)
}
if (NumRecordings > 1 && !Interface->Confirm(cString::sprintf(tr("Move entire folder containing %d recordings?"), NumRecordings)))
return osContinue;
- LOCK_RECORDINGS_WRITE;
- Recordings->SetExplicitModify();
- if (!Recordings->MoveRecordings(path, NewPath)) {
+ bool Error = false;
+ {
+ LOCK_RECORDINGS_WRITE;
+ Recordings->SetExplicitModify();
+ Error = !Recordings->MoveRecordings(path, NewPath);
+ if (!Error)
+ Recordings->SetModified();
+ }
+ if (Error) {
Skins.Message(mtError, tr("Error while moving folder!"));
return osContinue;
}
- Recordings->SetModified();
if (strcmp(folder, oldFolder))
return osUserRecMoved;
return osUserRecRenamed;
@@ -5541,17 +5546,22 @@ void cReplayControl::Stop(void)
}
}
cDvbPlayerControl::Stop();
- LOCK_RECORDINGS_WRITE;
- Recordings->SetExplicitModify();
- if (cRecording *Recording = Recordings->GetByName(fileName)) {
- if (Recording->Delete()) {
- Recordings->DelByName(fileName);
- ClearLastReplayed(fileName);
- Recordings->SetModified();
- }
- else
- Skins.Message(mtError, tr("Error while deleting recording!"));
- }
+ bool Error = false;
+ {
+ LOCK_RECORDINGS_WRITE;
+ Recordings->SetExplicitModify();
+ if (cRecording *Recording = Recordings->GetByName(fileName)) {
+ if (Recording->Delete()) {
+ Recordings->DelByName(fileName);
+ ClearLastReplayed(fileName);
+ Recordings->SetModified();
+ }
+ else
+ Error = true;
+ }
+ }
+ if (Error)
+ Skins.Message(mtError, tr("Error while deleting recording!"));
return;
}
}