- Fix fadeout timeouts not being cleanly canceled

This commit is contained in:
trigg 2024-03-24 23:27:30 +00:00
parent c07b87eace
commit 2ae0b8204c

View file

@ -133,15 +133,18 @@ class VoiceOverlayWindow(OverlayWindow):
self.fade_opacity = 1.0 self.fade_opacity = 1.0
if self.inactive_timeout: if self.inactive_timeout:
GLib.source_remove(self.inactive_timeout) GLib.source_remove(self.inactive_timeout)
self.inactive_timeout = None
if self.fadeout_timeout: if self.fadeout_timeout:
GLib.source_remove(self.fade_opacity) GLib.source_remove(self.fadeout_timeout)
self.fadeout_timeout = None
if self.fade_out_inactive: if self.fade_out_inactive:
GLib.timeout_add_seconds(self.inactive_time, self.overlay_inactive) self.inactive_timeout = GLib.timeout_add_seconds(self.inactive_time, self.overlay_inactive)
def overlay_inactive(self): def overlay_inactive(self):
self.fade_start= perf_counter() self.fade_start= perf_counter()
GLib.timeout_add(self.inactive_fade_time/200 * 1000, self.overlay_fadeout) self.fadeout_timeout = GLib.timeout_add(self.inactive_fade_time/200 * 1000, self.overlay_fadeout)
self.inactive_timeout = None
return False return False
def overlay_fadeout(self): def overlay_fadeout(self):
@ -150,6 +153,7 @@ class VoiceOverlayWindow(OverlayWindow):
time_percent = (now - self.fade_start) / self.inactive_fade_time time_percent = (now - self.fade_start) / self.inactive_fade_time
if time_percent>=1.0: if time_percent>=1.0:
self.fade_opacity = self.fade_out_limit self.fade_opacity = self.fade_out_limit
self.fadeout_timeout = None
return False return False
self.fade_opacity = self.fade_out_limit + ((1.0 - self.fade_out_limit) * (1.0 - time_percent)) self.fade_opacity = self.fade_out_limit + ((1.0 - self.fade_out_limit) * (1.0 - time_percent))