diff --git a/DisplayMagician/DisplayMagician.csproj b/DisplayMagician/DisplayMagician.csproj index 5b8cd25..6699b06 100644 --- a/DisplayMagician/DisplayMagician.csproj +++ b/DisplayMagician/DisplayMagician.csproj @@ -260,9 +260,6 @@ 2.8.0.16 - - 1.2.5.4 - 1.11.36 diff --git a/DisplayMagician/UIForms/DisplayProfileForm.cs b/DisplayMagician/UIForms/DisplayProfileForm.cs index fce1b90..002f0d2 100644 --- a/DisplayMagician/UIForms/DisplayProfileForm.cs +++ b/DisplayMagician/UIForms/DisplayProfileForm.cs @@ -6,8 +6,6 @@ using DisplayMagician.Resources; using DisplayMagicianShared; using Manina.Windows.Forms; using System.Drawing; -using System.Collections.Generic; -//using WK.Libraries.HotkeyListenerNS; using NHotkey.WindowsForms; using NHotkey; diff --git a/DisplayMagicianShared/ProfileRepository.cs b/DisplayMagicianShared/ProfileRepository.cs index 69419f5..0fc5374 100644 --- a/DisplayMagicianShared/ProfileRepository.cs +++ b/DisplayMagicianShared/ProfileRepository.cs @@ -428,7 +428,7 @@ namespace DisplayMagicianShared foreach (ProfileItem testProfile in _allProfiles) { - if (testProfile.UUID.Equals(Profile.UUID)) + if (testProfile.Equals(Profile)) { SharedLogger.logger.Debug($"ProfileRepository/ContainsProfile: Our profile repository does contain a profile called {Profile.Name}"); return true; @@ -752,14 +752,14 @@ namespace DisplayMagicianShared SharedLogger.logger.Error(ex, $"ProfileRepository/LoadProfiles: Tried to parse the JSON in the {_profileStorageJsonFileName} but the JsonConvert threw an exception."); } - // Populate the Current Profile now so we have stuff to compare against + /*// Populate the Current Profile now so we have stuff to compare against ProfileItem myCurrentProfile = new NVIDIAProfileItem { Name = "Current Display Profile", }; myCurrentProfile.CreateProfileFromCurrentDisplaySettings(); _currentProfile = myCurrentProfile; - +*/ SharedLogger.logger.Debug($"ProfileRepository/LoadProfiles: Finding the current profile in the Profile Repository"); // Go through all the profiles and set up the needed structures (such as the Screens list) @@ -988,61 +988,80 @@ namespace DisplayMagicianShared NVIDIAProfileItem nvidiaProfile = null; AMDProfileItem amdProfile = null; WinProfileItem winProfile = null; + // We try to time the profile display swap + Stopwatch stopWatch = new Stopwatch(); + bool wasDisplayChangeSuccessful = true; if (profile == null) { - SharedLogger.logger.Debug($"Program/ApplyProfile: The supplied profile is null! Can't be used."); + SharedLogger.logger.Debug($"ProfileRepository/ApplyProfile: The supplied profile is null! Can't be used."); return ApplyProfileResult.Error; } try { + // We start the timer just before we attempt the display change + stopWatch.Start(); + // We try to swap profiles. The profiles have checking logic in them if (profile is NVIDIAProfileItem) { - SharedLogger.logger.Trace($"Program/ApplyProfile: Profile is an NVIDIA Profile, so changing type to NVIDIAProfileItem"); + SharedLogger.logger.Trace($"ProfileRepository/ApplyProfile: Profile is an NVIDIA Profile, so changing type to NVIDIAProfileItem"); nvidiaProfile = (NVIDIAProfileItem)profile; if (!nvidiaProfile.SetActive()) { - SharedLogger.logger.Error($"Program/ApplyProfile: Error applying the NVIDIA Profile!"); + SharedLogger.logger.Error($"ProfileRepository/ApplyProfile: Error applying the NVIDIA Profile!"); return ApplyProfileResult.Error; } } else if (profile is AMDProfileItem) { - SharedLogger.logger.Trace($"Program/ApplyProfile: Profile is an AMD Profile, so changing type to AMDProfileItem"); + SharedLogger.logger.Trace($"ProfileRepository/ApplyProfile: Profile is an AMD Profile, so changing type to AMDProfileItem"); amdProfile = (AMDProfileItem)profile; if (!amdProfile.SetActive()) { - SharedLogger.logger.Error($"Program/ApplyProfile: Error applying the AMD Profile!"); + SharedLogger.logger.Error($"ProfileRepository/ApplyProfile: Error applying the AMD Profile!"); return ApplyProfileResult.Error; } } else if (profile is WinProfileItem) { - SharedLogger.logger.Trace($"Program/ApplyProfile: Profile is a Windows CCD Profile, so changing type to WinProfileItem"); + SharedLogger.logger.Trace($"ProfileRepository/ApplyProfile: Profile is a Windows CCD Profile, so changing type to WinProfileItem"); winProfile = (WinProfileItem)profile; if (!winProfile.SetActive()) { // Somehow return that this profile topology didn't apply - throw new ApplyTopologyException("Program/ApplyProfile: amdApplyProfileTask: Error applying the AMD Profile!"); + throw new ApplyTopologyException("ProfileRepository/ApplyProfile: amdApplyProfileTask: Error applying the AMD Profile!"); } } else { - SharedLogger.logger.Trace($"Program/ApplyProfile: Profile type is not one that is supported by DisplayMagician, so returning an ApplyProfileResult error"); + SharedLogger.logger.Trace($"ProfileRepository/ApplyProfile: Profile type is not one that is supported by DisplayMagician, so returning an ApplyProfileResult error"); return ApplyProfileResult.Error; } } catch (Exception ex) { - Console.WriteLine($"ProfileRepository/ApplyTopology exception: {ex.Message}: {ex.StackTrace} - {ex.InnerException}"); - { - SharedLogger.logger.Debug($"Program/ApplyProfile: Failed to complete changing the Windows Display layout"); - return ApplyProfileResult.Error; - } + SharedLogger.logger.Debug($"ProfileRepository/ApplyProfile: Failed to complete changing the Windows Display layout"); + wasDisplayChangeSuccessful = false; + return ApplyProfileResult.Error; } + finally + { + // We stop the stop watch + stopWatch.Stop(); + // Get the elapsed time as a TimeSpan value. + TimeSpan ts = stopWatch.Elapsed; + string result = "failed"; + if (wasDisplayChangeSuccessful) + { + result = "was successful"; + } + // Display the TimeSpan time and result. + SharedLogger.logger.Debug($"ProfileRepository/ApplyProfile: Display change attempt took {ts.Minutes}:{ts.Seconds}.{ts.Milliseconds} and {result}."); + } + ProfileRepository.UpdateActiveProfile();