diff --git a/open-transcode.py b/open-transcode.py index 173f344..f54e59d 100644 --- a/open-transcode.py +++ b/open-transcode.py @@ -3454,6 +3454,24 @@ class OpenCodecMaster(QMainWindow): line_edit.setText(path) def _log(self, msg: str): + # Guard against signals (combo currentIndexChanged, knob valueChanged, + # etc.) firing during __init__ before self.log_box has been + # constructed. Without this, the first addItem() on any combo + # triggers its slot, which calls _log(), which dereferences + # self.log_box while it is still None -> AttributeError -> crashes + # the app on launch. Also buffer messages so they aren't lost. + if not hasattr(self, "log_box") or self.log_box is None: + buffered = getattr(self, "_log_buffer", None) + if buffered is None: + buffered = self._log_buffer = [] + buffered.append(msg) + return + # Flush any messages that arrived before log_box existed. + buffered = getattr(self, "_log_buffer", None) + if buffered: + for m in buffered: + self.log_box.append(f"> {m}") + self._log_buffer = [] self.log_box.append(f"> {msg}") sb = self.log_box.verticalScrollBar() sb.setValue(sb.maximum())