From 0d127813fb6c4a5baa8802f09d32c1fc9b6a0f63 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 30 Jan 2020 04:12:19 +0100 Subject: Allow StateProtector to save pending files This is in preparation for saving state while the session is record-arm'ed. Most notably config changes and undo/redo. In case both normal and pending save happens, pending must be last and is required to recover from crashes during recording. --- libs/ardour/ardour/session.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'libs/ardour/ardour/session.h') diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 807c2686eb..daaecd8a38 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -628,6 +628,10 @@ public: _session->_save_queued = false; _session->save_state (""); } + while (_session->_save_queued_pending) { + _session->_save_queued_pending = false; + _session->save_state ("", true); + } } } private: @@ -1413,6 +1417,8 @@ private: friend class StateProtector; gint _suspend_save; /* atomic */ volatile bool _save_queued; + volatile bool _save_queued_pending; + Glib::Threads::Mutex save_state_lock; Glib::Threads::Mutex save_source_lock; Glib::Threads::Mutex peak_cleanup_lock; -- cgit v1.2.3