diff options
-rw-r--r-- | CONTRIBUTORS | 2 | ||||
-rw-r--r-- | HISTORY | 3 | ||||
-rw-r--r-- | device.c | 23 |
3 files changed, 18 insertions, 10 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 1cf1e4b5..8e410efc 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -148,6 +148,8 @@ Stefan Huelswitt <huels@iname.com> for reporting a bug when entering an integer value outside the limit for adding play mode pmAudioOnlyBlack for helping to fix starting a recording of the current channel with only one DVB card + for making cStatus::MsgChannelSwitch() only be called if a channel is actually going to + be switched or has actually been switched successfully Ulrich Röder <roeder@efr-net.de> for pointing out that there are channels that have a symbol rate higher than @@ -1468,3 +1468,6 @@ Video Disk Recorder Revision History (thanks to Stefan Huelswitt for his help). - A previous 'Transfer Mode' is now automatically re-started after a replay stops. +- Only calling cStatus::MsgChannelSwitch() if a channel is actually going to + be switched or has actually been switched successfully (thanks to Stefan + Huelswitt). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.c 1.20 2002/09/15 11:05:41 kls Exp $ + * $Id: device.c 1.21 2002/09/15 11:50:19 kls Exp $ */ #include "device.h" @@ -326,8 +326,6 @@ bool cDevice::SwitchChannel(int Direction) eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView) { - cStatus::MsgChannelSwitch(this, 0); - if (LiveView) StopReplay(); @@ -344,6 +342,7 @@ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView) if (NeedsTransferMode) { cDevice *CaDevice = GetDevice(Channel, 0); if (CaDevice) { + cStatus::MsgChannelSwitch(this, 0); // only report status if we are actually going to switch the channel if (CaDevice->SetChannel(Channel, false) == scrOk) // calling SetChannel() directly, not SwitchChannel()! cControl::Launch(new cTransferControl(CaDevice, Channel->vpid, Channel->apid1, 0, 0, 0));//XXX+ else @@ -352,15 +351,19 @@ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView) else Result = scrNotAvailable; } - else if (!SetChannelDevice(Channel, LiveView)) - Result = scrFailed; - - if (Result == scrOk && LiveView && IsPrimaryDevice()) { - cSIProcessor::SetCurrentServiceID(Channel->pnr); - currentChannel = Channel->number; + else { + cStatus::MsgChannelSwitch(this, 0); // only report status if we are actually going to switch the channel + if (!SetChannelDevice(Channel, LiveView)) + Result = scrFailed; } - cStatus::MsgChannelSwitch(this, Channel->number); + if (Result == scrOk) { + if (LiveView && IsPrimaryDevice()) { + cSIProcessor::SetCurrentServiceID(Channel->pnr); + currentChannel = Channel->number; + } + cStatus::MsgChannelSwitch(this, Channel->number); // only report status if channel switch successfull + } return Result; } |