Add SessionManager.{save,delete}_autosave

This commit is contained in:
Florian Bruhin 2017-02-20 07:43:41 +01:00
parent 2c03ad34ad
commit 1708b38d7b
3 changed files with 17 additions and 9 deletions

View File

@ -723,11 +723,7 @@ class Quitter:
# Now we can hopefully quit without segfaults # Now we can hopefully quit without segfaults
log.destroy.debug("Deferring QApplication::exit...") log.destroy.debug("Deferring QApplication::exit...")
objreg.get('signal-handler').deactivate() objreg.get('signal-handler').deactivate()
try: objreg.get('session-manager').delete_autosave()
objreg.get('session-manager').delete('_autosave')
except sessions.SessionError as e:
log.sessions.error("Failed to delete autosave session: {}"
.format(e))
# We use a singleshot timer to exit here to minimize the likelihood of # We use a singleshot timer to exit here to minimize the likelihood of
# segfaults. # segfaults.
QTimer.singleShot(0, functools.partial(qApp.exit, status)) QTimer.singleShot(0, functools.partial(qApp.exit, status))

View File

@ -685,10 +685,7 @@ class AbstractTab(QWidget):
@pyqtSlot(bool) @pyqtSlot(bool)
def _on_load_finished(self, ok): def _on_load_finished(self, ok):
sess_manager = objreg.get('session-manager') sess_manager = objreg.get('session-manager')
try: sess_manager.save_autosave()
sess_manager.save('_autosave')
except sessions.SessionError as e:
log.sessions.error("Failed to save autosave session: {}".format(e))
if ok and not self._has_ssl_errors: if ok and not self._has_ssl_errors:
if self.url().scheme() == 'https': if self.url().scheme() == 'https':

View File

@ -292,6 +292,21 @@ class SessionManager(QObject):
state_config['general']['session'] = name state_config['general']['session'] = name
return name return name
def save_autosave(self):
"""Save the autosave session."""
try:
self.save('_autosave')
except SessionError as e:
log.sessions.error("Failed to save autosave session: {}".format(e))
def delete_autosave(self):
"""Delete the autosave session."""
try:
self.delete('_autosave')
except SessionError as e:
log.sessions.error("Failed to delete autosave session: {}"
.format(e))
def save_last_window_session(self): def save_last_window_session(self):
"""Temporarily save the session for the last closed window.""" """Temporarily save the session for the last closed window."""
self._last_window_session = self._save_all() self._last_window_session = self._save_all()