diff options
Diffstat (limited to 'src/app/mod.rs')
| -rw-r--r-- | src/app/mod.rs | 10 |
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, |
