rework screensaver timeout should fix #992

This commit is contained in:
alfrix 2023-06-04 09:40:18 -03:00
parent 2d61eba66b
commit 791938d733

View File

@ -514,8 +514,10 @@ class KlipperScreen(Gtk.Window):
self.subscriptions.append(panel_name) self.subscriptions.append(panel_name)
def reset_screensaver_timeout(self, *args): def reset_screensaver_timeout(self, *args):
if not self.use_dpms and self.screensaver_timeout is not None: if self.screensaver_timeout is not None:
GLib.source_remove(self.screensaver_timeout) GLib.source_remove(self.screensaver_timeout)
self.screensaver_timeout = None
if not self.use_dpms:
self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver) self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver)
def show_screensaver(self): def show_screensaver(self):
@ -543,7 +545,9 @@ class KlipperScreen(Gtk.Window):
self.screensaver = box self.screensaver = box
self.screensaver.show_all() self.screensaver.show_all()
self.power_devices(None, self._config.get_main_config().get("screen_off_devices", ""), on=False) self.power_devices(None, self._config.get_main_config().get("screen_off_devices", ""), on=False)
return False if self.screensaver_timeout is not None:
GLib.source_remove(self.screensaver_timeout)
self.screensaver_timeout = None
def close_screensaver(self, widget=None): def close_screensaver(self, widget=None):
if self.screensaver is None: if self.screensaver is None:
@ -555,13 +559,12 @@ class KlipperScreen(Gtk.Window):
if self.use_dpms: if self.use_dpms:
self.wake_screen() self.wake_screen()
else: else:
self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver) self.reset_screensaver_timeout()
for dialog in self.dialogs: for dialog in self.dialogs:
logging.info(f"Restoring Dialog {dialog}") logging.info(f"Restoring Dialog {dialog}")
dialog.show() dialog.show()
self.show_all() self.show_all()
self.power_devices(None, self._config.get_main_config().get("screen_on_devices", ""), on=True) self.power_devices(None, self._config.get_main_config().get("screen_on_devices", ""), on=True)
return False
def check_dpms_state(self): def check_dpms_state(self):
if not self.use_dpms: if not self.use_dpms:
@ -596,6 +599,7 @@ class KlipperScreen(Gtk.Window):
logging.debug(f"Screen blanking: {time}") logging.debug(f"Screen blanking: {time}")
if self.screensaver_timeout is not None: if self.screensaver_timeout is not None:
GLib.source_remove(self.screensaver_timeout) GLib.source_remove(self.screensaver_timeout)
self.screensaver_timeout = None
os.system("xset -display :0 dpms 0 0 0") os.system("xset -display :0 dpms 0 0 0")
return return
@ -616,8 +620,7 @@ class KlipperScreen(Gtk.Window):
# Without dpms just blank the screen # Without dpms just blank the screen
logging.debug("Not using DPMS") logging.debug("Not using DPMS")
os.system("xset -display :0 dpms 0 0 0") os.system("xset -display :0 dpms 0 0 0")
if self.screensaver_timeout is None: self.reset_screensaver_timeout()
self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver)
return return
def show_printer_select(self, widget=None): def show_printer_select(self, widget=None):