From 2eec57fe184ded122ebd14240aa8564881649727 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 16 Aug 2003 13:24:23 +0200 Subject: [PATCH] Fixed freezing replay if a timer starts while in Transfer Mode --- CONTRIBUTORS | 4 ++++ HISTORY | 5 ++++- menu.c | 7 +++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4d079797..9b27b325 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -757,3 +757,7 @@ Ernst F Reinhard Nissl for reporting a name clash because of function crc32() in libdtv/libsi/si_parser.c when using other libraries that also implement a function by that name + +Richard Robson + for reporting freezing replay if a timer starts while in Transfer Mode from the + device used by the timer, and the timer needs a different transponder diff --git a/HISTORY b/HISTORY index 794a532c..dbe0a5db 100644 --- a/HISTORY +++ b/HISTORY @@ -2283,7 +2283,7 @@ Video Disk Recorder Revision History or Makefile.config as defaults (thanks to Steffen Barszus). - Added the usual menu timeout to the CAM menus. -2003-08-09: Version 1.2.3 +2003-08-16: Version 1.2.3 - Fixed the TS to PES repacker so that it works with MPEG1 streams (thanks to Andreas Kool). @@ -2304,3 +2304,6 @@ Video Disk Recorder Revision History read correctly at program startup (suggested by Rainer Zocholl). - Fixed a crash when starting "Pause live video" twice within the same minute on the same channel. +- Fixed freezing replay if a timer starts while in Transfer Mode from the device + used by the timer, and the timer needs a different transponder (thanks to + Richard Robson for reporting this one). diff --git a/menu.c b/menu.c index 87afabd2..9531d5bb 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 1.266 2003/08/16 10:17:49 kls Exp $ + * $Id: menu.c 1.267 2003/08/16 13:12:26 kls Exp $ */ #include "menu.h" @@ -3099,8 +3099,11 @@ bool cRecordControls::Start(cTimer *Timer, bool Pause) int Priority = Timer ? Timer->Priority() : Pause ? Setup.PausePriority : Setup.DefaultPriority; cDevice *device = cDevice::GetDevice(channel, Priority, &NeedsDetachReceivers); if (device) { - if (NeedsDetachReceivers) + if (NeedsDetachReceivers) { Stop(device); + if (device == cDevice::ActualDevice()) + cControl::Shutdown(); // in case this device was used for Transfer Mode + } if (!device->SwitchChannel(channel, false)) { cThread::EmergencyExit(true); return false;