diff --git a/ChangeLog b/ChangeLog index c41ca216..98f02000 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,10 @@ Paul Davis Jackdmp changes log --------------------------- +2009-11-14 Stephane Letz + + * Sync with JACK1 : -r parameter now used for no-realtime, realtime (-R) is now default, usable backend given vie platform. + 2009-11-13 Stephane Letz * Better memory allocation error checking in ringbuffer.c, weak import improvements. @@ -433,12 +437,12 @@ Paul Davis 2009-01-05 Stephane Letz - * Synchronize jack2 public headers with jack1 ones. + * Synchronize jack2 public headers with JACK1 ones. * Implement jack_client_real_time_priority and jack_client_max_real_time_priority API. 2008-12-18 Stephane Letz - * For ALSA driver, synchronize with latest jack1 memops functions. + * For ALSA driver, synchronize with latest JACK1 memops functions. * Use memops functions in JackOSSDriver. * Use memops functions in JackOSSAdapter. @@ -472,13 +476,13 @@ Paul Davis 2008-11-27 Stephane Letz * Add timing profiling code in JackOSSDriver. - * Report ringbuffer.c fixes from jack1. + * Report ringbuffer.c fixes from JACK1. 2008-11-21 Stephane Letz - * Report ringbuffer.c fixes from jack1. - * Better isolation of server and clients system resources to allow starting the server in several user account at the same time. - * Correct ressource cleanup in case of driver open failure. + * Report ringbuffer.c fixes from JACK1. + * Better isolation of server and clients system resources to allow starting the server in several user account at the same time. + * Correct ressource cleanup in case of driver open failure. 2008-11-19 Stephane Letz diff --git a/common/JackShmMem.cpp b/common/JackShmMem.cpp index e6296a03..90d42e7b 100644 --- a/common/JackShmMem.cpp +++ b/common/JackShmMem.cpp @@ -1,6 +1,6 @@ /* Copyright (C) 2001 Paul Davis -Copyright (C) 2004-2008 Grame +Copyright (C) 2004-2009 Grame 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 @@ -102,8 +102,9 @@ void JackShmMem::operator delete(void* p, size_t size) void JackShmMem::operator delete(void* obj) { - if (obj) + if (obj) { JackShmMem::operator delete(obj, 0); + } } void LockMemoryImp(void* ptr, size_t size) diff --git a/common/JackShmMem.h b/common/JackShmMem.h index 816ed4cd..0a00daa5 100644 --- a/common/JackShmMem.h +++ b/common/JackShmMem.h @@ -1,6 +1,6 @@ /* Copyright (C) 2001 Paul Davis -Copyright (C) 2004-2008 Grame +Copyright (C) 2004-2009 Grame 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 @@ -163,7 +163,7 @@ class JackShmReadWritePtr if (jack_attach_shm(&fInfo)) { throw - 2; } - static_cast(fInfo.ptr.attached_at)->LockMemory(); + GetShmAddress()->LockMemory(); } } @@ -184,7 +184,7 @@ class JackShmReadWritePtr { if (fInfo.index >= 0) { jack_log("JackShmReadWritePtr::~JackShmReadWritePtr %ld", fInfo.index); - static_cast(fInfo.ptr.attached_at)->UnlockMemory(); + GetShmAddress()->UnlockMemory(); jack_release_shm(&fInfo); fInfo.index = -1; } @@ -250,7 +250,7 @@ class JackShmReadWritePtr1 vanish till we exit (and release it). */ jack_destroy_shm(&fInfo); - static_cast(fInfo.ptr.attached_at)->LockMemory(); + GetShmAddress()->LockMemory(); } } @@ -271,7 +271,7 @@ class JackShmReadWritePtr1 { if (fInfo.index >= 0) { jack_log("JackShmReadWritePtr1::~JackShmReadWritePtr1 %ld", fInfo.index); - static_cast(fInfo.ptr.attached_at)->UnlockMemory(); + GetShmAddress()->UnlockMemory(); jack_release_shm(&fInfo); fInfo.index = -1; } @@ -331,7 +331,7 @@ class JackShmReadPtr if (jack_attach_shm_read(&fInfo)) { throw - 2; } - static_cast(fInfo.ptr.attached_at)->LockMemory(); + GetShmAddress()->LockMemory(); } } @@ -352,7 +352,7 @@ class JackShmReadPtr { if (fInfo.index >= 0) { jack_log("JackShmPtrRead::~JackShmPtrRead %ld", fInfo.index); - static_cast(fInfo.ptr.attached_at)->UnlockMemory(); + GetShmAddress()->UnlockMemory(); jack_release_shm(&fInfo); fInfo.index = -1; } diff --git a/common/Jackdmp.cpp b/common/Jackdmp.cpp index a414b8b4..9045827c 100644 --- a/common/Jackdmp.cpp +++ b/common/Jackdmp.cpp @@ -94,7 +94,9 @@ static void copyright(FILE* file) static void usage(FILE* file) { fprintf(file, "\n" - "usage: jackdmp [ --realtime OR -R [ --realtime-priority OR -P priority ] ]\n" + "usage: jackdmp [ --no-realtime OR -r ]\n" + " [ --realtime OR -R [ --realtime-priority OR -P priority ] ]\n" + " (the two previous arguments are mutually exclusive. The default is --realtime)\n" " [ --name OR -n server-name ]\n" " [ --timeout OR -t client-timeout-in-msecs ]\n" " [ --loopback OR -L loopback-port-number ]\n" @@ -103,15 +105,26 @@ static void usage(FILE* file) #ifdef __linux__ " [ --clocksource OR -c [ c(ycle) | h(pet) | s(ystem) ]\n" #endif - " [ --replace-registry OR -r ]\n" + " [ --replace-registry ]\n" " [ --silent OR -s ]\n" " [ --sync OR -S ]\n" " [ --temporary OR -T ]\n" " [ --version OR -V ]\n" - " -d audio-driver [ ... driver args ... ]\n" - " where driver can be `alsa', `coreaudio', 'portaudio' or `dummy'\n" - " jackdmp -d driver --help\n" - " to display options for each driver\n\n"); + " -d backend [ ... backend args ... ]\n" +#ifdef __APPLE__ + " Available backends may include: coreaudio, dummy or net.\n\n" +#endif +#ifdef WIN32 + " Available backends may include: portaudio, dummy or net.\n\n" +#endif +#ifdef __linux__ + " Available backends may include: alsa, dummy, freebob, firewire, net, oss or sun.\n\n" +#endif +#if defined(__sun__) || defined(sun) + " Available backends may include: boomer, oss, dummy or net.\n\n" +#endif + " jackdmp -d backend --help\n" + " to display options for each backend\n\n"); } // To put in the control.h interface?? @@ -163,11 +176,12 @@ int main(int argc, char* argv[]) jackctl_driver_t * audio_driver_ctl; jackctl_driver_t * midi_driver_ctl; jackctl_driver_t * loopback_driver_ctl; + int replace_registry = 0; #ifdef __linux__ - const char *options = "-ad:X:P:uvrshVRL:STFl:t:mn:p:c:L:"; + const char *options = "-ad:X:P:uvshVrRL:STFl:t:mn:p:c:L:"; #else - const char *options = "-ad:X:P:uvrshVRL:STFl:t:mn:p:L:"; + const char *options = "-ad:X:P:uvshVrRL:STFl:t:mn:p:L:"; #endif struct option long_options[] = { @@ -184,7 +198,8 @@ int main(int argc, char* argv[]) { "name", 0, 0, 'n' }, { "unlock", 0, 0, 'u' }, { "realtime", 0, 0, 'R' }, - { "replace-registry", 0, 0, 'r' }, + { "no-realtime", 0, 0, 'r' }, + { "replace-registry", 0, &replace_registry, 0 }, { "loopback", 0, 0, 'L' }, { "realtime-priority", 1, 0, 'P' }, { "timeout", 1, 0, 't' }, @@ -224,8 +239,16 @@ int main(int argc, char* argv[]) fprintf(stderr, "Failed to create server object\n"); return -1; } - + server_parameters = jackctl_server_get_parameters(server_ctl); + + // Default setting + param = jackctl_get_parameter(server_parameters, "realtime"); + if (param != NULL) { + value.b = true; + jackctl_parameter_set_value(param, &value); + } + opterr = 0; while (!seen_audio_driver && (opt = getopt_long(argc, argv, options, @@ -315,11 +338,11 @@ int main(int argc, char* argv[]) jackctl_parameter_set_value(param, &value); } break; - + case 'r': - param = jackctl_get_parameter(server_parameters, "replace-registry"); + param = jackctl_get_parameter(server_parameters, "realtime"); if (param != NULL) { - value.b = true; + value.b = false; jackctl_parameter_set_value(param, &value); } break; @@ -361,7 +384,14 @@ int main(int argc, char* argv[]) goto fail_free1; } } - + + // Long option with no letter so treated separately + param = jackctl_get_parameter(server_parameters, "replace-registry"); + if (param != NULL) { + value.b = replace_registry; + jackctl_parameter_set_value(param, &value); + } + if (show_version) { printf( "jackdmp version " VERSION " tmpdir " jack_server_dir