--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py Sat Oct 10 15:17:29 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py Sat Oct 10 16:03:53 2020 +0200 @@ -12,7 +12,7 @@ import pysvn -from PyQt5.QtCore import QMutexLocker, QDate, QRegExp, Qt, pyqtSlot, QPoint +from PyQt5.QtCore import Qt, QDate, QRegExp, pyqtSlot, QPoint from PyQt5.QtWidgets import ( QHeaderView, QWidget, QApplication, QDialogButtonBox, QTreeWidgetItem ) @@ -20,6 +20,8 @@ from E5Gui import E5MessageBox from E5Gui.E5OverrideCursor import E5OverrideCursor +from E5Utilities.E5MutexLocker import E5MutexLocker + from .SvnUtilities import formatTime, dateFromTime_t from .SvnDialogMixin import SvnDialogMixin @@ -275,32 +277,34 @@ start = pysvn.Revision(pysvn.opt_revision_kind.head) with E5OverrideCursor(): - locker = QMutexLocker(self.vcs.vcsExecutionMutex) cwd = os.getcwd() os.chdir(self.dname) try: nextRev = 0 fetched = 0 logs = [] - while fetched < limit: - flimit = min(fetchLimit, limit - fetched) - if fetched == 0: - revstart = start - else: - revstart = pysvn.Revision( - pysvn.opt_revision_kind.number, nextRev) - allLogs = self.client.log( - self.fname, revision_start=revstart, - discover_changed_paths=True, limit=flimit + 1, - strict_node_history=self.stopCheckBox.isChecked()) - if len(allLogs) <= flimit or self._clientCancelCallback(): - logs.extend(allLogs) - break - else: - logs.extend(allLogs[:-1]) - nextRev = allLogs[-1]["revision"].number - fetched += fetchLimit - locker.unlock() + with E5MutexLocker(self.vcs.vcsExecutionMutex): + while fetched < limit: + flimit = min(fetchLimit, limit - fetched) + if fetched == 0: + revstart = start + else: + revstart = pysvn.Revision( + pysvn.opt_revision_kind.number, nextRev) + allLogs = self.client.log( + self.fname, revision_start=revstart, + discover_changed_paths=True, limit=flimit + 1, + strict_node_history=self.stopCheckBox.isChecked()) + if ( + len(allLogs) <= flimit or + self._clientCancelCallback() + ): + logs.extend(allLogs) + break + else: + logs.extend(allLogs[:-1]) + nextRev = allLogs[-1]["revision"].number + fetched += fetchLimit for log in logs: author = log["author"] @@ -336,7 +340,6 @@ self.__resortLog() self.__filterLogs() except pysvn.ClientError as e: - locker.unlock() self.__showError(e.args[0]) os.chdir(cwd) self.__finish()