eric6/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py

changeset 7774
9eed155411f0
parent 7771
787a6b3f8c9f
child 7775
4a1db75550bd
--- 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()

eric ide

mercurial