--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnPropListDialog.py Sat Oct 10 15:17:29 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnPropListDialog.py Sat Oct 10 16:03:53 2020 +0200 @@ -13,11 +13,13 @@ import pysvn -from PyQt5.QtCore import pyqtSlot, QMutexLocker, Qt +from PyQt5.QtCore import pyqtSlot, Qt from PyQt5.QtWidgets import ( QWidget, QHeaderView, QApplication, QDialogButtonBox, QTreeWidgetItem ) +from E5Utilities.E5MutexLocker import E5MutexLocker + from .SvnDialogMixin import SvnDialogMixin from .Ui_SvnPropListDialog import Ui_SvnPropListDialog @@ -110,28 +112,28 @@ dname, fname = self.vcs.splitPath(fn) fnames = [fname] - locker = QMutexLocker(self.vcs.vcsExecutionMutex) cwd = os.getcwd() os.chdir(dname) - try: - for name in fnames: - proplist = self.client.proplist(name, recurse=recursive) - counter = 0 - for path, prop in proplist: - for propName, propVal in list(prop.items()): - self.__generateItem(path, propName, propVal) - self.propsFound = True - counter += 1 - if counter == 30: - # check for cancel every 30 items - counter = 0 - if self._clientCancelCallback(): - break - if self._clientCancelCallback(): - break - except pysvn.ClientError as e: - self.__showError(e.args[0]) - locker.unlock() + with E5MutexLocker(self.vcs.vcsExecutionMutex): + try: + for name in fnames: + proplist = self.client.proplist(name, recurse=recursive) + counter = 0 + for path, prop in proplist: + for propName, propVal in list(prop.items()): + self.__generateItem(path, propName, propVal) + self.propsFound = True + counter += 1 + if counter == 30: + # check for cancel every 30 items + counter = 0 + if self._clientCancelCallback(): + break + if self._clientCancelCallback(): + break + except pysvn.ClientError as e: + self.__showError(e.args[0]) + self.__finish() os.chdir(cwd)