This removes the restriction to not place a CD marker at
session start.
This helps in getting rid of some inconsistencies. Also,
the previous policy didn't help in enforcing the Red Book standard.
Two seconds of pregap are implicitly created by DDP mastering tools
and CD burning software.
upper_bound() returns the first element that is **greater** than
the given value. So during reverse playback we need the value
before that.
Likewise for forward playback, lower_bound() returns an iterator
pointing to the element before the one that need to be played.
update_video_timeline() is called after destroying the
video_timeline instance at exit.
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 __GI_abort () at abort.c:79
#2 __assert_fail_base at assert.c:92
#3 __GI___assert_fail at assert.c:101
#4 Editor::update_video_timeline(bool) (this=0x55a10a25a060, flush=false) at ../gtk2_ardour/editor_videotimeline.cc:57
#5 Editor::visual_changer(Editor::VisualChange const&) (this=0x55a10a25a060, vc=...) at ../gtk2_ardour/editor.cc:4746
#6 Editor::idle_visual_changer() (this=0x55a10a25a060) at ../gtk2_ardour/editor.cc:4687
#7 Editor::_idle_visual_changer(void*) (arg=0x55a10a25a060) at ../gtk2_ardour/editor.cc:4645
#8 g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#9 () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 g_main_loop_run () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#12 Gtkmm2ext::UI::run(Receiver&) (this=0x55a105ababe0, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:293
#13 main(int, char**) (argc=1, argv=0x7fffcd806dc8) at ../gtk2_ardour/main.cc:437
Special cases to load-or-create session via NSM_Client::command_open
This bypasses most of the startup-FSM for NSM. Either a session
is loaded or created. JACK is mandatory.
Translators: if the msgid looks like foo|bar then in general the foo is just
there to provide context to clarify the potentially ambiguous nature of bar.
The translated form should not contain the foo or the |
Translators: if the msgid looks like foo|bar then in general the foo is just
there to provide context to clarify the potentially ambiguous nature of bar.
The translated form should not contain the foo or the |
Translators: if the msgid looks like foo|bar then in general the foo is just
there to provide context to clarify the potentially ambiguous nature of bar.
The translated form should not contain the foo or the |
Deleting the group first, directly removes child items
without triggering Canvas::item_changed() for every item.
This significantly speeds up closing sessions (or deleting tracks)
with lots of automation events.
Resampling or copying files during import can take a long time.
If a save, or pending save is called while importing,
it is postponed until after import has completed.
Filenames used by the disk-reader only change when recording
which creates a pending save. There's generally no reason
to force save the session due to renaming a track.
This fixes an implicit save when importing files.
The Track's disk-reader is initially created with an empty
source which is later replaced and dropped:
ARDOUR::Session::save_state
ARDOUR::Session::remove_source
PBD::Destructible::drop_references
ARDOUR::DiskWriter::reset_write_sources
ARDOUR::DiskWriter::set_write_source_name
ARDOUR::Track::set_name
Editor::finish_bringing_in_material
Previous 16 bit mask would do the wrong thing if the keycode was > 65536,
which is not often true but is certainly a valid value (and seen on some
platforms)
Calling Session::set_play_loop repeatedly (e.g. LLL) should toggle in and out
of loop play. Previously transport needed to be stopped before loop play could
be started for a second or subsequent time. This uses the loop_changing boolean
to flag that Session::non_realtime_stop should not unset the loop.
Also, Session::non_realtime_stop must reset loop_changing to false after use so
it does not affect the next transport action.