@@ -7496,13 +7496,12 @@ def create_ddcutil(self):
74967496 def vdu_connectivity_changed_callback (edid_encoded : str , event_type : int , flags : int ):
74977497 if event_type == DdcEventType .DPMS_AWAKE .value :
74987498 log_info (f"DPMS awake event { event_type = } { edid_encoded = :.30} " )
7499- if self .lux_auto_controller is not None and self .lux_auto_controller .is_auto_enabled ():
7500- self .lux_auto_controller .adjust_brightness_now () # don't wait for normal interval to finish
7501- elif event_type == DdcEventType .DPMS_ASLEEP .value :
7499+ if event_type == DdcEventType .DPMS_ASLEEP .value :
75027500 log_info (f"DPMS asleep event { event_type = } { edid_encoded = :.30} " )
7501+ return
75037502 else :
75047503 log_info (f"Connected VDUs changed { event_type = } { flags = } { edid_encoded :.30} ..." )
7505- self .start_refresh ()
7504+ self .start_refresh (ddcutil_event = True )
75067505
75077506 change_handler = vdu_connectivity_changed_callback
75087507 log_debug ("Enabled callback for VDU-connectivity-change D-Bus signals" )
@@ -7612,10 +7611,10 @@ def lux_check_action(self) -> bool:
76127611 return False
76137612 self .lux_auto_controller .adjust_brightness_now ()
76147613
7615- def start_refresh (self ) -> None :
7614+ def start_refresh (self , ddcutil_event : bool = False ) -> None :
76167615 if not is_running_in_gui_thread ():
76177616 log_debug ("Reinvoke start_refresh() in GUI thread." )
7618- self .main_window .run_in_gui_thread (self .start_refresh )
7617+ self .main_window .run_in_gui_thread (self .start_refresh , ddcutil_event )
76197618 return
76207619
76217620 def update_from_vdu (worker : WorkerThread ) -> None :
@@ -7626,9 +7625,13 @@ def update_from_vdu(worker: WorkerThread) -> None:
76267625 log_info ("Refresh commences" )
76277626 self .ddcutil .refresh_connection ()
76287627 self .detected_vdu_list = self .ddcutil .detect_vdus ()
7628+ if ddcutil_event :
7629+ self .restore_vdu_intialization_presets ()
76297630 for control_panel in self .main_window .get_main_panel ().vdu_control_panels .values ():
76307631 if control_panel .controller .get_full_id () in self .detected_vdu_list :
76317632 control_panel .refresh_from_vdu ()
7633+ if self .lux_auto_controller is not None and self .lux_auto_controller .is_auto_enabled ():
7634+ self .lux_auto_controller .adjust_brightness_now () # don't wait for normal interval to finish
76327635 except (subprocess .SubprocessError , ValueError , re .error , OSError ) as e :
76337636 if self .refresh_data_task .vdu_exception is None :
76347637 self .refresh_data_task .vdu_exception = VduException (vdu_description = "unknown" , operation = "unknown" ,
@@ -7680,6 +7683,7 @@ def restore_preset(self, preset: Preset, finished_func: Callable[[PresetTransiti
76807683
76817684 log_debug ("restore_preset: try to obtain application_configuration_lock" , trace = False ) if log_debug_enabled else None
76827685 with self .application_lock : # The lock prevents a transition firing when the GUI/app is reconfiguring
7686+ log_debug ("restore_preset: holding application_configuration_lock" , trace = False ) if log_debug_enabled else None
76837687 self .transitioning_dummy_preset = None
76847688 if not immediately :
76857689 self .transitioning_dummy_preset = PresetTransitionDummy (preset )
0 commit comments