1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

A previous 'Transfer Mode' is now automatically re-started after a replay stops

This commit is contained in:
Klaus Schmidinger 2002-09-15 11:08:35 +02:00
parent 6ef11b70be
commit ec8748a2cc
4 changed files with 21 additions and 13 deletions

View File

@ -1466,3 +1466,5 @@ Video Disk Recorder Revision History
Helmut Auer). Helmut Auer).
- Fixed starting a recording of the current channel with only one DVB card - Fixed starting a recording of the current channel with only one DVB card
(thanks to Stefan Huelswitt for his help). (thanks to Stefan Huelswitt for his help).
- A previous 'Transfer Mode' is now automatically re-started after a replay
stops.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: device.c 1.19 2002/09/08 14:03:43 kls Exp $ * $Id: device.c 1.20 2002/09/15 11:05:41 kls Exp $
*/ */
#include "device.h" #include "device.h"
@ -47,6 +47,8 @@ cDevice::cDevice(void)
player = NULL; player = NULL;
playerDetached = false;
for (int i = 0; i < MAXRECEIVERS; i++) for (int i = 0; i < MAXRECEIVERS; i++)
receiver[i] = NULL; receiver[i] = NULL;
ca = -1; ca = -1;
@ -108,6 +110,13 @@ bool cDevice::HasDecoder(void) const
return false; return false;
} }
bool cDevice::PlayerDetached(void)
{
bool result = playerDetached;
playerDetached = false;
return result;
}
cOsdBase *cDevice::NewOsd(int x, int y) cOsdBase *cDevice::NewOsd(int x, int y)
{ {
return NULL; return NULL;
@ -438,6 +447,7 @@ void cDevice::Detach(cPlayer *Player)
player->device = NULL; player->device = NULL;
player = NULL; player = NULL;
SetPlayMode(pmNone); SetPlayMode(pmNone);
playerDetached = true;
} }
} }
@ -447,16 +457,6 @@ void cDevice::StopReplay(void)
Detach(player); Detach(player);
if (IsPrimaryDevice()) if (IsPrimaryDevice())
cControl::Shutdown(); cControl::Shutdown();
/*XXX+
if (IsPrimaryDevice()) {
// let's explicitly switch the channel back in case it was in Transfer Mode:
cChannel *Channel = Channels.GetByNumber(currentChannel);
if (Channel) {
Channel->Switch(this, false);
usleep(100000); // allow driver to sync in case a new replay will start immediately
}
}
XXX*/
} }
} }

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: device.h 1.17 2002/09/14 10:00:16 kls Exp $ * $Id: device.h 1.18 2002/09/15 11:05:41 kls Exp $
*/ */
#ifndef __DEVICE_H #ifndef __DEVICE_H
@ -236,6 +236,7 @@ public:
private: private:
cPlayer *player; cPlayer *player;
bool playerDetached;
protected: protected:
virtual bool SetPlayMode(ePlayMode PlayMode); virtual bool SetPlayMode(ePlayMode PlayMode);
// Sets the device into the given play mode. // Sets the device into the given play mode.
@ -276,6 +277,8 @@ public:
// Attaches the given player to this device. // Attaches the given player to this device.
void Detach(cPlayer *Player); void Detach(cPlayer *Player);
// Detaches the given player from this device. // Detaches the given player from this device.
bool PlayerDetached(void);
// Returns true if a player has been detached and resets the 'playerDetached' flag.
// Receiver facilities // Receiver facilities

5
vdr.c
View File

@ -22,7 +22,7 @@
* *
* The project's page is at http://www.cadsoft.de/people/kls/vdr * The project's page is at http://www.cadsoft.de/people/kls/vdr
* *
* $Id: vdr.c 1.122 2002/09/08 11:19:01 kls Exp $ * $Id: vdr.c 1.123 2002/09/15 11:08:35 kls Exp $
*/ */
#include <getopt.h> #include <getopt.h>
@ -400,6 +400,9 @@ int main(int argc, char *argv[])
} }
// Attach launched player control: // Attach launched player control:
cControl::Attach(); cControl::Attach();
// Make sure Transfer-Mode is re-started after detaching a player:
if (cDevice::PrimaryDevice()->PlayerDetached() && !cDevice::PrimaryDevice()->Replaying())
Channels.SwitchTo(cDevice::CurrentChannel());
// Restart the Watchdog timer: // Restart the Watchdog timer:
if (WatchdogTimeout > 0) { if (WatchdogTimeout > 0) {
int LatencyTime = WatchdogTimeout - alarm(WatchdogTimeout); int LatencyTime = WatchdogTimeout - alarm(WatchdogTimeout);