The new function cDevice::ForceTransferMode() can be used to force the primary device into transfer mode

This commit is contained in:
Klaus Schmidinger 2006-03-26 09:46:58 +02:00
parent 1fe46dfa9f
commit 22b60d9610
5 changed files with 18 additions and 6 deletions

View File

@ -1069,6 +1069,7 @@ Reinhard Nissl <rnissl@gmx.de>
for a suggestion that lead to implementing cDevice::Transferring()
for fixing replaying recordings of radio channels with many audio tracks
for speeding up cRemux::ScanVideoPacket()
for implementing cDevice::ForceTransferMode()
Richard Robson <richard_robson@beeb.net>
for reporting freezing replay if a timer starts while in Transfer Mode from the

View File

@ -4445,3 +4445,5 @@ Video Disk Recorder Revision History
- Speeded up cRemux::ScanVideoPacket() (thanks to Reinhard Nissl).
- Enhanced logging EPG event data.
- Fixed format string handling (thanks to Darren Salt).
- The new function cDevice::ForceTransferMode() can be used to force the primary
device into transfer mode (thanks to Reinhard Nissl).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.c 1.124 2006/02/24 14:05:26 kls Exp $
* $Id: device.c 1.125 2006/03/26 09:42:48 kls Exp $
*/
#include "device.h"
@ -697,6 +697,15 @@ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
return Result;
}
void cDevice::ForceTransferMode(void)
{
if (!cTransferControl::ReceiverDevice()) {
cChannel *Channel = Channels.GetByNumber(CurrentChannel());
if (Channel)
SetChannelDevice(Channel, false); // this implicitly starts Transfer Mode
}
}
bool cDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
{
return false;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.h 1.72 2006/02/04 14:22:08 kls Exp $
* $Id: device.h 1.73 2006/03/26 09:42:40 kls Exp $
*/
#ifndef __DEVICE_H
@ -236,6 +236,8 @@ protected:
public:
static int CurrentChannel(void) { return primaryDevice ? currentChannel : 0; }
///< Returns the number of the current channel on the primary device.
void ForceTransferMode(void);
///< Forces the device into transfermode for the current channel.
virtual bool HasLock(int TimeoutMs = 0);//XXX PLUGINS.html
///< Returns true if the device has a lock on the requested transponder.
///< Default is true, a specific device implementation may return false

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.c 1.154 2006/03/19 12:34:24 kls Exp $
* $Id: dvbdevice.c 1.155 2006/03/26 09:42:54 kls Exp $
*/
#include "dvbdevice.h"
@ -930,9 +930,7 @@ void cDvbDevice::SetAudioTrackDevice(eTrackType Type)
if (!setTransferModeForDolbyDigital)
return;
// Currently this works only in Transfer Mode
cChannel *Channel = Channels.GetByNumber(CurrentChannel());
if (Channel)
SetChannelDevice(Channel, false); // this implicitly starts Transfer Mode
ForceTransferMode();
}
}
}