From b7b7be5aac1f82829a0f4cf013ab749f9e411d80 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 19 Nov 2014 18:43:02 +0000 Subject: Fix compilation with Jack DBus. git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@5489 a436a847-0d15-0410-975c-d299462d15a1 --- src/JackDbusDriver.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) (limited to 'src/JackDbusDriver.cpp') 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) -- cgit v1.2.1