Browse Source

rebase from trunk 3966:4004

git-svn-id: http://subversion.jackaudio.org/jack/jack2/branches/libjacknet@4005 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.9.8
sletz 15 years ago
parent
commit
249c0c3b5d
24 changed files with 361 additions and 265 deletions
  1. +13
    -1
      ChangeLog
  2. +33
    -153
      common/JackAPI.cpp
  3. +0
    -24
      common/JackConstants.h
  4. +1
    -1
      common/JackDriverLoader.cpp
  5. +60
    -8
      common/JackLibAPI.cpp
  6. +57
    -7
      common/JackServerAPI.cpp
  7. +3
    -3
      common/jack/jack.h
  8. +7
    -1
      dbus/sigsegv.c
  9. +25
    -6
      example-clients/connect.c
  10. +15
    -15
      example-clients/netsource.c
  11. +1
    -1
      example-clients/wscript
  12. +16
    -6
      linux/JackAtomic_os.h
  13. +4
    -0
      linux/JackPlatformPlug_os.h
  14. +8
    -5
      linux/alsa/JackAlsaDriver.cpp
  15. +1
    -1
      linux/alsa/JackAlsaDriver.h
  16. +14
    -0
      linux/cycles.h
  17. +4
    -4
      linux/firewire/JackFFADODriver.cpp
  18. +7
    -7
      macosx/JackAtomic_os.h
  19. +4
    -0
      macosx/JackPlatformPlug_os.h
  20. +74
    -18
      macosx/Jackdmp.xcodeproj/project.pbxproj
  21. +5
    -3
      macosx/coremidi/JackCoreMidiDriver.cpp
  22. +1
    -1
      posix/JackFifo.cpp
  23. +4
    -0
      solaris/JackPlatformPlug_os.h
  24. +4
    -0
      windows/JackPlatformPlug_os.h

+ 13
- 1
ChangeLog View File

@@ -29,11 +29,23 @@ Arnold Krille
--------------------------- ---------------------------
Jackdmp changes log Jackdmp changes log
--------------------------- ---------------------------

2010-04-016 Stephane Letz <letz@grame.fr>
* Make jack_connect/jack_disconnect wait for effective port connection/disconnection.

2010-04-07 Stephane Letz <letz@grame.fr>
* Remove call to exit in library code.

2010-03-26 Stephane Letz <letz@grame.fr>
* ffado-portname-sync.patch from ticket #163 applied.
2010-03-24 Stephane Letz <letz@grame.fr> 2010-03-24 Stephane Letz <letz@grame.fr>
* On Windows, now use TRE library for regexp (BSD license instead of GPL license). * On Windows, now use TRE library for regexp (BSD license instead of GPL license).
2010-03-19 Stephane Letz <letz@grame.fr> 2010-03-19 Stephane Letz <letz@grame.fr>
* Fix some file header to have library side code use LGPL. * Fix some file header to have library side code use LGPL.


+ 33
- 153
common/JackAPI.cpp View File

@@ -56,9 +56,9 @@ extern "C"
const char * const char *
jack_get_version_string(); jack_get_version_string();


EXPORT jack_client_t * jack_client_open_aux (const char *client_name,
jack_client_t * jack_client_new_aux (const char *client_name,
jack_options_t options, jack_options_t options,
jack_status_t *status, va_list ap);
jack_status_t *status);
EXPORT jack_client_t * jack_client_open (const char *client_name, EXPORT jack_client_t * jack_client_open (const char *client_name,
jack_options_t options, jack_options_t options,
jack_status_t *status, ...); jack_status_t *status, ...);
@@ -300,7 +300,7 @@ EXPORT jack_client_t* jack_client_new(const char* client_name)
int options = JackUseExactName; int options = JackUseExactName;
if (getenv("JACK_START_SERVER") == NULL) if (getenv("JACK_START_SERVER") == NULL)
options |= JackNoStartServer; options |= JackNoStartServer;
jack_client_t* res = jack_client_open_aux(client_name, (jack_options_t)options, NULL, NULL);
jack_client_t* res = jack_client_new_aux(client_name, (jack_options_t)options, NULL);
JackGlobals::fOpenMutex->Unlock(); JackGlobals::fOpenMutex->Unlock();
return res; return res;
} catch (std::bad_alloc& e) { } catch (std::bad_alloc& e) {
@@ -317,11 +317,7 @@ EXPORT void* jack_port_get_buffer(jack_port_t* port, jack_nframes_t frames)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_get_buffer"); JackGlobals::CheckContext("jack_port_get_buffer");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_get_buffer called with an incorrect port %ld", myport); jack_error("jack_port_get_buffer called with an incorrect port %ld", myport);
@@ -337,11 +333,7 @@ EXPORT const char* jack_port_name(const jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_name"); JackGlobals::CheckContext("jack_port_name");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_name called with an incorrect port %ld", myport); jack_error("jack_port_name called with an incorrect port %ld", myport);
@@ -357,11 +349,7 @@ EXPORT const char* jack_port_short_name(const jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_short_name"); JackGlobals::CheckContext("jack_port_short_name");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_short_name called with an incorrect port %ld", myport); jack_error("jack_port_short_name called with an incorrect port %ld", myport);
@@ -377,11 +365,7 @@ EXPORT int jack_port_flags(const jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_flags"); JackGlobals::CheckContext("jack_port_flags");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_flags called with an incorrect port %ld", myport); jack_error("jack_port_flags called with an incorrect port %ld", myport);
@@ -397,11 +381,7 @@ EXPORT const char* jack_port_type(const jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_type"); JackGlobals::CheckContext("jack_port_type");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_flags called an incorrect port %ld", myport); jack_error("jack_port_flags called an incorrect port %ld", myport);
@@ -417,11 +397,7 @@ EXPORT jack_port_type_id_t jack_port_type_id(const jack_port_t *port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_type_id"); JackGlobals::CheckContext("jack_port_type_id");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_type_id called an incorrect port %ld", myport); jack_error("jack_port_type_id called an incorrect port %ld", myport);
@@ -437,11 +413,7 @@ EXPORT int jack_port_connected(const jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_connected"); JackGlobals::CheckContext("jack_port_connected");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_connected called with an incorrect port %ld", myport); jack_error("jack_port_connected called with an incorrect port %ld", myport);
@@ -458,11 +430,7 @@ EXPORT int jack_port_connected_to(const jack_port_t* port, const char* port_name
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_connected_to"); JackGlobals::CheckContext("jack_port_connected_to");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t src = (jack_port_id_t)port_aux; jack_port_id_t src = (jack_port_id_t)port_aux;
if (!CheckPort(src)) { if (!CheckPort(src)) {
jack_error("jack_port_connected_to called with an incorrect port %ld", src); jack_error("jack_port_connected_to called with an incorrect port %ld", src);
@@ -488,21 +456,13 @@ EXPORT int jack_port_tie(jack_port_t* src, jack_port_t* dst)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_tie"); JackGlobals::CheckContext("jack_port_tie");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t src_aux = (uint64_t)src;
#else
uint32_t src_aux = (uint32_t)src;
#endif
uintptr_t src_aux = (uintptr_t)src;
jack_port_id_t mysrc = (jack_port_id_t)src_aux; jack_port_id_t mysrc = (jack_port_id_t)src_aux;
if (!CheckPort(mysrc)) { if (!CheckPort(mysrc)) {
jack_error("jack_port_tie called with a NULL src port"); jack_error("jack_port_tie called with a NULL src port");
return -1; return -1;
} }
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t dst_aux = (uint64_t)dst;
#else
uint32_t dst_aux = (uint32_t)dst;
#endif
uintptr_t dst_aux = (uintptr_t)dst;
jack_port_id_t mydst = (jack_port_id_t)dst_aux; jack_port_id_t mydst = (jack_port_id_t)dst_aux;
if (!CheckPort(mydst)) { if (!CheckPort(mydst)) {
jack_error("jack_port_tie called with a NULL dst port"); jack_error("jack_port_tie called with a NULL dst port");
@@ -522,11 +482,7 @@ EXPORT int jack_port_untie(jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_untie"); JackGlobals::CheckContext("jack_port_untie");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_untie called with an incorrect port %ld", myport); jack_error("jack_port_untie called with an incorrect port %ld", myport);
@@ -542,11 +498,7 @@ EXPORT jack_nframes_t jack_port_get_latency(jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_get_latency"); JackGlobals::CheckContext("jack_port_get_latency");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_get_latency called with an incorrect port %ld", myport); jack_error("jack_port_get_latency called with an incorrect port %ld", myport);
@@ -563,11 +515,7 @@ EXPORT void jack_port_set_latency(jack_port_t* port, jack_nframes_t frames)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_set_latency"); JackGlobals::CheckContext("jack_port_set_latency");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_set_latency called with an incorrect port %ld", myport); jack_error("jack_port_set_latency called with an incorrect port %ld", myport);
@@ -585,11 +533,7 @@ EXPORT int jack_recompute_total_latency(jack_client_t* ext_client, jack_port_t*
#endif #endif


JackClient* client = (JackClient*)ext_client; JackClient* client = (JackClient*)ext_client;
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (client == NULL) { if (client == NULL) {
jack_error("jack_recompute_total_latencies called with a NULL client"); jack_error("jack_recompute_total_latencies called with a NULL client");
@@ -630,11 +574,7 @@ EXPORT int jack_port_set_name(jack_port_t* port, const char* name)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_set_name"); JackGlobals::CheckContext("jack_port_set_name");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_set_name called with an incorrect port %ld", myport); jack_error("jack_port_set_name called with an incorrect port %ld", myport);
@@ -660,11 +600,7 @@ EXPORT int jack_port_set_alias(jack_port_t* port, const char* name)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_set_alias"); JackGlobals::CheckContext("jack_port_set_alias");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_set_alias called with an incorrect port %ld", myport); jack_error("jack_port_set_alias called with an incorrect port %ld", myport);
@@ -683,11 +619,7 @@ EXPORT int jack_port_unset_alias(jack_port_t* port, const char* name)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_unset_alias"); JackGlobals::CheckContext("jack_port_unset_alias");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_unset_alias called with an incorrect port %ld", myport); jack_error("jack_port_unset_alias called with an incorrect port %ld", myport);
@@ -706,11 +638,7 @@ EXPORT int jack_port_get_aliases(const jack_port_t* port, char* const aliases[2]
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_get_aliases"); JackGlobals::CheckContext("jack_port_get_aliases");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_get_aliases called with an incorrect port %ld", myport); jack_error("jack_port_get_aliases called with an incorrect port %ld", myport);
@@ -726,11 +654,7 @@ EXPORT int jack_port_request_monitor(jack_port_t* port, int onoff)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_request_monitor"); JackGlobals::CheckContext("jack_port_request_monitor");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_request_monitor called with an incorrect port %ld", myport); jack_error("jack_port_request_monitor called with an incorrect port %ld", myport);
@@ -769,11 +693,7 @@ EXPORT int jack_port_ensure_monitor(jack_port_t* port, int onoff)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_ensure_monitor"); JackGlobals::CheckContext("jack_port_ensure_monitor");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_ensure_monitor called with an incorrect port %ld", myport); jack_error("jack_port_ensure_monitor called with an incorrect port %ld", myport);
@@ -789,11 +709,7 @@ EXPORT int jack_port_monitoring_input(jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_monitoring_input"); JackGlobals::CheckContext("jack_port_monitoring_input");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_monitoring_input called with an incorrect port %ld", myport); jack_error("jack_port_monitoring_input called with an incorrect port %ld", myport);
@@ -1128,11 +1044,7 @@ EXPORT jack_port_t* jack_port_register(jack_client_t* ext_client, const char* po
jack_error("jack_port_register called with a NULL port name or a NULL port_type"); jack_error("jack_port_register called with a NULL port name or a NULL port_type");
return NULL; return NULL;
} else { } else {
#if defined(__x86_64__) || defined(__ppc64__)
return (jack_port_t *)((uint64_t)client->PortRegister(port_name, port_type, flags, buffer_size));
#else
return (jack_port_t *)client->PortRegister(port_name, port_type, flags, buffer_size);
#endif
return (jack_port_t *)((uintptr_t)client->PortRegister(port_name, port_type, flags, buffer_size));
} }
} }


@@ -1146,11 +1058,7 @@ EXPORT int jack_port_unregister(jack_client_t* ext_client, jack_port_t* port)
jack_error("jack_port_unregister called with a NULL client"); jack_error("jack_port_unregister called with a NULL client");
return -1; return -1;
} }
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_unregister called with an incorrect port %ld", myport); jack_error("jack_port_unregister called with an incorrect port %ld", myport);
@@ -1169,11 +1077,7 @@ EXPORT int jack_port_is_mine(const jack_client_t* ext_client, const jack_port_t*
jack_error("jack_port_is_mine called with a NULL client"); jack_error("jack_port_is_mine called with a NULL client");
return -1; return -1;
} }
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_is_mine called with an incorrect port %ld", myport); jack_error("jack_port_is_mine called with an incorrect port %ld", myport);
@@ -1187,11 +1091,7 @@ EXPORT const char** jack_port_get_connections(const jack_port_t* port)
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_port_get_connections"); JackGlobals::CheckContext("jack_port_get_connections");
#endif #endif
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_get_connections called with an incorrect port %ld", myport); jack_error("jack_port_get_connections called with an incorrect port %ld", myport);
@@ -1215,11 +1115,7 @@ EXPORT const char** jack_port_get_all_connections(const jack_client_t* ext_clien
return NULL; return NULL;
} }


#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_get_all_connections called with an incorrect port %ld", myport); jack_error("jack_port_get_all_connections called with an incorrect port %ld", myport);
@@ -1242,11 +1138,7 @@ EXPORT jack_nframes_t jack_port_get_total_latency(jack_client_t* ext_client, jac
return 0; return 0;
} }


#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)port;
#else
uint32_t port_aux = (uint32_t)port;
#endif
uintptr_t port_aux = (uintptr_t)port;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_get_total_latency called with an incorrect port %ld", myport); jack_error("jack_port_get_total_latency called with an incorrect port %ld", myport);
@@ -1307,11 +1199,7 @@ EXPORT int jack_port_disconnect(jack_client_t* ext_client, jack_port_t* src)
jack_error("jack_port_disconnect called with a NULL client"); jack_error("jack_port_disconnect called with a NULL client");
return -1; return -1;
} }
#if defined(__x86_64__) || defined(__ppc64__)
uint64_t port_aux = (uint64_t)src;
#else
uint32_t port_aux = (uint32_t)src;
#endif
uintptr_t port_aux = (uintptr_t)src;
jack_port_id_t myport = (jack_port_id_t)port_aux; jack_port_id_t myport = (jack_port_id_t)port_aux;
if (!CheckPort(myport)) { if (!CheckPort(myport)) {
jack_error("jack_port_disconnect called with an incorrect port %ld", myport); jack_error("jack_port_disconnect called with an incorrect port %ld", myport);
@@ -1383,11 +1271,7 @@ EXPORT jack_port_t* jack_port_by_name(jack_client_t* ext_client, const char* por
if (!manager) if (!manager)
return NULL; return NULL;
int res = manager->GetPort(portname); // returns a port index at least > 1 int res = manager->GetPort(portname); // returns a port index at least > 1
#if defined(__x86_64__) || defined(__ppc64__)
return (res == NO_PORT) ? NULL : (jack_port_t*)((uint64_t)res);
#else
return (res == NO_PORT) ? NULL : (jack_port_t*)res;
#endif
return (res == NO_PORT) ? NULL : (jack_port_t*)((uintptr_t)res);
} }
} }


@@ -1397,11 +1281,7 @@ EXPORT jack_port_t* jack_port_by_id(jack_client_t* ext_client, jack_port_id_t id
JackGlobals::CheckContext("jack_port_by_id"); JackGlobals::CheckContext("jack_port_by_id");
#endif #endif
/* jack_port_t* type is actually the port index */ /* jack_port_t* type is actually the port index */
#if defined(__x86_64__) || defined(__ppc64__)
return (jack_port_t*)((uint64_t)id);
#else
return (jack_port_t*)id;
#endif
return (jack_port_t*)((uintptr_t)id);
} }


EXPORT int jack_engine_takeover_timebase(jack_client_t* ext_client) EXPORT int jack_engine_takeover_timebase(jack_client_t* ext_client)


+ 0
- 24
common/JackConstants.h View File

@@ -59,30 +59,6 @@


#define JACK_DEFAULT_SERVER_NAME "default" #define JACK_DEFAULT_SERVER_NAME "default"


#ifdef WIN32
#define jack_server_dir "server"
#define jack_client_dir "client"
#define ADDON_DIR "jack"
#endif

#ifdef __APPLE__
#define jack_server_dir "/tmp"
#define jack_client_dir "/tmp"
#define JACK_DEFAULT_DRIVER "coreaudio"
#endif

#ifdef __linux__
#define jack_server_dir "/dev/shm"
#define jack_client_dir "/dev/shm"
#define JACK_DEFAULT_DRIVER "alsa"
#endif

#if defined(__sun__) || defined(sun)
#define jack_server_dir "/tmp"
#define jack_client_dir "/tmp"
#define JACK_DEFAULT_DRIVER "oss"
#endif

#define jack_server_entry "jackdmp_entry" #define jack_server_entry "jackdmp_entry"
#define jack_client_entry "jack_client" #define jack_client_entry "jack_client"




+ 1
- 1
common/JackDriverLoader.cpp View File

@@ -152,7 +152,7 @@ jack_parse_driver_params (jack_driver_desc_t * desc, int argc, char* argv[], JSL


fprintf (stderr, "Options for driver '%s':\n", desc->name); fprintf (stderr, "Options for driver '%s':\n", desc->name);
jack_print_driver_options (desc, stderr); jack_print_driver_options (desc, stderr);
exit (1);
return 1;
} }


for (param_index = 0; param_index < desc->nparams; param_index++) { for (param_index = 0; param_index < desc->nparams; param_index++) {


+ 60
- 8
common/JackLibAPI.cpp View File

@@ -36,7 +36,10 @@ extern "C"
{ {
#endif #endif


EXPORT jack_client_t * jack_client_open_aux (const char *client_name,
jack_client_t * jack_client_new_aux (const char *client_name,
jack_options_t options,
jack_status_t *status);
jack_client_t * jack_client_open_aux (const char *client_name,
jack_options_t options, jack_options_t options,
jack_status_t *status, va_list ap); jack_status_t *status, va_list ap);
EXPORT jack_client_t * jack_client_open (const char *client_name, EXPORT jack_client_t * jack_client_open (const char *client_name,
@@ -52,18 +55,18 @@ extern "C"
JackLibGlobals* JackLibGlobals::fGlobals = NULL; JackLibGlobals* JackLibGlobals::fGlobals = NULL;
int JackLibGlobals::fClientCount = 0; int JackLibGlobals::fClientCount = 0;


EXPORT jack_client_t* jack_client_open_aux(const char* client_name, jack_options_t options, jack_status_t* status, va_list ap)
jack_client_t* jack_client_new_aux(const char* client_name, jack_options_t options, jack_status_t* status)
{ {
jack_varargs_t va; /* variable arguments */ jack_varargs_t va; /* variable arguments */
jack_status_t my_status; jack_status_t my_status;
JackClient* client; JackClient* client;
if (client_name == NULL) { if (client_name == NULL) {
jack_error("jack_client_open called with a NULL client_name");
jack_error("jack_client_new called with a NULL client_name");
return NULL; return NULL;
} }


jack_log("jack_client_open %s", client_name);
jack_log("jack_client_new %s", client_name);
if (status == NULL) /* no status from caller? */ if (status == NULL) /* no status from caller? */
status = &my_status; /* use local status word */ status = &my_status; /* use local status word */
@@ -77,11 +80,60 @@ EXPORT jack_client_t* jack_client_open_aux(const char* client_name, jack_options
} }


/* parse variable arguments */ /* parse variable arguments */
if (ap) {
jack_varargs_parse(options, ap, &va);
jack_varargs_init(&va);
JackLibGlobals::Init(); // jack library initialisation

if (try_start_server(&va, options, status)) {
jack_error("jack server is not running or cannot be started");
JackLibGlobals::Destroy(); // jack library destruction
return 0;
}

if (JACK_DEBUG) {
client = new JackDebugClient(new JackLibClient(GetSynchroTable())); // Debug mode
} else { } else {
jack_varargs_init(&va);
client = new JackLibClient(GetSynchroTable());
}

int res = client->Open(va.server_name, client_name, options, status);
if (res < 0) {
delete client;
JackLibGlobals::Destroy(); // jack library destruction
int my_status1 = (JackFailure | JackServerError);
*status = (jack_status_t)my_status1;
return NULL;
} else {
return (jack_client_t*)client;
}
}

jack_client_t* jack_client_open_aux(const char* client_name, jack_options_t options, jack_status_t* status, va_list ap)
{
jack_varargs_t va; /* variable arguments */
jack_status_t my_status;
JackClient* client;
if (client_name == NULL) {
jack_error("jack_client_open called with a NULL client_name");
return NULL;
} }

jack_log("jack_client_open %s", client_name);
if (status == NULL) /* no status from caller? */
status = &my_status; /* use local status word */
*status = (jack_status_t)0;

/* validate parameters */
if ((options & ~JackOpenOptions)) {
int my_status1 = *status | (JackFailure | JackInvalidOption);
*status = (jack_status_t)my_status1;
return NULL;
}

/* parse variable arguments */
jack_varargs_parse(options, ap, &va);
JackLibGlobals::Init(); // jack library initialisation JackLibGlobals::Init(); // jack library initialisation


@@ -111,10 +163,10 @@ EXPORT jack_client_t* jack_client_open_aux(const char* client_name, jack_options


EXPORT jack_client_t* jack_client_open(const char* ext_client_name, jack_options_t options, jack_status_t* status, ...) EXPORT jack_client_t* jack_client_open(const char* ext_client_name, jack_options_t options, jack_status_t* status, ...)
{ {
try {
#ifdef __CLIENTDEBUG__ #ifdef __CLIENTDEBUG__
JackGlobals::CheckContext("jack_client_open"); JackGlobals::CheckContext("jack_client_open");
#endif #endif
try {
assert(JackGlobals::fOpenMutex); assert(JackGlobals::fOpenMutex);
JackGlobals::fOpenMutex->Lock(); JackGlobals::fOpenMutex->Lock();
va_list ap; va_list ap;


+ 57
- 7
common/JackServerAPI.cpp View File

@@ -33,7 +33,10 @@ extern "C"
{ {
#endif #endif


EXPORT jack_client_t * jack_client_open_aux (const char *client_name,
jack_client_t * jack_client_new_aux (const char *client_name,
jack_options_t options,
jack_status_t *status);
jack_client_t * jack_client_open_aux (const char *client_name,
jack_options_t options, jack_options_t options,
jack_status_t *status, va_list ap); jack_status_t *status, va_list ap);
EXPORT jack_client_t * jack_client_open (const char *client_name, EXPORT jack_client_t * jack_client_open (const char *client_name,
@@ -48,18 +51,18 @@ extern "C"


using namespace Jack; using namespace Jack;


EXPORT jack_client_t* jack_client_open_aux(const char* client_name, jack_options_t options, jack_status_t* status, va_list ap)
jack_client_t* jack_client_new_aux(const char* client_name, jack_options_t options, jack_status_t* status)
{ {
jack_varargs_t va; /* variable arguments */ jack_varargs_t va; /* variable arguments */
jack_status_t my_status; jack_status_t my_status;
JackClient* client; JackClient* client;


if (client_name == NULL) { if (client_name == NULL) {
jack_error("jack_client_open called with a NULL client_name");
jack_error("jack_client_new called with a NULL client_name");
return NULL; return NULL;
} }


jack_log("jack_client_open %s", client_name);
jack_log("jack_client_new %s", client_name);
if (status == NULL) /* no status from caller? */ if (status == NULL) /* no status from caller? */
status = &my_status; /* use local status word */ status = &my_status; /* use local status word */
@@ -73,12 +76,59 @@ EXPORT jack_client_t* jack_client_open_aux(const char* client_name, jack_options
} }


/* parse variable arguments */ /* parse variable arguments */
if (ap) {
jack_varargs_parse(options, ap, &va);
jack_varargs_init(&va);
if (!JackServerGlobals::Init()) { // jack server initialisation
int my_status1 = (JackFailure | JackServerError);
*status = (jack_status_t)my_status1;
return NULL;
}
if (JACK_DEBUG) {
client = new JackDebugClient(new JackInternalClient(JackServerGlobals::fInstance, GetSynchroTable())); // Debug mode
} else { } else {
jack_varargs_init(&va);
client = new JackInternalClient(JackServerGlobals::fInstance, GetSynchroTable());
}

int res = client->Open(va.server_name, client_name, options, status);
if (res < 0) {
delete client;
JackServerGlobals::Destroy(); // jack server destruction
int my_status1 = (JackFailure | JackServerError);
*status = (jack_status_t)my_status1;
return NULL;
} else {
return (jack_client_t*)client;
}
}

jack_client_t* jack_client_open_aux(const char* client_name, jack_options_t options, jack_status_t* status, va_list ap)
{
jack_varargs_t va; /* variable arguments */
jack_status_t my_status;
JackClient* client;

if (client_name == NULL) {
jack_error("jack_client_open called with a NULL client_name");
return NULL;
} }


jack_log("jack_client_open %s", client_name);
if (status == NULL) /* no status from caller? */
status = &my_status; /* use local status word */
*status = (jack_status_t)0;

/* validate parameters */
if ((options & ~JackOpenOptions)) {
int my_status1 = *status | (JackFailure | JackInvalidOption);
*status = (jack_status_t)my_status1;
return NULL;
}

/* parse variable arguments */
jack_varargs_parse(options, ap, &va);
if (!JackServerGlobals::Init()) { // jack server initialisation if (!JackServerGlobals::Init()) { // jack server initialisation
int my_status1 = (JackFailure | JackServerError); int my_status1 = (JackFailure | JackServerError);
*status = (jack_status_t)my_status1; *status = (jack_status_t)my_status1;


+ 3
- 3
common/jack/jack.h View File

@@ -732,7 +732,7 @@ int jack_port_connected_to (const jack_port_t *port,
* @return a null-terminated array of full port names to which the @a * @return a null-terminated array of full port names to which the @a
* port is connected. If none, returns NULL. * port is connected. If none, returns NULL.
* *
* The caller is responsible for calling free(3) on any non-NULL
* The caller is responsible for calling jack_free(3) on any non-NULL
* returned value. * returned value.
* *
* @param port locally owned jack_port_t pointer. * @param port locally owned jack_port_t pointer.
@@ -745,7 +745,7 @@ const char ** jack_port_get_connections (const jack_port_t *port) JACK_OPTIONAL_
* @return a null-terminated array of full port names to which the @a * @return a null-terminated array of full port names to which the @a
* port is connected. If none, returns NULL. * port is connected. If none, returns NULL.
* *
* The caller is responsible for calling free(3) on any non-NULL
* The caller is responsible for calling jack_free(3) on any non-NULL
* returned value. * returned value.
* *
* This differs from jack_port_get_connections() in two important * This differs from jack_port_get_connections() in two important
@@ -996,7 +996,7 @@ int jack_port_type_size(void) JACK_OPTIONAL_WEAK_EXPORT;
* If zero, no selection based on flags will be carried out. * If zero, no selection based on flags will be carried out.
* *
* @return a NULL-terminated array of ports that match the specified * @return a NULL-terminated array of ports that match the specified
* arguments. The caller is responsible for calling free(3) any
* arguments. The caller is responsible for calling jack_free(3) any
* non-NULL returned value. * non-NULL returned value.
* *
* @see jack_port_name_size(), jack_port_type_size() * @see jack_port_name_size(), jack_port_type_size()


+ 7
- 1
dbus/sigsegv.c View File

@@ -99,7 +99,13 @@ static void signal_segv(int signum, siginfo_t* info, void*ptr) {
jack_error("info.si_code = %d (%s)", info->si_code, si_codes[info->si_code]); jack_error("info.si_code = %d (%s)", info->si_code, si_codes[info->si_code]);
jack_error("info.si_addr = %p", info->si_addr); jack_error("info.si_addr = %p", info->si_addr);
for(i = 0; i < NGREG; i++) for(i = 0; i < NGREG; i++)
jack_error("reg[%02d] = 0x" REGFORMAT, i, ucontext->uc_mcontext.gregs[i]);
jack_error("reg[%02d] = 0x" REGFORMAT, i,
#if defined(__powerpc__)
ucontext->uc_mcontext.uc_regs[i]
#else
ucontext->uc_mcontext.gregs[i]
#endif
);


#if defined(SIGSEGV_STACK_X86) || defined(SIGSEGV_STACK_IA64) #if defined(SIGSEGV_STACK_X86) || defined(SIGSEGV_STACK_IA64)
# if defined(SIGSEGV_STACK_IA64) # if defined(SIGSEGV_STACK_IA64)


+ 25
- 6
example-clients/connect.c View File

@@ -1,6 +1,6 @@
/* /*
Copyright (C) 2002 Jeremy Hall Copyright (C) 2002 Jeremy Hall
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
@@ -29,9 +29,16 @@
jack_port_t *input_port; jack_port_t *input_port;
jack_port_t *output_port; jack_port_t *output_port;
int connecting, disconnecting; int connecting, disconnecting;
int done = 0;
#define TRUE 1 #define TRUE 1
#define FALSE 0 #define FALSE 0



void port_connect_callback(jack_port_id_t a, jack_port_id_t b, int connect, void* arg)
{
done = 1;
}

int int
main (int argc, char *argv[]) main (int argc, char *argv[])
{ {
@@ -43,7 +50,7 @@ main (int argc, char *argv[])
} else { } else {
my_name ++; my_name ++;
} }
printf("name %s\n", my_name); printf("name %s\n", my_name);


if (strstr(my_name, "jack_disconnect")) { if (strstr(my_name, "jack_disconnect")) {
@@ -70,7 +77,9 @@ main (int argc, char *argv[])
return 1; return 1;
} }


/* display the current sample rate. once the client is activated
jack_set_port_connect_callback(client, port_connect_callback, NULL);

/* display the current sample rate. once the client is activated
(see below), you should rely on your own sample rate (see below), you should rely on your own sample rate
callback (see above) for this value. callback (see above) for this value.
*/ */
@@ -85,7 +94,7 @@ main (int argc, char *argv[])
fprintf (stderr, "ERROR %s not a valid port\n", argv[2]); fprintf (stderr, "ERROR %s not a valid port\n", argv[2]);
goto error; goto error;
} }
/* tell the JACK server that we are ready to roll */ /* tell the JACK server that we are ready to roll */


if (jack_activate (client)) { if (jack_activate (client)) {
@@ -109,12 +118,22 @@ main (int argc, char *argv[])
goto error; goto error;
} }
} }

// Wait for connection/disconnection to be effective
while(!done) {
#ifdef WIN32
Sleep(10);
#else
usleep(10000);
#endif
}

jack_deactivate (client); jack_deactivate (client);
jack_client_close (client); jack_client_close (client);
return 0; return 0;
error: error:
if (client)
if (client)
jack_client_close (client); jack_client_close (client);
return 1; return 1;
} }


+ 15
- 15
example-clients/netsource.c View File

@@ -503,11 +503,12 @@ init_sockaddr_in (struct sockaddr_in *name , const char *hostname , uint16_t por
if (hostinfo == NULL) { if (hostinfo == NULL) {
fprintf (stderr, "init_sockaddr_in: unknown host: %s.\n", hostname); fprintf (stderr, "init_sockaddr_in: unknown host: %s.\n", hostname);
fflush( stderr ); fflush( stderr );
return;
} }
#ifdef WIN32 #ifdef WIN32
name->sin_addr.s_addr = inet_addr( hostname );
name->sin_addr.s_addr = inet_addr( hostname );
#else #else
name->sin_addr = *(struct in_addr *) hostinfo->h_addr ;
name->sin_addr = *(struct in_addr *) hostinfo->h_addr ;
#endif #endif
} }
else else
@@ -622,15 +623,15 @@ main (int argc, char *argv[])
case 'b': case 'b':
bitdepth = atoi (optarg); bitdepth = atoi (optarg);
break; break;
case 'c':
#if HAVE_CELT
bitdepth = 1000;
case 'c':
#if HAVE_CELT
bitdepth = 1000;
factor = atoi (optarg); factor = atoi (optarg);
#else
#else
printf( "not built with celt supprt\n" ); printf( "not built with celt supprt\n" );
exit(10); exit(10);
#endif
break;
#endif
break;
case 'm': case 'm':
mtu = atoi (optarg); mtu = atoi (optarg);
break; break;
@@ -677,18 +678,17 @@ main (int argc, char *argv[])
} }


init_sockaddr_in ((struct sockaddr_in *) &destaddr, peer_ip, peer_port); init_sockaddr_in ((struct sockaddr_in *) &destaddr, peer_ip, peer_port);
if(bind_port) {
if (bind_port) {
init_sockaddr_in ((struct sockaddr_in *) &bindaddr, NULL, bind_port); init_sockaddr_in ((struct sockaddr_in *) &bindaddr, NULL, bind_port);
if( bind (outsockfd, &bindaddr, sizeof (bindaddr)) ) { if( bind (outsockfd, &bindaddr, sizeof (bindaddr)) ) {
fprintf (stderr, "bind failure\n" );
}
fprintf (stderr, "bind failure\n" );
}
} }
if(reply_port)
{
if (reply_port) {
init_sockaddr_in ((struct sockaddr_in *) &bindaddr, NULL, reply_port); init_sockaddr_in ((struct sockaddr_in *) &bindaddr, NULL, reply_port);
if( bind (insockfd, &bindaddr, sizeof (bindaddr)) ) { if( bind (insockfd, &bindaddr, sizeof (bindaddr)) ) {
fprintf (stderr, "bind failure\n" );
}
fprintf (stderr, "bind failure\n" );
}
} }


/* try to become a client of the JACK server */ /* try to become a client of the JACK server */


+ 1
- 1
example-clients/wscript View File

@@ -59,7 +59,7 @@ def configure(conf):


conf.env['BUILD_EXAMPLE_CLIENT_REC'] = conf.is_defined('HAVE_SNDFILE') conf.env['BUILD_EXAMPLE_CLIENT_REC'] = conf.is_defined('HAVE_SNDFILE')


conf.env['BUILD_EXAMPLE_ALSA_IO'] = conf.is_defined('HAVE_SAMPLERATE')
conf.env['BUILD_EXAMPLE_ALSA_IO'] = conf.is_defined('HAVE_SAMPLERATE') and conf.is_defined('HAVE_ALSA')


def build(bld): def build(bld):
if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:


+ 16
- 6
linux/JackAtomic_os.h View File

@@ -42,9 +42,9 @@ static inline int CAS(register UInt32 value, register UInt32 newvalue, register
"1: \n" "1: \n"
" li %0, 0 \n" " li %0, 0 \n"
"2: \n" "2: \n"
: "=r" (result)
: "r" (addr), "r" (value), "r" (newvalue), "r" (tmp)
);
: "=r" (result)
: "r" (addr), "r" (value), "r" (newvalue), "r" (tmp)
);
return result; return result;
} }


@@ -61,13 +61,23 @@ static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* ad
"# CAS \n\t" "# CAS \n\t"
LOCK "cmpxchg %2, (%1) \n\t" LOCK "cmpxchg %2, (%1) \n\t"
"sete %0 \n\t" "sete %0 \n\t"
: "=a" (ret)
: "c" (addr), "d" (newvalue), "a" (value)
);
: "=a" (ret)
: "c" (addr), "d" (newvalue), "a" (value)
);
return ret; return ret;
} }


#endif #endif


#if !defined(__i386__) && !defined(__x86_64__) && !defined(__PPC__)
#warning using builtin gcc (version > 4.1) atomic

static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr)
{
return __sync_bool_compare_and_swap (&addr, value, newvalue);
}
#endif


#endif #endif



+ 4
- 0
linux/JackPlatformPlug_os.h View File

@@ -20,6 +20,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef __JackPlatformPlug_linux__ #ifndef __JackPlatformPlug_linux__
#define __JackPlatformPlug_linux__ #define __JackPlatformPlug_linux__


#define jack_server_dir "/dev/shm"
#define jack_client_dir "/dev/shm"
#define JACK_DEFAULT_DRIVER "alsa"

namespace Jack namespace Jack
{ {
struct JackRequest; struct JackRequest;


+ 8
- 5
linux/alsa/JackAlsaDriver.cpp View File

@@ -260,7 +260,7 @@ JackAlsaDriver::alsa_driver_hw_specific (alsa_driver_t *driver, int hw_monitorin
return 0; return 0;
} }


void
int
JackAlsaDriver::alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) JackAlsaDriver::alsa_driver_setup_io_function_pointers (alsa_driver_t *driver)
{ {
if (driver->playback_handle) { if (driver->playback_handle) {
@@ -340,7 +340,7 @@ JackAlsaDriver::alsa_driver_setup_io_function_pointers (alsa_driver_t *driver)
default: default:
jack_error ("impossible sample width (%d) discovered!", jack_error ("impossible sample width (%d) discovered!",
driver->playback_sample_bytes); driver->playback_sample_bytes);
exit (1);
return -1;
} }
} }
} }
@@ -364,6 +364,8 @@ JackAlsaDriver::alsa_driver_setup_io_function_pointers (alsa_driver_t *driver)
break; break;
} }
} }
return 0;
} }


int int
@@ -779,7 +781,7 @@ JackAlsaDriver::alsa_driver_set_parameters (alsa_driver_t *driver,
default: default:
jack_error ("programming error: unhandled format " jack_error ("programming error: unhandled format "
"type for playback"); "type for playback");
exit (1);
return -1;
} }
} }


@@ -797,7 +799,7 @@ JackAlsaDriver::alsa_driver_set_parameters (alsa_driver_t *driver,
default: default:
jack_error ("programming error: unhandled format " jack_error ("programming error: unhandled format "
"type for capture"); "type for capture");
exit (1);
return -1;
} }
} }


@@ -836,7 +838,8 @@ JackAlsaDriver::alsa_driver_set_parameters (alsa_driver_t *driver,
driver->user_nchannels = driver->playback_nchannels; driver->user_nchannels = driver->playback_nchannels;
} }


alsa_driver_setup_io_function_pointers (driver);
if (alsa_driver_setup_io_function_pointers (driver) != 0)
return -1;


/* Allocate and initialize structures that rely on the /* Allocate and initialize structures that rely on the
channels counts. channels counts.


+ 1
- 1
linux/alsa/JackAlsaDriver.h View File

@@ -53,7 +53,7 @@ class JackAlsaDriver : public JackAudioDriver
int alsa_driver_generic_hardware(alsa_driver_t *driver); int alsa_driver_generic_hardware(alsa_driver_t *driver);
int alsa_driver_hw_specific(alsa_driver_t *driver, int hw_monitoring, int alsa_driver_hw_specific(alsa_driver_t *driver, int hw_monitoring,
int hw_metering); int hw_metering);
void alsa_driver_setup_io_function_pointers (alsa_driver_t *driver);
int alsa_driver_setup_io_function_pointers (alsa_driver_t *driver);
int alsa_driver_configure_stream(alsa_driver_t *driver, char *device_name, int alsa_driver_configure_stream(alsa_driver_t *driver, char *device_name,
const char *stream_name, const char *stream_name,
snd_pcm_t *handle, snd_pcm_t *handle,


+ 14
- 0
linux/cycles.h View File

@@ -103,6 +103,20 @@ static inline cycles_t get_cycles (void)


#endif #endif


/* everything else but x86, amd64 or ppc */
#if !defined (__PPC__) && !defined (__x86_64__) && !defined (__i386__)

#warning No suitable get_cycles() implementation. Returning 0 instead

typedef unsigned long long cycles_t;

static inline cycles_t get_cycles(void)
{
return 0;
}

#endif

#endif #endif


#endif /* __jack_cycles_h__ */ #endif /* __jack_cycles_h__ */

+ 4
- 4
linux/firewire/JackFFADODriver.cpp View File

@@ -429,7 +429,7 @@ int JackFFADODriver::Attach()


driver->capture_channels[chn].stream_type = ffado_streaming_get_capture_stream_type(driver->dev, chn); driver->capture_channels[chn].stream_type = ffado_streaming_get_capture_stream_type(driver->dev, chn);
if (driver->capture_channels[chn].stream_type == ffado_stream_type_audio) { if (driver->capture_channels[chn].stream_type == ffado_stream_type_audio) {
snprintf(buf, sizeof(buf) - 1, "%s:%s", fClientControl.fName, portname);
snprintf(buf, sizeof(buf) - 1, "firewire_pcm:%s_in", portname);
printMessage ("Registering audio capture port %s", buf); printMessage ("Registering audio capture port %s", buf);
if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf,
JACK_DEFAULT_AUDIO_TYPE, JACK_DEFAULT_AUDIO_TYPE,
@@ -455,7 +455,7 @@ int JackFFADODriver::Attach()
fCaptureChannels++; fCaptureChannels++;


} else if (driver->capture_channels[chn].stream_type == ffado_stream_type_midi) { } else if (driver->capture_channels[chn].stream_type == ffado_stream_type_midi) {
snprintf(buf, sizeof(buf) - 1, "%s:%s", fClientControl.fName, portname);
snprintf(buf, sizeof(buf) - 1, "firewire_pcm:%s_in", portname);
printMessage ("Registering midi capture port %s", buf); printMessage ("Registering midi capture port %s", buf);
if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf,
JACK_DEFAULT_MIDI_TYPE, JACK_DEFAULT_MIDI_TYPE,
@@ -502,7 +502,7 @@ int JackFFADODriver::Attach()
driver->playback_channels[chn].stream_type = ffado_streaming_get_playback_stream_type(driver->dev, chn); driver->playback_channels[chn].stream_type = ffado_streaming_get_playback_stream_type(driver->dev, chn);


if (driver->playback_channels[chn].stream_type == ffado_stream_type_audio) { if (driver->playback_channels[chn].stream_type == ffado_stream_type_audio) {
snprintf(buf, sizeof(buf) - 1, "%s:%s", fClientControl.fName, portname);
snprintf(buf, sizeof(buf) - 1, "firewire_pcm:%s_out", portname);
printMessage ("Registering audio playback port %s", buf); printMessage ("Registering audio playback port %s", buf);
if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf,
JACK_DEFAULT_AUDIO_TYPE, JACK_DEFAULT_AUDIO_TYPE,
@@ -530,7 +530,7 @@ int JackFFADODriver::Attach()
jack_log("JackFFADODriver::Attach fPlaybackPortList[i] %ld ", port_index); jack_log("JackFFADODriver::Attach fPlaybackPortList[i] %ld ", port_index);
fPlaybackChannels++; fPlaybackChannels++;
} else if (driver->playback_channels[chn].stream_type == ffado_stream_type_midi) { } else if (driver->playback_channels[chn].stream_type == ffado_stream_type_midi) {
snprintf(buf, sizeof(buf) - 1, "%s:%s", fClientControl.fName, portname);
snprintf(buf, sizeof(buf) - 1, "firewire_pcm:%s_out", portname);
printMessage ("Registering midi playback port %s", buf); printMessage ("Registering midi playback port %s", buf);
if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf,
JACK_DEFAULT_MIDI_TYPE, JACK_DEFAULT_MIDI_TYPE,


+ 7
- 7
macosx/JackAtomic_os.h View File

@@ -41,10 +41,10 @@ static inline int CAS(register UInt32 value, register UInt32 newvalue, register
"1: \n" "1: \n"
" li %0, 0 \n" " li %0, 0 \n"
"2: \n" "2: \n"
: "=r" (result)
: "r" (addr), "r" (value), "r" (newvalue)
: "r0"
);
: "=r" (result)
: "r" (addr), "r" (value), "r" (newvalue)
: "r0"
);
return result; return result;
} }


@@ -61,9 +61,9 @@ static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* ad
"# CAS \n\t" "# CAS \n\t"
LOCK "cmpxchg %2, (%1) \n\t" LOCK "cmpxchg %2, (%1) \n\t"
"sete %0 \n\t" "sete %0 \n\t"
: "=a" (ret)
: "c" (addr), "d" (newvalue), "a" (value)
);
: "=a" (ret)
: "c" (addr), "d" (newvalue), "a" (value)
);
return ret; return ret;
} }




+ 4
- 0
macosx/JackPlatformPlug_os.h View File

@@ -22,6 +22,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


#include <TargetConditionals.h> #include <TargetConditionals.h>


#define jack_server_dir "/tmp"
#define jack_client_dir "/tmp"
#define JACK_DEFAULT_DRIVER "coreaudio"

namespace Jack namespace Jack
{ {
class JackPosixMutex; class JackPosixMutex;


+ 74
- 18
macosx/Jackdmp.xcodeproj/project.pbxproj View File

@@ -7950,16 +7950,17 @@
LIBRARY_STYLE = DYNAMIC; LIBRARY_STYLE = DYNAMIC;
MACH_O_TYPE = mh_dylib; MACH_O_TYPE = mh_dylib;
OTHER_CFLAGS = ""; OTHER_CFLAGS = "";
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA";
OTHER_CPLUSPLUSFLAGS = (
"-DHAVE_CELT_API_0_7",
"-DHAVE_CELT",
"-DMACH_RPC_MACH_SEMA",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
libcelt.a,
"-framework", "-framework",
Jackservermp, Jackservermp,
"-framework", "-framework",
CoreAudio,
"-framework",
CoreServices, CoreServices,
"-framework",
AudioUnit,
); );
OTHER_REZFLAGS = ""; OTHER_REZFLAGS = "";
PREBINDING = NO; PREBINDING = NO;
@@ -8000,8 +8001,13 @@
MACH_O_TYPE = mh_dylib; MACH_O_TYPE = mh_dylib;
MACOSX_DEPLOYMENT_TARGET = 10.4; MACOSX_DEPLOYMENT_TARGET = 10.4;
OTHER_CFLAGS = ""; OTHER_CFLAGS = "";
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA";
OTHER_CPLUSPLUSFLAGS = (
"-DHAVE_CELT_API_0_7",
"-DHAVE_CELT",
"-DMACH_RPC_MACH_SEMA",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
libcelt.a,
"-framework", "-framework",
Jackservermp, Jackservermp,
"-framework", "-framework",
@@ -8037,7 +8043,11 @@
LIBRARY_STYLE = DYNAMIC; LIBRARY_STYLE = DYNAMIC;
MACH_O_TYPE = mh_dylib; MACH_O_TYPE = mh_dylib;
OTHER_CFLAGS = ""; OTHER_CFLAGS = "";
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA";
OTHER_CPLUSPLUSFLAGS = (
"-DHAVE_CELT_API_0_7",
"-DHAVE_CELT",
"-DMACH_RPC_MACH_SEMA",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-framework", "-framework",
Jackdmp, Jackdmp,
@@ -8087,17 +8097,19 @@
INSTALL_PATH = /usr/local/lib; INSTALL_PATH = /usr/local/lib;
LIBRARY_STYLE = DYNAMIC; LIBRARY_STYLE = DYNAMIC;
MACH_O_TYPE = mh_dylib; MACH_O_TYPE = mh_dylib;
OTHER_CFLAGS = "";
OTHER_CPLUSPLUSFLAGS = "-DMACH_RPC_MACH_SEMA";
OTHER_CFLAGS = "-DJACK_32_64";
OTHER_CPLUSPLUSFLAGS = (
"-DJACK_32_64",
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
"-DMACH_RPC_MACH_SEMA",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
libcelt.a,
"-framework", "-framework",
Jackservermp, Jackservermp,
"-framework", "-framework",
CoreAudio,
"-framework",
CoreServices, CoreServices,
"-framework",
AudioUnit,
); );
OTHER_REZFLAGS = ""; OTHER_REZFLAGS = "";
PREBINDING = NO; PREBINDING = NO;
@@ -8137,10 +8149,13 @@
MACOSX_DEPLOYMENT_TARGET = 10.4; MACOSX_DEPLOYMENT_TARGET = 10.4;
OTHER_CFLAGS = "-DJACK_32_64"; OTHER_CFLAGS = "-DJACK_32_64";
OTHER_CPLUSPLUSFLAGS = ( OTHER_CPLUSPLUSFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
"-DMACH_RPC_MACH_SEMA", "-DMACH_RPC_MACH_SEMA",
"-DJACK_32_64", "-DJACK_32_64",
); );
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
libcelt.a,
"-framework", "-framework",
Jackservermp, Jackservermp,
"-framework", "-framework",
@@ -8216,8 +8231,17 @@
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
HEADER_SEARCH_PATHS = ../common; HEADER_SEARCH_PATHS = ../common;
OTHER_CFLAGS = "";
OTHER_CFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
);
OTHER_CPLUSPLUSFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
"$(OTHER_CFLAGS)",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
libcelt.a,
"-framework", "-framework",
Jackmp, Jackmp,
"-framework", "-framework",
@@ -8249,8 +8273,17 @@
GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_ENABLE_FIX_AND_CONTINUE = NO;
HEADER_SEARCH_PATHS = ../common; HEADER_SEARCH_PATHS = ../common;
MACOSX_DEPLOYMENT_TARGET = 10.4; MACOSX_DEPLOYMENT_TARGET = 10.4;
OTHER_CFLAGS = "";
OTHER_CFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
);
OTHER_CPLUSPLUSFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
"$(OTHER_CFLAGS)",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
libcelt.a,
"-framework", "-framework",
Jackmp, Jackmp,
"-framework", "-framework",
@@ -8280,6 +8313,11 @@
FRAMEWORK_SEARCH_PATHS = ""; FRAMEWORK_SEARCH_PATHS = "";
HEADER_SEARCH_PATHS = ../common; HEADER_SEARCH_PATHS = ../common;
OTHER_CFLAGS = ""; OTHER_CFLAGS = "";
OTHER_CPLUSPLUSFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
"$(OTHER_CFLAGS)",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-framework", "-framework",
Jackmp, Jackmp,
@@ -8311,8 +8349,13 @@
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
HEADER_SEARCH_PATHS = ../common; HEADER_SEARCH_PATHS = ../common;
OTHER_CFLAGS = "";
OTHER_CFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
);
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
libcelt.a,
"-framework", "-framework",
Jackmp, Jackmp,
"-framework", "-framework",
@@ -8342,8 +8385,13 @@
GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_ENABLE_FIX_AND_CONTINUE = NO;
HEADER_SEARCH_PATHS = ../common; HEADER_SEARCH_PATHS = ../common;
MACOSX_DEPLOYMENT_TARGET = 10.4; MACOSX_DEPLOYMENT_TARGET = 10.4;
OTHER_CFLAGS = "";
OTHER_CFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
);
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
libcelt.a,
"-framework", "-framework",
Jackmp, Jackmp,
"-framework", "-framework",
@@ -8372,7 +8420,15 @@
); );
FRAMEWORK_SEARCH_PATHS = ""; FRAMEWORK_SEARCH_PATHS = "";
HEADER_SEARCH_PATHS = ../common; HEADER_SEARCH_PATHS = ../common;
OTHER_CFLAGS = "";
OTHER_CFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
);
OTHER_CPLUSPLUSFLAGS = (
"-DHAVE_CELT",
"-DHAVE_CELT_API_0_7",
"$(OTHER_CFLAGS)",
);
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"-framework", "-framework",
Jackmp, Jackmp,


+ 5
- 3
macosx/coremidi/JackCoreMidiDriver.cpp View File

@@ -40,11 +40,13 @@ static MIDITimeStamp MIDIGetCurrentHostTime()
void JackCoreMidiDriver::ReadProcAux(const MIDIPacketList *pktlist, jack_ringbuffer_t* ringbuffer) void JackCoreMidiDriver::ReadProcAux(const MIDIPacketList *pktlist, jack_ringbuffer_t* ringbuffer)
{ {
// Write the number of packets // Write the number of packets
size_t size = jack_ringbuffer_write(ringbuffer, (char*)&pktlist->numPackets, sizeof(UInt32));
if (size != sizeof(UInt32)) {
size_t size = jack_ringbuffer_write_space(ringbuffer);
if (size < sizeof(UInt32)) {
jack_error("ReadProc : ring buffer is full, skip events..."); jack_error("ReadProc : ring buffer is full, skip events...");
return; return;
}
}
jack_ringbuffer_write(ringbuffer, (char*)&pktlist->numPackets, sizeof(UInt32));
for (unsigned int i = 0; i < pktlist->numPackets; ++i) { for (unsigned int i = 0; i < pktlist->numPackets; ++i) {


+ 1
- 1
posix/JackFifo.cpp View File

@@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackFifo.h" #include "JackFifo.h"
#include "JackTools.h" #include "JackTools.h"
#include "JackError.h" #include "JackError.h"
#include "JackConstants.h"
#include "JackPlatformPlug.h"
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>


+ 4
- 0
solaris/JackPlatformPlug_os.h View File

@@ -20,6 +20,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef __JackPlatformPlug_sun__ #ifndef __JackPlatformPlug_sun__
#define __JackPlatformPlug_sun__ #define __JackPlatformPlug_sun__


#define jack_server_dir "/tmp"
#define jack_client_dir "/tmp"
#define JACK_DEFAULT_DRIVER "oss"

namespace Jack namespace Jack
{ {
struct JackRequest; struct JackRequest;


+ 4
- 0
windows/JackPlatformPlug_os.h View File

@@ -21,6 +21,10 @@
#ifndef __JackPlatformPlug_WIN32__ #ifndef __JackPlatformPlug_WIN32__
#define __JackPlatformPlug_WIN32__ #define __JackPlatformPlug_WIN32__


#define jack_server_dir "server"
#define jack_client_dir "client"
#define ADDON_DIR "jack"

namespace Jack namespace Jack
{ {
struct JackRequest; struct JackRequest;


Loading…
Cancel
Save