diff options
| -rw-r--r-- | picostream/main.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/picostream/main.py b/picostream/main.py index f1504fb..a882b80 100644 --- a/picostream/main.py +++ b/picostream/main.py @@ -4,7 +4,7 @@ import os import sys from typing import Any, Dict, Optional -from PyQt5.QtCore import QObject, QSettings, QThread, pyqtSignal +from PyQt5.QtCore import QObject, QSettings, QThread, pyqtSignal, pyqtSlot, Qt from PyQt5.QtGui import QCloseEvent from PyQt5.QtWidgets import ( QApplication, @@ -32,6 +32,7 @@ class StreamerWorker(QObject): finished = pyqtSignal() error = pyqtSignal(str) + stopRequested = pyqtSignal() def __init__(self, settings: Dict[str, Any]) -> None: """Initialise the worker.""" @@ -49,6 +50,7 @@ class StreamerWorker(QObject): finally: self.finished.emit() + @pyqtSlot() def stop(self) -> None: """Signal the acquisition to stop.""" if self.streamer: @@ -193,6 +195,7 @@ class PicoStreamMainWindow(QMainWindow): self.thread = QThread() self.worker = StreamerWorker(settings) self.worker.moveToThread(self.thread) + self.worker.stopRequested.connect(self.worker.stop, Qt.QueuedConnection) self.thread.started.connect(self.worker.run) self.worker.finished.connect(self.thread.quit) @@ -206,7 +209,7 @@ class PicoStreamMainWindow(QMainWindow): def stop_acquisition(self) -> None: """Stop the background data acquisition.""" if self.worker: - self.worker.stop() + self.worker.stopRequested.emit() self.stop_button.setEnabled(False) def on_acquisition_finished(self) -> None: |
