summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-01-30 04:12:19 +0100
committerRobin Gareus <robin@gareus.org>2020-01-30 04:12:19 +0100
commit0d127813fb6c4a5baa8802f09d32c1fc9b6a0f63 (patch)
tree041985b39ecfc1b6443ebbd77c666006533ee20a /libs/ardour/ardour
parent998fadda573f7e6b1432bba2ed3b2b555d358964 (diff)
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.
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/session.h6
1 files changed, 6 insertions, 0 deletions
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;