When deleting the recording that is currently replayed, the replay is now stopped immediately

This commit is contained in:
Klaus Schmidinger 2008-02-15 16:13:10 +01:00
parent a81e3699d1
commit 6bef17cdec
4 changed files with 17 additions and 6 deletions

View File

@ -2288,3 +2288,7 @@ Winfried Koehler <w_koehl@gmx.de>
Hans-Werner Hilse <hilse@web.de> Hans-Werner Hilse <hilse@web.de>
for adding the command line option --userdump to enable core dumps in case VDR for adding the command line option --userdump to enable core dumps in case VDR
is run as root with option -u is run as root with option -u
Mikko Matilainen <mikkom@iki.fi>
for reporting a possible crash if the Info key is pressed after deleting the
currently replayed recording

View File

@ -5620,3 +5620,6 @@ Video Disk Recorder Revision History
for pointing out a possible problem if the return value is not checked). for pointing out a possible problem if the return value is not checked).
Plugin authors may want to consider doing the same. For convenience there is now Plugin authors may want to consider doing the same. For convenience there is now
an additional version of cString::sprintf() that accepts a va_list parameter. an additional version of cString::sprintf() that accepts a va_list parameter.
- When deleting the recording that is currently replayed, the replay is now
stopped immediately (thanks to Mikko Matilainen for reporting a possible crash
if the Info key is pressed after deleting the currently replayed recording).

4
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: menu.c 1.474 2008/02/10 16:02:02 kls Exp $ * $Id: menu.c 1.475 2008/02/15 16:06:56 kls Exp $
*/ */
#include "menu.h" #include "menu.h"
@ -2084,6 +2084,8 @@ eOSState cMenuRecordings::Delete(void)
} }
cRecording *recording = GetRecording(ri); cRecording *recording = GetRecording(ri);
if (recording) { if (recording) {
if (cReplayControl::NowReplaying() && strcmp(cReplayControl::NowReplaying(), ri->FileName()) == 0)
cControl::Shutdown();
if (recording->Delete()) { if (recording->Delete()) {
cReplayControl::ClearLastReplayed(ri->FileName()); cReplayControl::ClearLastReplayed(ri->FileName());
Recordings.DelByName(ri->FileName()); Recordings.DelByName(ri->FileName());

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: recording.c 1.159 2008/02/10 21:57:09 kls Exp $ * $Id: recording.c 1.160 2008/02/15 15:50:06 kls Exp $
*/ */
#include "recording.h" #include "recording.h"
@ -987,10 +987,12 @@ bool cRecordings::Update(bool Wait)
cRecording *cRecordings::GetByName(const char *FileName) cRecording *cRecordings::GetByName(const char *FileName)
{ {
for (cRecording *recording = First(); recording; recording = Next(recording)) { if (FileName) {
if (strcmp(recording->FileName(), FileName) == 0) for (cRecording *recording = First(); recording; recording = Next(recording)) {
return recording; if (strcmp(recording->FileName(), FileName) == 0)
} return recording;
}
}
return NULL; return NULL;
} }