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
log.destroy.debug("Deferring QApplication::exit...")
objreg.get('signal-handler').deactivate()
try:
objreg.get('session-manager').delete('_autosave')
except sessions.SessionError as e:
log.sessions.error("Failed to delete autosave session: {}"
.format(e))
objreg.get('session-manager').delete_autosave()
# We use a singleshot timer to exit here to minimize the likelihood of
# segfaults.
QTimer.singleShot(0, functools.partial(qApp.exit, status))

View File

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

View File

@ -292,6 +292,21 @@ class SessionManager(QObject):
state_config['general']['session'] = 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):
"""Temporarily save the session for the last closed window."""
self._last_window_session = self._save_all()