Commit graph

21744 commits

Author SHA1 Message Date
Robin Gareus
9945d7721f
Allow to investigate I/O thread policy
see
https://discourse.ardour.org/t/ardour-8-7-unable-to-connect-to-audio-backend/110774/10
https://discourse.ardour.org/t/ardour-8-7-x-run-issues/110767/2
2024-09-27 01:41:40 +02:00
Robin Gareus
6cc54aa1b0
Fix playhead moving beyond loop range
When some other transport related session event (anything that
requires non_realtime_work_pending, e.g. PostTransportOverWrite)
coincides with SessionEvent::AutoLoop, the auto-loop event
was removed from the main event queue and executed as one-shot
immediate event.

While looping the AutoLoop event needs to remain on the main
event queue.
2024-09-26 16:26:05 +02:00
Robin Gareus
dc92ed1bc9
Fix Pre-Fader RegionFx when looping 2024-09-26 04:39:19 +02:00
Robin Gareus
180e90b81a
Only call non_realtime_locate() when locating
`butler_transport_work()` may be called for various reasons,
notably PostTransportOverWrite. At that point in time the
transport may still be rolling or stopping with rtloc already
set.

This can cause DR::Underruns since seek clear the entire
disk reader buffer.
2024-09-26 03:45:24 +02:00
Robin Gareus
4f33105ae0
Process PostTransportOverWrite after all
This is needed to properly decrement "should_do_transport_work".
After a seek the DR:_pending_overwrite flag will have been
cleared, so not much extra work happens here.
2024-09-26 03:25:13 +02:00
Robin Gareus
e1f465a952
NO-OP: improve butler and disk-i/o debug messages 2024-09-26 03:25:07 +02:00
Robin Gareus
75e6a77c3e
Fix another debug message 2024-09-26 02:26:30 +02:00
Robin Gareus
9d0415ba04
Waveview: fix visual jitter when trimming or splitting regions
The left edge of a region on the the editor is rounded to be
on a pixel. When zoomed out, the position corresponding to that
pixel is not usually identical to the region's position().

We need to correct for this as best as possible, while keeping
peaks aligned to pixels.
2024-09-26 02:21:24 +02:00
Robin Gareus
68eb63e0c8
Waveview: fix rounding, span entire region rectangle
Previously samples at the end could end up being cropped,
when the Waveview is rendered using an offset.
2024-09-26 02:21:24 +02:00
Robin Gareus
b28090c64c
Peakdata: start striding at consistent offsets 2024-09-26 02:21:24 +02:00
Robin Gareus
5d65d7f051
Peakdata: correctly set peaks of left and right end 2024-09-26 02:21:23 +02:00
Robin Gareus
18e0cba1cb
Fix underruns when looping/locating and changing region content
Previously loop-wrap around asked the butler to perform
a unnecessary seek operation next time it is summoned.

If the butler is then summoned for a PostTransportOverWrite
event, the seek causes a DR::Underrun.
2024-09-25 20:06:08 +02:00
Robin Gareus
5af023c70b
Fix some debug messages 2024-09-25 20:06:08 +02:00
Paul Davis
3d1c414a94 initialize member variable 2024-09-24 14:52:06 -06:00
Paul Davis
0e28620a7a prevent Session::StateSaved being emitted when doing save-as with no switch-to
The signal would be emitted while the session was temporarily renamed,
making it appear that we had switched to the new session, despite instructions
not to do so. We had not actually done so, but the saved-as name would show up
on window titles.
2024-09-24 14:50:35 -06:00
Robin Gareus
72cac07ae7
Generic MIDI: do not send touch events for all mapped controlers
Previously a start-touch was sent for any bound MIDI
Controllable on each incoming MIDI Control event.
2024-09-24 16:11:00 +02:00
Robin Gareus
d3f536a7ff
Remove unused variable 2024-09-24 16:10:59 +02:00
Ben Loftis
4024a4354c region grouping: Overdubbing in non-layered mode was assigning wrong groups 2024-09-23 16:35:04 -05:00
Paul Davis
f75f5b0ded add option to name new MIDI tracks from SMF with just the SMF track name (libs edition) 2024-09-22 09:49:55 -06:00
Robin Gareus
9c64e7d141
Fix libhid API builds with recent gcc/glib `
Since glibc 2.10 `wcsdup` and `strtok_r` require `_POSIX_C_SOURCE`

(see also da520ce 4b8b5ac)
2024-09-15 12:00:12 +02:00
Fabio Pesari
f94bde59d7
Fix for Boost 1.8.5
Recent boost prevents calls to `get_child` with temporary
default values.
2024-09-15 11:43:52 +02:00
Paul Davis
1f70d54989 avoid call of a null function pointer 2024-09-13 08:24:04 -06:00
Paul Davis
79e78394c2 track modal window show/hide, not realize/finalize 2024-09-13 16:02:59 +02:00
Robin Gareus
ab533c38a3
LV2 fix a tiny memory leak introduced in c0b61d5a28 2024-09-11 05:31:27 +02:00
Paul Davis
1737b48aec Revert "try to add some debugging for macOS modal/menu handling"
This reverts commit c5751db473.
2024-09-10 16:34:16 -06:00
Paul Davis
bf6ce27b03 Revert "try to fix up previous commit"
This reverts commit 04305774cc.
2024-09-10 16:34:03 -06:00
Paul Davis
04305774cc try to fix up previous commit 2024-09-10 13:48:59 -06:00
Paul Davis
c5751db473 try to add some debugging for macOS modal/menu handling 2024-09-10 13:09:13 -06:00
Robin Gareus
e8644654c2
Prepare to filter incoming LTC 2024-09-10 18:25:06 +02:00
Robin Gareus
cd6dca6063
Allow to query Biquad coefficients 2024-09-10 18:25:02 +02:00
Robin Gareus
c0b61d5a28
Fix LV2 optional connect port logging #9790 2024-09-09 16:04:35 +02:00
Robin Gareus
75d2b46ded
Add Lua bindings to query MIDI SysEx and PatchChanges 2024-09-08 22:59:09 +02:00
Robin Gareus
3b5a6e1f15
Fix MIDI SysEx undo/redo
Previously `new_sysex_diff_command` used XMLNode c'tor.
An Unnamed undo transaction was created, and undo did not work.
2024-09-08 21:09:37 +02:00
Robin Gareus
d257c8c0ce
Prevent endless recursive directory scans
This can happen when a folder symlinks to itself or subfolders
in some similar recursive pattern.
2024-09-08 01:33:57 +02:00
Robin Gareus
e8162a421d
LV2: Log connect-optional ports 2024-09-07 18:28:37 +02:00
Daniel Appelt
af8a7df991
Connect unknown optional LV2 ports to NULL 2024-09-07 18:07:12 +02:00
Daniel Appelt
5a1fc0ddc9
LV2: Ignore connection optional ports 2024-09-07 18:07:01 +02:00
Robin Gareus
145f6d587c
fix previous commit 2024-09-06 20:03:48 +02:00
Robin Gareus
9e469ad030
macVST: prevent endless recursive scans 2024-09-06 20:00:36 +02:00
Robin Gareus
267cddfb05
Fix stuck insensitive macOS main menu
Popup Dialog Windows never unset the modal flag.
e.g. Session > Save Snapshot & switch.

Furthermore a 2nd dialog was able to get the menu stuck
forever (e.g. Snapshot & Switch .. -> Replace existing?
2024-09-05 18:27:44 +02:00
Robin Gareus
3acc8c76ca
Handle Filechooser Location entry
In order for the Filechooser Location widget to work two
things need to be setup, which only the FileChooserDialog
does:
 * subscribe to Widget's "response-requested" signal
 * call should_respond () hook from top-level window's
   default handler.

The Location Entry emits "activates-default". In case of
the Dialog, that calls the dialogs response callback,
which then calls ` _gtk_file_chooser_embed_should_respond`.

That handles changes made by the user to the location entry.

-=-

Gtk::FileChooserWidget does not handle this, "response-requested"
signal is not exposed, nor is _gtk_file_chooser_embed_should_respond
available outside Gtk.

This change at least selects the file in the treeview, which
allows further handling, without interfering with FileChooserDialog's
behavior.
2024-09-04 22:29:24 +02:00
Robin Gareus
8fea1ea42e
Update hidapi 2024-09-03 20:56:05 +02:00
Robin Gareus
e4d9344d2a
Revert PinMapping Changes
This reverts
 * e48d97ed69
 * 98c906b733
 * 0cf73d459b

because the C++ API std::map:at can throw and exception
was not implemented (and also deemed excessive for the
case at hand). Also an explicit API for *p*plugin_pin
mapping is preferable and facilitates debugging.
2024-09-03 13:25:48 +02:00
Matthijs Kooijman
a9a5787399
osc: Fix send and plugin page size in /set_surface
When handling the `/set_surface` command, the code would set
plug_page_size to the new value first, and call `sel_plug_pagesize()`
later. The latter then sees the page size is already the same, so it
leaves it unchanged and also does not send the page size to the
OSCSelectObserver object. In practice, this means that only the default
plugin page size from the preferences or set with
`/set_surface/plugin_page_size` take effect and values set with
`/set_surface` are ignored.

Exactly the same thing happens for the send page size.

This code has been like this since it was first introduced in comit
9c0f6ea948 (OSC: Allow set_surface to set send and plugin page sizes.,
2017-06-13)

This commit fixes this by omitting the first assignment.
2024-09-03 00:40:11 +02:00
Matthijs Kooijman
142fa9f55d
osc: Let OSCSelectObserver know about feedback config changes
Before this commit, OSCSelectObserver would read the feedback value when
it was created, but then never update it anymore. In practice, the
OSCSelectObserver is created on startup, and when the surface connects
and configures feeback, this value is not applied.

For example, when sending `/set_surface` with a feedback value of
4 (Send SSID as path extension), `/strip/*` would get their ssid put
into the path, but `/select/plugin/*` messages would not have their
parameter id in the path. When setting the corresponding checkbox in the
default feedback preferences, it is applied as expected.

This commit passes the new feedback value to the OSCSelectObserver
instance whenever it changes, which ensures the value is applied as
expected.
2024-09-03 00:40:11 +02:00
Alejandro Domínguez
867eaa0b13
Remove unused libs/pbd/pbd/stl_functors.h 2024-09-01 19:17:10 +02:00
Alejandro Domínguez
e48d97ed69
Turn PinMappings class into a type alias 2024-09-01 19:10:20 +02:00
Robin Gareus
da0e6c7d60
Add explicit PBD namespace prefix to Signal
This will simplify search/replace when using
a variadic template for PBD::Signal.
2024-09-01 18:48:54 +02:00
Robin Gareus
1b343a1fec
Revert "Reduce locate overhead for optimized builds"
This reverts commit 960d72012d.
2024-08-31 23:42:56 +02:00
Robin Gareus
3391c69ec0
Profile RegionFx processing 2024-08-31 15:19:35 +02:00