diff --git a/src/catia.py b/src/catia.py index e5c0808..ba266ee 100755 --- a/src/catia.py +++ b/src/catia.py @@ -392,8 +392,8 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW): jacklib.set_port_connect_callback(jack.client, self.JackPortConnectCallback, None) jacklib.on_shutdown(jack.client, self.JackShutdownCallback, None) - #if (JACK2): - #jacklib.set_port_rename_callback(jack.client, self.JackPortRenameCallback, None) + if (JACK2): + jacklib.set_port_rename_callback(jack.client, self.JackPortRenameCallback, None) def init_ports_prepare(self): pass @@ -559,8 +559,13 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW): else: self.canvas_remove_group(group_name) - #def canvas_rename_port(self, port_id, port_name): - #patchcanvas.renamePort(port_id, port_name.split(":")[-1]) + #def canvas_rename_port(self, port_id, port_short_name): + #patchcanvas.renamePort(port_id, port_short_name) + + #for port in self.m_port_list: + #if (port[iPortNameR] == old_name): + #port_id = port[iPortId] + #port[iPortNameR] = new_name def canvas_connect_ports(self, port_out_name, port_in_name): port_out_id = -1 @@ -744,9 +749,8 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW): return 0 def JackPortRenameCallback(self, port_id, old_name, new_name, arg=None): - # FIXME - check string args if (DEBUG): print("JackPortRenameCallback(%i, %s, %s)" % (port_id, old_name, new_name)) - self.emit(SIGNAL("PortRenameCallback(int, QString, QString)"), port_id, old_name, new_name) + self.emit(SIGNAL("PortRenameCallback(int, QString, QString)"), port_id, str(old_name, encoding="ascii"), str(new_name, encoding="ascii")) return 0 def JackShutdownCallback(self, arg=None): @@ -840,8 +844,14 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW): self.canvas_disconnect_ports(port_a_nameR, port_b_nameR) @pyqtSlot(int, str, str) - def slot_PortRenameCallback(self, port_id, old_name, new_name): - pass + def slot_PortRenameCallback(self, port_id_jack, old_name, new_name): + print(port_id_jack, old_name, new_name) + #for port in self.m_port_list: + #if (port[iPortNameR] == old_name): + #port_id = port[iPortId] + #else: + #return + #self.canvas_rename_port(port_id, new_name) @pyqtSlot() @@ -960,7 +970,7 @@ if __name__ == '__main__': a2j_client_name = None if (DBus.jack or DBus.a2j): - string = "Catia - using DBus for " + string = "Using DBus for " if (DBus.jack): string += "JACK" if (DBus.a2j): diff --git a/src/jacklib.py b/src/jacklib.py index bbe1c98..ecc6cfe 100644 --- a/src/jacklib.py +++ b/src/jacklib.py @@ -62,6 +62,7 @@ jack_intclient_t = c_uint64 jack_port_t = _jack_port jack_client_t = _jack_client jack_port_id_t = c_uint32 +jack_port_type_id_t = c_uint32 # JACK2 only jack_native_thread_t = pthread_t jack_options_t = c_enum # JackOptions jack_status_t = c_enum # JackStatus @@ -235,6 +236,7 @@ JackSampleRateCallback = CFUNCTYPE(c_int, jack_nframes_t, c_void_p) JackPortRegistrationCallback = CFUNCTYPE(None, jack_port_id_t, c_int, c_void_p) JackClientRegistrationCallback = CFUNCTYPE(None, c_char_p, c_int, c_void_p) JackPortConnectCallback = CFUNCTYPE(None, jack_port_id_t, jack_port_id_t, c_int, c_void_p) +JackPortRenameCallback = CFUNCTYPE(c_int, jack_port_id_t, c_char_p, c_char_p, c_void_p) JackFreewheelCallback = CFUNCTYPE(None, c_int, c_void_p) JackThreadCallback = CFUNCTYPE(c_void_p, c_void_p) JackShutdownCallback = CFUNCTYPE(None, c_void_p) @@ -246,6 +248,11 @@ JackSessionCallback = CFUNCTYPE(None, jack_session_event_t, c_void_p) # --------------------------------------------------------------------------------------------------------------------- # Functions +def get_version_string(): # JACK2 only + jacklib.jack_get_version_string.argtypes = None + jacklib.jack_get_version_string.restype = c_char_p + return jacklib.jack_get_version_string() + def client_open(client_name, options, status): jacklib.jack_client_open.argtypes = [c_char_p, jack_options_t, POINTER(jack_status_t)] jacklib.jack_client_open.restype = POINTER(jack_client_t) @@ -291,6 +298,11 @@ def deactivate(client): jacklib.jack_deactivate.restype = c_int return jacklib.jack_deactivate(client) +def get_client_pid(name): # JACK2 only + jacklib.jack_get_client_pid.argtypes = [c_char_p] + jacklib.jack_get_client_pid.restype = c_int + return jacklib.jack_get_client_pid(name.encode("ascii")) + def client_thread_id(client): jacklib.jack_client_thread_id.argtypes = [POINTER(jack_client_t)] jacklib.jack_client_thread_id.restype = jack_native_thread_t @@ -399,6 +411,13 @@ def set_port_connect_callback(client, connect_callback, arg): jacklib.jack_set_port_connect_callback.restype = c_int return jacklib.jack_set_port_connect_callback(client, _connect_callback, arg) +def set_port_rename_callback(client, rename_callback, arg): + global _rename_callback + _rename_callback = JackPortRenameCallback(rename_callback) + jacklib.jack_set_port_rename_callback.argtypes = [POINTER(jack_client_t), JackPortRenameCallback, c_void_p] + jacklib.jack_set_port_rename_callback.restype = c_int + return jacklib.jack_set_port_rename_callback(client, _rename_callback, arg) + def set_graph_order_callback(client, graph_callback, arg): global _graph_callback _graph_callback = JackGraphOrderCallback(graph_callback) @@ -491,6 +510,11 @@ def port_type(port): jacklib.jack_port_type.restype = c_char_p return jacklib.jack_port_type(port) +def port_type_id(port): # JACK2 only + jacklib.jack_port_type_id.argtypes = [POINTER(jack_port_t)] + jacklib.jack_port_type_id.restype = jack_port_type_id_t + return jacklib.jack_port_type_id(port) + def port_is_mine(client, port): jacklib.jack_port_is_mine.argtypes = [POINTER(jack_client_t), POINTER(jack_port_t)] jacklib.jack_port_is_mine.restype = c_int diff --git a/src/shared_jack.py b/src/shared_jack.py index f7cacd2..f88c412 100644 --- a/src/shared_jack.py +++ b/src/shared_jack.py @@ -27,8 +27,9 @@ from jacklib_helpers import * # Have JACK2 ? try: - jacklib.get_version_string() JACK2 = True + version_str = str(jacklib.get_version_string(), encoding="ascii") + print("Using JACK2, version %s" % (version_str)) except: JACK2 = False