From 577cc64b9262f1be37355ce77fd742c95cc7c1d3 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 6 Oct 2019 20:26:14 +0100 Subject: [PATCH 01/14] Start of 1.9.14 development Signed-off-by: falkTX --- ChangeLog.rst | 4 ++++ common/JackConstants.h | 2 +- wscript | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog.rst b/ChangeLog.rst index 16c6a6e0..e3b19788 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -1,6 +1,10 @@ ChangeLog ######### +* 1.9.14 (2019-xx-xx) + + * Nothing here yet... + * 1.9.13 (2019-10-06) * Meta-data API implementation. (and a few tools updated with support for it) diff --git a/common/JackConstants.h b/common/JackConstants.h index 696e40db..cae54566 100644 --- a/common/JackConstants.h +++ b/common/JackConstants.h @@ -24,7 +24,7 @@ #include "config.h" #endif -#define VERSION "1.9.13" +#define VERSION "1.9.14" #define BUFFER_SIZE_MAX 8192 diff --git a/wscript b/wscript index 5e8485e6..55508fee 100644 --- a/wscript +++ b/wscript @@ -11,7 +11,7 @@ import sys from waflib import Logs, Options, Task, Utils from waflib.Build import BuildContext, CleanContext, InstallContext, UninstallContext -VERSION='1.9.13' +VERSION='1.9.14' APPNAME='jack' JACK_API_VERSION = '0.1.0' From 266a3188c670185b5d529a6bcbfc36fddba2c462 Mon Sep 17 00:00:00 2001 From: Guido Aulisi Date: Thu, 10 Oct 2019 14:56:21 +0200 Subject: [PATCH 02/14] Fix compilation on ARM size_t i is needed if HAVE_EXECINFO_H is defined --- dbus/sigsegv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbus/sigsegv.c b/dbus/sigsegv.c index de316429..10ddd0ac 100644 --- a/dbus/sigsegv.c +++ b/dbus/sigsegv.c @@ -64,7 +64,7 @@ static void signal_segv(int signum, siginfo_t* info, void*ptr) { const char *si_code_str; ucontext_t *ucontext = (ucontext_t*)ptr; -#if defined(HAVE_UCONTEXT) && defined(HAVE_NGREG) +#if (defined(HAVE_UCONTEXT) && defined(HAVE_NGREG)) || defined(HAVE_EXECINFO_H) size_t i; #endif #if defined(SIGSEGV_STACK_X86) || defined(SIGSEGV_STACK_IA64) From 0e04a68279c9ea982bb5d7f3828644d1351a69a7 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 28 Oct 2019 11:16:09 +0100 Subject: [PATCH 03/14] Fix blocking DBus device reservation, so it plays nice with others --- common/JackControlAPI.cpp | 9 +++++++++ common/JackControlAPI.h | 6 ++++++ common/JackServerGlobals.cpp | 1 + common/JackServerGlobals.h | 1 + common/Jackdmp.cpp | 6 +++--- common/jack/control.h | 17 +++++++++++++++-- dbus/audio_reserve.c | 3 +-- dbus/controller.c | 2 +- example-clients/server_control.cpp | 2 +- linux/alsa/JackAlsaDriver.cpp | 23 +++++++++++++++++++++++ linux/alsa/JackAlsaDriver.h | 1 + 11 files changed, 62 insertions(+), 9 deletions(-) diff --git a/common/JackControlAPI.cpp b/common/JackControlAPI.cpp index 11abb4e6..bbabbac1 100644 --- a/common/JackControlAPI.cpp +++ b/common/JackControlAPI.cpp @@ -746,6 +746,14 @@ get_realtime_priority_constraint() SERVER_EXPORT jackctl_server_t * jackctl_server_create( bool (* on_device_acquire)(const char * device_name), void (* on_device_release)(const char * device_name)) +{ + return jackctl_server_create2(on_device_acquire, on_device_release, NULL); +} + +SERVER_EXPORT jackctl_server_t * jackctl_server_create2( + bool (* on_device_acquire)(const char * device_name), + void (* on_device_release)(const char * device_name), + void (* on_device_reservation_loop)(void)) { struct jackctl_server * server_ptr; union jackctl_parameter_value value; @@ -922,6 +930,7 @@ SERVER_EXPORT jackctl_server_t * jackctl_server_create( JackServerGlobals::on_device_acquire = on_device_acquire; JackServerGlobals::on_device_release = on_device_release; + JackServerGlobals::on_device_reservation_loop = on_device_reservation_loop; if (!jackctl_drivers_load(server_ptr)) { diff --git a/common/JackControlAPI.h b/common/JackControlAPI.h index 2de4451a..6eac65eb 100644 --- a/common/JackControlAPI.h +++ b/common/JackControlAPI.h @@ -94,6 +94,12 @@ jackctl_server_create( bool (* on_device_acquire)(const char * device_name), void (* on_device_release)(const char * device_name)); +SERVER_EXPORT jackctl_server_t * +jackctl_server_create2( + bool (* on_device_acquire)(const char * device_name), + void (* on_device_release)(const char * device_name), + void (* on_device_reservation_loop)(void)); + SERVER_EXPORT void jackctl_server_destroy( jackctl_server_t * server); diff --git a/common/JackServerGlobals.cpp b/common/JackServerGlobals.cpp index 43e0d440..3f08711a 100644 --- a/common/JackServerGlobals.cpp +++ b/common/JackServerGlobals.cpp @@ -36,6 +36,7 @@ std::map JackServerGlobals::fInternalsList; bool (* JackServerGlobals::on_device_acquire)(const char * device_name) = NULL; void (* JackServerGlobals::on_device_release)(const char * device_name) = NULL; +void (* JackServerGlobals::on_device_reservation_loop)(void) = NULL; int JackServerGlobals::Start(const char* server_name, jack_driver_desc_t* driver_desc, diff --git a/common/JackServerGlobals.h b/common/JackServerGlobals.h index beb1880f..15fdfd97 100644 --- a/common/JackServerGlobals.h +++ b/common/JackServerGlobals.h @@ -44,6 +44,7 @@ struct SERVER_EXPORT JackServerGlobals static bool (* on_device_acquire)(const char* device_name); static void (* on_device_release)(const char* device_name); + static void (* on_device_reservation_loop)(void); JackServerGlobals(); ~JackServerGlobals(); diff --git a/common/Jackdmp.cpp b/common/Jackdmp.cpp index e0b70c94..f7a1b270 100644 --- a/common/Jackdmp.cpp +++ b/common/Jackdmp.cpp @@ -328,11 +328,11 @@ int main(int argc, char** argv) copyright(stdout); #if defined(JACK_DBUS) && defined(__linux__) if (getenv("JACK_NO_AUDIO_RESERVATION")) - server_ctl = jackctl_server_create(NULL, NULL); + server_ctl = jackctl_server_create2(NULL, NULL, NULL); else - server_ctl = jackctl_server_create(audio_acquire, audio_release); + server_ctl = jackctl_server_create2(audio_acquire, audio_release, audio_reserve_loop); #else - server_ctl = jackctl_server_create(NULL, NULL); + server_ctl = jackctl_server_create2(NULL, NULL, NULL); #endif if (server_ctl == NULL) { fprintf(stderr, "Failed to create server object\n"); diff --git a/common/jack/control.h b/common/jack/control.h index 6696a669..e466abc3 100644 --- a/common/jack/control.h +++ b/common/jack/control.h @@ -119,20 +119,33 @@ void jackctl_wait_signals( jackctl_sigmask_t * signals); +/** + * \bold THIS FUNCTION IS DEPRECATED AND SHOULD NOT BE USED IN + * NEW JACK PROJECTS + * + * @deprecated Please use jackctl_server_create2(). + */ +jackctl_server_t * +jackctl_server_create( + bool (* on_device_acquire)(const char * device_name), + void (* on_device_release)(const char * device_name)); + /** * Call this function to create server object. * * @param on_device_acquire - Optional callback to be called before device is acquired. If false is returned, device usage will fail * @param on_device_release - Optional callback to be called after device is released. + * @param on_device_reservation_loop - Optional callback to be called when looping/idling the reservation. * * @return server object handle, NULL if creation of server object * failed. Successfully created server object must be destroyed with * paired call to ::jackctl_server_destroy */ jackctl_server_t * -jackctl_server_create( +jackctl_server_create2( bool (* on_device_acquire)(const char * device_name), - void (* on_device_release)(const char * device_name)); + void (* on_device_release)(const char * device_name), + void (* on_device_reservation_loop)(void)); /** * Call this function to destroy server object. diff --git a/dbus/audio_reserve.c b/dbus/audio_reserve.c index 6b42159d..69a6811f 100644 --- a/dbus/audio_reserve.c +++ b/dbus/audio_reserve.c @@ -128,8 +128,7 @@ SERVER_EXPORT void audio_release(const char * device_name) SERVER_EXPORT void audio_reserve_loop() { if (gConnection != NULL) { - while (dbus_connection_read_write_dispatch (gConnection, -1)) - ; // empty loop body + dbus_connection_read_write_dispatch (gConnection, 200); } } diff --git a/dbus/controller.c b/dbus/controller.c index 69180114..f1639b61 100644 --- a/dbus/controller.c +++ b/dbus/controller.c @@ -548,7 +548,7 @@ jack_controller_create( INIT_LIST_HEAD(&controller_ptr->session_pending_commands); - controller_ptr->server = jackctl_server_create(on_device_acquire, on_device_release); + controller_ptr->server = jackctl_server_create2(on_device_acquire, on_device_release, NULL); if (controller_ptr->server == NULL) { jack_error("Failed to create server object"); diff --git a/example-clients/server_control.cpp b/example-clients/server_control.cpp index 7b7f57bc..9be7aea6 100644 --- a/example-clients/server_control.cpp +++ b/example-clients/server_control.cpp @@ -170,7 +170,7 @@ int main(int argc, char *argv[]) } } - server = jackctl_server_create(NULL, NULL); + server = jackctl_server_create2(NULL, NULL, NULL); parameters = jackctl_server_get_parameters(server); /* diff --git a/linux/alsa/JackAlsaDriver.cpp b/linux/alsa/JackAlsaDriver.cpp index 529ec8d3..5349c13e 100644 --- a/linux/alsa/JackAlsaDriver.cpp +++ b/linux/alsa/JackAlsaDriver.cpp @@ -67,6 +67,18 @@ static struct jack_constraint_enum_char_descriptor dither_constraint_descr_array namespace Jack { +static volatile bool device_reservation_loop_running = false; + +static void* on_device_reservation_loop(void*) +{ + while (device_reservation_loop_running && JackServerGlobals::on_device_reservation_loop != NULL) { + JackServerGlobals::on_device_reservation_loop(); + usleep(50*1000); + } + + return NULL; +} + int JackAlsaDriver::SetBufferSize(jack_nframes_t buffer_size) { jack_log("JackAlsaDriver::SetBufferSize %ld", buffer_size); @@ -344,6 +356,12 @@ int JackAlsaDriver::Open(jack_nframes_t nframes, // ALSA driver may have changed the in/out values fCaptureChannels = ((alsa_driver_t *)fDriver)->capture_nchannels; fPlaybackChannels = ((alsa_driver_t *)fDriver)->playback_nchannels; + if (JackServerGlobals::on_device_reservation_loop != NULL) { + device_reservation_loop_running = true; + if (JackPosixThread::StartImp(&fReservationLoopThread, 0, 0, on_device_reservation_loop, NULL) != 0) { + device_reservation_loop_running = false; + } + } return 0; } else { Close(); @@ -360,6 +378,11 @@ int JackAlsaDriver::Close() alsa_driver_delete((alsa_driver_t*)fDriver); } + if (device_reservation_loop_running) { + device_reservation_loop_running = false; + JackPosixThread::StopImp(fReservationLoopThread); + } + if (JackServerGlobals::on_device_release != NULL) { char audio_name[32]; diff --git a/linux/alsa/JackAlsaDriver.h b/linux/alsa/JackAlsaDriver.h index b2f44afb..b7b14b33 100644 --- a/linux/alsa/JackAlsaDriver.h +++ b/linux/alsa/JackAlsaDriver.h @@ -39,6 +39,7 @@ class JackAlsaDriver : public JackAudioDriver private: jack_driver_t* fDriver; + jack_native_thread_t fReservationLoopThread; void UpdateLatencies(); From 9bf420dc955d7926bed28eb80580e3b881896b3c Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 28 Oct 2019 11:19:44 +0100 Subject: [PATCH 04/14] Fix build under mixed mode Closes #508 --- wscript | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/wscript b/wscript index 55508fee..49e6d79b 100644 --- a/wscript +++ b/wscript @@ -397,6 +397,13 @@ def configure(conf): conf.env['LIBDIR'] = Options.options.libdir32 else: conf.env['LIBDIR'] = conf.env['PREFIX'] + '/lib32' + # libdb does not work in mixed mode + conf.env['HAVE_DB'] = 0 + conf.env['HAVE_DB_H'] = 0 + conf.env['LIB_DB'] = [] + # no need for opus in 32bit mixed mode clients + conf.env['LIB_OPUS'] = [] + # someone tell me where this file gets written please.. conf.write_config_header('config.h') print() From 02528686c4ed1d33f167194471b8441e343a01ab Mon Sep 17 00:00:00 2001 From: Luciano Iam Date: Sat, 12 Oct 2019 16:31:30 +0200 Subject: [PATCH 05/14] Rename PortSetDeviceMetadata to PortSetDefaultMetadata --- common/JackEngine.cpp | 2 +- common/JackEngine.h | 2 +- common/JackLockedEngine.h | 4 ++-- linux/alsa/JackAlsaDriver.cpp | 4 ++-- linux/alsa/JackAlsaDriver.h | 2 +- linux/alsa/alsa_midi_impl.h | 4 ++-- linux/alsa/alsa_midi_jackmp.cpp | 4 ++-- linux/alsa/alsa_rawmidi.c | 2 +- linux/alsa/alsa_seqmidi.c | 4 ++-- linux/alsarawmidi/JackALSARawMidiDriver.cpp | 4 ++-- macosx/coremidi/JackCoreMidiDriver.mm | 8 ++++---- windows/winmme/JackWinMMEDriver.cpp | 4 ++-- 12 files changed, 22 insertions(+), 22 deletions(-) diff --git a/common/JackEngine.cpp b/common/JackEngine.cpp index 7d721ebd..6bbccb81 100644 --- a/common/JackEngine.cpp +++ b/common/JackEngine.cpp @@ -1086,7 +1086,7 @@ int JackEngine::PortRename(int refnum, jack_port_id_t port, const char* name) return 0; } -int JackEngine::PortSetDeviceMetadata(jack_port_id_t port, const char* pretty_name) +int JackEngine::PortSetDefaultMetadata(jack_port_id_t port, const char* pretty_name) { static const char* type = "text/plain"; jack_uuid_t uuid = jack_port_uuid_generate(port); diff --git a/common/JackEngine.h b/common/JackEngine.h index 1e33e868..67ef3f08 100644 --- a/common/JackEngine.h +++ b/common/JackEngine.h @@ -138,7 +138,7 @@ class SERVER_EXPORT JackEngine : public JackLockAble int PortRename(int refnum, jack_port_id_t port, const char* name); - int PortSetDeviceMetadata(jack_port_id_t port, const char* pretty_name); + int PortSetDefaultMetadata(jack_port_id_t port, const char* pretty_name); int ComputeTotalLatencies(); diff --git a/common/JackLockedEngine.h b/common/JackLockedEngine.h index f774f6e8..dc5cb98a 100644 --- a/common/JackLockedEngine.h +++ b/common/JackLockedEngine.h @@ -246,11 +246,11 @@ class SERVER_EXPORT JackLockedEngine CATCH_EXCEPTION_RETURN } - int PortSetDeviceMetadata(int refnum, jack_port_id_t port, const char* pretty_name) + int PortSetDefaultMetadata(int refnum, jack_port_id_t port, const char* pretty_name) { TRY_CALL JackLock lock(&fEngine); - return (fEngine.CheckClient(refnum)) ? fEngine.PortSetDeviceMetadata(port, pretty_name) : -1; + return (fEngine.CheckClient(refnum)) ? fEngine.PortSetDefaultMetadata(port, pretty_name) : -1; CATCH_EXCEPTION_RETURN } diff --git a/linux/alsa/JackAlsaDriver.cpp b/linux/alsa/JackAlsaDriver.cpp index 5349c13e..0bd904d5 100644 --- a/linux/alsa/JackAlsaDriver.cpp +++ b/linux/alsa/JackAlsaDriver.cpp @@ -494,9 +494,9 @@ void JackAlsaDriver::SetTimetAux(jack_time_t time) fBeginDateUst = time; } -int JackAlsaDriver::PortSetDeviceMetadata(jack_port_id_t port_id, const char* pretty_name) +int JackAlsaDriver::PortSetDefaultMetadata(jack_port_id_t port_id, const char* pretty_name) { - return fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, port_id, pretty_name); + return fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, port_id, pretty_name); } void JackAlsaDriver::WriteOutputAux(jack_nframes_t orig_nframes, snd_pcm_sframes_t contiguous, snd_pcm_sframes_t nwritten) diff --git a/linux/alsa/JackAlsaDriver.h b/linux/alsa/JackAlsaDriver.h index b7b14b33..da055f67 100644 --- a/linux/alsa/JackAlsaDriver.h +++ b/linux/alsa/JackAlsaDriver.h @@ -94,7 +94,7 @@ class JackAlsaDriver : public JackAudioDriver void WriteOutputAux(jack_nframes_t orig_nframes, snd_pcm_sframes_t contiguous, snd_pcm_sframes_t nwritten); void SetTimetAux(jack_time_t time); - int PortSetDeviceMetadata(jack_port_id_t port_id, const char* pretty_name); + int PortSetDefaultMetadata(jack_port_id_t port_id, const char* pretty_name); // JACK API emulation for the midi driver int is_realtime() const; diff --git a/linux/alsa/alsa_midi_impl.h b/linux/alsa/alsa_midi_impl.h index 77fabda8..d7144a91 100644 --- a/linux/alsa/alsa_midi_impl.h +++ b/linux/alsa/alsa_midi_impl.h @@ -37,7 +37,7 @@ extern "C" int JACK_port_unregister(jack_client_t *, jack_port_t*); void* JACK_port_get_buffer(jack_port_t*, jack_nframes_t); int JACK_port_set_alias(jack_port_t* port, const char* name); - int JACK_port_set_device_metadata(jack_port_t* port, const char* pretty_name); + int jack_port_set_default_metadata(jack_port_t* port, const char* pretty_name); jack_nframes_t JACK_get_sample_rate(jack_client_t *); jack_nframes_t JACK_frame_time(jack_client_t *); @@ -50,7 +50,7 @@ extern "C" #define jack_port_unregister JACK_port_unregister #define jack_port_get_buffer JACK_port_get_buffer #define jack_port_set_alias JACK_port_set_alias -#define jack_port_set_device_metadata JACK_port_set_device_metadata +#define jack_port_set_default_metadata jack_port_set_default_metadata #define jack_get_sample_rate JACK_get_sample_rate #define jack_frame_time JACK_frame_time diff --git a/linux/alsa/alsa_midi_jackmp.cpp b/linux/alsa/alsa_midi_jackmp.cpp index bf91163e..f8ab0bea 100644 --- a/linux/alsa/alsa_midi_jackmp.cpp +++ b/linux/alsa/alsa_midi_jackmp.cpp @@ -71,10 +71,10 @@ int JACK_port_set_alias(jack_port_t *port, const char* name) return real->driver->port_set_alias(real->port_id, name); } -int JACK_port_set_device_metadata(jack_port_t* port, const char* pretty_name) +int jack_port_set_default_metadata(jack_port_t* port, const char* pretty_name) { fake_port_t* real = (fake_port_t*)port; - return real->driver->PortSetDeviceMetadata(real->port_id, pretty_name); + return real->driver->PortSetDefaultMetadata(real->port_id, pretty_name); } jack_nframes_t JACK_get_sample_rate(jack_client_t *client) diff --git a/linux/alsa/alsa_rawmidi.c b/linux/alsa/alsa_rawmidi.c index 311074c0..d5208374 100644 --- a/linux/alsa/alsa_rawmidi.c +++ b/linux/alsa/alsa_rawmidi.c @@ -440,7 +440,7 @@ inline int midi_port_open_jack(alsa_rawmidi_t *midi, midi_port_t *port, int type if (port->jack) { jack_port_set_alias(port->jack, alias); - jack_port_set_device_metadata(port->jack, port->device_name); + jack_port_set_default_metadata(port->jack, port->device_name); } return port->jack == NULL; diff --git a/linux/alsa/alsa_seqmidi.c b/linux/alsa/alsa_seqmidi.c index 387cc636..3a5fff01 100644 --- a/linux/alsa/alsa_seqmidi.c +++ b/linux/alsa/alsa_seqmidi.c @@ -521,7 +521,7 @@ port_t* port_create(alsa_seqmidi_t *self, int type, snd_seq_addr_t addr, const s goto failed; jack_port_set_alias (port->jack_port, port->name); - jack_port_set_device_metadata (port->jack_port, device_name); + jack_port_set_default_metadata (port->jack_port, device_name); /* generate an alias */ @@ -534,7 +534,7 @@ port_t* port_create(alsa_seqmidi_t *self, int type, snd_seq_addr_t addr, const s *c = '-'; jack_port_set_alias (port->jack_port, port->name); - jack_port_set_device_metadata (port->jack_port, device_name); + jack_port_set_default_metadata (port->jack_port, device_name); if (type == PORT_INPUT) err = alsa_connect_from(self, port->remote.client, port->remote.port); diff --git a/linux/alsarawmidi/JackALSARawMidiDriver.cpp b/linux/alsarawmidi/JackALSARawMidiDriver.cpp index 80a1dc5d..9157c874 100644 --- a/linux/alsarawmidi/JackALSARawMidiDriver.cpp +++ b/linux/alsarawmidi/JackALSARawMidiDriver.cpp @@ -80,7 +80,7 @@ JackALSARawMidiDriver::Attach() port = fGraphManager->GetPort(index); port->SetAlias(alias); port->SetLatencyRange(JackCaptureLatency, &latency_range); - fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, index, + fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, index, input_port->GetDeviceName()); fCapturePortList[i] = index; @@ -108,7 +108,7 @@ JackALSARawMidiDriver::Attach() port = fGraphManager->GetPort(index); port->SetAlias(alias); port->SetLatencyRange(JackPlaybackLatency, &latency_range); - fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, index, + fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, index, output_port->GetDeviceName()); fPlaybackPortList[i] = index; diff --git a/macosx/coremidi/JackCoreMidiDriver.mm b/macosx/coremidi/JackCoreMidiDriver.mm index 4954ad7d..791c30c1 100644 --- a/macosx/coremidi/JackCoreMidiDriver.mm +++ b/macosx/coremidi/JackCoreMidiDriver.mm @@ -372,7 +372,7 @@ JackCoreMidiDriver::Attach() port = fGraphManager->GetPort(index); port->SetAlias(port_obj->GetAlias()); port->SetLatencyRange(JackCaptureLatency, &latency_range); - fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, index, + fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, index, port_obj->GetDeviceName()); fCapturePortList[i] = index; } @@ -392,7 +392,7 @@ JackCoreMidiDriver::Attach() port = fGraphManager->GetPort(index); port->SetAlias(port_obj->GetAlias()); port->SetLatencyRange(JackCaptureLatency, &latency_range); - fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, index, + fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, index, port_obj->GetDeviceName()); fCapturePortList[num_physical_inputs + i] = index; } @@ -419,7 +419,7 @@ JackCoreMidiDriver::Attach() port = fGraphManager->GetPort(index); port->SetAlias(port_obj->GetAlias()); port->SetLatencyRange(JackPlaybackLatency, &latency_range); - fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, index, + fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, index, port_obj->GetDeviceName()); fPlaybackPortList[i] = index; } @@ -440,7 +440,7 @@ JackCoreMidiDriver::Attach() port = fGraphManager->GetPort(index); port->SetAlias(port_obj->GetAlias()); port->SetLatencyRange(JackPlaybackLatency, &latency_range); - fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, index, + fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, index, port_obj->GetDeviceName()); fPlaybackPortList[num_physical_outputs + i] = index; } diff --git a/windows/winmme/JackWinMMEDriver.cpp b/windows/winmme/JackWinMMEDriver.cpp index ebe63bc5..e2209854 100644 --- a/windows/winmme/JackWinMMEDriver.cpp +++ b/windows/winmme/JackWinMMEDriver.cpp @@ -71,7 +71,7 @@ JackWinMMEDriver::Attach() port = fGraphManager->GetPort(index); port->SetAlias(input_port->GetAlias()); port->SetLatencyRange(JackCaptureLatency, &latency_range); - fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, index, + fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, index, input_port->GetDeviceName()); fCapturePortList[i] = index; } @@ -97,7 +97,7 @@ JackWinMMEDriver::Attach() port = fGraphManager->GetPort(index); port->SetAlias(output_port->GetAlias()); port->SetLatencyRange(JackPlaybackLatency, &latency_range); - fEngine->PortSetDeviceMetadata(fClientControl.fRefNum, index, + fEngine->PortSetDefaultMetadata(fClientControl.fRefNum, index, output_port->GetDeviceName()); fPlaybackPortList[i] = index; } From 89c36934d0b717935220a9746f6b62f22c7ba398 Mon Sep 17 00:00:00 2001 From: Guido Aulisi Date: Thu, 10 Oct 2019 11:35:13 +0200 Subject: [PATCH 06/14] =?UTF-8?q?Fix=20warning:=20catching=20polymorphic?= =?UTF-8?q?=20type=20=E2=80=98class=20std::exception=E2=80=99=20by=20value?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linux/alsarawmidi/JackALSARawMidiPort.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux/alsarawmidi/JackALSARawMidiPort.cpp b/linux/alsarawmidi/JackALSARawMidiPort.cpp index 70e1fa71..8ef0ab65 100644 --- a/linux/alsarawmidi/JackALSARawMidiPort.cpp +++ b/linux/alsarawmidi/JackALSARawMidiPort.cpp @@ -109,7 +109,7 @@ JackALSARawMidiPort::JackALSARawMidiPort(const char *client_name, snd_rawmidi_in } try { CreateNonBlockingPipe(fds); - } catch (std::exception e) { + } catch (std::exception& e) { error_message = e.what(); func = "CreateNonBlockingPipe"; goto close; From 7b33292a996741119ddd0311ff1fa12ca4194b7e Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 28 Oct 2019 11:35:38 +0100 Subject: [PATCH 07/14] Adjust doxygen config (import patch from Fedora) --- doxyfile.in | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/doxyfile.in b/doxyfile.in index ff7bd963..f92e264a 100644 --- a/doxyfile.in +++ b/doxyfile.in @@ -38,7 +38,7 @@ PROJECT_NUMBER = @VERSION@ # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = +OUTPUT_DIRECTORY = default/ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output @@ -574,21 +574,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = @SRCDIR@/common \ - @SRCDIR@/posix \ - @SRCDIR@/macosx \ - @SRCDIR@/macosx/coreaudio/ \ - @SRCDIR@/macosx/coremidi/ \ - @SRCDIR@/linux \ - @SRCDIR@/linux/alsa \ - @SRCDIR@/linux/alsarawmidi \ - @SRCDIR@/linux/firewire \ - @SRCDIR@/windows \ - @SRCDIR@/windows/portaudio \ - @SRCDIR@/windows/winmme \ - @SRCDIR@/solaris \ - @SRCDIR@/solaris/oss \ - @SRCDIR@/common/jack/ +INPUT = @SRCDIR@/common/jack/ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -806,7 +792,7 @@ HTML_HEADER = # each generated HTML page. If it is left blank doxygen will generate a # standard footer. -HTML_FOOTER = +HTML_FOOTER = @SRCDIR@/no_date_footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to From 3009d7d6067d8feaabde3e9ac76c67d36c6c463a Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 28 Oct 2019 11:36:35 +0100 Subject: [PATCH 08/14] Make sure we use python3 (another patch from Fedora) --- common/wscript | 2 +- compat/alloca/wscript | 2 +- compat/wscript | 2 +- dbus/wscript | 2 +- example-clients/jack_control | 2 +- example-clients/wscript | 2 +- man/wscript | 2 +- systemd/wscript | 2 +- tests/wscript | 2 +- waf | 2 +- wscript | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/common/wscript b/common/wscript index afc251a2..70503788 100644 --- a/common/wscript +++ b/common/wscript @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # encoding: utf-8 import re diff --git a/compat/alloca/wscript b/compat/alloca/wscript index 36798973..9e740f1c 100644 --- a/compat/alloca/wscript +++ b/compat/alloca/wscript @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python3 # encoding: utf-8 # # Copyright (C) 2018 Karl Linden diff --git a/compat/wscript b/compat/wscript index e3ec8d33..25eb2a3f 100644 --- a/compat/wscript +++ b/compat/wscript @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python3 # encoding: utf-8 # # Copyright (C) 2018 Karl Linden diff --git a/dbus/wscript b/dbus/wscript index 535d4121..fa40b4f1 100644 --- a/dbus/wscript +++ b/dbus/wscript @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # encoding: utf-8 import os.path diff --git a/example-clients/jack_control b/example-clients/jack_control index 61ac40c1..54277543 100755 --- a/example-clients/jack_control +++ b/example-clients/jack_control @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python3 from __future__ import print_function name_base = 'org.jackaudio' diff --git a/example-clients/wscript b/example-clients/wscript index 6163d222..a8857aa7 100644 --- a/example-clients/wscript +++ b/example-clients/wscript @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # encoding: utf-8 example_programs = { diff --git a/man/wscript b/man/wscript index 9e4d3043..def57078 100644 --- a/man/wscript +++ b/man/wscript @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # encoding: utf-8 import re diff --git a/systemd/wscript b/systemd/wscript index fc8b8f15..d10bdf96 100644 --- a/systemd/wscript +++ b/systemd/wscript @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # encoding: utf-8 diff --git a/tests/wscript b/tests/wscript index 756fd3bb..96a63bc9 100644 --- a/tests/wscript +++ b/tests/wscript @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # encoding: utf-8 test_programs = { diff --git a/waf b/waf index a2efc852..845fba5e 100755 --- a/waf +++ b/waf @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python3 # encoding: latin-1 # Thomas Nagy, 2005-2018 # diff --git a/wscript b/wscript index 49e6d79b..513ac1cb 100644 --- a/wscript +++ b/wscript @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/python3 # encoding: utf-8 from __future__ import print_function From f55b975481a2c587e99e2bdab07b833a9819ecc5 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 28 Oct 2019 11:47:39 +0100 Subject: [PATCH 09/14] Small fix on code style --- common/JackPortType.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/common/JackPortType.cpp b/common/JackPortType.cpp index 092b4c6b..940ef492 100644 --- a/common/JackPortType.cpp +++ b/common/JackPortType.cpp @@ -36,7 +36,7 @@ jack_port_type_id_t GetPortTypeId(const char* port_type) { for (jack_port_type_id_t i = 0; i < PORT_TYPES_MAX; ++i) { const JackPortType* type = gPortTypes[i]; - assert(type != 0); + assert(type != NULL); if (strcmp(port_type, type->fName) == 0) { return i; } @@ -46,9 +46,10 @@ jack_port_type_id_t GetPortTypeId(const char* port_type) const JackPortType* GetPortType(jack_port_type_id_t type_id) { - assert(type_id >= 0 && type_id <= PORT_TYPES_MAX); + if (type_id >= PORT_TYPES_MAX) + return NULL; const JackPortType* type = gPortTypes[type_id]; - assert(type != 0); + assert(type != NULL); return type; } From 6007fe0b51ec2a904392dc1ee511067b1ab7c763 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 28 Oct 2019 12:03:02 +0100 Subject: [PATCH 10/14] Update Changelog --- ChangeLog.rst | 476 +------------------------------------------------- 1 file changed, 5 insertions(+), 471 deletions(-) diff --git a/ChangeLog.rst b/ChangeLog.rst index e3b19788..ba332de3 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -1,761 +1,471 @@ ChangeLog ######### -* 1.9.14 (2019-xx-xx) +* 1.9.14 (2019-10-28) - * Nothing here yet... + * Fix ARM build + * Fix mixed mode build with meta-data is enabled + * Fix blocking DBus device reservation, so it plays nice with others (like PipeWire) + * Use python3 for the waf build scripts * 1.9.13 (2019-10-06) * Meta-data API implementation. (and a few tools updated with support for it) - * Correct GPL licence to LGPL for files needed to build libjack. - * Remove FreeBoB backend (superseded by FFADO). - * define JACK_LIB_EXPORT, useful for internal clients. - * Mark jack_midi_reset_buffer as deprecated. - * Add example systemd unit file - * Signal to systemd when jackd is ready. - * Set "seq" alsa midi driver to maximum resolution possible. - * Fix loading internal clients from another internal client. - * Code cleanup and various fixes. (too many to mention here, see git log for details) * 1.9.12 (2017-12-13) * Fix Windows build issues. - * Fix build with gcc-7. - * Show hint when DBus device reservation fails. - * Add support for internal session files. * 1.9.11-RC1 (2017-06-13) * Various corrections in NetJack2 code. Partial buffers can now be transmitted with libjacknet API. - * Including S24_LE/BE formats to linux ALSA driver. - * More robust shared memory allocator. - * Allow autostart of jackd on OSX where device-names can contain spaces. - * Correct CoreAudio devices aggregation code. - * Waf and wscripts improvement and update. - * More flexible RT priority setup on Windows. - * New JackProxyDriver. - * Various fixes in JACK MIDI code. - * Fix return value of SetTimebaseCallback(). - * Correct netmanager latency reporting. - * Implement new jack_port_rename and JackPortRenameCallback API. - * For OSX El Capitan support, use of Posix semaphore and move of Frameworks in /Library folder. - * Fix CPU hogging of the midi_thread(). - * Release audio devices when alsa_driver_new fails. - * String management fix. - * Correct JackDriver::Open: call to fGraphManager->SetBufferSize has to use current fEngineControl->fBufferSize value. - * Use ARM neon intrinsics for AudioBufferMixdown. - * Fix Netjack alignment. - * Various wscript improvements and cleanup. - * Fix initialization of several class variables. - * Heap-allocate client matrix in topo sort. - * Add a toggle command to transport utility, to allow toggling between play and stop state. - * Avoid side effects from parsing of "version" option in jackd. - * Allow firewire device be selected via -d. - * Add ARM-NEON acceleration for all non-dithering sample conversion functions. - * Add jack_simdtest utility. - * Use Linux futex as JackSynchro. - * Add autoclose option to jack_load. * 1.9.10 (2014-07-19) * More robust code in JackPortAudioDriver to handle buffer size change and backend switching. - * Fix bus error on ARM platforms. - * Dynamically scan and print backend and internal names in jackd. - * CoreMIDI driver fixes. - * Rework NetJack2 code (OPUS codec on OSX, latency management, libjacknet code). - * Correct auto-connect for audioadapter. - * Add IIO driver. - * Merge of Nedko no-self-connect branch. - * Fix freewheel mode. - * JackServer::SwitchMaster now correctly notify buffer_size and sample_rate changes, cleanup/improvements in JackNetDriver. - * Tim Mayberry : Add support for building with mingw compiler. - * Merge of Kim Jeong Yeon Android branch. - * Partial port of metadata API. * 1.9.9.5 (2012-11-26) * Adrian Knoth fix in midiseq.c. - * Fix library symbols export issue. - * Cleanup drivers and internals loading code. - * jackctl_driver_params_parse API moved in public control.h. - * More general drivers/internals loading model on Windows. - * Factorize code the server/client request in JackRequestDecoder class. - * More robust server/client protocol. - * Implement shutdown for in server clients. - * Better time-out management in NetJack2. - * Experimental system port alias use in Windows JackRouter. - * Improve ShutDown in NetManager. - * Correct ShutDown in JackInternalClient and JackLibClient. - * Fix NetJack2 initialisation bug. - * Add EndTime function (especially for Windows). - * Rename JackProcessSync in JackPosixProcessSync. - * A bit more robust JackMessageBuffer implementation (in progress). - * Check server API callback from notification thread. - * Use a time-out in notification channel write function. - * Fix lock management in JackEngine. - * In control API, UNIX like sigset_t replaced by more abstract jackctl_sigmask_t * opaque struct. - * Improve libjacknet master mode. - * Remove JACK_32_64 flag, so POST_PACKED_STRUCTURE now always used. POST_PACKED_STRUCTURE used for jack_latency_range_t type. - * Rework JackMessageBuffer. [firewire] * Introduce UpdateLatencies() in FFADO backend. [firewire] * Allow FFADO backend to change the buffer size. - * Update waf. - * New jack_get_cycle_times() implementation from Fons Adriennsen. - * Align buffers to 32 byte boundaries to allow AVX processing. - * Extend jack_control to have parameter reset commands. - * Fix alsa driver parameter order. - * Control API: Enforce driver/internal parameter order. - * Fix in ALSA adapter. - * Devin Anderson patch for Jack/CoreMIDI duplicated messages. - * Change framework installation hierarchy for OSX Mountain Lion. - * Update JackCoreAudioDriver and JackCoreAudioAdapter with more recent API. - * jack_control: fix epr command. - * Add opus support to NetJack2. - * More robust channel mapping handling in JackCoreAudioDriver. - * netjack1/netone opus support. - * controlapi: fix double free on master switch. - * Use string ids in the alsa device list. - * netjack/opus: don't re-init en/decoders. - * Correct JackPortAudioDriver::Open: special case for ASIO drivers. * 1.9.8 (2011-12-19) * Merge newer-midi branch (Devin Anderson redesign of the MIDI drivers: alsarawmidi, ffado, coremidi and winmme). - * Correction in jackdmp.cpp: notify_server_stop should be done after server destruction. - * Correct driver lifetime management. - * Add XRun detection in PortAudio driver. - * CELT code for NetJack2. - * Merge branch switch-master-port-registration-notifications: correct driver port registration. - * Libjacknet in progress. - * Correct MIDI in NetJack2. - * Correct OSX real-time thread setup. - * Correct rd_acquire in dbus code. - * Correct NetJack2 connection handling. - * SaveConnections/RestoreConnections in NetDriver and JackAudioDriver. - * Special version of jack_attach_shm/jack_release_shm on client side for POSIX shared memory, to solve a memory leak issue. - * Another round of code improvements to handle completely buggy Digidesign CoreAudio user-land driver. - * Special CATCH_CLOSE_EXCEPTION_RETURN to handle Close API calls. - * Add JACK_NETJACK_PORT and JACK_NETJACK_MULTICAST environment variables for NetJack2. NetJack2 now only send data on network only is ports are connected both sides. - * Fix for "starting two instances of same app in parallel does not work" bug. - * Enable explicit channel mapping in CoreAudio driver. - * New JackTimedDriver class to be used by JackDummyDriver, JackNetDriver and JackNetOneDriver classes. - * More robust code in synchronization primitives and in JackMessageBuffer. - * More robust Control API implementation. Add jackctl_driver_get_type in Control API. - * Singleton behaviour for JackCoreMidiDriver and JackWinMMEDriver. - * John Emmas patch for DSP CPU computation. - * John Emmas Windows server launching patch. - * Fix jack_set_port_name API. - * Enable local access in NetJack2 code. - * Dynamic port management in JACK/CoreMidi bridge. * 1.9.7 (2011-03-30) * Sync JackAlsaDriver::alsa_driver_check_card_type with JACK1 backend. - * Correct JackServer::Open to avoid a race when control API is used on OSX. - * Improve backend error handling: fatal error returned by Read/Write now cause a Process failure (so a thread exit for blocking backends). Recoverable ones (XRuns..) are now treated internally in ALSA, FreeBob and FFADO backends. - * In jackdmp.cpp, jackctl_setup_signals moved before jackctl_server_start. - * Correct symbols export in backends on OSX. ALSA backend: suspend/resume handling. - * Correct dummy driver. - * Adrian Knoth jack_lsp patch. - * Remove JackPortIsActive flag. - * New latency API implementation. - * ComputeTotalLatencies now a client/server call. - * Add latent test client for latency API. - * Also print playback and capture latency in jack_lsp. jack_client_has_session_callback implementation. - * Check requested buffer size and limit to 1..8192 - avoids weird behaviour caused by jack_bufsize foobar. - * jack_port_type_get_buffer_size implementation. - * Stop using alloca and allocate buffer on the heap for alsa_io. - * Rename jdelay to jack_iodelay as per Fons' request. - * Call buffer size callback in activate (actually this is done on client side in the RT thread Init method). - * Add jack_midi_dump client. - * Synchronize net JACK1 with JACK1 version. - * Synchronize jack_connect/jack_disconnect with JACK1 version. - * Correct JackNetMaster::SetBufferSize. - * Use jack_default_audio_sample_t instead of float consistently, fix ticket #201. - * -X now allows to add several slave backends, add -I to load several internal clients. - * Rework internal slave driver management, JackServerGlobals now handle same parameters as jackdmp. - * Correct JackEngine::NotifyGraphReorder, update JackDebugClient with latest API. - * Devin Anderson server-ctl-proposal branch merged on trunk: improved control API, slave backend reworked. Implement renaming in JackDriver::Open to avoid name collision (thanks Devin Anderson). - * Correct alsa_driver_restart (thanks Devin Anderson). Correction of jack_connect/jack_disconnect: use of jack_activate and volatile keyword for thread shared variable. - * Correction of JackNetOneDriver for latest CELT API. - * Synchronize JackWeakAPI.cpp with new APIs. * 1.9.6 (2010-08-30) * Improve JackCoreAudioDriver and JackCoreAudioAdapter : when no devices are described, takes default input and output and aggregate them. - * Correct JackGraphManager::DeactivatePort. - * Correct JackMachServerChannel::Execute : keep running even in error cases. Raise JACK_PROTOCOL_VERSION number. - * Arnold Krille firewire patch. - * Raise JACK_DRIVER_PARAM_STRING_MAX and JACK_PARAM_STRING_MAX to 127 otherwise some audio drivers cannot be loaded on OSX. - * Fix some file header to have library side code use LGPL. - * On Windows, now use TRE library for regexp (BSD license instead of GPL license). - * ffado-portname-sync.patch from ticket #163 applied. - * Remove call to exit in library code. - * Make jack_connect/jack_disconnect wait for effective port connection/disconnection. - * Add tests to validate intclient.h API. - * On Linux, inter-process synchronization primitive switched to POSIX semaphore. - * In JackCoreAudioDriver, move code called in MeasureCallback to be called once in IO thread. - * David Garcia Garzon netone patch. - * Fix from Fernando Lopez-Lezcano for compilation on fc13. - * Fix JackPosixSemaphore::TimedWait : same behavior as JackPosixSemaphore::Wait regarding EINTR. - * David Garcia Garzon unused_pkt_buf_field_jack2 netone patch. - * Arnold Krille firewire snooping patch. - * Jan Engelhardt patch for get_cycles on SPARC. - * Adrian Knoth hurd.patch, kfreebsd-fix.patch and alpha_ia64-sigsegv.patch from ticket 177. - * Adrian Knoth fix for linux cycle.h (ticket 188). - * In JackCoreAudioDriver, fix an issue when no value is given for input. * 1.9.5 (2010-02-12) * Dynamic choice of maximum port number. - * More robust sample rate change handling code in JackCoreAudioDriver. - * Devin Anderson patch for Jack FFADO driver issues with lost MIDI bytes between periods (and more). - * Fix port_rename callback: now both old name and new name are given as parameters. - * Special code in JackCoreAudio driver to handle completely buggy Digidesign CoreAudio user-land driver. - * Ensure that client-side message buffer thread calls thread_init callback if/when it is set by the client (backport of JACK1 rev 3838). - * Check dynamic port-max value. - * Fix JackCoreMidiDriver::ReadProcAux when ring buffer is full (thanks Devin Anderson). - * Josh Green ALSA driver capture only patch. - * When threads are cancelled, the exception has to be rethrown. - * Use a QUIT notification to properly quit the server channel, the server channel thread can then be 'stopped' instead of 'canceled'. - * Mario Lang alsa_io time calculation overflow patch. Shared memory manager was calling abort in case of fatal error, now return an error in caller. - * Change JackEngineProfiling and JackAudioAdapterInterface gnuplot scripts to output SVG instead of PDF. * 1.9.4 (2009-11-19) * Solaris boomer backend now working in capture or playback only mode. - * Add a -G parameter in CoreAudio backend (the computation value in RT thread expressed as percent of period). - * Use SNDCTL_DSP_SYNCGROUP/SNDCTL_DSP_SYNCSTART API to synchronize input and output in Solaris boomer backend. - * Big endian bug fix in memops.c. - * Fix issues in JackNetDriver::DecodeTransportData and JackNetDriver::Initialize. - * Correct CPU timing in JackNetDriver, now take cycle begin time after Read. - * Simplify transport in NetJack2: master only can control transport. - * Change CoreAudio notification thread setup for OSX Snow Leopard. - * Correct server temporary mode: now set a global and quit after server/client message handling is finished. - * Add a string parameter to server ==> client notification, add a new JackInfoShutdownCallback type. - * CoreAudio backend now issue a JackInfoShutdownCallback when an unrecoverable error is detected (sampling rate change, stream configuration change). - * Correct jackdmp.cpp (failures case were not correct..). - * Improve JackCoreAudioDriver code. - * Raise default port number to 2048. - * Correct JackProcessSync::LockedTimedWait. - * Correct JACK_MESSAGE_SIZE value, particularly in OSX RPC code. - * Now start server channel thread only when backend has been started (so in JackServer::Start). - * Should solve race conditions at start time. - * jack_verbose moved to JackGlobals class. - * Improve aggregate device management in JackCoreAudioDriver: now a "private" device only and cleanup properly. - * Aggregate device code added to JackCoreAudioAdapter. - * Implement "hog mode" (exclusive access of the audio device) in JackCoreAudioDriver. - * Fix jack_set_sample_rate_callback to have he same behavior as in JACK1. - * Dynamic system version detection in JackCoreAudioDriver to either create public or private aggregate device. - * In JackCoreAudioDriver, force the SR value to the wanted one *before* creating aggregate device (otherwise creation will fail). - * In JackCoreAudioDriver, better cleanup of AD when intermediate open failure. - * In JackCoreAudioDriver::Start, wait for the audio driver to effectively start (use the MeasureCallback). - * In JackCoreAudioDriver, improve management of input/output channels: -1 is now used internally to indicate a wanted max value. - * In JackCoreAudioDriver::OpenAUHAL, correct stream format setup and cleanup. - * Correct crash bug in JackAudioAdapterInterface when not input is used in adapter (temporary fix). - * Sync JackCoreAudioAdapter code on JackCoreAudioDriver one. - * JACK_SCHED_POLICY switched to SCHED_FIFO. - * Now can aggregate device that are themselves AD. - * No reason to make jack_on_shutdown deprecated, so revert the incorrect change. - * Thread AcquireRealTime and DropRealTime were (incorrectly) using fThread field. - * Use pthread_self()) (or GetCurrentThread() on Windows) to get the calling thread. - * Correctly save and restore RT mode state in freewheel mode. - * Correct freewheel code on client side. - * Fix AcquireRealTime and DropRealTime: now distinguish when called from another thread (AcquireRealTime/DropRealTime) and from the thread itself (AcquireSelfRealTime/DropSelfRealTime). - * Correct JackPosixThread::StartImp: thread priority setting now done in the RT case only. - * Correct JackGraphManager::GetBuffer for the "client loop with one connection" case: buffer must be copied. - * Correct JackInfoShutdownCallback prototype, two new JackClientProcessFailure and JackClientZombie JackStatus code. - * Correct JackCoreAudio driver when empty strings are given as -C, -P or -d parameter. - * Better memory allocation error checking on client (library) side. - * Better memory allocation error checking in ringbuffer.c, weak import improvements. - * Memory allocation error checking for jack_client_new and jack_client_open (server and client side). - * Memory allocation error checking in server for RPC. - * Simplify server temporary mode: now use a JackTemporaryException. - * Lock/Unlock shared memory segments (to test...). - * Sync with JACK1 : -r parameter now used for no-realtime, realtime (-R) is now default, usable backend given vie platform. - * In JackCoreAudio driver, (possibly) clock drift compensation when needed in aggregated devices. - * In JackCoreAudio driver, clock drift compensation in aggregated devices working. - * In JackCoreAudio driver, clock drift compensation semantic changed a bit: when on, does not activate if not needed (same clock domain). - * Sync JackCoreAudioAdapter code with JackCoreAudioDriver. * 1.9.3 (2009-07-21) * New JackBoomerDriver class for Boomer driver on Solaris. - * Add mixed 32/64 bits mode (off by default). - * Native MIDI backend (JackCoreMidiDriver, JackWinMMEDriver). - * In ALSA audio card reservation code, tries to open the card even if reservation fails. - * Clock source setting on Linux. - * Add jackctl_server_switch_master API. - * Fix transport callback (timebase master, sync) issue when used after jack_activate (RT thread was not running). - * D-Bus access for jackctl_server_add_slave/jackctl_server_remove_slave API. - * Cleanup "loopback" stuff in server. - * Torben Hohn fix for InitTime and GetMicroSeconds in JackWinTime.c. - * New jack_free function added in jack.h. - * Reworked Torben Hohn fix for server restart issue on Windows. - * Correct jack_set_error_function, jack_set_info_function and jack_set_thread_creator functions. - * Correct JackFifo::TimedWait for EINTR handling. - * Move DBus based audio device reservation code in ALSA backend compilation. - * Correct JackTransportEngine::MakeAllLocating, sync callback has to be called in this case also. - * NetJack2 code: better error checkout, method renaming. - * Tim Bechmann patch: hammerfall, only release monitor thread, if it has been created. - * Tim Bechmann memops.c optimization patches. - * In combined --dbus and --classic compilation code, use PulseAudio acquire/release code. - * Big rewrite of Solaris boomer driver, seems to work in duplex mode at least. - * Loopback backend reborn as a dynamically loadable separated backend. * 1.9.2 (2009-02-11) * Solaris version. - * New "profiling" tools. - * Rework the mutex/signal classes. - * Support for BIG_ENDIAN machines in NetJack2. - * D-BUS based device reservation to better coexist with PulseAudio on Linux. - * Add auto_connect parameter in netmanager and netadapter. - * Use Torben Hohn PI controler code for adapters. - * Client incorrect re-naming fixed : now done at socket and fifo level. - * Virtualize and allow overriding of thread creation function, to allow Wine support (from JACK1). * 1.9.1 (2008-11-14) * Fix jackctl_server_unload_internal. - * Filter SIGPIPE to avoid having client get a SIGPIPE when trying to access a died server. - * Libjack shutdown handler does not "deactivate" (fActive = false) the client anymore, so that jack_deactivate correctly does the job later on. - * Better isolation of server and clients system resources to allow starting the server in several user account at the same time. - * Report ringbuffer.c fixes from JACK1. - * Client and library global context cleanup in case of incorrect shutdown handling (that is applications not correctly closing client after server has shutdown). - * Use JACK_DRIVER_DIR variable in internal clients loader. - * For ALSA driver, synchronize with latest JACK1 memops functions. - * Synchronize JACK2 public headers with JACK1 ones. - * Implement jack_client_real_time_priority and jack_client_max_real_time_priority API. - * Use up to BUFFER_SIZE_MAX frames in midi ports, fix for ticket #117. - * Cleanup server starting code for clients directly linked with libjackserver.so. - * JackMessageBuffer was using thread "Stop" scheme in destructor, now use the safer thread "Kill" way. - * Synchronize ALSA backend code with JACK1 one. - * Set default mode to 'slow' in JackNetDriver and JackNetAdapter. - * Simplify audio packet order verification. - * Fix JackNetInterface::SetNetBufferSize for socket buffer size computation and JackNetMasterInterface::DataRecv if synch packet is received, various cleanup. - * Better recovery of network overload situations, now "resynchronize" by skipping cycles.". - * Support for BIG_ENDIAN machines in NetJack2. - * Support for BIG_ENDIAN machines in NetJack2 for MIDI ports. - * Support for "-h" option in internal clients to print the parameters. - * In NetJack2, fix a bug when capture or playback only channels are used. - * Add a JACK_INTERNAL_DIR environment variable to be used for internal clients. - * Add a resample quality parameter in audioadapter. - * Now correctly return an error if JackServer::SetBufferSize could not change the buffer size (and was just restoring the current one). - * Use PRIu32 kind of macro in JackAlsaDriver again. - * Add a resample quality parameter in netadapter. * 1.9.0 (2008-03-18) * Waf based build system: Nedko Arnaudov, Grame for preliminary OSX support. - * Control API, dbus based server control access: Nedko Arnaudov, Grame. - * NetJack2 components (in progress): jack_net backend, netmanager, audioadapter, netadapter : Romain Moret, Grame. - * Code restructuring to help port on other architectures: Michael Voigt. - * Code cleanup/optimization: Tim Blechmann. - * Improve handling of server internal clients that can now be loaded/unloaded using the new server control API: Grame. - * A lot of bug fix and improvements. * 0.72 (2008-04-10) @@ -763,112 +473,69 @@ ChangeLog * 0.71 (2008-02-14) * Add port register/unregister notification in JackAlsaDriver. - * Correct JACK_port_unregister in MIDI backend. - * Add TimeCallback in JackDebugClient class. - * Correct jack_get_time propotype. - * Correct JackSocketClientChannel::ClientClose to use ServerSyncCall instead of ServerAsyncCall. - * Better documentation in jack.h. libjackdmp.so renamed to libjackservermp.so and same for OSX framework. - * Define an internal jack_client_open_aux needed for library wrapper feature. - * Remove unneeded jack_port_connect API. - * Correct jack_port_get_connections function (should return NULL when no connections). - * In thread model, execute a dummy cycle to be sure thread has the correct properties (ensure thread creation is finished). - * Fix engine real-time notification (was broken since ??). - * Implements wrapper layer. - * Correct jack_port_get_total_latency. - * Correct all backend playback port latency in case of "asynchronous" mode (1 buffer more). - * Add test for jack_cycle_wait, jack_cycle_wait and jack_set_process_thread API. - * RT scheduling for OSX thread (when used in dummy driver). - * Add -L (extra output latency in aynchronous mode) in CoreAudio driver. - * New JackLockedEngine decorator class to serialize access from ALSA Midi thread, command thread and in-server clients. - * Use engine in JackAlsaDriver::port_register and JackAlsaDriver::port_unregister. - * Fix connect notification to deliver *one* notification only. - * Correct JackClient::Activate so that first kGraphOrderCallback can be received by the client notification thread. - * New jack_server_control client to test notifications when linked to the server library. - * Synchronise transport.h with latest jackd version (Video handling). - * Transport timebase fix. - * Dmitry Baikov patch for alsa_rawmidi driver. - * Pieter Palmers patch for FFADO driver. - * Add an Init method for blocking drivers to be decorated using JackThreadedDriver class. - * Correct PortRegister, port name checking must be done on server side. - * Correct a missing parameter in the usage message of jack_midiseq. - * New SetNonBlocking method for JackSocket. - * Correct a dirty port array issue in JackGraphManager::GetPortsAux. * 0.70 (2008-01-24) * Updated API to match jack 0.109.0 version. - * Update in usx2y.c and JackPort.cpp to match jackd 0.109.2. - * Latest jack_lsp code from jack SVN. - * Add jack_mp_thread_wait client example. - * Add jack_thread_wait client example. - * Remove checking thread in CoreAudio driver, better device state change recovery strategy: the driver is stopped and restarted. - * Move transport related methods from JackEngine to JackServer. * Tim Blechmann sse optimization patch for JackaudioPort::MixAudioBuffer, use of Apple Accelerate framework on OSX. - * Remove use of assert in JackFifo, JackMachSemaphore, and JackPosixSemaphore: print an error instead. - * Correct "server_connect": close the communication channel. - * More robust external API. - * Use SetAlias for port naming. - * Use jackd midi port naming scheme. - * Notify ports unregistration in JackEngine::ClientCloseAux. - * Fix in JackClient::Error(): when RT thread is failing and calling Shutdown, Shutdown was not desactivating the client correctly. @@ -877,138 +544,83 @@ ChangeLog * On OSX, use CFNotificationCenterPostNotificationWithOptions with kCFNotificationDeliverImmediately | kCFNotificationPostToAllSessions for server ==> JackRouter plugin notification. - * On OSX, use jack server name in notification system. - * Correct fPeriodUsecs computation in JackAudioDriver::SetBufferSize and JackAudioDriver::SetSampleRate. - * Correct JackMachNotifyChannel::ClientNotify. - * Correct bug in CoreAudio driver sample rate management. - * Add a sample_rate change listener in CoreAudio driver. - * Correct sample_rate management in JackCoreAudioDriver::Open. - * Better handling in sample_rate change listener. - * Pieter Palmers FFADO driver and scons based build. - * Pieter Palmers second new build system: scons and Makefile based build. - * Tim Blechmann scons patch. - * Change string management for proper compilation with gcc 4.2.2. - * JackLog cleanup. - * Cleanup in CoreAudio driver. - * Tim Blechmann patch for JackGraphManager::GetPortsAux memory leak, Tim Blechmann patch for scons install. - * Dmitry Baikov MIDI patch: alsa_seqmidi and alsa_rammidi drivers. - * CoreAudio driver improvement: detect and notify abnormal situations (stopped driver in case of SR change...). * 0.68 (2007-10-16) * Internal loadable client implementation, winpipe version added. - * Reorganize jack headers. - * Improve Linux install/remove scripts. - * Use LIB_DIR variable for 64 bits related compilation (drivers location). - * More generic Linux script. - * Correct jack_acquire_real_time_scheduling on OSX. - * Merge of Dmitry Baikov MIDI branch. - * Correct JackGraphManager::GetPortsAux to use port type. - * Remove JackEngineTiming class: code moved in JackEngineControl. - * Add midiseq and midisine examples. - * Cleanup old zombification code. - * Linux Makefile now install jack headers. - * Use of JACK_CLIENT_DEBUG environment variable to activate debug client mode. - * Definition of JACK_LOCATION variable using -D in the Makefile. - * Restore jack 0.103.0 MIDI API version. - * Fix a bug in freewheel management in async mode: drivers now receive the kStartFreewheelCallback and kStopFreewheelCallback notifications. - * Server and user directory related code moved in a JackTools file. - * Client name rewriting to remove path characters (used in fifo naming). - * Correct ALSA driver Attach method: internal driver may have changed the buffer_size and sample_rate values. - * Add JackWinSemaphore class. - * Add an implementation for obsolete jack_internal_client_new and jack_internal_client_close. - * Add missing jack_port_type_size. - * Use of JackWinSemaphore instead of JackWinEvent for inter-process synchronization. - * Correct types.h for use with MINGW on Windows. - * Move OSX start/stop notification mechanism in Jackdmp.cpp. - * Correct CheckPort in JackAPI.cpp. * 0.67 (2007-09-28) * Correct jack_client_open "status" management. - * Rename server_name from "default" to "jackdmp_default" to avoid conflict with regular jackd server. - * Fix a resource leak issue in JackCoreAudioDriver::Close(). - * Better implement "jack_client_open" when linking a client with the server library. - * Correct "jack_register_server" in shm.c. - * Add missing timestamps.c and timestamps.h files. - * Correctly export public headers in OSX frameworks. - * Suppress JackEngine::ClientInternalCloseIm method. - * Use .jackdrc file (instead of .jackdmprc). - * Install script now creates a link "jackd ==> jackdmp" so that automatic launch can work correctly. - * Paul Davis patch for -r (--replace-registry) feature. - * Internal loadable client implementation. - * Fix JackEngine::Close() method. - * Windows JackRouter.dll version 0.17: 32 integer sample format. * 0.66 (2007-09-06) * Internal cleanup. - * Windows JackRouter.dll version 0.16: use of "jack_client_open" API to allow automatic client renaming, better Windows VISTA support, new JackRouter.ini file. @@ -1016,62 +628,42 @@ ChangeLog * 0.65 (2007-08-30) * Fix backend port alias management (renaming in system:xxx). - * Fix a bug in JackLibClient::Open introduced when adding automatic client renaming. - * Fix a bug in jack_test. - * Correct JackShmMem destructor. - * Correct end case in JackClient::Execute. - * Correct JackMachSemaphore::Disconnect. - * Implement server temporary (-T) mode. - * Make "Rename" a method of JackPort class, call it from driver Attach method. - * Server/library protocol checking implementation. * 0.64 (2007-07-26) * Checking in the server to avoid calling the clients if no callback are registered. - * Correct deprecated jack_set_sample_rate_callback to return 0 instead of -1. - * Dmitry Baikov buffer size patch. - * Correct notification for kActivateClient event. Correct JackEngine::ClientCloseAux (when called from JackEngine::ClientExternalOpen). - * Correct JackWinEvent::Allocate. - * Automatic client renaming. - * Add "systemic" latencies management in CoreAudio driver. - * Automatic server launch. - * Removes unneeded 'volatile' for JackTransportEngine::fWriteCounter. * 0.63 (2007-04-05) * Correct back JackAlsaDriver::Read method. - * Dmitry Baikov patch for JackGraphManager.cpp. Merge JackGraphManager Remove and Release method in a unique Release method. - * Dmitry Baikov jackmp-time patch : add jack_get_time, jack_time_to_frames, jack_frames_to_time. Add missing -D__SMP__in OSX project. Add new jack_port_set_alias, jack_port_unset_alias and jack_port_get_aliases API. - * Steven Chamberlain patch to fix jack_port_by_id export. - * Steven Chamberlain patch to fix jack_port_type. Test for jack_port_type behaviour in jack_test.cpp tool. Add jack_set_client_registration_callback API. Add "callback exiting" and "jack_frame_time" tests in jack_test. @@ -1081,97 +673,66 @@ ChangeLog * More client debug code: check if the client is still valid in every JackDebugClient method, check if the library context is still valid in every API call. - * Uses a time out value of 10 sec in freewheel mode (like jack). - * More robust activation/deactivation code, especially in case of client crash. - * New LockAllMemory and UnlockAllMemory functions. - * Use pthread_attr_setstacksize in JackPosixThread class. - * Add Pieter Palmers FreeBob driver. - * Thibault LeMeur ALSA driver patch. - * Thom Johansen fix for port buffer alignment issues. - * Better error checking in PortAudio driver. * 0.61 (2006-12-18) * Tom Szilagyi memory leak fix in ringbuffer.c. - * Move client refnum management in JackEngine. - * Shared_ports renamed to shared_graph. - * Add call to the init callback (set up using the jack_set_thread_init_callback API) in Real-Time and Notification threads. - * Define a new 'kActivateClient' notification. - * New server/client data transfer model to fix a 64 bits system bug. - * Fix a device name reversal bug in ALSA driver. - * Implement thread.h API. * 0.60 (2006-11-23) * Improve audio driver synchronous code to better handle possible time-out cases. - * Correct JackWinEnvent::Allocate (handle the ERROR_ALREADY_EXISTS case). - * Correct JackEngine::ClientExternalNew. * 0.59 (2006-09-22) * Various fixes in Windows version. - * Signal handling in the Windows server. - * Improved JackRouter ASIO/Jack bridge on Windows. - * Rename global "verbose" in "jack_verbose" to avoid symbol clash with PureData. - * Add a new cpu testing/loading client. - * Correct server SetBufferSize in case of failure. - * Correct PortAudio driver help. - * Use -D to setup ADDON_DIR on OSX and Linux. - * Synchronize ALSA backend with jack one. * 0.58 (2006-09-06) * Correct a bug introduced in 0.55 version that was preventing coreaudio audio inputs to work. - * Restructured code structure after import on svn. * 0.57 * Correct bug in Mutex code in JackClientPipeThread::HandleRequest. - * ASIO JackRouter driver supports more applications. - * Updated HTML documentation. - * Windows dll binaries are compiled in "release" mode. * 0.56 * Correct SetBufferSize in coreaudio driver, portaudio driver and JackServer. - * Real-time notifications for Windows version. - * In the PortAudio backend, display more informations for installed WinMME, * DirectSound and ASIO drivers. @@ -1179,40 +740,30 @@ ChangeLog * 0.55 * Windows version. - * Correct management of monitor ports in ALSA driver. - * Engine code cleanup. - * Apply Rui patch for more consistent parameter naming in coreaudio driver. - * Correct JackProcessSync::TimedWait: time-out was not computed correctly. - * Check the return code of NotifyAddClient in JackEngine. * 0.54 * Use the latest shm implementation that solve the uncleaned shm segment problem on OSX. - * Close still opened file descriptors (report from Giso Grimm). Updated html documentation. * 0.53 * Correct JackPilotMP tool on OSX. - * Correct CoreAudio driver for half duplex cases. - * Fix a bug in transport for "unactivated" clients. - * Fix a bug when removing "unactivated" clients from the server. Tested on Linux/PPC. * 0.52 * Universal version for Mac Intel and PPC. - * Improvement of CoreAudio driver for half duplex cases. * 0.51 @@ -1230,69 +781,52 @@ ChangeLog * 0.48 * Finish software monitoring implementation for ALSA and CoreAudio drivers. - * Simpler shared library management on OSX. * 0.47 * More fix for 64 bits compilation. - * Correct ALSA driver. - * Create a specific folder for jackdmp drivers. - * Use /dev/shm as default for fifo and sockets. - * "Install" and "Remove" script for smoother use with regular jack. * 0.46 * Fix a bug in loop management. - * Fix a bug in driver loading/unloading code. - * Internal code cleanup for better 64 bits architecture support. - * Compilation on OSX/Intel. - * Add the -d option for coreaudio driver (display CoreAudio devices internal name). * 0.45 * Script to remove the OSX binary stuff. - * Correct an export symbol issue that was preventing QjackCtl to work on OSX. - * Fix the consequences of the asynchronous semantic of connections/disconnections. * 0.44 * Patch from Dmitry Daikov: use clock_gettime by default for timing. - * Correct dirty buffer issue in CoreAudio driver. Updated doc. * 0.43 * Correct freewheel mode. - * Optimize ALSA and coreaudio drivers. - * Correct OSX installation script. * 0.42 * Patch from Nick Mainsbridge. - * Correct default mode for ALSA driver. - * Correct XCode project. * 0.41 * Add the ALSA MMAP_COMPLEX support for ALSA driver. - * Patch from Dmitry Daikov: compilation option to choose between "get_cycles" and "gettimeofday" to measure timing. From a0de623b8b3a933f865f87af097cb4285d905b25 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 28 Oct 2019 12:15:21 +0100 Subject: [PATCH 11/14] Fix typo in changelog --- ChangeLog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog.rst b/ChangeLog.rst index ba332de3..020410ff 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -4,7 +4,7 @@ ChangeLog * 1.9.14 (2019-10-28) * Fix ARM build - * Fix mixed mode build with meta-data is enabled + * Fix mixed mode build when meta-data is enabled * Fix blocking DBus device reservation, so it plays nice with others (like PipeWire) * Use python3 for the waf build scripts From e1c2f7cf8fe27c03b9323ca54b69f1e89c79c2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Blizi=C5=84ski?= Date: Wed, 7 Oct 2020 18:55:31 +0100 Subject: [PATCH 12/14] Clarification about jack_port_get_latency_range(). jack_port_get_latency_range only returns meaningful values after ports get connected, and that is signalled via the latency callback. Saying that it's normally used in callbacks is too soft, the docs should make it clear that the function is not very useful outside of the callback, because you don't know whether the port is connected / whether the latency values changed. --- common/jack/jack.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/common/jack/jack.h b/common/jack/jack.h index e982b6df..cd7e2e95 100644 --- a/common/jack/jack.h +++ b/common/jack/jack.h @@ -605,6 +605,10 @@ int jack_set_xrun_callback (jack_client_t *client, * Clients that do not meet any of those conditions SHOULD * register a latency callback. * + * Another case is when a client wants to use + * @ref jack_port_get_latency_range(), which only returns meaninful + * values when ports get connected and latency values change. + * * See the documentation for @ref jack_port_set_latency_range() * on how the callback should operate. Remember that the @a mode * argument given to the latency callback will need to be @@ -1119,8 +1123,11 @@ void jack_port_set_latency (jack_port_t *port, jack_nframes_t) JACK_OPTIONAL_WEA * * See @ref LatencyFunctions for the definition of each latency value. * - * This is normally used in the LatencyCallback. - * and therefor safe to execute from callbacks. + * This function is best used from callbacks, specifically the latency callback. + * Before a port is connected, this returns the default latency: zero. + * Therefore it only makes sense to call jack_port_get_latency_range() when + * the port is connected, and that gets signalled by the latency callback. + * See @ref jack_set_latency_callback() for details. */ void jack_port_get_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT; From 39605d519fb06a73472990d75de9f21323cad203 Mon Sep 17 00:00:00 2001 From: "luz.paz" Date: Thu, 22 Aug 2019 17:55:04 -0400 Subject: [PATCH 13/14] README: Add repology repository badge This badge links to a chart that shows where jack2 is the package ecosystem. Apologies, I was unsuccessful formatting the .rst so the badges could be side-by-side. --- README.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index cc401a6b..1751b4ca 100644 --- a/README.rst +++ b/README.rst @@ -2,8 +2,10 @@ ################################ .. image:: https://travis-ci.org/jackaudio/jack2.svg?branch=master - :target: https://travis-ci.org/jackaudio/jack2 - + :target: https://travis-ci.org/jackaudio/jack2 +.. image:: https://repology.org/badge/tiny-repos/jack-audio-connection-kit.svg + :target: https://repology.org/metapackage/jack-audio-connection-kit/versions + JACK2 aka jackdmp is a C++ version of the JACK low-latency audio server for multi-processor machines. It is a new implementation of the JACK server core features that aims at removing some limitations of the JACK1 design. The From 198b1a2b394a9cad99113b3d5df9b36bb2a325f2 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 15 Oct 2020 14:05:49 +0100 Subject: [PATCH 14/14] Remove "v" prefix from Windows installer files Signed-off-by: falkTX --- windows/inno/win32.iss | 2 +- windows/inno/win64.iss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/inno/win32.iss b/windows/inno/win32.iss index c4d58e10..7046c670 100644 --- a/windows/inno/win32.iss +++ b/windows/inno/win32.iss @@ -9,7 +9,7 @@ AppUpdatesURL=https://github.com/jackaudio/jack2-releases/releases/ AppVersion={#VERSION} DefaultDirName={commonpf32}\JACK2 DisableDirPage=yes -OutputBaseFilename=jack2-win32-v{#VERSION} +OutputBaseFilename=jack2-win32-{#VERSION} OutputDir=. UsePreviousAppDir=no diff --git a/windows/inno/win64.iss b/windows/inno/win64.iss index e4e509a8..904db232 100644 --- a/windows/inno/win64.iss +++ b/windows/inno/win64.iss @@ -10,7 +10,7 @@ AppUpdatesURL=https://github.com/jackaudio/jack2-releases/releases/ AppVersion={#VERSION} DefaultDirName={commonpf64}\JACK2 DisableDirPage=yes -OutputBaseFilename=jack2-win64-v{#VERSION} +OutputBaseFilename=jack2-win64-{#VERSION} OutputDir=. UsePreviousAppDir=no