diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index 9167838d4f..fc2e8693d6 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -67,6 +67,7 @@ public: StartRoll, EndRoll, TransportStateChange, + TriggerSceneChange, /* only one of each of these events can be queued at any one time */ @@ -90,6 +91,7 @@ public: bool yes_or_no; samplepos_t target2_sample; OverwriteReason overwrite; + int32_t scene; }; boost::weak_ptr track; diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index a6ae14ee17..3c7ff70c76 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -786,20 +786,22 @@ Session::destroy () bool remove = true; bool del = true; switch (ev->type) { - case SessionEvent::AutoLoop: - case SessionEvent::Skip: - case SessionEvent::PunchIn: - case SessionEvent::PunchOut: - case SessionEvent::RangeStop: - case SessionEvent::RangeLocate: - remove = false; - del = false; - break; - case SessionEvent::RealTimeOperation: - process_rtop (ev); - del = false; - default: - break; + case SessionEvent::AutoLoop: + case SessionEvent::Skip: + case SessionEvent::PunchIn: + case SessionEvent::PunchOut: + case SessionEvent::RangeStop: + case SessionEvent::RangeLocate: + case SessionEvent::TriggerSceneChange: + remove = false; + del = false; + break; + case SessionEvent::RealTimeOperation: + process_rtop (ev); + del = false; + break; + default: + break; } if (remove) { del = del && !_remove_event (ev); diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index bd44284b3c..8a05943525 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -965,6 +965,10 @@ Session::process_event (SessionEvent* ev) } break; + case SessionEvent::TriggerSceneChange: + TriggerBox::scene_bang (ev->scene); + break; + case SessionEvent::PunchIn: // cerr << "PunchIN at " << transport_sample() << endl; if (config.get_punch_in() && record_status() == Enabled) {