13
0
Commit Graph

75 Commits

Author SHA1 Message Date
John Emmas
56772b8156 Revert an unintended change from #eff61bde325b 2023-09-14 16:54:15 +01:00
eff61bde32 JACK: accomodate MSVC in DEBUG_TRACE stmts involving pthread_self 2023-09-14 06:59:29 -06:00
3c857a78c6 JACK backend: serialize all jack server calls with a mutex
As was noted in 88ee3af3ea it is unsafe/undefined behavior if two threads
sleep on the JACK request file descriptor, since there is no way to control
which one will wake and process the request. Since each thread may have
sent a different request, this can lead to a thread misinterpreting the
response because it is reading the wrong response.

This may (or may not) solve some subtle problems with JACK, but was
revealed by having a control surface (LaunchPad Pro) that registers
three ports from the butler thread at about the same as the GUI
thread is registering the auditioner. One thread read the wrong
response, and because of some slightly weird code/design, it attempts
to rename the port from within the response handler, which in JACK1
leads to deadlock (and later, zombification).
2023-09-13 09:20:41 -06:00
0eed821eb9 JACK: do not set the thread-init callback
Because we use the non-callback API, we can call our thread init callback
ourselves from ::process_thread(). In addition, the init_callback in JACK is
used by every thread JACK creates, including the messagebuffer thread, and this
confuses things from an Ardour POV where the callback was intended just for
realtime threads.
2023-04-21 12:16:37 -06:00
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
+merlan #flirora
79f55742d6
JACKAudioBackend::join_process_threads: Don’t pass NULL for jack_client_stop_thread
This is needed for PipeWire’s JACK frontend, which implements this
function and expects the first argument to be non-null.
2022-10-24 04:45:08 +02:00
ad9ac0911e remove some timing stats that it seems unlikely we will use 2021-06-15 14:03:55 -06:00
e511cd2cb7 JACK backend: "fix" RunLoop timing 2021-06-13 11:11:03 -06:00
a5f7c793e3 add a new "Run Loop" timing stats for ALSA and JACK backends 2021-06-13 10:28:51 -06:00
8afc994177 add some DSP stats to the JACK backend 2021-06-12 09:20:28 -06:00
8e482ef0fb
Con't work on ALSA nperiod selection (see also d3d120fa) 2020-04-28 17:56:17 +02:00
70f13a3ff3 use RCU to manage JACK backend's container of ports 2020-04-08 19:56:33 -06:00
78a66b7180 improved port cleanup as backend is destroyed 2020-04-07 23:26:51 -06:00
b9cb306e8b use shared_ptr to manage backend port lifetimes (Pulse,ALSA,Dummy,JACK)
JACK is not yet finished.

Changes also include minor reformatting and a spelling correction (latecies to latencies)
2020-04-07 13:23:49 -06:00
0b52ea7a9c add a bit of debugging to JACK transport code 2019-11-15 16:06:04 -07:00
47a62b2850
Update backend GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
94e6164bc3 Add API to query backend realtime thread priority 2018-10-11 15:29:40 +02:00
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
7ad8ad8823 JACK: expose --nperiods option 2015-12-05 13:56:18 +01:00
34d9b2148e Remove an unnecessary boolean argument in jack utils
Specify latency in JackCommandLineOptions instead
2015-10-06 13:29:57 +10:00
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
a68221e323 fix jack/pthread windows condition 2015-07-04 11:49:44 +02:00
416ef93635 use a trick to compile JACK/win with new and old headers
jack/systemdeps.h is jack2-only and contains many
windows-specific typedefs (native windows threads, ptw32 threads, MSVC
special cases etc etc.) which are not present in jack1/shared headers.
2015-07-04 09:52:04 +02:00
58a7b0e137 fix side-effect of moving to jack1 headers 2015-07-04 05:59:37 +02:00
278cd98799 fix compilation with mingw + pthreads 2015-07-04 05:48:42 +02:00
573ec69a9a probe buffersize if jackd is already running. 2015-06-14 18:10:31 +02:00
582138f280 change Audio backend sample time methods to use a 64 bit timeline 2015-02-19 17:44:01 -05:00
0018ee2b02 fix “invalid use of incomplete type jack_client_t”
introduced in 66eef25
2015-01-30 11:02:07 +01:00
66eef257d8 fix jack thread joining
at the time the graph gets around to takes down 
client threads, the jack-backend’s jack_client has been reset.
But never mind: libjack does not care about it, anyway.
2015-01-30 01:28:52 +01:00
f3ff1b9669 weak/runtime jack linking: load libjack dynamically at runtime 2014-10-23 16:53:13 +02:00
f7211ff8f7 fix jack/mingw compilation 2014-10-22 23:57:55 +02:00
68458cde69 fix all 4 backends' failure to include the main "backend" thread when computing ::in_process_thread() 2014-10-22 17:07:11 -04:00
8d59afb048 copy over current Waves version of their backend, along with minor changes in libs/ardour and libs/backend/jack to fit with API changes 2014-09-30 21:00:34 -04:00
104adebea6 if the user chooses to stop the jack-backend, mark it as stopped. Don't display the "..was shutdown .. was not fast enough.." message. 2014-06-04 17:17:14 +02:00
66559cd795 Add AudioBackend::info() method to retrieve AudioBackendInfo object
Goal is to be able to call AudioBackendInfo::already_configured() from the right place.
2014-05-01 09:14:25 -04:00
e6b56f3447 fix undefined value, support netjack2 2014-03-23 02:26:37 +01:00
9dbdac2a19 remove unused and unimplementable audio engine sample format code 2014-02-24 14:46:19 -05:00
36c233fe6c Merge branch 'master' into cairocanvas 2014-01-07 21:37:48 -05:00
2163467d31 add M-Audio 2496 as a recognized card for the mudita24 control panel/app.
(Yes, this hard coding thing is awful)
2014-01-06 11:35:57 -05:00
1676789907 fix merge conflicts from master 2013-12-12 10:06:59 -05:00
Nils Philippsen
a86b66181a ignore "unofficial" states in jack_sync_callback() 2013-12-09 17:56:06 +01:00
59da788793 Merge branch 'master' into cairocanvas 2013-12-05 17:50:28 -05:00
ce7bfb489c change "cpu" in cpu load backend functions 2013-12-04 11:48:31 -05:00
3c98de9ce4 fix merge with master 2013-11-29 22:31:29 -05:00
1190f1d0e0 make JACK backend return the right set of values when asked for buffer sizes or sample rate of a device other than the one in use 2013-11-27 17:41:54 -05:00
680c64246e Merge branch 'master' into cairocanvas 2013-11-27 16:19:01 -05:00
56716a1f28 add error check to call to PortManager::reestablish_ports 2013-11-27 15:24:24 -05:00
0cca272431 try to fix various warnings from gcc when optimization flags are enabled 2013-11-04 21:32:41 -05:00