diff --git a/srcpkgs/patchage/patchage.rshlibs b/srcpkgs/patchage/patchage.rshlibs index 64ae1271ea..f50b8e58f3 100644 --- a/srcpkgs/patchage/patchage.rshlibs +++ b/srcpkgs/patchage/patchage.rshlibs @@ -31,7 +31,6 @@ libdbus-glib-1.so.2 libgthread-2.0.so.0 librt.so.1 libraul.so.10 -libjack.so.0 libasound.so.2 libdl.so.2 libstdc++.so.6 diff --git a/srcpkgs/patchage/patches/fix-jack-dbus-upstream-r2985.diff b/srcpkgs/patchage/patches/fix-jack-dbus-upstream-r2985.diff new file mode 100644 index 0000000000..89495c60d8 --- /dev/null +++ b/srcpkgs/patchage/patches/fix-jack-dbus-upstream-r2985.diff @@ -0,0 +1,401 @@ +Index: src/JackDbusDriver.cpp +=================================================================== +--- src/JackDbusDriver.cpp (revision 2804) ++++ src/JackDbusDriver.cpp (revision 2985) +@@ -40,18 +40,19 @@ + #include "PatchageModule.hpp" + +-#define JACKDBUS_SERVICE "org.jackaudio.service" +-#define JACKDBUS_OBJECT "/org/jackaudio/Controller" +-#define JACKDBUS_IFACE_CONTROL "org.jackaudio.JackControl" +-#define JACKDBUS_IFACE_PATCHBAY "org.jackaudio.JackPatchbay" ++#define JACKDBUS_SERVICE "org.jackaudio.service" ++#define JACKDBUS_OBJECT "/org/jackaudio/Controller" ++#define JACKDBUS_IFACE_CONTROL "org.jackaudio.JackControl" ++#define JACKDBUS_IFACE_PATCHBAY "org.jackaudio.JackPatchbay" ++ + #define JACKDBUS_CALL_DEFAULT_TIMEOUT 1000 // in milliseconds + +-#define JACKDBUS_PORT_FLAG_INPUT 0x00000001 +-#define JACKDBUS_PORT_FLAG_OUTPUT 0x00000002 +-#define JACKDBUS_PORT_FLAG_PHYSICAL 0x00000004 +-#define JACKDBUS_PORT_FLAG_CAN_MONITOR 0x00000008 +-#define JACKDBUS_PORT_FLAG_TERMINAL 0x00000010 +- +-#define JACKDBUS_PORT_TYPE_AUDIO 0 +-#define JACKDBUS_PORT_TYPE_MIDI 1 ++#define JACKDBUS_PORT_FLAG_INPUT 0x00000001 ++#define JACKDBUS_PORT_FLAG_OUTPUT 0x00000002 ++#define JACKDBUS_PORT_FLAG_PHYSICAL 0x00000004 ++#define JACKDBUS_PORT_FLAG_CAN_MONITOR 0x00000008 ++#define JACKDBUS_PORT_FLAG_TERMINAL 0x00000010 ++ ++#define JACKDBUS_PORT_TYPE_AUDIO 0 ++#define JACKDBUS_PORT_TYPE_MIDI 1 + + //#define LOG_TO_STD +@@ -59,5 +60,4 @@ + + //#define USE_FULL_REFRESH +- + + JackDriver::JackDriver(Patchage* app) +@@ -72,5 +72,4 @@ + } + +- + JackDriver::~JackDriver() + { +@@ -84,5 +83,4 @@ + } + +- + /** Destroy all JACK (canvas) ports. + */ +@@ -90,12 +88,12 @@ + JackDriver::destroy_all() + { +- ItemList modules = _app->canvas()->items(); // copy +- for (ItemList::iterator m = modules.begin(); m != modules.end(); ++m) { +- SharedPtr module = PtrCast(*m); ++ FlowCanvas::ItemList modules = _app->canvas()->items(); // copy ++ for (FlowCanvas::ItemList::iterator m = modules.begin(); m != modules.end(); ++m) { ++ SharedPtr module = PtrCast(*m); + if (!module) + continue; + +- PortVector ports = module->ports(); // copy +- for (PortVector::iterator p = ports.begin(); p != ports.end(); ++p) { ++ FlowCanvas::PortVector ports = module->ports(); // copy ++ for (FlowCanvas::PortVector::iterator p = ports.begin(); p != ports.end(); ++p) { + SharedPtr port = boost::dynamic_pointer_cast(*p); + if (port && (port->type() == JACK_AUDIO || port->type() == JACK_MIDI)) { +@@ -112,5 +110,4 @@ + } + +- + void + JackDriver::update_attached() +@@ -137,5 +134,4 @@ + } + +- + void + JackDriver::on_jack_appeared() +@@ -145,5 +141,4 @@ + } + +- + void + JackDriver::on_jack_disappeared() +@@ -161,5 +156,4 @@ + _server_started = false; + } +- + + /** Handle signals we have subscribed for in attach(). */ +@@ -368,5 +362,4 @@ + } + +- + bool + JackDriver::call( +@@ -417,5 +410,4 @@ + } + +- + bool + JackDriver::is_started() +@@ -442,5 +434,4 @@ + } + +- + void + JackDriver::start_server() +@@ -456,5 +447,4 @@ + update_attached(); + } +- + + void +@@ -474,5 +464,4 @@ + } + } +- + + void +@@ -514,5 +503,4 @@ + } + +- + void + JackDriver::detach() +@@ -520,5 +508,4 @@ + stop_server(); + } +- + + bool +@@ -527,5 +514,4 @@ + return _dbus_connection && _server_responding; + } +- + + void +@@ -551,5 +537,4 @@ + _app->enqueue_resize(module); + } +- + + void +@@ -590,5 +575,4 @@ + } + +- + void + JackDriver::remove_port( +@@ -626,5 +610,4 @@ + } + +- + SharedPtr + JackDriver::find_or_create_module( +@@ -642,5 +625,4 @@ + return module; + } +- + + void +@@ -658,5 +640,5 @@ + SharedPtr port1 = _app->canvas()->find_port_by_name(client1_name, port1_name); + if (!port1) { +- error_msg((string)"Unable to connect unknown port '" + port1_name + "' of client '" + client1_name + "'"); ++ error_msg((std::string)"Unable to connect unknown port '" + port1_name + "' of client '" + client1_name + "'"); + return; + } +@@ -664,5 +646,5 @@ + SharedPtr port2 = _app->canvas()->find_port_by_name(client2_name, port2_name); + if (!port2) { +- error_msg((string)"Unable to connect unknown port '" + port2_name + "' of client '" + client2_name + "'"); ++ error_msg((std::string)"Unable to connect unknown port '" + port2_name + "' of client '" + client2_name + "'"); + return; + } +@@ -670,5 +652,4 @@ + _app->canvas()->add_connection(port1, port2, port1->color() + 0x22222200); + } +- + + void +@@ -686,5 +667,5 @@ + SharedPtr port1 = _app->canvas()->find_port_by_name(client1_name, port1_name); + if (!port1) { +- error_msg((string)"Unable to disconnect unknown port '" + port1_name + "' of client '" + client1_name + "'"); ++ error_msg((std::string)"Unable to disconnect unknown port '" + port1_name + "' of client '" + client1_name + "'"); + return; + } +@@ -692,5 +673,5 @@ + SharedPtr port2 = _app->canvas()->find_port_by_name(client2_name, port2_name); + if (!port2) { +- error_msg((string)"Unable to disconnect unknown port '" + port2_name + "' of client '" + client2_name + "'"); ++ error_msg((std::string)"Unable to disconnect unknown port '" + port2_name + "' of client '" + client2_name + "'"); + return; + } +@@ -698,5 +679,4 @@ + _app->canvas()->remove_connection(port1, port2); + } +- + + void +@@ -739,5 +719,5 @@ + + if (strcmp(reply_signature, "ta(tsa(tsuu))a(tstststst)") != 0) { +- error_msg((string )"GetGraph() reply signature mismatch. " + reply_signature); ++ error_msg((std::string)"GetGraph() reply signature mismatch. " + reply_signature); + goto unref; + } +@@ -858,5 +838,4 @@ + } + +- + void + JackDriver::refresh() +@@ -864,5 +843,4 @@ + refresh_internal(true); + } +- + + bool +@@ -895,5 +873,4 @@ + } + +- + bool + JackDriver::disconnect( +@@ -925,5 +902,4 @@ + } + +- + jack_nframes_t + JackDriver::buffer_size() +@@ -955,5 +931,4 @@ + } + +- + bool + JackDriver::set_buffer_size(jack_nframes_t size) +@@ -972,5 +947,4 @@ + return true; + } +- + + float +@@ -996,18 +970,20 @@ + } + +- + bool + JackDriver::is_realtime() const + { + DBusMessage* reply_ptr; +- dbus_bool_t realtime; +- +- if (!this->call(true, JACKDBUS_IFACE_CONTROL, "IsRealtime", &reply_ptr, DBUS_TYPE_INVALID)) { ++ dbus_bool_t realtime; ++ ++ JackDriver* me = const_cast(this); ++ if (!me->call(true, JACKDBUS_IFACE_CONTROL, "IsRealtime", ++ &reply_ptr, DBUS_TYPE_INVALID)) { + return false; + } + +- if (!dbus_message_get_args(reply_ptr, &this->_dbus_error, DBUS_TYPE_BOOLEAN, &realtime, DBUS_TYPE_INVALID)) { ++ if (!dbus_message_get_args(reply_ptr, &me->_dbus_error, DBUS_TYPE_BOOLEAN, ++ &realtime, DBUS_TYPE_INVALID)) { + dbus_message_unref(reply_ptr); +- dbus_error_free(&this->_dbus_error); ++ dbus_error_free(&me->_dbus_error); + error_msg("decoding reply of IsRealtime failed."); + return false; +@@ -1018,5 +994,4 @@ + return realtime; + } +- + + size_t +@@ -1046,5 +1021,4 @@ + } + +- + void + JackDriver::reset_xruns() +@@ -1058,5 +1032,4 @@ + dbus_message_unref(reply_ptr); + } +- + + float +@@ -1092,5 +1065,4 @@ + } + +- + void + JackDriver::reset_max_dsp_load() +@@ -1098,5 +1070,4 @@ + _max_dsp_load = 0.0; + } +- + + SharedPtr +@@ -1108,5 +1079,4 @@ + } + +- + void + JackDriver::error_msg(const std::string& msg) const +@@ -1121,5 +1091,4 @@ + } + +- + void + JackDriver::info_msg(const std::string& msg) const +Index: src/JackDbusDriver.hpp +=================================================================== +--- src/JackDbusDriver.hpp (revision 2804) ++++ src/JackDbusDriver.hpp (revision 2985) +@@ -77,18 +77,18 @@ + + boost::shared_ptr find_or_create_module( +- ModuleType type, ++ ModuleType type, + const std::string& name); + + void add_port( + boost::shared_ptr& module, +- PortType type, +- const std::string& name, +- bool is_input); ++ PortType type, ++ const std::string& name, ++ bool is_input); + + void add_port( + dbus_uint64_t client_id, +- const char *client_name, ++ const char* client_name, + dbus_uint64_t port_id, +- const char *port_name, ++ const char* port_name, + dbus_uint32_t port_flags, + dbus_uint32_t port_type); +@@ -96,36 +96,36 @@ + void remove_port( + dbus_uint64_t client_id, +- const char *client_name, ++ const char* client_name, + dbus_uint64_t port_id, +- const char *port_name); ++ const char* port_name); + + void connect_ports( + dbus_uint64_t connection_id, + dbus_uint64_t client1_id, +- const char *client1_name, ++ const char* client1_name, + dbus_uint64_t port1_id, +- const char *port1_name, ++ const char* port1_name, + dbus_uint64_t client2_id, +- const char *client2_name, ++ const char* client2_name, + dbus_uint64_t port2_id, +- const char *port2_name); ++ const char* port2_name); + + void disconnect_ports( + dbus_uint64_t connection_id, + dbus_uint64_t client1_id, +- const char *client1_name, ++ const char* client1_name, + dbus_uint64_t port1_id, +- const char *port1_name, ++ const char* port1_name, + dbus_uint64_t client2_id, +- const char *client2_name, ++ const char* client2_name, + dbus_uint64_t port2_id, +- const char *port2_name); ++ const char* port2_name); + + bool call( +- bool response_expected, +- const char* iface, +- const char* method, +- DBusMessage ** reply_ptr_ptr, +- int in_type, ++ bool response_expected, ++ const char* iface, ++ const char* method, ++ DBusMessage** reply_ptr_ptr, ++ int in_type, + ...); +