13
0
Commit Graph

20330 Commits

Author SHA1 Message Date
4abdb09c00
Remove unused API 2023-06-10 03:33:50 +02:00
5965fd15e5
Fix tiny memory leak 2023-06-10 03:33:39 +02:00
55afdc2aa4
amend 7c7bf6c88b, do not notify UI during cleanup
This fixes a rare crash where the signal causes a
cxa_pure_virtual in PBD::Signal1 during destruction.
2023-06-09 16:17:40 +02:00
ad49de022a
Too many drop-references handlers (#9363)
This fixes a random crash with stop-and-forget capture.

When aborting capture, the disk-writer can emit
 midi_write_source->drop_references ()
in the butler thread, which leads to a direct call to
Session::remove_source.

This can happen before or after Region::source_deleted
is called which is initiated from the same signal.

Furthermore it was possible that Region::source deleted
was called concurrently from the UI thread via SourceRemoved
for whole file regions, which lead to memory corruption.
2023-06-09 16:17:37 +02:00
03e0eea744
Playlist paste, always pastes on top 2023-06-09 00:48:42 +02:00
c61fc45689
Retain region layering for cut/copy/paste 2023-06-09 00:03:49 +02:00
7c7bf6c88b
Fix TransportMasterManager crash at exit
TransportMasterManager::destroy () destroys any remaining
TransportMasters which in turn unregister their ports.
However the PortEngine was already destroyed.
2023-06-08 22:50:15 +02:00
733d59c65b temporal: unit testing more like unit testing
But still not really.
2023-06-08 14:01:17 -06:00
01b8187cd3 temporal: add rudimentary paste test 2023-06-08 14:01:17 -06:00
1cf4f9293c temporal: paste needs to add to _points 2023-06-08 14:01:17 -06:00
24f6c51de6 temporal: more nuances for ::cut_copy() 2023-06-08 14:01:17 -06:00
a09a37049b temporal: get guard point values before altering the tempo map 2023-06-08 14:01:17 -06:00
6039cea3dc temporal: improve cut buffer slightly by using different meters 2023-06-08 14:01:17 -06:00
d0f5fdb224
Fix deadlock and remove debug message
get_extent() takes a RegionReadLock, but ::partition_internal
already holds a RegionWriteLock (use ::_get_extent)
2023-06-08 21:32:53 +02:00
49aa046824
Cut/Copy Section also needs to operate on unused playlists 2023-06-08 20:42:07 +02:00
61b41fd5d0
A user initiated locate cancels play-range (#9360) 2023-06-08 18:38:25 +02:00
6aa2ad26b5
Clear transport sub-state at RangeStop, disable play-range 2023-06-08 18:06:28 +02:00
cd2d0448a9
Fix Play Range (#9360)
When starting RangePlay while the transport is already rolling
the transport is now stopped (and de-clicked) before locating.

This should not clear the RangeStop event when it is caused
by a RangePlay request.
2023-06-08 16:51:24 +02:00
d761ccb59b temporal: the second variant of shift() (untested) 2023-06-07 11:25:44 -06:00
e6b6340f3e temporal: more nuances for shift() 2023-06-07 11:25:44 -06:00
ad45778edc temporal: shift() with BBT must allow negative motion 2023-06-07 11:25:44 -06:00
a456a10cdf temporal: first guess at a TempoMap::shift() implementation 2023-06-07 11:25:44 -06:00
5e9d98dbf9
Debug Port reconnect 2023-06-07 18:13:27 +02:00
d2365daafe
Remove unused API, prefer Session::possible_states 2023-06-07 17:39:29 +02:00
9d3ae4fc8d temporal: fix position of end guard points during map paste 2023-06-06 09:52:29 -06:00
9e4b1d59a7 temporal: do something when pasting the cut buffer guard points
Don't think this is quite right yet - we get guard points even when
they are not really necessary
2023-06-06 09:04:34 -06:00
6865615af8
Fix recursive lock introduced in fbfeff4168 (#9359) 2023-06-06 15:39:54 +02:00
4529a17617
Implement Section Delete/Insert 2023-06-06 02:42:43 +02:00
f5f87f86d4 temporal: adjust cut buffer API to better deal with start/end "guard points" 2023-06-05 17:27:12 -06:00
7789df5b1c temporal: get cut/copy/paste test code slightly more useful 2023-06-05 16:35:17 -06:00
522c8f9426
Improve port-engine debug messages
try to get to the bottom of "unregister_port: Failed to find port"
errors.
2023-06-05 19:10:10 +02:00
e938d4936f
Further speed up Windows freewheel export 2023-06-05 01:42:24 +02:00
c24b456211
Windows: unconditionally request high timer resolution
Previously timeBeginPeriod() was only called when MIDI
system was set to WinMME. It was also possible that
it was never unset in case starting the engine failed.

This significantly speeds up freewheel export which uses
Glib::usleep(100) when MIDI is disabled.

see also: https://randomascii.wordpress.com/2020/10/04/windows-timer-resolution-the-great-rule-change/
2023-06-05 00:02:54 +02:00
fbfeff4168
Work around finish_capture() race
In rare cases DiskWriter::run() may call finish_capture()
concurrently with the butler thread from transport_stopped_wallclock,
this can lead to memory corruption (CaptureInfo).

Using a Mutex here is not great, but it is not usually contended
and better than crashing at rec-stop.

We should probably change DiskWrWiter::_was_recording into an
atomic bool, and use CAS to prevent concurrent calls.
2023-06-04 22:19:53 +02:00
ad5d355fb5
Fix remove_source assert()
With empty MIDI regions it can happen that the GUI
still retains a reference (rec_regions)
2023-06-04 21:26:41 +02:00
7e567468b2
Fix crash when resetting MIDI tracer
The GUI was able to free memory (MidiTracer::disconnect),
while the tracer is concurrently still in use in rt-context.
This lead to memory corruption in MIDI::Parser::scanner.
2023-06-04 01:15:11 +02:00
dad725688d
Fix various MMC commands, set request-source 2023-06-04 01:15:02 +02:00
8bf8e67545
midiUI thread needs tempo-map (#9358)
This fixes handling MMC commands (locate, record) or
any async MIDI message that uses timepos_t/timecnt_t.
2023-06-03 19:10:36 +02:00
0006f4d8cd
Dummy: add MMC test sequence 2023-06-03 19:10:32 +02:00
c56313cea0
Fix setting pretty-names when engine is restarted
port-meta-data depends on the audioengine backend/device
settings. Those are only available after the engine is started,
not from within the backend's _start() method.

This is is only relevant for callback based backends.

Backends with a blocking process thread explicitly emit
port-manager callbacks there before entering the main loop.
2023-06-02 00:29:03 +02:00
6640a4afb3 fix Faderport2 port name = FP2 2023-06-01 16:20:48 -05:00
c084f74fda
Remove debug message 2023-05-31 18:17:28 +02:00
193b35e885
Ignore Apple/HFS+ ._ meta-data files with statefile suffix.
Those files may otherwise show up in the Recent Session
dialog as possible states to load.
2023-05-31 16:02:39 +02:00
f3ee7fdf88
Fix crash when trying to undo region operations across source deletion
Record, move recorded region(s), delete the recorded source, undo.

Undo would undo the region-move, of a region that no longer
exists and has no source.
2023-05-31 15:46:59 +02:00
f58f5bef55
Remove region from playlist when the source is destroyed
This fixes the following issue:
1. Import a file to a new track
2. Delete the track
3. Editor Source list: select imported file,
   -> Remove the selected source
   -> Yes, remove the Regions and Sources

The Track and Region no longer exist in the Editor,
only the playlist still exists!

The sources to be deleted are found when iterating over whole-file
regions in `EditorSources::remove_selected_sources`. Also
RegionFactory::get_regions_using_source correctly returns
regions, _editor->remove_regions does nothing since there
is no RegionView for the given region(s). This then cashes in

```
libs/ardour/playlist.cc:2400: virtual XMLNode& ARDOUR::Playlist::state(bool) const: Assertion `r->sources ().size () > 0 && r->master_sources ().size () > 0' failed.
```
2023-05-31 15:39:00 +02:00
5a0531df01
Sync all_regions after region removal
The eventual goal is to keep the set of used regions
in sync, and allow to remove explicit calls to
`sync_all_regions_with_regions`.

This prevents `all_regions` to retain a reference to
a region that has been destroyed.
2023-05-31 01:20:29 +02:00
bfed3f5d42
NO-OP: white-space 2023-05-31 01:16:15 +02:00
f07361b34e
Session::add_source cannot fail 2023-05-31 01:15:28 +02:00
d7f631757a
Tweak Source removal
* Do not emit signal with source-lock mutex held
* explicitly drop references when called directly; notably from
  EditorSources::remove_selected_sources
2023-05-31 01:14:53 +02:00
331efe835f
Debug region/source removal 2023-05-30 18:19:48 +02:00