aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--picostream/cli.py10
-rw-r--r--picostream/main.py2
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):