summaryrefslogtreecommitdiff
path: root/client/streamdev-client.c
blob: 4036eca33d39cb97a2f10fbb4a352fb3e853e9a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
 * streamdev.c: A plugin for the Video Disk Recorder
 *
 * See the README file for copyright information and how to reach the author.
 *
 * $Id: streamdev-client.c,v 1.3 2010/08/18 10:26:56 schmirl Exp $
 */

#include "streamdev-client.h"
#include "client/device.h"
#include "client/setup.h"

#if !defined(APIVERSNUM) || APIVERSNUM < 10516
#error "VDR-1.5.16 API version or greater is required!"
#endif

const char *cPluginStreamdevClient::DESCRIPTION = trNOOP("VTP Streaming Client");

cPluginStreamdevClient::cPluginStreamdevClient(void): m_Devices() {
}

cPluginStreamdevClient::~cPluginStreamdevClient() {
}

const char *cPluginStreamdevClient::Description(void) {
	return tr(DESCRIPTION);
}

bool cPluginStreamdevClient::Initialize(void) {
	for (int i = 0; i < STREAMDEV_MAXDEVICES; i++) {
		if (m_Devices[i])
			m_Devices[i]->ReInit(i >= StreamdevClientSetup.StartClient);
		else if (i < StreamdevClientSetup.StartClient)
			m_Devices[i] = new cStreamdevDevice();
	}
	return true;
}

const char *cPluginStreamdevClient::MainMenuEntry(void) {
	return StreamdevClientSetup.StartClient && !StreamdevClientSetup.HideMenuEntry ? tr("Suspend Server") : NULL;
}

cOsdObject *cPluginStreamdevClient::MainMenuAction(void) {
	if (StreamdevClientSetup.StartClient && m_Devices[0]->SuspendServer())
		Skins.Message(mtInfo, tr("Server is suspended"));
	else
		Skins.Message(mtError, tr("Couldn't suspend Server!"));
	return NULL;
}

cMenuSetupPage *cPluginStreamdevClient::SetupMenu(void) {
  return new cStreamdevClientMenuSetupPage(this);
}

bool cPluginStreamdevClient::SetupParse(const char *Name, const char *Value) {
  return StreamdevClientSetup.SetupParse(Name, Value);
}

bool cPluginStreamdevClient::Service(const char *Id, void *Data) {
	if (!strcmp(Id, LOOP_PREVENTION_SERVICE)) {
		cStreamdevDevice::DenyChannel((const cChannel*) Data);
  		return true;
	}
	return false;
}

void cPluginStreamdevClient::MainThreadHook(void) {
	for (int i = 0; i < StreamdevClientSetup.StartClient; i++)
		m_Devices[i]->UpdatePriority();
}

VDRPLUGINCREATOR(cPluginStreamdevClient); // Don't touch this!