-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.cpp
More file actions
85 lines (73 loc) · 3.18 KB
/
server.cpp
File metadata and controls
85 lines (73 loc) · 3.18 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
///////////////////////////////////////////////////////////////////////////////
// //
// This file is part of QtJack. //
// Copyright (C) 2014-2015 Jacob Dawid <jacob@omg-it.works> //
// //
// QtJack is free software: you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation, either version 3 of the License, or //
// (at your option) any later version. //
// //
// QtJack is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with QtJack. If not, see <http://www.gnu.org/licenses/>. //
// //
// It is possible to obtain a closed-source license of QtJack. //
// If you're interested, contact me at: jacob@omg-it.works //
// //
///////////////////////////////////////////////////////////////////////////////
// Own includes
#include "server.h"
// JACK includes
#include <jack/control.h>
namespace QtJack {
Server::Server() {
_jackServer = jackctl_server_create(0, 0);
}
Server::~Server() {
jackctl_server_destroy(_jackServer);
}
bool Server::start(Driver driver) {
return isValid()
&& driver.isValid()
// Note: Slightly different API than JACK1
&& jackctl_server_open(_jackServer, driver._jackDriver)
&& jackctl_server_start(_jackServer);
}
bool Server::stop() {
return isValid()
// Note: Slightly different API than JACK1
&& jackctl_server_stop(_jackServer)
&& jackctl_server_close(_jackServer);
}
DriverMap Server::availableDrivers() const {
if(!isValid()) {
return DriverMap();
}
DriverMap driversMap;
const JSList *drivers = jackctl_server_get_drivers_list(_jackServer);
while(drivers) {
Driver d = Driver((jackctl_driver_t*)drivers->data);
driversMap.insert(d.name(), d);
drivers = drivers->next;
}
return driversMap;
}
ParameterMap Server::parameters() const {
if(!isValid()) {
return ParameterMap();
}
ParameterMap parameterMap;
const JSList *parameters = jackctl_server_get_parameters(_jackServer);
while(parameters) {
Parameter p = Parameter((jackctl_parameter_t*)parameters->data);
parameterMap.insert(p.name(), p);
parameters = parameters->next;
}
return parameterMap;
}
} // namespace QtJack