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>
for adding the command line option --userdump to enable core dumps in case VDR
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).
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.
- 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
* 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"
@ -2084,6 +2084,8 @@ eOSState cMenuRecordings::Delete(void)
}
cRecording *recording = GetRecording(ri);
if (recording) {
if (cReplayControl::NowReplaying() && strcmp(cReplayControl::NowReplaying(), ri->FileName()) == 0)
cControl::Shutdown();
if (recording->Delete()) {
cReplayControl::ClearLastReplayed(ri->FileName());
Recordings.DelByName(ri->FileName());

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* 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"
@ -987,10 +987,12 @@ bool cRecordings::Update(bool Wait)
cRecording *cRecordings::GetByName(const char *FileName)
{
for (cRecording *recording = First(); recording; recording = Next(recording)) {
if (strcmp(recording->FileName(), FileName) == 0)
return recording;
}
if (FileName) {
for (cRecording *recording = First(); recording; recording = Next(recording)) {
if (strcmp(recording->FileName(), FileName) == 0)
return recording;
}
}
return NULL;
}