summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2002-09-15 11:08:35 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2002-09-15 11:08:35 +0200
commitec8748a2ccb402b5cde5cb98b4bafd6bb341c370 (patch)
tree8cdb146b26cfa8e107191e974b359e3684bb4a23
parent6ef11b70be58246c9f77fe3e319a4d9bb8dbb83f (diff)
downloadvdr-ec8748a2ccb402b5cde5cb98b4bafd6bb341c370.tar.gz
vdr-ec8748a2ccb402b5cde5cb98b4bafd6bb341c370.tar.bz2
A previous 'Transfer Mode' is now automatically re-started after a replay stops
-rw-r--r--HISTORY2
-rw-r--r--device.c22
-rw-r--r--device.h5
-rw-r--r--vdr.c5
4 files changed, 21 insertions, 13 deletions
diff --git a/HISTORY b/HISTORY
index c75c52aa..571cee90 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1466,3 +1466,5 @@ Video Disk Recorder Revision History
Helmut Auer).
- Fixed starting a recording of the current channel with only one DVB card
(thanks to Stefan Huelswitt for his help).
+- A previous 'Transfer Mode' is now automatically re-started after a replay
+ stops.
diff --git a/device.c b/device.c
index 72f1fc63..58e07ce7 100644
--- a/device.c
+++ b/device.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* 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"
@@ -47,6 +47,8 @@ cDevice::cDevice(void)
player = NULL;
+ playerDetached = false;
+
for (int i = 0; i < MAXRECEIVERS; i++)
receiver[i] = NULL;
ca = -1;
@@ -108,6 +110,13 @@ bool cDevice::HasDecoder(void) const
return false;
}
+bool cDevice::PlayerDetached(void)
+{
+ bool result = playerDetached;
+ playerDetached = false;
+ return result;
+}
+
cOsdBase *cDevice::NewOsd(int x, int y)
{
return NULL;
@@ -438,6 +447,7 @@ void cDevice::Detach(cPlayer *Player)
player->device = NULL;
player = NULL;
SetPlayMode(pmNone);
+ playerDetached = true;
}
}
@@ -447,16 +457,6 @@ void cDevice::StopReplay(void)
Detach(player);
if (IsPrimaryDevice())
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*/
}
}
diff --git a/device.h b/device.h
index c6b851cd..bc8d2f28 100644
--- a/device.h
+++ b/device.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* 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
@@ -236,6 +236,7 @@ public:
private:
cPlayer *player;
+ bool playerDetached;
protected:
virtual bool SetPlayMode(ePlayMode PlayMode);
// Sets the device into the given play mode.
@@ -276,6 +277,8 @@ public:
// Attaches the given player to this device.
void Detach(cPlayer *Player);
// 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
diff --git a/vdr.c b/vdr.c
index 355a5158..1f38af41 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* 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>
@@ -400,6 +400,9 @@ int main(int argc, char *argv[])
}
// Attach launched player control:
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:
if (WatchdogTimeout > 0) {
int LatencyTime = WatchdogTimeout - alarm(WatchdogTimeout);