Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Source/HDRProfile/ApplicationItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ public class ApplicationItem : BaseViewModel, IEquatable<ApplicationItem>
private string _applicationFilePath;
private string _applicationName;
private System.Drawing.Bitmap icon = null;
/// compatibility checkbox in mainView
private bool _restartProcess = false;
private bool _preventHdr = false;
private string _uwpFamilyPackageName;
private string _uwpApplicationID;
private string _uwpIconPath;
Expand All @@ -28,6 +30,7 @@ public class ApplicationItem : BaseViewModel, IEquatable<ApplicationItem>
public string ApplicationName { get => _applicationName; set { _applicationName = value; OnPropertyChanged(); } }
public string ApplicationFilePath { get => _applicationFilePath; set { _applicationFilePath = value; try { Icon = Tools.GetFileIcon(value); } catch { } OnPropertyChanged(); } }
public bool RestartProcess { get => _restartProcess; set { _restartProcess = value; OnPropertyChanged(); } }
public bool PreventHdr { get => _preventHdr; set { _preventHdr = value; OnPropertyChanged(); } }
public bool IsUWP { get => _isUWP; set { _isUWP = value; OnPropertyChanged(); } }

[XmlIgnore]
Expand Down
64 changes: 55 additions & 9 deletions Source/HDRProfile/AutoHDRDaemon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,13 @@ public Version Version
return Tools.ApplicationVersion;
}
}

/// <summary>
/// Returns true if a Application with preventHDR Option is running or focused
/// </summary>
public bool IsHDRAllowedToActivate()
{
return !ProcessWatcher.Applications.Any(e => (e.Value == ApplicationState.Running || e.Value == ApplicationState.Focused) && e.Key.PreventHdr == true);
}

public AutoHDRDaemon()
{
Expand Down Expand Up @@ -324,7 +330,12 @@ private void StartApplication(ApplicationItem application)
}
catch (Exception ex)
{
Tools.Logs.AddException(ex);
try
{
//can throw an error
Tools.Logs.AddException(ex);
}
catch { }
}
}

Expand Down Expand Up @@ -466,35 +477,70 @@ private void ProcessWatcher_RunningOrFocusedChanged(object sender, EventArgs e)
UpdateHDRModeBasedOnCurrentApplication();

}

/// <summary>
/// Converts OnOff Enum to boolean
/// </summary>
/// <param name="OnOff"></param>
/// <returns></returns>
private bool OnOffToBool(OnOff OnOff)
{
switch (OnOff){
case OnOff
.ON: return true;
default: return false;
}
}
private void UpdateHDRModeBasedOnCurrentApplication()
{
lock (_accessLock)
{
try
{
bool activateHDR = false;
try {

//check if any running process is preventing HDR
bool allowedHDR = IsHDRAllowedToActivate();

//check running processes wants to activate HDR
bool processRequestHDR = false;
switch (Settings.HDRMode)
{
case HDRActivationMode.Running:
activateHDR = ProcessWatcher.OneProcessIsRunning;
processRequestHDR = ProcessWatcher.OneProcessIsRunning;
break;
case HDRActivationMode.Focused:
activateHDR = ProcessWatcher.OneProcessIsFocused;
processRequestHDR = ProcessWatcher.OneProcessIsFocused;
break;
default:
return;

}
bool activateHDR = false;
if (allowedHDR)
{
if (OnOffToBool(Settings.DesktopHDRDefault))
{
//HDR is always active on allowedHDR and desktopIsHdr
activateHDR = true;
}
else
{
//Desktop is not HDR so we need to check if a process request it
activateHDR = processRequestHDR;
}
}


//hdr is already active
if (activateHDR == HDRIsActive)
{
return;
}
//hdr hast to be activated
if (activateHDR)
{
Tools.Logs.Add($"Activating HDR...", false);
MonitorManager.ActivateHDR();

}
//hdr has to be deactivated
else if (DisplayManager.GlobalHDRIsActive && Settings.HDRMode != HDRActivationMode.None)
{
Tools.Logs.Add($"Deactivating HDR...", false);
Expand Down
5 changes: 4 additions & 1 deletion Source/HDRProfile/HDRProfileSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class HDRProfileSettings : BaseViewModel
private bool _closeToTray;
private bool _checkForNewVersion = true;
private HDRActivationMode _hdrMode;
private OnOff _desktopHDRDefault;
readonly object _audioDevicesLock = new object();
private ObservableCollection<ApplicationItem> _applicationItems;
private ObservableCollection<Display> _monitors;
Expand All @@ -46,13 +47,15 @@ public class HDRProfileSettings : BaseViewModel
[DataMember]
public bool CloseToTray { get => _closeToTray; set { _closeToTray = value; OnPropertyChanged(); } }


[DataMember]
public bool CheckForNewVersion { get => _checkForNewVersion; set { _checkForNewVersion = value; OnPropertyChanged(); } }

[DataMember]
public HDRActivationMode HDRMode { get => _hdrMode; set { _hdrMode = value; OnPropertyChanged(); } }

[DataMember]
public OnOff DesktopHDRDefault { get => _desktopHDRDefault; set { _desktopHDRDefault = value; OnPropertyChanged(); } }

[DataMember]
public ObservableCollection<ApplicationItem> ApplicationItems { get => _applicationItems; set {_applicationItems = value; OnPropertyChanged();} }

Expand Down
48 changes: 33 additions & 15 deletions Source/HDRProfile/ProjectResources/Locale_Enums.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions Source/HDRProfile/ProjectResources/Locale_Enums.resx
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,10 @@
<data name="HDRMode.Running" xml:space="preserve">
<value>Runing</value>
</data>
<data name="OnOff.OFF" xml:space="preserve">
<value>Off</value>
</data>
<data name="OnOff.ON" xml:space="preserve">
<value>On</value>
</data>
</root>
Loading