libardour infrastructure to suspend track-reordering side effects during a drag
This commit is contained in:
parent
2ee9a7ab5f
commit
83bd2ee752
@ -402,7 +402,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
RecordState record_status() const {
|
RecordState record_status() const {
|
||||||
return _record_status.load();
|
return _record_status.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool actively_recording () const {
|
bool actively_recording () const {
|
||||||
@ -1416,6 +1416,17 @@ public:
|
|||||||
bool virtual_soundcheck() const;
|
bool virtual_soundcheck() const;
|
||||||
PBD::Signal1<void,bool> VirtualSoundCheckChanged;
|
PBD::Signal1<void,bool> VirtualSoundCheckChanged;
|
||||||
|
|
||||||
|
struct LivetraxAutoConnectSuspender {
|
||||||
|
LivetraxAutoConnectSuspender (Session& s) : session (s) { session.suspend_livetrax_auto_connect (); }
|
||||||
|
~LivetraxAutoConnectSuspender () { session.unsuspend_livetrax_auto_connect (); }
|
||||||
|
|
||||||
|
Session& session;
|
||||||
|
};
|
||||||
|
|
||||||
|
void suspend_livetrax_auto_connect ();
|
||||||
|
void unsuspend_livetrax_auto_connect ();
|
||||||
|
void update_track_numbers () { reassign_track_numbers (); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class AudioEngine;
|
friend class AudioEngine;
|
||||||
void set_block_size (pframes_t nframes);
|
void set_block_size (pframes_t nframes);
|
||||||
@ -2431,6 +2442,8 @@ private:
|
|||||||
|
|
||||||
void set_virtual_soundcheck (bool);
|
void set_virtual_soundcheck (bool);
|
||||||
bool _virtual_soundcheck;
|
bool _virtual_soundcheck;
|
||||||
|
|
||||||
|
std::atomic<uint32_t> _no_livetrax_auto_connect;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -351,6 +351,7 @@ Session::Session (AudioEngine &eng,
|
|||||||
, tb_with_filled_slots (0)
|
, tb_with_filled_slots (0)
|
||||||
, _no_file_format_reset (0)
|
, _no_file_format_reset (0)
|
||||||
, _virtual_soundcheck (false)
|
, _virtual_soundcheck (false)
|
||||||
|
, _no_livetrax_auto_connect (0)
|
||||||
{
|
{
|
||||||
_suspend_save.store (0);
|
_suspend_save.store (0);
|
||||||
_playback_load.store (0);
|
_playback_load.store (0);
|
||||||
@ -7757,9 +7758,27 @@ Session::cut_copy_section (timepos_t const& start_, timepos_t const& end_, timep
|
|||||||
commit_reversible_command ();
|
commit_reversible_command ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Session::suspend_livetrax_auto_connect ()
|
||||||
|
{
|
||||||
|
_no_livetrax_auto_connect++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Session::unsuspend_livetrax_auto_connect ()
|
||||||
|
{
|
||||||
|
if (_no_livetrax_auto_connect) {
|
||||||
|
_no_livetrax_auto_connect--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Session::livetrax_auto_connect_route (std::shared_ptr<Route> route)
|
Session::livetrax_auto_connect_route (std::shared_ptr<Route> route)
|
||||||
{
|
{
|
||||||
|
if (_no_livetrax_auto_connect) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ChanCount ignored;
|
ChanCount ignored;
|
||||||
auto_connect_route (route, true, true, ignored, ignored, ignored, ignored);
|
auto_connect_route (route, true, true, ignored, ignored, ignored, ignored);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user