aboutsummaryrefslogtreecommitdiff
path: root/src/app/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/mod.rs')
-rw-r--r--src/app/mod.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs
index 4ac109c7..757a7f66 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -138,6 +138,7 @@ pub struct App {
pub(crate) pending_agent_resume_deadline: Option<Instant>,
pub(crate) session_save_deadline: Option<Instant>,
pub(crate) session_save_thread: Option<std::thread::JoinHandle<()>>,
+ session_writer: Arc<std::sync::Mutex<crate::persist::SessionWriter>>,
pane_exit_checkpoint_pending: bool,
pub(crate) detached_process_children: Vec<std::process::Child>,
tab_bar_status_generation: u64,
@@ -370,9 +371,11 @@ impl App {
// Try to restore previous session
let mut restored_terminals = std::collections::HashMap::new();
let mut restored_terminal_runtimes = crate::terminal::TerminalRuntimeRegistry::new();
- let (workspaces, active, selected) = if !policy.restore_session {
- (Vec::new(), None, 0)
- } else if let Some(snap) = crate::persist::load() {
+ let snapshot = policy.restore_session.then(crate::persist::load).flatten();
+ let session_writer = Arc::new(std::sync::Mutex::new(crate::persist::SessionWriter::new(
+ policy.restore_session && snapshot.is_none(),
+ )));
+ let (workspaces, active, selected) = if let Some(snap) = snapshot {
let history = config
.experimental
.pane_history
@@ -599,6 +602,7 @@ impl App {
pending_agent_resume_deadline: None,
session_save_deadline: None,
session_save_thread: None,
+ session_writer,
pane_exit_checkpoint_pending: false,
detached_process_children: Vec::new(),
tab_bar_status_generation: 0,