@@ -7496,13 +7496,12 @@ def create_ddcutil(self):
7496
7496
def vdu_connectivity_changed_callback (edid_encoded : str , event_type : int , flags : int ):
7497
7497
if event_type == DdcEventType .DPMS_AWAKE .value :
7498
7498
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 :
7502
7500
log_info (f"DPMS asleep event { event_type = } { edid_encoded = :.30} " )
7501
+ return
7503
7502
else :
7504
7503
log_info (f"Connected VDUs changed { event_type = } { flags = } { edid_encoded :.30} ..." )
7505
- self .start_refresh ()
7504
+ self .start_refresh (ddcutil_event = True )
7506
7505
7507
7506
change_handler = vdu_connectivity_changed_callback
7508
7507
log_debug ("Enabled callback for VDU-connectivity-change D-Bus signals" )
@@ -7612,10 +7611,10 @@ def lux_check_action(self) -> bool:
7612
7611
return False
7613
7612
self .lux_auto_controller .adjust_brightness_now ()
7614
7613
7615
- def start_refresh (self ) -> None :
7614
+ def start_refresh (self , ddcutil_event : bool = False ) -> None :
7616
7615
if not is_running_in_gui_thread ():
7617
7616
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 )
7619
7618
return
7620
7619
7621
7620
def update_from_vdu (worker : WorkerThread ) -> None :
@@ -7626,9 +7625,13 @@ def update_from_vdu(worker: WorkerThread) -> None:
7626
7625
log_info ("Refresh commences" )
7627
7626
self .ddcutil .refresh_connection ()
7628
7627
self .detected_vdu_list = self .ddcutil .detect_vdus ()
7628
+ if ddcutil_event :
7629
+ self .restore_vdu_intialization_presets ()
7629
7630
for control_panel in self .main_window .get_main_panel ().vdu_control_panels .values ():
7630
7631
if control_panel .controller .get_full_id () in self .detected_vdu_list :
7631
7632
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
7632
7635
except (subprocess .SubprocessError , ValueError , re .error , OSError ) as e :
7633
7636
if self .refresh_data_task .vdu_exception is None :
7634
7637
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
7680
7683
7681
7684
log_debug ("restore_preset: try to obtain application_configuration_lock" , trace = False ) if log_debug_enabled else None
7682
7685
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
7683
7687
self .transitioning_dummy_preset = None
7684
7688
if not immediately :
7685
7689
self .transitioning_dummy_preset = PresetTransitionDummy (preset )
0 commit comments