summaryrefslogtreecommitdiffstats
path: root/src/JackDbusDriver.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-11-29 17:14:35 +0100
committerDavid Robillard <d@drobilla.net>2020-11-29 18:03:31 +0100
commit78b359c44b67f4f1fff9e31dd9243af5e996f38a (patch)
tree59aeee028fd339894e94eb21fc5cdbf53a2b8c5d /src/JackDbusDriver.cpp
parentd3561e8cf1d5a289ff2ce4a26e4a970437a812d5 (diff)
downloadpatchage-78b359c44b67f4f1fff9e31dd9243af5e996f38a.tar.gz
patchage-78b359c44b67f4f1fff9e31dd9243af5e996f38a.tar.bz2
patchage-78b359c44b67f4f1fff9e31dd9243af5e996f38a.zip
Add AudioDriver interface
Diffstat (limited to 'src/JackDbusDriver.cpp')
-rw-r--r--src/JackDbusDriver.cpp110
1 files changed, 54 insertions, 56 deletions
diff --git a/src/JackDbusDriver.cpp b/src/JackDbusDriver.cpp
index 4ab7b8c..add838d 100644
--- a/src/JackDbusDriver.cpp
+++ b/src/JackDbusDriver.cpp
@@ -55,7 +55,7 @@ PATCHAGE_RESTORE_WARNINGS
#define JACKDBUS_PORT_TYPE_MIDI 1
JackDriver::JackDriver(ILog& log, EventSink emit_event)
- : Driver{std::move(emit_event)}
+ : AudioDriver{std::move(emit_event)}
, _log(log)
, _dbus_error()
, _dbus_connection(nullptr)
@@ -722,6 +722,56 @@ JackDriver::disconnect(const PortID& tail_id, const PortID& head_id)
}
uint32_t
+JackDriver::xruns()
+{
+ DBusMessage* reply_ptr = nullptr;
+ dbus_uint32_t xruns = 0u;
+
+ if (_server_responding && !_server_started) {
+ return 0;
+ }
+
+ if (!call(true,
+ JACKDBUS_IFACE_CONTROL,
+ "GetXruns",
+ &reply_ptr,
+ DBUS_TYPE_INVALID)) {
+ return 0;
+ }
+
+ if (!dbus_message_get_args(reply_ptr,
+ &_dbus_error,
+ DBUS_TYPE_UINT32,
+ &xruns,
+ DBUS_TYPE_INVALID)) {
+ dbus_message_unref(reply_ptr);
+ dbus_error_free(&_dbus_error);
+ error_msg("Decoding reply of GetXruns failed");
+ return 0;
+ }
+
+ dbus_message_unref(reply_ptr);
+
+ return xruns;
+}
+
+void
+JackDriver::reset_xruns()
+{
+ DBusMessage* reply_ptr = nullptr;
+
+ if (!call(true,
+ JACKDBUS_IFACE_CONTROL,
+ "ResetXruns",
+ &reply_ptr,
+ DBUS_TYPE_INVALID)) {
+ return;
+ }
+
+ dbus_message_unref(reply_ptr);
+}
+
+uint32_t
JackDriver::buffer_size()
{
DBusMessage* reply_ptr = nullptr;
@@ -756,12 +806,10 @@ JackDriver::buffer_size()
}
bool
-JackDriver::set_buffer_size(const uint32_t size)
+JackDriver::set_buffer_size(const uint32_t frames)
{
DBusMessage* reply_ptr = nullptr;
- dbus_uint32_t buffer_size = 0u;
-
- buffer_size = size;
+ dbus_uint32_t buffer_size = frames;
if (!call(true,
JACKDBUS_IFACE_CONTROL,
@@ -778,7 +826,7 @@ JackDriver::set_buffer_size(const uint32_t size)
return true;
}
-float
+uint32_t
JackDriver::sample_rate()
{
DBusMessage* reply_ptr = nullptr;
@@ -808,56 +856,6 @@ JackDriver::sample_rate()
return sample_rate;
}
-uint32_t
-JackDriver::get_xruns()
-{
- DBusMessage* reply_ptr = nullptr;
- dbus_uint32_t xruns = 0u;
-
- if (_server_responding && !_server_started) {
- return 0;
- }
-
- if (!call(true,
- JACKDBUS_IFACE_CONTROL,
- "GetXruns",
- &reply_ptr,
- DBUS_TYPE_INVALID)) {
- return 0;
- }
-
- if (!dbus_message_get_args(reply_ptr,
- &_dbus_error,
- DBUS_TYPE_UINT32,
- &xruns,
- DBUS_TYPE_INVALID)) {
- dbus_message_unref(reply_ptr);
- dbus_error_free(&_dbus_error);
- error_msg("Decoding reply of GetXruns failed");
- return 0;
- }
-
- dbus_message_unref(reply_ptr);
-
- return xruns;
-}
-
-void
-JackDriver::reset_xruns()
-{
- DBusMessage* reply_ptr = nullptr;
-
- if (!call(true,
- JACKDBUS_IFACE_CONTROL,
- "ResetXruns",
- &reply_ptr,
- DBUS_TYPE_INVALID)) {
- return;
- }
-
- dbus_message_unref(reply_ptr);
-}
-
PortType
JackDriver::patchage_port_type(const dbus_uint32_t dbus_port_type) const
{