From 2ef5ba57101fbc9fc38c1687b405dca127183c78 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 7 Nov 2004 10:31:59 +0100 Subject: [PATCH] Fixed a short glitch when starting a recording on the primary device while in replay or transfer mode --- CONTRIBUTORS | 2 ++ HISTORY | 4 +++- dvbdevice.c | 21 +++++++++++---------- dvbdevice.h | 4 ++-- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index f3d20f9e..5e401ebb 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1077,6 +1077,8 @@ Marco Schl with older compiler versions for adding the 'portal name' to cChannels for fixing the cDvbSpuDecoder + for fixing a short glitch when starting a recording on the primary device while + in replay or transfer mode Jürgen Schmitz for reporting a bug in displaying the current channel when switching via the SVDRP diff --git a/HISTORY b/HISTORY index 78b751a5..2f66d60c 100644 --- a/HISTORY +++ b/HISTORY @@ -3117,7 +3117,7 @@ Video Disk Recorder Revision History learned inside the menu to avoid overwriting the date/time in the 'classic' skin (thanks to Oliver Endriss for reporting this one). -2004-11-06: Version 1.3.16 +2004-11-07: Version 1.3.16 - Fixed cChannel::SetName() in case only the ShortName or Provider has changed (thanks to Sascha Volkenandt for reporting this one). @@ -3129,3 +3129,5 @@ Video Disk Recorder Revision History input). - Fixed the cDvbSpuDecoder (thanks to Marco Schlüßler). - Fixed handling of pmAudioOnlyBlack (thanks to Stefan Huelswitt). +- Fixed a short glitch when starting a recording on the primary device while + in replay or transfer mode (thanks to Marco Schlüßler). diff --git a/dvbdevice.c b/dvbdevice.c index c2b60011..2702f953 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.c 1.103 2004/11/06 13:16:25 kls Exp $ + * $Id: dvbdevice.c 1.104 2004/11/07 10:27:19 kls Exp $ */ #include "dvbdevice.h" @@ -681,14 +681,15 @@ int cDvbDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask) return -1; } -void cDvbDevice::TurnOffLiveMode(void) +void cDvbDevice::TurnOffLiveMode(bool LiveView) { - // Avoid noise while switching: - - CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); - CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); - CHECK(ioctl(fd_audio, AUDIO_CLEAR_BUFFER)); - CHECK(ioctl(fd_video, VIDEO_CLEAR_BUFFER)); + if (LiveView) { + // Avoid noise while switching: + CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); + CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); + CHECK(ioctl(fd_audio, AUDIO_CLEAR_BUFFER)); + CHECK(ioctl(fd_video, VIDEO_CLEAR_BUFFER)); + } // Turn off live PIDs: @@ -781,7 +782,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView) // Turn off live PIDs if necessary: if (TurnOffLivePIDs) - TurnOffLiveMode(); + TurnOffLiveMode(LiveView); // Set the tuner: @@ -899,7 +900,7 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode) case pmAudioVideo: case pmAudioOnlyBlack: if (playMode == pmNone) - TurnOffLiveMode(); + TurnOffLiveMode(true); CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); CHECK(ioctl(fd_audio, AUDIO_SELECT_SOURCE, AUDIO_SOURCE_MEMORY)); CHECK(ioctl(fd_audio, AUDIO_SET_AV_SYNC, PlayMode == pmAudioVideo)); diff --git a/dvbdevice.h b/dvbdevice.h index 7dd6174d..1817f371 100644 --- a/dvbdevice.h +++ b/dvbdevice.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.h 1.29 2004/10/30 14:48:27 kls Exp $ + * $Id: dvbdevice.h 1.30 2004/11/07 10:25:16 kls Exp $ */ #ifndef __DVBDEVICE_H @@ -56,7 +56,7 @@ public: private: cDvbTuner *dvbTuner; - void TurnOffLiveMode(void); + void TurnOffLiveMode(bool LiveView); public: virtual bool ProvidesSource(int Source) const; virtual bool ProvidesTransponder(const cChannel *Channel) const;