@@ -53,6 +53,7 @@ public LgDevice SelectedDevice
5353 private readonly PowerEventDispatcher _powerEventDispatcher ;
5454 private readonly SessionSwitchDispatcher _sessionSwitchDispatcher ;
5555 private readonly ProcessEventDispatcher _processEventDispatcher ;
56+ private readonly DisplayChangeEventDispatcher _displayChangeEventDispatcher ;
5657 private readonly ServiceManager _serviceManager ;
5758 private LgDevice _selectedDevice ;
5859 private string _rcButtonsFilename ;
@@ -72,12 +73,22 @@ public LgDevice SelectedDevice
7273 public static readonly int SHORTCUTID_LGQA = - 202 ;
7374 public static readonly int SHORTCUTID_GAMEBAR = - 101 ;
7475
75- public LgService ( GlobalContext globalContext , PowerEventDispatcher powerEventDispatcher , SessionSwitchDispatcher sessionSwitchDispatcher , ProcessEventDispatcher processEventDispatcher , ServiceManager serviceManager , RestartDetector restartDetector , WinApiService winApiService , WinApiAdminService winApiAdminService ) : base ( globalContext )
76+ public LgService (
77+ GlobalContext globalContext ,
78+ PowerEventDispatcher powerEventDispatcher ,
79+ SessionSwitchDispatcher sessionSwitchDispatcher ,
80+ ProcessEventDispatcher processEventDispatcher ,
81+ DisplayChangeEventDispatcher displayChangeEventDispatcher ,
82+ ServiceManager serviceManager ,
83+ RestartDetector restartDetector ,
84+ WinApiService winApiService ,
85+ WinApiAdminService winApiAdminService ) : base ( globalContext )
7686 {
7787 _allowPowerOn = globalContext . StartUpParams . RunningFromScheduledTask ;
7888 _powerEventDispatcher = powerEventDispatcher ;
7989 _sessionSwitchDispatcher = sessionSwitchDispatcher ;
8090 _processEventDispatcher = processEventDispatcher ;
91+ _displayChangeEventDispatcher = displayChangeEventDispatcher ;
8192 _serviceManager = serviceManager ;
8293 LgPreset . GetDeviceName += LgPreset_GetDeviceName ;
8394 LgPreset . GetAppName += LgPreset_GetAppName ;
@@ -466,10 +477,7 @@ public override void InstallEventHandlers()
466477 SetShortcuts ( SHORTCUTID_LGQA , Config . QuickAccessShortcut ) ;
467478
468479 var keyboardShortcutDispatcher = _globalContext . ServiceProvider . GetService < KeyboardShortcutDispatcher > ( ) ;
469- if ( keyboardShortcutDispatcher != null )
470- {
471- keyboardShortcutDispatcher . RegisterShortcut ( SHORTCUTID_GAMEBAR , Config . GameBarShortcut ) ;
472- }
480+ keyboardShortcutDispatcher ? . RegisterShortcut ( SHORTCUTID_GAMEBAR , Config . GameBarShortcut ) ;
473481
474482 _powerEventDispatcher . RegisterAsyncEventHandler ( PowerEventDispatcher . Event_Startup , PowerStateChanged ) ;
475483 _powerEventDispatcher . RegisterEventHandler ( PowerEventDispatcher . Event_Suspend , PowerModeChanged ) ;
@@ -481,6 +489,13 @@ public override void InstallEventHandlers()
481489 _sessionSwitchDispatcher . RegisterEventHandler ( SessionSwitchDispatcher . Event_SessionSwitch , SessionSwitched ) ;
482490
483491 _processEventDispatcher . RegisterAsyncEventHandler ( ProcessEventDispatcher . Event_ProcessChanged , ProcessChanged ) ;
492+
493+ _displayChangeEventDispatcher . RegisterAsyncEventHandler ( DisplayChangeEventDispatcher . Event_DisplayChanged , DisplayChanged ) ;
494+ }
495+
496+ private async Task DisplayChanged ( object sender , DisplayChangedEventArgs e , CancellationToken ct )
497+ {
498+ await ExecutePresetsForEvent ( PresetTriggerType . DisplayChange ) ;
484499 }
485500
486501 private async Task PowerStateChanged ( object sender , PowerStateChangedEventArgs e , CancellationToken token )
@@ -633,8 +648,14 @@ public async Task ProcessChanged(object sender, ProcessChangedEventArgs args, Ca
633648 return ;
634649 }
635650
636- var applicableDevices = Devices . Where ( d => d . PowerOffOnScreenSaver || d . PowerOnAfterScreenSaver || d . TriggersEnabled && _presets . Any ( p => p . Triggers . Any ( t => t . Trigger != PresetTriggerType . None ) &&
637- ( ( string . IsNullOrEmpty ( p . DeviceMacAddress ) && d == SelectedDevice ) || p . DeviceMacAddress . Equals ( d . MacAddress , StringComparison . OrdinalIgnoreCase ) ) ) ) . ToList ( ) ;
651+ var applicableDevices = Devices . Where ( d =>
652+ d . PowerOffOnScreenSaver
653+ || d . PowerOnAfterScreenSaver
654+ || ( d . TriggersEnabled
655+ // only these trigger types are ever triggered by a process changed event
656+ && _presets . Any ( p => p . Triggers . Any ( t => t . Trigger == PresetTriggerType . ProcessSwitch || t . Trigger == PresetTriggerType . ScreensaverStart || t . Trigger == PresetTriggerType . ScreensaverStop )
657+ && ( ( string . IsNullOrEmpty ( p . DeviceMacAddress ) && d == SelectedDevice ) || p . DeviceMacAddress . Equals ( d . MacAddress , StringComparison . OrdinalIgnoreCase ) ) ) ) )
658+ . ToList ( ) ;
638659
639660 if ( ! applicableDevices . Any ( ) )
640661 {
0 commit comments