Exclude socket notifier events during prompts

This helps with segfaults while the prompt is shown, like those which happened
during mhtml downloads with QtWebEngine.
This commit is contained in:
Florian Bruhin 2017-02-07 00:16:33 +01:00
parent 7aa0e900d7
commit d13809089f

View File

@ -25,7 +25,7 @@ import collections
import sip import sip
from PyQt5.QtCore import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelIndex, from PyQt5.QtCore import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelIndex,
QItemSelectionModel, QObject) QItemSelectionModel, QObject, QEventLoop)
from PyQt5.QtWidgets import (QWidget, QGridLayout, QVBoxLayout, QLineEdit, from PyQt5.QtWidgets import (QWidget, QGridLayout, QVBoxLayout, QLineEdit,
QLabel, QFileSystemModel, QTreeView, QSizePolicy) QLabel, QFileSystemModel, QTreeView, QSizePolicy)
@ -184,7 +184,7 @@ class PromptQueue(QObject):
question.completed.connect(loop.quit) question.completed.connect(loop.quit)
question.completed.connect(loop.deleteLater) question.completed.connect(loop.deleteLater)
log.prompt.debug("Starting loop.exec_() for {}".format(question)) log.prompt.debug("Starting loop.exec_() for {}".format(question))
loop.exec_() loop.exec_(QEventLoop.ExcludeSocketNotifiers)
log.prompt.debug("Ending loop.exec_() for {}".format(question)) log.prompt.debug("Ending loop.exec_() for {}".format(question))
log.prompt.debug("Restoring old question {}".format(old_question)) log.prompt.debug("Restoring old question {}".format(old_question))