Skip to content

Commit f194ca2

Browse files
author
Frank Schmirler
committed
Added option to suspend live TV when the server starts (closes #1296)
1 parent 1d4a7e0 commit f194ca2

File tree

7 files changed

+45
-6
lines changed

7 files changed

+45
-6
lines changed

HISTORY

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
VDR Plugin 'streamdev' Revision History
22
---------------------------------------
33

4+
- Added option to suspend live TV when the server starts
45
- Set device occupied when streamdev switches away LiveTV on the server, to
56
reduce the risk that the VDR main loop immediately switches back, resulting
67
in a black screen on the client (reported by hummel99)

README

+4
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ image is displayed instead. This would allow a low priority client to switch
218218
to a different transponder. Enable "Client may suspend" in the server setup
219219
to allow VDR clients to suspend live TV remotely.
220220

221+
In the server's setup there's also an option to suspend live TV when starting
222+
the server. The "auto" option will suspend live TV if there's no device with
223+
an MPEG decoder available which is typically the case on a headless server.
224+
221225
NOTE: Precedence is mainly an issue on One-Card-Systems, since with multiple
222226
cards there is no need to switch transponders on the primary interface, if on
223227
of the other cards is idle (i.e. if it is not blocked by a recording). If all

server/po/de_DE.po

+10-6
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
#
66
msgid ""
77
msgstr ""
8-
"Project-Id-Version: streamdev 0.5.0\n"
9-
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
10-
"POT-Creation-Date: 2012-03-31 15:06+0200\n"
8+
"Project-Id-Version: streamdev\n"
9+
"Report-Msgid-Bugs-To: <[email protected]>\n"
10+
"POT-Creation-Date: 2013-11-02 16:55+0100\n"
1111
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
1212
"Last-Translator: Frank Schmirler <[email protected]>\n"
1313
"Language-Team: German <[email protected]>\n"
@@ -16,9 +16,6 @@ msgstr ""
1616
"Content-Type: text/plain; charset=ISO-8859-15\n"
1717
"Content-Transfer-Encoding: 8bit\n"
1818

19-
msgid "VDR Streaming Server"
20-
msgstr "VDR Streaming Server"
21-
2219
msgid "Streaming active"
2320
msgstr "Streamen im Gange"
2421

@@ -37,6 +34,9 @@ msgstr "Allgemeines"
3734
msgid "Hide Mainmenu Entry"
3835
msgstr "Hauptmenüeintrag verstecken"
3936

37+
msgid "Start with Live TV suspended"
38+
msgstr "Live-TV beim Start pausieren"
39+
4040
msgid "Maximum Number of Clients"
4141
msgstr "Maximalanzahl an Clients"
4242

@@ -87,3 +87,7 @@ msgstr "Port des Multicast Clients"
8787

8888
msgid "Multicast Streamtype"
8989
msgstr "Multicast Streamtyp"
90+
91+
msgid "VDR Streaming Server"
92+
msgstr "VDR Streaming Server"
93+

server/setup.c

+11
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ cStreamdevServerSetup StreamdevServerSetup;
1212
cStreamdevServerSetup::cStreamdevServerSetup(void) {
1313
HideMenuEntry = false;
1414
MaxClients = 5;
15+
StartSuspended = ssAuto;
1516
StartVTPServer = true;
1617
VTPServerPort = 2004;
1718
VTPPriority = 0;
@@ -33,6 +34,7 @@ cStreamdevServerSetup::cStreamdevServerSetup(void) {
3334
bool cStreamdevServerSetup::SetupParse(const char *Name, const char *Value) {
3435
if (strcmp(Name, "HideMenuEntry") == 0) HideMenuEntry = atoi(Value);
3536
else if (strcmp(Name, "MaxClients") == 0) MaxClients = atoi(Value);
37+
else if (strcmp(Name, "StartSuspended") == 0) StartSuspended = atoi(Value);
3638
else if (strcmp(Name, "StartServer") == 0) StartVTPServer = atoi(Value);
3739
else if (strcmp(Name, "ServerPort") == 0) VTPServerPort = atoi(Value);
3840
else if (strcmp(Name, "VTPPriority") == 0) VTPPriority = atoi(Value);
@@ -71,10 +73,18 @@ cStreamdevServerMenuSetupPage::~cStreamdevServerMenuSetupPage() {
7173
}
7274

7375
void cStreamdevServerMenuSetupPage::Set(void) {
76+
static const char *StartSuspendedItems[ss_Count] =
77+
{
78+
trVDR("no"),
79+
trVDR("yes"),
80+
trVDR("auto")
81+
};
82+
7483
int current = Current();
7584
Clear();
7685
AddCategory (tr("Common Settings"));
7786
Add(new cMenuEditBoolItem(tr("Hide Mainmenu Entry"), &m_NewSetup.HideMenuEntry));
87+
Add(new cMenuEditStraItem(tr("Start with Live TV suspended"), &m_NewSetup.StartSuspended, ss_Count, StartSuspendedItems));
7888
Add(new cMenuEditIntItem (tr("Maximum Number of Clients"), &m_NewSetup.MaxClients, 0, 100));
7989

8090

@@ -131,6 +141,7 @@ void cStreamdevServerMenuSetupPage::Store(void) {
131141

132142
SetupStore("HideMenuEntry", m_NewSetup.HideMenuEntry);
133143
SetupStore("MaxClients", m_NewSetup.MaxClients);
144+
SetupStore("StartSuspended", m_NewSetup.StartSuspended);
134145
SetupStore("StartServer", m_NewSetup.StartVTPServer);
135146
SetupStore("ServerPort", m_NewSetup.VTPServerPort);
136147
SetupStore("VTPBindIP", m_NewSetup.VTPBindIP);

server/setup.h

+8
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,21 @@
77

88
#include "common.h"
99

10+
enum eStartSuspended {
11+
ssNo,
12+
ssYes,
13+
ssAuto,
14+
ss_Count
15+
};
16+
1017
struct cStreamdevServerSetup {
1118
cStreamdevServerSetup(void);
1219

1320
bool SetupParse(const char *Name, const char *Value);
1421

1522
int HideMenuEntry;
1623
int MaxClients;
24+
int StartSuspended;
1725
int StartVTPServer;
1826
int VTPServerPort;
1927
char VTPBindIP[20];

server/streamdev-server.c

+10
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "server/menu.h"
1313
#include "server/setup.h"
1414
#include "server/server.h"
15+
#include "server/suspend.h"
1516

1617
#if !defined(APIVERSNUM) || APIVERSNUM < 10725
1718
#error "VDR-1.7.25 or greater required to compile server! Use 'make client' to compile client only."
@@ -21,6 +22,7 @@ const char *cPluginStreamdevServer::DESCRIPTION = trNOOP("VDR Streaming Server")
2122

2223
cPluginStreamdevServer::cPluginStreamdevServer(void)
2324
{
25+
m_Suspend = false;
2426
}
2527

2628
cPluginStreamdevServer::~cPluginStreamdevServer()
@@ -98,6 +100,9 @@ bool cPluginStreamdevServer::Start(void)
98100

99101
cStreamdevServer::Initialize();
100102

103+
m_Suspend = StreamdevServerSetup.StartSuspended == ssAuto ?
104+
!cDevice::PrimaryDevice()->HasDecoder() :
105+
StreamdevServerSetup.StartSuspended;
101106
return true;
102107
}
103108

@@ -129,6 +134,11 @@ cOsdObject *cPluginStreamdevServer::MainMenuAction(void)
129134

130135
void cPluginStreamdevServer::MainThreadHook(void)
131136
{
137+
if (m_Suspend) {
138+
cControl::Launch(new cSuspendCtl);
139+
m_Suspend = false;
140+
}
141+
132142
cThreadLock lock;
133143
const cList<cServerConnection>& clients = cStreamdevServer::Clients(lock);
134144
for (cServerConnection *s = clients.First(); s; s = clients.Next(s))

server/streamdev-server.h

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
class cPluginStreamdevServer : public cPlugin {
1313
private:
1414
static const char *DESCRIPTION;
15+
bool m_Suspend;
1516

1617
public:
1718
cPluginStreamdevServer(void);

0 commit comments

Comments
 (0)