13
0
Commit Graph

17274 Commits

Author SHA1 Message Date
Desidiosus
d8e2f2fcad Fix incorrect call in request_roll 2021-06-12 07:56:00 -06:00
182801b8d7 complete manual reversion of 7bce9899c0 2021-06-11 20:56:33 -06:00
f643e231f5 NOOP: add comment as a reminder for post-nutempo merge 2021-06-11 19:13:13 -06:00
1b505ddcb1 Revert "modify PBD::TimingStats to discard the first 1000 recorded values to avoid too much influence from chaotic startup conditions"
This reverts commit 7bce9899c0.

1000 at 8192 samples @ 44.1 is > 3 mins; counter may have overflowed. Not a necessary change.
2021-06-11 18:55:25 -06:00
1777cf8f69 add some initial timing points for dsp stats 2021-06-11 18:55:24 -06:00
462352102c add a new update() method to PBD::TimingStats to allow use of an already-computed interval 2021-06-11 18:55:24 -06:00
c01f68cfca
Fix MIDI bounce w/processing (event times + latency compensation)
see also 8f9c1df183
2021-06-12 02:34:22 +02:00
1c4323e32f
Fix crash on MIDI bounce w/processing
Bounce (Session::write_one_track) uses bounce_chunk_size = 8192
to process data. This requires gain_automation_buffer, and
scratch buffers that can hold 8k samples.

Previously the buffers were not allocated when bounding MIDI
(no synth), leading to a crash when automation was used.
2021-06-12 02:34:22 +02:00
76f30fe74e
NO-OP: whitespace (clang-format) 2021-06-12 02:34:22 +02:00
1ed0e88e23
NO-OP: whitespace 2021-06-12 02:34:22 +02:00
ef72afb963 add PBD::TimerRAII class for easy management of TimingStats in scope contexts with multiple return points 2021-06-11 13:09:52 -06:00
7bce9899c0 modify PBD::TimingStats to discard the first 1000 recorded values to avoid too much influence from chaotic startup conditions 2021-06-11 13:09:52 -06:00
3f6bf2c451
Overhaul connection events, fix capture alignment
Previously there was only a PostDisconnect() signal.
When a port connection is made directly e.g. recorder_ui.cc
r->input()->audio(..)->connect(...), or when connecting
using an external jack control app, Ardour::IO is not informed.

no IOChange::ConnectionsChanged signal is emitted and
Track::set_align_choice_from_io() is not called. This leads to
incorrec capture alignment.

To minimize signal emission the static global PostDisconnect
is changed into a per port ConnectedOrDisconnected signal.
IOs subscribes to signals from owned ports only.
2021-06-11 20:02:39 +02:00
a67a475480 dramtically improve performance of ::get_port_by_name() for JACK backend 2021-06-11 10:41:41 -06:00
47b06afc9d
Leave cpu_dma_latency alone by default (prevent overheating) 2021-06-11 14:29:34 +02:00
b67d783cd6
Reopen cpu_dma device when changing settings
This fixes a bug with previous filedes remaining open,
only allowing to increase the constraint.
2021-06-10 21:35:52 +02:00
53499648be
Allow to change CPU-DMA setting w/o restart 2021-06-10 20:22:09 +02:00
7ce43739e8
Tweak sched priorities use given and 4 levels below. 2021-06-10 14:38:45 +02:00
8c0ef7bd62
Add support for CPU DMA latency requests 2021-06-10 04:30:06 +02:00
2e574a011a
Amend 6e82f3669f, set BaseUI thread priority early on
This is conceptually clearned compared to doing it as
part of the session.
2021-06-10 04:30:03 +02:00
6e82f3669f
Correctly set ctrl-surface thread priority 2021-06-10 03:17:55 +02:00
89a0040f1b
Allow to override rt priority for internal backends 2021-06-10 03:17:53 +02:00
2c8916310a
Consistent env variable naming (see also 6801c2cac2) 2021-06-10 03:17:49 +02:00
444af7b3e8
Fix client_real_time_priority() calls (backend vs engine) 2021-06-10 03:17:45 +02:00
0e570d15ae
Amend 3a7ea6b, do not kill child after 10 sec w/o output
This fixes video-timeline issues (harvid has no output), as well
as ALSA device reservation and xjadeo (when idle).
2021-06-08 23:23:31 +02:00
445d5a75d0
NO-OP: use reference instead of iterator 2021-06-08 19:26:40 +02:00
23e3b6f6a8
Amend previous commit (remove debug instrumentation) 2021-06-08 16:49:55 +02:00
e8130c1f1b
Optimize input-metering
Rely on previously collected I/O port-list, skip expensive call
to get_physical_inputs() and rely on RCU port list alone.
Also skip port_is_mine() test in optimized builds.
2021-06-08 16:43:26 +02:00
b75a37abdb fix arguemnts to transport call in shared control surface code for transport_play() 2021-06-08 08:32:19 -06:00
f4d4dddbeb Paste Mode: overwrite-paste, naive implementation using rec-mode (for testing) 2021-06-08 08:33:48 -05:00
1c9bb9ab41 Playlist UI tweaks: refactor PlaylistSelector (life-cycle, code-cleanup)
* You can now show a selector for each track, rather than one global dialog
* Removed the 'cancel' button: it was too easy to unintentionally revert your selection
* Correctly sort and name new playlists when they are added or renamed from the P menu
* Fix problem where list contents disappeared when changing desktops (on_unmap_event)
2021-06-08 08:33:48 -05:00
c2fb85e37e Cruft removal: behavior of Region List has changed; these functions are deprecated (libardour) 2021-06-08 08:33:48 -05:00
b0db646029
Refactor input port monitoring
* avoid memory allocation (remove std:set<>&)
* skip nested loop using port-names as IDs

However this adds a bit of extra cost in case input ports are
monitored: get_port_by_name() and get_buffer()
2021-06-08 14:34:57 +02:00
bed992d55f
Minimize false sharing of MPMC queue variables 2021-06-07 23:40:29 +02:00
5cec55da2e
Micro-optimization: std::atomic<> vs glib
glib atomic operations include a complete act as a full
compiler and (where appropriate) hardware memory barrier.

std::atomic<> allows dedicated acquire and release barrier
semantics which are not available with glib.
2021-06-07 20:44:29 +02:00
1eb6b82b9f
Prevent L1 cache line evicion in MPMC queue
This reduces cache coherence overhead of the queue
2021-06-07 16:05:42 +02:00
ecb992de64
Remove custom generic plugin UIs (a-eq) 2/2 2021-06-04 01:43:29 +02:00
bc4ef3ff3d
Update weakjack, alternative macOS libjack paths
see also https://github.com/x42/weakjack/pull/13
2021-06-02 17:42:01 +02:00
6cf1083cb6 Playlist UI tweaks: add function playlists_for_pgroup() (libardour) 2021-06-01 17:55:09 -05:00
63629c0a91
NO-OP: whitespace 2021-06-01 19:40:21 +02:00
0e86e3337c Playlist UI tweaks: relax requirement that playlists names must be unique (libardour part) 2021-06-01 09:39:50 -05:00
932b07b7b0 Playlist UI tweaks: assign a pgroup when a playist is first recorded to
* this solves the problem where the first 'take' was not grouped because
 the user has not explicitly created a take for the group yet
2021-06-01 09:39:50 -05:00
28aa22e11a Playlist UI tweaks: Add pgroup_id field to playlists, to associate playlists created in the same operation (libardour) 2021-06-01 09:39:50 -05:00
f6d2229c47 Playlist UI tweaks: Update PlaylistSelector (libardour part)
* Add an option to use a playlist without stealing its ownership. (libardour)
* Tracks emit PlaylistAdded when a new playlist is created either by copying or by creating a new empty pl
2021-06-01 09:15:54 -05:00
7b2854b2fb Prefer storing playlist-IDs for frozen tracks; but if none is provided then search by name
* no version-check should be necessary because when opening an old session,
 playlists can be looked-up by discrete names and will be tracked by ID thereafter
2021-06-01 09:14:07 -05:00
71a414b4b0 Remove unused function (Wunused-function) 2021-05-30 20:09:35 -04:00
8d471e6761 Remove extraneous parentheses (Wparentheses-equality) 2021-05-30 20:09:35 -04:00
74e21e942e Remove unused variables (Wunused-variable) 2021-05-30 20:09:35 -04:00
1b4aaea92a Remove unused private fields (Wunused-private-field) 2021-05-30 20:09:35 -04:00
c57c230dfc
Fix loading old session w/missing playlist #8727 2021-05-30 18:54:45 +02:00
df0571892f Coreaudio: fix duplicates in device list
This is an edge-case only, some devices may
dis and reconnect with different IDs.
2021-05-29 17:54:39 +02:00
bdb5aec1cc ptimport: Fix crash when imported session has zero audio tracks 2021-05-29 12:54:10 +10:00
3d15b61e37 fix Playlist::remove_gaps() for ExternalOverlap regions; add per-gap callback 2021-05-28 17:43:33 -06:00
c8c506f702 fix bug in Locations::ripple() 2021-05-28 17:43:33 -06:00
9766132a53 libardour: add Locations::ripple() 2021-05-28 17:43:33 -06:00
37acb07752 Fix previous commit 2021-05-28 22:51:12 +02:00
0f25086446
Misc fixes pertaining to plugin-scanning 2021-05-28 22:03:10 +02:00
79b50aebcd
Ignore all export xruns while not rolling
This fixes false positives with some backends, notably JACK2.
2021-05-28 21:22:10 +02:00
fecce7c333 libardour: initial implementation of Playlist::remove_gaps()
This is probably a little naive and may need extending to cover cross-track scenarios
2021-05-28 12:35:30 -06:00
3e56eedf11 libardour: add X_() macros around several Source XMLNode state property names 2021-05-27 17:17:40 -06:00
d4bc60a388 libardour: infrastructure for cue-marker-only source undo/redo 2021-05-27 17:17:40 -06:00
83100de133 NOOP: rearrange arg decl to follow conventions 2021-05-27 17:17:40 -06:00
ca44f54ed6 libardour: small changes to cue marker API to return bool from Source modification methods 2021-05-27 17:17:40 -06:00
1a1e67f595 Use Posix style return values for sem wait when on windows.
0 on success, -1 on error
2021-05-27 15:17:15 -05:00
be6d0fa95c Do not use named semaphores on Windows since they are system wide
https://docs.microsoft.com/en-us/dotnet/standard/threading/semaphore-and-semaphoreslim#named-semaphores

Running multiple instances of Ardour or Ardour/Mixbus would fail in very
odd ways since they would signal each other. Unnamed sems are
correct for this use case.
2021-05-27 15:13:40 -05:00
e91fd1fce6
Add Lua binding to query plugin-presets and scalepoints 2021-05-27 16:56:24 +02:00
a829fa58b3
Fix another C++11ism 2021-05-26 04:14:18 +02:00
2cf4568d82
Fix C++11isms in 3fb9f47bf1 2021-05-26 03:55:29 +02:00
d839e9cf14
Consistent _nth_ API call 0-based index 2021-05-26 02:33:31 +02:00
3fb9f47bf1 ptimport: Fix importing of large sessions, no more crashing and faster 2021-05-25 20:37:39 +10:00
3a1cfc837e libardour: API infrastructure for renaming cue markers 2021-05-24 20:23:06 -06:00
c2a012545b API infrastructure for dragging region/cue markers 2021-05-24 12:26:21 -06:00
a6fc82537e
Fix assert in Waveview cache size
previous condition made no sense. effectively assert(bytes > 0).
2021-05-23 21:41:45 +02:00
42f4e64d5f
Fix a moderate memory leak
periodic calls ARDOUR_UI::update_clocks() -> AudioClock::set()
-> 2+ calls to UI::set_tip() can easily accumulate 50MB/hour
when rolling.
2021-05-22 22:11:42 +02:00
d703079f10
ace-fluidsynth: add bypass (ignore notes, but retain reverb) 2021-05-21 18:40:59 +02:00
ecbd8732de
NO-OP: clang-format 2021-05-21 18:39:39 +02:00
6733a847ee Fix Bounced region+filename (lib part)
Prior implementation:
  Bouncing a range and naming it "chorus" resulted in:
     ..a region per track, and they were all named "chorus"
     ...a file per track, with the name "chorus-{playlist name}"

New implementation:
   Bouncing a range and naming it "chorus" results in:
     ..a region per track, with the name "chorus-{playlist name}"
     ...a file with the same name as the region
2021-05-20 11:42:48 -05:00
2e501fd77a ensure the BasicUI implementation of rewind/ffwd is the same as the ARDOUR_UI one 2021-05-19 18:32:00 -06:00
17dbdffc45 infrastructure APIs for region/cue marker removal and clear 2021-05-18 20:59:37 -06:00
d8e0a29316
Fix A/B plugins, skip internal but visible plugins (e.g. LAN) 2021-05-19 02:10:33 +02:00
60a972a7de implement region marker deletion 2021-05-18 18:01:38 -06:00
a5a2f111ee Remove debug line 2021-05-18 14:32:38 -07:00
0130f19e26 Fix positions before start and after end 2021-05-18 14:27:20 -07:00
0ee8b1706d
Fix event_inside_widget_window()
This fixes cases where a widget's parent isn't the
top-level window and additional offset has to be taken
into account.

So far this has not been an issue since this method was only
used for floating text entries.
2021-05-18 22:17:36 +02:00
8cd8d90483
Reported the jack2 xrun bug, now we stop telling users 2021-05-18 03:17:17 +02:00
f9557d0d04 Remove unused code 2021-05-17 13:50:18 -07:00
ab7c6e74e0 OSC, update marks list better. 2021-05-17 13:34:19 -07:00
Tobias Kannenberg
e4a6e981d9 fix OSC "/marker" feedback 2021-05-17 13:31:03 -07:00
d2916a1df8
Better version of previous commit 2021-05-17 21:31:53 +02:00
9d063943bb
Fix deadlock when changing tempo
since dcc0f1cb17 Playlist::freeze takes a RegionWriteLock,
so freeze() must not be called with a Lock already held.
2021-05-17 21:15:58 +02:00
98721b1267
Don't count jack[2] xruns during freewheel export for now
Pending further investigation after the 6.7 release.
2021-05-17 04:44:53 +02:00
14961e6bc7
ALSA backend: code cleanup and scoping and indent
This is combination of clang-format and manual edits.
The latter mainly to add braces and reduce scope of variables.
2021-05-16 00:49:06 +02:00
6801c2cac2
ALSA: add option to prefer interleaved access 2021-05-15 23:10:14 +02:00
e2bac27885
Remove unused API 2021-05-15 23:09:21 +02:00
6346b54c13
Tweak Lua API, avoid translated sting as return value 2021-05-15 03:53:40 +02:00
ac87409122 #ifdef code dependent on libsndfile 1.0.28 2021-05-14 19:03:52 -06:00
d1ee033dd2 change XML node names for cue markers to be capitalized 2021-05-14 18:37:50 -06:00
7cf9e3d89d remove Region::add_cue_marker() (force use of Source API instead) 2021-05-14 18:37:50 -06:00
6dd516bc45 add non-const SourceList accessor to Region 2021-05-14 18:37:50 -06:00
e3b1566534 add serialization for source cue markers 2021-05-14 18:37:50 -06:00
2791be7f2a add Region::add_cue_marker() 2021-05-14 18:37:50 -06:00
0f406f40f7 region markers: change container type that holds Source::_cue_markers from vector to set, to avoid duplicates 2021-05-14 18:37:50 -06:00
bfd00f7a52 add Source::clear_cue_markers() 2021-05-14 18:37:50 -06:00
689306e2bf add Source::CueMarkersChanged signal, and ::remove_cue_marker() 2021-05-14 18:37:50 -06:00
7c9f8fcbf2 remove unused Source::SourcePropertyChanged signal 2021-05-14 18:37:50 -06:00
8fc8cbf4af tentative code to check that we can read cue markers vis libsndfile 2021-05-14 18:37:50 -06:00
7e7fbf6073 give Regions an access method for Cue Markers 2021-05-14 18:37:50 -06:00
39b020a3f4 expand CueMarker object to allow sorting etc. 2021-05-14 18:37:50 -06:00
b3d9c9d655 give Sources a container of CueMarkers (empty by default) 2021-05-14 18:37:50 -06:00
6f91e1e641 add CueMarker type
Might split this into a separate header if things become more complex than currently imagined
2021-05-14 18:37:50 -06:00
13c819e02b Plugin Tags: Add a Lua-accessible function to write untagged plugins to a file so we can bulk-tag them.
print(ARDOUR.LuaAPI.dump_untagged_plugins())
 ...will write untagged plugins to a file, and report the resulting file path to the user
2021-05-14 15:08:44 -05:00
28619fe71b
Fix window process thread priorities
While POSIX defines a single contiguous range of numbers that
determine a thread's priority. Win32 defines priority classes
and priority levels relative to these classes.

pthread maps those to -15 .. +15 with the top six ones
corresponding to REALTIME_PRIORITY_CLASS and max being
THREAD_PRIORITY_TIME_CRITICAL

Note that the PA backend can USE_MMCSS_THREAD_PRIORITIES
and PBD::MMCSS::set_thread_characteristics() directly for
the I/O threads.
2021-05-14 01:59:20 +02:00
4d269729b1
Fix missing entries in region-list #8701
RegionFactory::CheckNewRegion signal is emitted directly
after region-creation from RegionFactory::create().
At this point in time the region is not on any playlist.

This if fine for EditorSources, but the new RegionList design
only shows regions that are on the timeline.

CheckNewRegion() -> EditorRegions::add_region()
-> EditorRegions::regions_changed() ignores regions w/o playlist.

Later Playlist::add_region_internal() sets the playlist but
calls Region::clear_changes() to not send all individual changes.
So Region::RegionsPropertyChanged is not emitted either.

We need to notify the EditorRegions *after* setting the playlist.
The downside of this is that more signals than necessary are
emitted.
2021-05-14 00:27:13 +02:00
f11fadcc94
NO-OP: fix some comments that used <tab>
See also 19a2d384fc ASCII art must not mix tab and space.
2021-05-13 23:33:30 +02:00
b745483e1b
Fix double region freeze, stuck changes #8701
Thawlist::add() calls suspend_property_changes () already.
This has lead to the region remaining on frozen state.
2021-05-13 23:23:47 +02:00
3a3fcd0d2d Don't crash if master fader is not avaliable.
If the wrong device profile is selected (ex Xtouch One) but another device
is connected (Xtouch), it is possible to have a master fader on the
device, but not in the code. This would then cause a crash when the
master fader was touched.

This just protects from a wrong configuration.
2021-05-13 12:08:09 -05:00
Edgar Aichinger
ffcf90eacb update german translation 2021-05-13 11:02:23 -06:00
a01377f168
Add a Lua binding to determine Ardour version 2021-05-13 02:51:17 +02:00
8642f5476d
Ensure that immediate events are not accidentally replaced
All Immediate events have the same action samples, while other
parameters differ. Those events must not be removed by a
call to _remove_event(), particularly not SessionEvent::Overwrite
2021-05-12 19:24:04 +02:00
dcc0f1cb17
Fix playlist edit after edit race
After an edit option the playlist is thawed and triggers
the butler thread (SessionEvent::Overwrite) to re-read the
playlist.

If another edit operation is started the butler may reads a
region using the region's new position, but the playlist's
old range.

See also 4db1c02bd1
2021-05-12 19:24:00 +02:00
bdaca1d783
Skip redundant disk buffer changes
This speeds up initial session loading or sessions with many regions.
2021-05-12 19:10:10 +02:00
0fc50b9bf2 Mackie Control: set select state correctly during initial setup 2021-05-11 15:55:04 -06:00
58830d857c
Lua API for sends, sidechains and monitoring 2021-05-11 20:30:53 +02:00
19c9622a30 NOOP: comment fix, there is no deadlock! 2021-05-11 08:35:14 -06:00
99022a6157 waveview: add some extensive notes about threading design 2021-05-11 07:57:31 -06:00
1a9df476c2 waveview: now that _quit is protected by a mutex, it doesn't need to be atomic
No reason to have two memory fences when we only need one
2021-05-11 07:57:31 -06:00
John Emmas
952416c596 Accommodate some changes to 'ssize_t' in VS2019
In more recent versions of MSVC, ssize_t equates to 'long' (for a 32-bit build) or '__int64' (for 64-bit)
2021-05-11 14:06:25 +01:00
166ac63924 waveview: redesign thread exit strategy
The previous design had a race condition. When WaveViewThreads::stop_threads() was called, it would
first acquire the mutex, then set _quit, then call condition.broadcast(). But worker threads would
check _quit without holding the mutex. It was therefore for a thread to be delayed in its
own lock acquisition by the ::stop_threads() caller, then end up back in cond.wait() AFTER
the cond.broadcast() was done. Such a thread would sleep forever and never wake up.

This new design removes WaveViewDrawRequestQueue, which was a clean encapsulation of the
queueing aspects of WaveViewThreads, but unfortunately made correct mutex acquisition
and condition signalling/waiting needlessly complex. THe mutex, condition variable
and actual queue were moved into WaveViewThreads, and all worker threads execute a method
of the class which gives the appropriate code easy access to the mutex and condition var,
which must always be used together.
2021-05-10 21:41:26 -06:00
5343d00382 when adding locations with empty names, generate one (related to 1c753a7f38) 2021-05-09 17:52:29 -06:00
c45be2266e support SMF markers without labels 2021-05-09 17:52:29 -06:00
292547b264
Use RWLock for Locations
This replaces a Mutex and adds additional read-locks.

This is needed to address some threading issues with rt-threads
calling auto_loop_location() while the GUI changes locations.

Since locations are C-pointers this is still not entirely safe!
Locations::remove() may delete a location while a pointer
to it is being used in another thread.
2021-05-09 03:20:14 +02:00
8b1df3e083 fix bad transition problem in transportFSM when slowing to a stop that is then reversed 2021-05-08 17:58:46 -06:00
66bc15f8c5 add stderr output for TransportFSM bad transitions, and remove stacktrace 2021-05-08 17:58:46 -06:00
ad14077587 rearrange transportFSM code to be more explicit about a speed-reset-after-stop 2021-05-08 17:58:46 -06:00
e588fe2057 avoid crash when stopping with "abort" set to true, but after _last_roll_location was reset to -1 2021-05-08 17:58:46 -06:00
8803b55f45
Remove invalid assertion
There are some valid cases to call no-roll with non-zero
transport speed. e.g. export pre_roll/fail_roll when
exporting multiple timespans.
2021-05-08 23:46:10 +02:00
79bf025862
Fix export race condition (and crash)
Previously the freewheel export thread directly called
Session::butler_transport_work(). The butler thread
may concurrently call the same function. This can lead
double free or memory corruption (see below)

Now export thread summons the butler and does nothing
until it completed its work.

```
Export Thread:
3   XMLNode::~XMLNode
4   ARDOUR::AutomationList::snapshot_history
5   ARDOUR::AutomationList::start_write_pass
6   ARDOUR::Automatable::non_realtime_locate
7   ARDOUR::Route::non_realtime_locate
8   ARDOUR::Session::non_realtime_locate
9   ARDOUR::Session::butler_transport_work
10  ARDOUR::Session::process_export_fw

Butler thread:
7   XMLNode::~XMLNode
8   ARDOUR::AutomationList::snapshot_history
9   ARDOUR::AutomationList::start_write_pass
10  ARDOUR::Automatable::non_realtime_locate
11  ARDOUR::Route::non_realtime_locate
12  ARDOUR::Session::non_realtime_locate
13  ARDOUR::Session::butler_transport_work
14  ARDOUR::Butler::thread_work
15  ARDOUR::Butler::_thread_work
```
2021-05-08 23:29:49 +02:00
57b3df8b22 copy over (boo!) transport control changes to BasicUI (control surfaces) 2021-05-08 09:20:21 -06:00
d88e0c6673
Fix windows builds (declare class binding)
see also 2ff8f5a5de
2021-05-08 14:38:43 +02:00
08092d22b4
Prevent invalid frame/child size allocation 2021-05-08 14:36:43 +02:00
4d815554dd Various Control Surfaces: Fix one off in calculation of fader position
MIDI pitch bend holds 14 bits (16384) which gives values of 0 to 16383.
2021-05-07 18:02:44 -05:00
f6c011cb65
Remove old RegionPropertyChanged signal (3/3) 2021-05-07 23:29:25 +02:00
2ff8f5a5de
Consolidate RegionsPropertyChanged signal emission (1/3)
This prepares to combine multiple RegionPropertyChanged signals
(potentially thousands) into a single signal.
2021-05-07 23:29:25 +02:00
f689e9ecab Evoral: add methods to SMF to load and access markers/cues in SMF files 2021-05-07 14:58:16 -06:00
49e1380417
Add missing Lua binding (see also 48e5607f7c) 2021-05-07 21:56:09 +02:00
d2ba90b2c1 Fallback to the default export path when the saved export path is not found.
Previously we would end up with an export path of top level session
directory.
2021-05-07 12:25:42 -05:00
9e6b85f330 Don't save a leading slash when storing a relative export path.
It is not needed in the relative case and causes issues when taking
sessions between platforms.

On windows, the default path would be "\export". When that is used
on linux the resulting fullpath would end up as

/your/session/path/\export

which is then not found on the file system.

This change is consistent with how relative paths are normally written and
does cure the default path when moved across platforms.

It does not solve the larger issue of mixed directory separators.
A relative path of "export\myMixV1" will still fail when moving between
platforms.
2021-05-07 12:25:42 -05:00
98f5224d4c
Fix incorrect port lists due to custom sort
Previously the following were treated as equal
 "MIDI_foo" == "MIDI bar"
So std::map<> PortManager::_ports and PortEngineSharedImpl:_ports
could only have either. This resulted in missing ports
and missing calls to existing ports in cycle_start().

This mainly affected MIDI tracks with imported files, since there
is "MIDI Clock in", and imported files result in tracks
"MIDI_file-name".

This issue was introduced in 6.6-200-g60ff3ef764
2021-05-07 04:24:32 +02:00
bfd52fd94d TransportFSM: do not enter Reversing state too early
We do need to know that a reversal is intended before we do a locate, but we should
not enter Reversing before the declick is finished. So instead, we add a new
member, _reverse_after_declick to keep track, and enter Reversing just before
we start the locate
2021-05-06 19:40:08 -06:00
7dc21fdc96
PortList debug methods (to be called from gdb) 2021-05-07 01:43:19 +02:00