diff options
| -rw-r--r-- | picostream/cli.py | 10 | ||||
| -rw-r--r-- | picostream/main.py | 2 |
2 files changed, 7 insertions, 5 deletions
diff --git a/picostream/cli.py b/picostream/cli.py index 23922e3..2006645 100644 --- a/picostream/cli.py +++ b/picostream/cli.py @@ -400,10 +400,12 @@ class Streamer: # We call shutdown() to ensure threads are joined and cleanup happens. self.shutdown() else: - # Original non-GUI behavior - self.consumer_thread.join() - self.pico_thread.join() - logger.success("Acquisition complete!") + # In GUI mode, run() returns immediately, allowing the worker's event + # loop to process signals. In CLI mode, we block until completion. + if not self.is_gui_mode: + self.consumer_thread.join() + self.pico_thread.join() + logger.success("Acquisition complete!") # --- Argument Parsing --- diff --git a/picostream/main.py b/picostream/main.py index 9fdb423..6617f12 100644 --- a/picostream/main.py +++ b/picostream/main.py @@ -47,7 +47,6 @@ class StreamerWorker(QObject): self.streamer.run() except Exception as e: self.error.emit(str(e)) - finally: self.finished.emit() @pyqtSlot() @@ -55,6 +54,7 @@ class StreamerWorker(QObject): """Signal the acquisition to stop.""" if self.streamer: self.streamer.shutdown() + self.finished.emit() class PicoStreamMainWindow(QMainWindow): |
