add conditional use of jack_port_rename(), a newly added public API for JACK
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 2 Jul 2015 18:02:00 +0000 (14:02 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 2 Jul 2015 18:02:07 +0000 (14:02 -0400)
libs/backends/jack/jack_portengine.cc
libs/backends/jack/weak_libjack.def
libs/backends/jack/weak_libjack.h
libs/backends/jack/wscript

index 1f0515b0e8c2b19eb084ffe8f1e02dc19efd05a0..8aa489dbcaa7380803a9adee7430fe439b8ea586 100644 (file)
@@ -106,7 +106,16 @@ JACKAudioBackend::when_connected_to_jack ()
 int
 JACKAudioBackend::set_port_name (PortHandle port, const std::string& name)
 {
+#if HAVE_JACK_PORT_RENAME
+       jack_client_t* client = _jack_connection->jack();
+       if (client) {
+               return jack_port_rename (client, (jack_port_t*) port, name.c_str());
+       } else {
+               return -1;
+       }
+#else
        return jack_port_set_name ((jack_port_t*) port, name.c_str());
+#endif
 }
 
 string
index 5a3e08069119e6b174e1a1f89327c0fa1a49a396..80ab61afafe9b5a7685f513b11a9c54a680459f5 100644 (file)
@@ -66,6 +66,7 @@ JPFUN(1, const char *,   port_type, (const jack_port_t *p), (p), 0)
 JPFUN(1, const char **,  port_get_connections, (const jack_port_t *p), (p), 0)
 JPFUN(1, const char **,  port_get_all_connections, (const jack_client_t *c, const jack_port_t *p), (c,p), 0)
 JPFUN(1, int,            port_set_name, (jack_port_t *p, const char *n), (p,n), 0)
+JVFUN(1,                 port_set_rename, (jack_client_t*, jack_port_t *p, const char *n), (c, p,n))
 JPFUN(1, int,            port_disconnect, (jack_client_t *c, jack_port_t *p), (c,p), 0)
 JPFUN(1, int,            connect, (jack_client_t *c, const char *s, const char *d), (c,s,d), -1)
 JPFUN(1, int,            disconnect, (jack_client_t *c, const char *s, const char *d), (c,s,d), -1)
index abfe3af8a832cd77ab83ea4c9348445a50065abf..769a62c5b8d8405a9315a63237b6ee48802f5ee8 100644 (file)
@@ -95,6 +95,7 @@ int have_libjack(void);
 #define jack_port_by_name                   WJACK_port_by_name
 #define jack_port_by_id                     WJACK_port_by_id
 #define jack_port_set_name                  WJACK_port_set_name
+#define jack_port_rename                    WJACK_port_rename
 #define jack_port_disconnect                WJACK_port_disconnect
 #define jack_port_register                  WJACK_port_register
 #define jack_port_unregister                WJACK_port_unregister
index fca22300da26298a0622f8aa40187e00577f94f7..366fcd26874cc6ae9993f6b97c401a8966fb2a33 100644 (file)
@@ -45,7 +45,16 @@ def configure(conf):
                    errmsg = 'not found (or broken). JACK metadata API will not be used',
                    define_name = 'HAVE_JACK_METADATA',
                    uselib = 'JACK')
-    
+
+    # Check to see if jack_port_rename() is available and working
+    conf.check_cxx(fragment = "#include <jack/jack.h>\nint main(void) { jack_client_t* c; jack_port_t* p; jack_port_rename (c, p, \"foo\"); return 0; }\n",
+                   mandatory = False,
+                   msg = 'Checking for jack_port_rename()',
+                   okmsg = 'ok',
+                   errmsg = 'not found (or broken). jack_port_rename() will not be used, and jack_port_set_name() will be used instead',
+                   define_name = 'HAVE_JACK_PORT_RENAME',
+                   uselib = 'JACK')
+
 def build(bld):
     obj = bld(features = 'c cxx cxxshlib')
     obj.source = [ 
@@ -73,6 +82,10 @@ def build(bld):
         obj.cxxflags += [ '-DHAVE_JACK_METADATA' ]
         obj.cflags += [ '-DHAVE_JACK_METADATA' ]
 
+    if bld.is_defined ('HAVE_JACK_PORT_RENAME'):
+        obj.cxxflags += [ '-DHAVE_JACK_PORT_RENAME' ]
+        obj.cflags += [ '-DHAVE_JACK_PORT_RENAME' ]
+
     if (bld.env['build_target'] == 'mingw'):
         obj.uselib   = [ 'PORTAUDIO' ]
     else: