File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -179,7 +179,11 @@ def _set_resolution() -> Optional[int]:
179179 f"set_resolution returned { res } for { adapter_name !r} ; retrying after 10s"
180180 )
181181 await asyncio .sleep (10 )
182- _set_resolution ()
182+ retry_res = _set_resolution ()
183+ if retry_res not in (None , DISP_RESULTS .DISP_CHANGE_SUCCESSFUL ):
184+ logging .warning (
185+ f"retry set_resolution returned { retry_res } for { adapter_name !r} "
186+ )
183187
184188
185189async def switch_rate (
@@ -285,7 +289,13 @@ def _target_modes(state: bool) -> Dict[str, ScreenSettings]:
285289 }
286290
287291 async def _do_switch (state : bool ) -> None :
292+ nonlocal display_map
288293 assert current_config is not None
294+
295+ # A monitor can disappear between the power event and this switch.
296+ # Refresh the snapshot so a disconnected adapter is not used.
297+ display_map = build_display_map ()
298+ _refresh_tray_displays ()
289299 targets = _target_modes (state )
290300 filtered_map = {mid : display_map [mid ] for mid in targets if mid in display_map }
291301 await switch_rate (state , current_config , filtered_map )
You can’t perform that action at this time.
0 commit comments