From 20c390d6f969e59136c90438eca636f8e9bbfe16 Mon Sep 17 00:00:00 2001 From: Terry MacDonald Date: Wed, 29 Jun 2022 20:37:20 +1200 Subject: [PATCH] Fixed ProcessPriority error in StartProgramControl This is now working properly. --- DisplayMagician/Processes/ProcessUtils.cs | 29 +++- DisplayMagician/Properties/AssemblyInfo.cs | 4 +- .../UIForms/ShortcutLibraryForm.cs | 4 +- .../UIForms/StartProgramControl.cs | 3 +- DisplayMagicianShared/NVIDIA/NVIDIALibrary.cs | 140 ++++++++++-------- 5 files changed, 110 insertions(+), 70 deletions(-) diff --git a/DisplayMagician/Processes/ProcessUtils.cs b/DisplayMagician/Processes/ProcessUtils.cs index 61a797e..30e884c 100644 --- a/DisplayMagician/Processes/ProcessUtils.cs +++ b/DisplayMagician/Processes/ProcessUtils.cs @@ -678,6 +678,33 @@ namespace DisplayMagician.Processes } } + public static ProcessPriority TranslateNameToPriority(string processPriorityName) + { + ProcessPriority wantedPriority = ProcessPriority.Normal; + switch (processPriorityName.ToLowerInvariant()) + { + case "high": + wantedPriority = ProcessPriority.High; + break; + case "abovenormal": + wantedPriority = ProcessPriority.AboveNormal; + break; + case "normal": + wantedPriority = ProcessPriority.Normal; + break; + case "belownormal": + wantedPriority = ProcessPriority.BelowNormal; + break; + case "idle": + wantedPriority = ProcessPriority.Idle; + break; + default: + wantedPriority = ProcessPriority.Normal; + break; + } + return wantedPriority; + } + public static ProcessPriorityClass TranslatePriorityToClass(ProcessPriority processPriorityClass) { ProcessPriorityClass wantedPriorityClass = ProcessPriorityClass.Normal; @@ -731,7 +758,7 @@ namespace DisplayMagician.Processes } return wantedPriorityClass; } - + } } diff --git a/DisplayMagician/Properties/AssemblyInfo.cs b/DisplayMagician/Properties/AssemblyInfo.cs index 2ca7afe..8db4ac1 100644 --- a/DisplayMagician/Properties/AssemblyInfo.cs +++ b/DisplayMagician/Properties/AssemblyInfo.cs @@ -26,8 +26,8 @@ using System.Resources; [assembly: Guid("e4ceaf5e-ad01-4695-b179-31168eb74c48")] // Version information -[assembly: AssemblyVersion("2.4.0.71")] -[assembly: AssemblyFileVersion("2.4.0.71")] +[assembly: AssemblyVersion("2.4.0.85")] +[assembly: AssemblyFileVersion("2.4.0.85")] [assembly: NeutralResourcesLanguageAttribute( "en" )] [assembly: CLSCompliant(true)] diff --git a/DisplayMagician/UIForms/ShortcutLibraryForm.cs b/DisplayMagician/UIForms/ShortcutLibraryForm.cs index d10e69d..cf2c277 100644 --- a/DisplayMagician/UIForms/ShortcutLibraryForm.cs +++ b/DisplayMagician/UIForms/ShortcutLibraryForm.cs @@ -301,8 +301,8 @@ namespace DisplayMagician.UIForms private void ShowShortcutLoadingWindow() { Program.AppShortcutLoadingSplashScreen = new ShortcutLoadingForm(); - Program.AppShortcutLoadingSplashScreen.Title = "Preparing images..."; - Program.AppShortcutLoadingSplashScreen.Description = "Preparing images before showing you the Shortcut information. You will be able to swap your shortcut icon to any image you want, or choose one from a list."; + Program.AppShortcutLoadingSplashScreen.Title = "Preparing Shortcut..."; + Program.AppShortcutLoadingSplashScreen.Description = "Preparing the Shortcut ready for you to edit. You will be able to swap your shortcut icon to any image you want, or choose one from a list."; int resultX = this.DesktopLocation.X + ((this.Width - Program.AppShortcutLoadingSplashScreen.Width) / 2); int resultY = this.DesktopLocation.Y + ((this.Height - Program.AppShortcutLoadingSplashScreen.Height) / 2); Program.AppShortcutLoadingSplashScreen.WantedLocation = new Point(resultX, resultY); diff --git a/DisplayMagician/UIForms/StartProgramControl.cs b/DisplayMagician/UIForms/StartProgramControl.cs index a6a7351..725bfe2 100644 --- a/DisplayMagician/UIForms/StartProgramControl.cs +++ b/DisplayMagician/UIForms/StartProgramControl.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using DisplayMagician.Processes; namespace DisplayMagician.UIForms { @@ -287,7 +288,7 @@ namespace DisplayMagician.UIForms private void cbx_start_program_priority_SelectedIndexChanged(object sender, EventArgs e) { - myStartProgram.ProcessPriority = (ProcessPriority)cbx_start_program_priority.SelectedValue; + myStartProgram.ProcessPriority = ProcessUtils.TranslateNameToPriority(cbx_start_program_priority.SelectedValue.ToString()); } private void cb_run_as_administrator_CheckedChanged(object sender, EventArgs e) diff --git a/DisplayMagicianShared/NVIDIA/NVIDIALibrary.cs b/DisplayMagicianShared/NVIDIA/NVIDIALibrary.cs index b48f5fe..b7fc9af 100644 --- a/DisplayMagicianShared/NVIDIA/NVIDIALibrary.cs +++ b/DisplayMagicianShared/NVIDIA/NVIDIALibrary.cs @@ -68,8 +68,11 @@ namespace DisplayMagicianShared.NVIDIA => HasNvHdrEnabled == other.HasNvHdrEnabled && HdrCapabilities.Equals(other.HdrCapabilities) && HdrColorData.Equals(other.HdrColorData) && - HasAdaptiveSync == other.HasAdaptiveSync && - AdaptiveSyncConfig.Equals(other.AdaptiveSyncConfig) && + // Disabled the Adaptive Sync equality matching as we are having trouble applying it, which is causing issues in profile matching in DisplayMagician + // To fix this bit, we need to test the SetActiveConfigOverride Adaptive Sync part of the codebase to apply this properly. + // But for now, we'll exclude it from the equality matching and also stop trying to use the adaptive sync config. + //HasAdaptiveSync == other.HasAdaptiveSync && + //AdaptiveSyncConfig.Equals(other.AdaptiveSyncConfig) && HasColorData == other.HasColorData && ColorData.Equals(other.ColorData) && HasCustomDisplay == other.HasCustomDisplay && @@ -77,7 +80,11 @@ namespace DisplayMagicianShared.NVIDIA public override int GetHashCode() { - return (HasNvHdrEnabled, HdrCapabilities, HdrColorData, HasAdaptiveSync, AdaptiveSyncConfig, HasColorData, ColorData, HasCustomDisplay, CustomDisplays).GetHashCode(); + // Disabled the Adaptive Sync equality matching as we are having trouble applying it, which is causing issues in profile matching in DisplayMagician + // To fix this bit, we need to test the SetActiveConfigOverride Adaptive Sync part of the codebase to apply this properly. + // But for now, we'll exclude it from the equality matching and also stop trying to use the adaptive sync config. + //return (HasNvHdrEnabled, HdrCapabilities, HdrColorData, HasAdaptiveSync, AdaptiveSyncConfig, HasColorData, ColorData, HasCustomDisplay, CustomDisplays).GetHashCode(); + return (HasNvHdrEnabled, HdrCapabilities, HdrColorData, HasColorData, ColorData, HasCustomDisplay, CustomDisplays).GetHashCode(); } public static bool operator ==(NVIDIA_PER_DISPLAY_CONFIG lhs, NVIDIA_PER_DISPLAY_CONFIG rhs) => lhs.Equals(rhs); @@ -2030,67 +2037,7 @@ namespace DisplayMagicianShared.NVIDIA SharedLogger.logger.Error(ex, $"NVIDIALibrary/SetActiveConfig: Exception caused while turning off prior NVIDIA HDR colour settings for display {displayId}."); } - // Set any AdaptiveSync settings - SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to set any adaptive Sync settings if in use."); - - NV_SET_ADAPTIVE_SYNC_DATA_V1 adaptiveSyncData = myDisplay.AdaptiveSyncConfig; - try - { - if (myDisplay.AdaptiveSyncConfig.DisableAdaptiveSync) - { - SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to DISABLE Adaptive Sync for display {displayId}."); - } - else - { - SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to ENABLE Adaptive Sync for display {displayId}."); - } - - if (myDisplay.AdaptiveSyncConfig.DisableFrameSplitting) - { - SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to DISABLE Frame Splitting for display {displayId}."); - } - else - { - SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to ENABLE Frame Splitting for display {displayId}."); - } - SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to set the Adaptice Sync Max Frame Interval to {myDisplay.AdaptiveSyncConfig.MaxFrameInterval}ms for display {displayId}."); - - // Apply the AdaptiveSync settings - NVStatus = NVImport.NvAPI_DISP_SetAdaptiveSyncData(displayId, ref adaptiveSyncData); - if (NVStatus == NVAPI_STATUS.NVAPI_OK) - { - SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: NvAPI_DISP_SetAdaptiveSyncData returned OK. We just successfully set the Adaptive Sync settings for display {displayId}."); - } - else if (NVStatus == NVAPI_STATUS.NVAPI_INSUFFICIENT_BUFFER) - { - SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: The input buffer is not large enough to hold it's contents. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); - } - else if (NVStatus == NVAPI_STATUS.NVAPI_INVALID_DISPLAY_ID) - { - SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: The input monitor is either not connected or is not a DP or HDMI panel. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); - } - else if (NVStatus == NVAPI_STATUS.NVAPI_API_NOT_INITIALIZED) - { - SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: The NvAPI API needs to be initialized first. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); - } - else if (NVStatus == NVAPI_STATUS.NVAPI_NO_IMPLEMENTATION) - { - SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: This entry point not available in this NVIDIA Driver. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); - } - else if (NVStatus == NVAPI_STATUS.NVAPI_ERROR) - { - SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: A miscellaneous error occurred. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); - } - else - { - SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: Some non standard error occurred while getting Mosaic Topology! NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}. It's most likely that your monitor {displayId} doesn't support HDR."); - } - - } - catch (Exception ex) - { - SharedLogger.logger.Error(ex, $"NVIDIALibrary/SetActiveConfig: Exception caused while trying to set NVIDIA Adaptive Sync settings for display {displayId}."); - } + } } @@ -2993,6 +2940,71 @@ namespace DisplayMagicianShared.NVIDIA SharedLogger.logger.Error(ex, $"NVIDIALibrary/SetActiveConfigOverride: Exception caused while turning on custom NVIDIA HDR colour settings for display {displayId}."); } + // Disabled the Adaptive Sync equality matching as we are having trouble applying it, which is causing issues in profile matching in DisplayMagician + // To fix this bit, we need to test the SetActiveConfigOverride Adaptive Sync part of the codebase to apply this properly. + // But for now, we'll exclude it from the equality matching and also stop trying to use the adaptive sync config. + + /*// Set any AdaptiveSync settings + SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to set any adaptive Sync settings if in use."); + + NV_SET_ADAPTIVE_SYNC_DATA_V1 adaptiveSyncData = myDisplay.AdaptiveSyncConfig; + try + { + if (myDisplay.AdaptiveSyncConfig.DisableAdaptiveSync) + { + SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to DISABLE Adaptive Sync for display {displayId}."); + } + else + { + SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to ENABLE Adaptive Sync for display {displayId}."); + } + + if (myDisplay.AdaptiveSyncConfig.DisableFrameSplitting) + { + SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to DISABLE Frame Splitting for display {displayId}."); + } + else + { + SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to ENABLE Frame Splitting for display {displayId}."); + } + SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: We want to set the Adaptice Sync Max Frame Interval to {myDisplay.AdaptiveSyncConfig.MaxFrameInterval}ms for display {displayId}."); + + // Apply the AdaptiveSync settings + NVStatus = NVImport.NvAPI_DISP_SetAdaptiveSyncData(displayId, ref adaptiveSyncData); + if (NVStatus == NVAPI_STATUS.NVAPI_OK) + { + SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: NvAPI_DISP_SetAdaptiveSyncData returned OK. We just successfully set the Adaptive Sync settings for display {displayId}."); + } + else if (NVStatus == NVAPI_STATUS.NVAPI_INSUFFICIENT_BUFFER) + { + SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: The input buffer is not large enough to hold it's contents. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); + } + else if (NVStatus == NVAPI_STATUS.NVAPI_INVALID_DISPLAY_ID) + { + SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: The input monitor is either not connected or is not a DP or HDMI panel. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); + } + else if (NVStatus == NVAPI_STATUS.NVAPI_API_NOT_INITIALIZED) + { + SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: The NvAPI API needs to be initialized first. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); + } + else if (NVStatus == NVAPI_STATUS.NVAPI_NO_IMPLEMENTATION) + { + SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: This entry point not available in this NVIDIA Driver. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); + } + else if (NVStatus == NVAPI_STATUS.NVAPI_ERROR) + { + SharedLogger.logger.Warn($"NVIDIALibrary/SetActiveConfig: A miscellaneous error occurred. NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}"); + } + else + { + SharedLogger.logger.Trace($"NVIDIALibrary/SetActiveConfig: Some non standard error occurred while getting Mosaic Topology! NvAPI_DISP_SetAdaptiveSyncData() returned error code {NVStatus}. It's most likely that your monitor {displayId} doesn't support HDR."); + } + + } + catch (Exception ex) + { + SharedLogger.logger.Error(ex, $"NVIDIALibrary/SetActiveConfig: Exception caused while trying to set NVIDIA Adaptive Sync settings for display {displayId}."); + }*/ }