fix: screensaver issues when using dpms

close #1505
This commit is contained in:
Alfredo Monclus 2024-11-15 15:39:42 -03:00
parent 114dbdec0c
commit 301514f436
2 changed files with 9 additions and 3 deletions

View File

@ -31,9 +31,10 @@ class ScreenSaver:
self.screen.blanking_time, self.show)
def show(self):
logging.debug("Showing Screensaver")
if self.blackbox is not None:
self.close()
logging.debug("Screensaver active")
return
logging.debug("Showing Screensaver")
if self.screensaver_timeout is not None:
GLib.source_remove(self.screensaver_timeout)
self.screensaver_timeout = None

View File

@ -77,6 +77,7 @@ class KlipperScreen(Gtk.Window):
notification_log = []
prompt = None
tempstore_timeout = None
check_dpms_timeout = None
def __init__(self, args):
self.server_info = None
@ -631,6 +632,9 @@ class KlipperScreen(Gtk.Window):
os.system(f"xset -display {self.display_number} dpms force on")
def set_dpms(self, use_dpms):
if not use_dpms:
GLib.source_remove(self.check_dpms_timeout)
self.check_dpms_timeout = None
self.use_dpms = use_dpms
logging.info(f"DPMS set to: {self.use_dpms}")
if self.printer.state in ("printing", "paused"):
@ -668,7 +672,8 @@ class KlipperScreen(Gtk.Window):
logging.debug("Using DPMS")
if not self.wayland:
os.system(f"xset -display {self.display_number} dpms 0 {self.blanking_time} 0")
GLib.timeout_add_seconds(1, self.check_dpms_state)
if self.check_dpms_timeout is None:
self.check_dpms_timeout = GLib.timeout_add_seconds(1, self.check_dpms_state)
return
# Without dpms just blank the screen
logging.debug("Not using DPMS")