Add error handling for autosave session
This commit is contained in:
parent
cafff3e1b6
commit
ee25e900f8
@ -723,7 +723,11 @@ 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))
|
||||
# We use a singleshot timer to exit here to minimize the likelihood of
|
||||
# segfaults.
|
||||
QTimer.singleShot(0, functools.partial(qApp.exit, status))
|
||||
|
@ -28,7 +28,7 @@ from PyQt5.QtWidgets import QWidget, QApplication
|
||||
from qutebrowser.keyinput import modeman
|
||||
from qutebrowser.config import config
|
||||
from qutebrowser.utils import utils, objreg, usertypes, log, qtutils
|
||||
from qutebrowser.misc import miscwidgets, objects
|
||||
from qutebrowser.misc import miscwidgets, objects, sessions
|
||||
from qutebrowser.browser import mouse, hints
|
||||
|
||||
|
||||
@ -685,13 +685,16 @@ 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))
|
||||
|
||||
if ok and not self._has_ssl_errors:
|
||||
if self.url().scheme() == 'https':
|
||||
self._set_load_status(usertypes.LoadStatus.success_https)
|
||||
else:
|
||||
self._set_load_status(usertypes.LoadStatus.success)
|
||||
|
||||
elif ok:
|
||||
self._set_load_status(usertypes.LoadStatus.warn)
|
||||
else:
|
||||
|
@ -34,7 +34,6 @@ except ImportError: # pragma: no cover
|
||||
from qutebrowser.utils import (standarddir, objreg, qtutils, log, usertypes,
|
||||
message, utils)
|
||||
from qutebrowser.commands import cmdexc, cmdutils
|
||||
from qutebrowser.mainwindow import mainwindow
|
||||
from qutebrowser.config import config
|
||||
|
||||
|
||||
@ -346,6 +345,7 @@ class SessionManager(QObject):
|
||||
name: The name of the session to load.
|
||||
temp: If given, don't set the current session.
|
||||
"""
|
||||
from qutebrowser.mainwindow import mainwindow
|
||||
path = self._get_session_path(name, check_exists=True)
|
||||
try:
|
||||
with open(path, encoding='utf-8') as f:
|
||||
|
Loading…
Reference in New Issue
Block a user