From e98114eaff5fa54b7d463ece8466357e1af9ba9d Mon Sep 17 00:00:00 2001 From: alfrix Date: Thu, 24 Nov 2022 11:10:04 -0300 Subject: [PATCH] Improve Fatal error handling an messages --- screen.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/screen.py b/screen.py index 5ad64fce..1569649b 100644 --- a/screen.py +++ b/screen.py @@ -16,6 +16,7 @@ from gi.repository import Gtk, Gdk, GLib, Pango from importlib import import_module from jinja2 import Environment from signal import SIGTERM +from sys import exit from ks_includes import functions from ks_includes.KlippyWebsocket import KlippyWebsocket @@ -87,6 +88,11 @@ class KlipperScreen(Gtk.Window): max_retries = 4 def __init__(self, args, version): + try: + super().__init__(title="KlipperScreen") + except Exception as e: + logging.exception(e) + raise RuntimeError from e self.blanking_time = 600 self.use_dpms = True self.apiclient = None @@ -99,10 +105,10 @@ class KlipperScreen(Gtk.Window): self._config = KlipperScreenConfig(configfile, self) self.lang_ltr = set_text_direction(self._config.get_main_config().get("language", None)) - Gtk.Window.__init__(self) self.connect("key-press-event", self._key_press_event) - self.set_title("KlipperScreen") monitor = Gdk.Display.get_default().get_primary_monitor() + if monitor is None: + raise RuntimeError("Couldn't get default monitor") self.width = self._config.get_main_config().getint("width", monitor.get_geometry().width) self.height = self._config.get_main_config().getint("height", monitor.get_geometry().height) self.set_default_size(self.width, self.height) @@ -983,8 +989,14 @@ def main(): functions.patch_threading_excepthook() logging.info(f"KlipperScreen version: {version}") - - win = KlipperScreen(args, version) + if not Gtk.init_check(None)[0]: + logging.critical("Failed to initialize Gtk") + raise RuntimeError + try: + win = KlipperScreen(args, version) + except Exception as e: + logging.exception("Failed to initialize window") + raise RuntimeError from e win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main() @@ -995,3 +1007,4 @@ if __name__ == "__main__": main() except Exception as ex: logging.exception(f"Fatal error in main loop:\n{ex}") + exit(1)