summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-11-19 18:43:02 +0000
committerDavid Robillard <d@drobilla.net>2014-11-19 18:43:02 +0000
commitb7b7be5aac1f82829a0f4cf013ab749f9e411d80 (patch)
tree0f43d8b2c1c1cdeae69c1851186f6085428aa69b /src
parent9761f4b2d3cead1532b6bf2c1146f6db5d642698 (diff)
downloadpatchage-b7b7be5aac1f82829a0f4cf013ab749f9e411d80.tar.gz
patchage-b7b7be5aac1f82829a0f4cf013ab749f9e411d80.tar.bz2
patchage-b7b7be5aac1f82829a0f4cf013ab749f9e411d80.zip
Fix compilation with Jack DBus.
git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@5489 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/JackDbusDriver.cpp46
-rw-r--r--src/JackDbusDriver.hpp3
2 files changed, 47 insertions, 2 deletions
diff --git a/src/JackDbusDriver.cpp b/src/JackDbusDriver.cpp
index ff802ce..e17d423 100644
--- a/src/JackDbusDriver.cpp
+++ b/src/JackDbusDriver.cpp
@@ -56,6 +56,7 @@
JackDriver::JackDriver(Patchage* app)
: _app(app)
, _dbus_connection(0)
+ , _max_dsp_load(0)
, _server_responding(false)
, _server_started(false)
, _graph_version(0)
@@ -506,8 +507,10 @@ JackDriver::add_port(PatchageModule* module,
*module,
type,
name,
+ "", // TODO: pretty name
is_input,
- _app->state_manager()->get_port_color(type));
+ _app->conf()->get_port_color(type),
+ _app->show_human_names());
}
void
@@ -533,7 +536,7 @@ JackDriver::add_port(dbus_uint64_t client_id,
}
ModuleType type = InputOutput;
- if (_app->state_manager()->get_module_split(client_name, port_flags & JACKDBUS_PORT_FLAG_TERMINAL)) {
+ if (_app->conf()->get_module_split(client_name, port_flags & JACKDBUS_PORT_FLAG_TERMINAL)) {
if (port_flags & JACKDBUS_PORT_FLAG_INPUT) {
type = Input;
} else {
@@ -985,6 +988,45 @@ JackDriver::reset_xruns()
dbus_message_unref(reply_ptr);
}
+float
+JackDriver::get_max_dsp_load()
+{
+ DBusMessage* reply_ptr;
+ double load;
+
+ if (_server_responding && !_server_started) {
+ return 0.0;
+ }
+
+ if (!call(true, JACKDBUS_IFACE_CONTROL, "GetLoad", &reply_ptr, DBUS_TYPE_INVALID)) {
+ return 0.0;
+ }
+
+ if (!dbus_message_get_args(reply_ptr, &_dbus_error, DBUS_TYPE_DOUBLE, &load, DBUS_TYPE_INVALID)) {
+ dbus_message_unref(reply_ptr);
+ dbus_error_free(&_dbus_error);
+ error_msg("decoding reply of GetLoad failed.");
+ return 0.0;
+ }
+
+ dbus_message_unref(reply_ptr);
+
+ load /= 100.0; // convert from percent to [0..1]
+
+ if (load > _max_dsp_load) {
+ _max_dsp_load = load;
+ }
+
+ return _max_dsp_load;
+}
+
+
+void
+JackDriver::reset_max_dsp_load()
+{
+ _max_dsp_load = 0.0;
+}
+
PatchagePort*
JackDriver::create_port_view(Patchage* patchage,
const PortID& id)
diff --git a/src/JackDbusDriver.hpp b/src/JackDbusDriver.hpp
index 01c9d5c..69cc0a5 100644
--- a/src/JackDbusDriver.hpp
+++ b/src/JackDbusDriver.hpp
@@ -56,6 +56,8 @@ public:
size_t get_xruns();
void reset_xruns();
+ float get_max_dsp_load();
+ void reset_max_dsp_load();
float sample_rate();
jack_nframes_t buffer_size();
@@ -148,6 +150,7 @@ private:
Patchage* _app;
DBusError _dbus_error;
DBusConnection* _dbus_connection;
+ float _max_dsp_load;
bool _server_responding;
bool _server_started;