--- a/eric6/WebBrowser/Network/EricSchemeHandler.py Sat Oct 10 15:17:29 2020 +0200 +++ b/eric6/WebBrowser/Network/EricSchemeHandler.py Sat Oct 10 16:03:53 2020 +0200 @@ -8,12 +8,14 @@ """ from PyQt5.QtCore import ( - pyqtSignal, QByteArray, QBuffer, QIODevice, QUrlQuery, QMutex, QMutexLocker + pyqtSignal, QByteArray, QBuffer, QIODevice, QUrlQuery, QMutex ) from PyQt5.QtWebEngineCore import QWebEngineUrlSchemeHandler from E5Gui.E5Application import e5App +from E5Utilities.E5MutexLocker import E5MutexLocker + from ..Tools.WebBrowserTools import ( getHtmlPage, getJavascript, pixmapFileToDataUrl ) @@ -104,21 +106,19 @@ if self.__loaded: return - lock = QMutexLocker(self.__mutex) - - if self.__pageName == "adblock": - contents = self.__adBlockPage() - elif self.__pageName in ["home", "start", "startpage"]: - contents = self.__startPage() - elif self.__pageName == "speeddial": - contents = self.__speedDialPage() - else: - contents = "" - - self.__buffer.setData(contents.encode("utf-8")) - self.__buffer.open(QIODevice.ReadOnly) - self.open(QIODevice.ReadOnly) - lock.unlock() + with E5MutexLocker(self.__mutex): + if self.__pageName == "adblock": + contents = self.__adBlockPage() + elif self.__pageName in ["home", "start", "startpage"]: + contents = self.__startPage() + elif self.__pageName == "speeddial": + contents = self.__speedDialPage() + else: + contents = "" + + self.__buffer.setData(contents.encode("utf-8")) + self.__buffer.open(QIODevice.ReadOnly) + self.open(QIODevice.ReadOnly) self.readyRead.emit() @@ -131,8 +131,8 @@ @return number of available bytes @rtype int """ - lock = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ - return self.__buffer.bytesAvailable() + with E5MutexLocker(self.__mutex): + return self.__buffer.bytesAvailable() def readData(self, maxlen): """ @@ -141,8 +141,8 @@ @param maxlen maximum number of bytes to read (integer) @return string containing the data (bytes) """ - lock = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ - return self.__buffer.read(maxlen) + with E5MutexLocker(self.__mutex): + return self.__buffer.read(maxlen) def close(self): """