Skip to content

Commit

Permalink
Fix a bug when changing the remote mode rapidly (#278)
Browse files Browse the repository at this point in the history
This resolved #277.

As I tested, there is a slight delay when scrolling rapidly.
However, it seems to be allowed and moderately efficient.
  • Loading branch information
BECATRUE authored Apr 7, 2024
2 parents e3d639f + 80765f6 commit 4c3ccb0
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions iquip/apps/dataviewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1175,9 +1175,9 @@ def __init__(self, name: str, parent: Optional[QObject] = None):
for buttonId in SourceWidget.ButtonId)
self.realtimeDatasetThread: Optional[_RealtimeDatasetThread] = None
self.realtimeListThread: Optional[_RealtimeListThread] = None
self.ridListOfDateHourThread: _RidListOfDateHourThread
self.remoteListThread: _RemoteListThread
self.remoteDatasetThread: _RemoteDatasetThread
self.ridListOfDateHourThread: Optional[_RidListOfDateHourThread] = None
self.remoteListThread: Optional[_RemoteListThread] = None
self.remoteDatasetThread: Optional[_RemoteDatasetThread] = None
self.policy: Optional[SimpleScanDataPolicy] = None
self.axis: Tuple[int, ...] = ()
self.dataPointIndex: Tuple[int, ...] = ()
Expand Down Expand Up @@ -1294,14 +1294,17 @@ def startRidListOfDateHourThread(self, date: str, hour: Optional[int]):
Args:
See _RemotePart.dateHourChanged signal.
"""
if self.ridListOfDateHourThread is not None:
self.ridListOfDateHourThread.quit()
self.ridListOfDateHourThread.wait()
self.ridListOfDateHourThread.deleteLater()
self.ridListOfDateHourThread = _RidListOfDateHourThread(
date,
hour,
self.constants.proxy_ip, # pylint: disable=no-member
self.constants.proxy_port, # pylint: disable=no-member
)
self.ridListOfDateHourThread.fetched.connect(self.updateRidList, type=Qt.QueuedConnection)
self.ridListOfDateHourThread.finished.connect(self.ridListOfDateHourThread.deleteLater)
self.ridListOfDateHourThread.start()

@pyqtSlot(list)
Expand All @@ -1321,6 +1324,10 @@ def startRemoteListThread(self, rid: str):
Args:
See _RemotePart.ridClicked signal.
"""
if self.remoteListThread is not None:
self.remoteListThread.quit()
self.remoteListThread.wait()
self.remoteListThread.deleteLater()
self.frame.sourceWidget.datasetBox.clear()
if not rid: # no selected RID
return
Expand All @@ -1330,7 +1337,6 @@ def startRemoteListThread(self, rid: str):
self.constants.proxy_port, # pylint: disable=no-member
)
self.remoteListThread.fetched.connect(self._updateDatasetBox, type=Qt.QueuedConnection)
self.remoteListThread.finished.connect(self.remoteListThread.deleteLater)
self.remoteListThread.start()

def startRemoteDatasetThread(self, name: str):
Expand All @@ -1339,6 +1345,10 @@ def startRemoteDatasetThread(self, name: str):
Args:
See _RemoteDatasetThread.__init__().
"""
if self.remoteDatasetThread is not None:
self.remoteDatasetThread.quit()
self.remoteDatasetThread.wait()
self.remoteDatasetThread.deleteLater()
rid = int(self.remotePart.ridComboBox.currentText())
self.remoteDatasetThread = _RemoteDatasetThread(
rid,
Expand All @@ -1347,7 +1357,6 @@ def startRemoteDatasetThread(self, name: str):
self.constants.proxy_port, # pylint: disable=no-member
)
self.remoteDatasetThread.fetched.connect(self.setDataset, type=Qt.QueuedConnection)
self.remoteDatasetThread.finished.connect(self.remoteDatasetThread.deleteLater)
self.remoteDatasetThread.start()

@pyqtSlot(np.ndarray, list, list)
Expand Down

0 comments on commit 4c3ccb0

Please sign in to comment.