mirror of
https://github.com/terrymacdonald/DisplayMagician.git
synced 2024-08-30 18:32:20 +00:00
Updated AMDLibrary and WinLibrary to latest versions
AMDLibrary had an error that caused issues due to a missing call to get a valid default config. WinLibrary had an issue where it wasn't applying the GDIDisplaySettings correctly after a reboot. This has now been fixed.
This commit is contained in:
parent
6ea32a44ab
commit
1faa8ecc5b
@ -280,7 +280,7 @@ namespace DisplayMagician {
|
|||||||
// Warn the user about the fact we need a new DisplayProfiles_2.0.json
|
// Warn the user about the fact we need a new DisplayProfiles_2.0.json
|
||||||
StartMessageForm myMessageWindow = new StartMessageForm();
|
StartMessageForm myMessageWindow = new StartMessageForm();
|
||||||
myMessageWindow.MessageMode = "rtf";
|
myMessageWindow.MessageMode = "rtf";
|
||||||
myMessageWindow.URL = "https://displaymagician.littlebitbig.com/messages/DisplayMagician2.0to2.1.rtf";
|
myMessageWindow.URL = "https://displaymagician.littlebitbig.com/messages/DisplayMagician20to21.rtf";
|
||||||
myMessageWindow.HeadingText = "DisplayMagician v2.1.0 Upgrade Warning";
|
myMessageWindow.HeadingText = "DisplayMagician v2.1.0 Upgrade Warning";
|
||||||
myMessageWindow.ButtonText = "&Close";
|
myMessageWindow.ButtonText = "&Close";
|
||||||
myMessageWindow.ShowDialog();
|
myMessageWindow.ShowDialog();
|
||||||
|
@ -26,8 +26,8 @@ using System.Resources;
|
|||||||
[assembly: Guid("e4ceaf5e-ad01-4695-b179-31168eb74c48")]
|
[assembly: Guid("e4ceaf5e-ad01-4695-b179-31168eb74c48")]
|
||||||
|
|
||||||
// Version information
|
// Version information
|
||||||
[assembly: AssemblyVersion("2.1.0.11")]
|
[assembly: AssemblyVersion("2.1.0.14")]
|
||||||
[assembly: AssemblyFileVersion("2.1.0.11")]
|
[assembly: AssemblyFileVersion("2.1.0.14")]
|
||||||
[assembly: NeutralResourcesLanguageAttribute( "en" )]
|
[assembly: NeutralResourcesLanguageAttribute( "en" )]
|
||||||
[assembly: CLSCompliant(true)]
|
[assembly: CLSCompliant(true)]
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ namespace DisplayMagicianShared.AMD
|
|||||||
static AMDLibrary() { }
|
static AMDLibrary() { }
|
||||||
public AMDLibrary()
|
public AMDLibrary()
|
||||||
{
|
{
|
||||||
|
_activeDisplayConfig = CreateDefaultConfig();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Trace($"AMDLibrary/AMDLibrary: Attempting to load the AMD ADL DLL {ADLImport.ATI_ADL_DLL}");
|
SharedLogger.logger.Trace($"AMDLibrary/AMDLibrary: Attempting to load the AMD ADL DLL {ADLImport.ATI_ADL_DLL}");
|
||||||
|
@ -515,6 +515,16 @@ namespace DisplayMagicianShared.Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// And then we need to go through the list of modes again and patch the 'cloned' displays with a real display ID so the display layout is right in cloned displays
|
||||||
|
for (int i = 0; i < modes.Length; i++)
|
||||||
|
{
|
||||||
|
// We only change the ids that match in InfoType for target displays
|
||||||
|
if (modes[i].InfoType == DISPLAYCONFIG_MODE_INFO_TYPE.DISPLAYCONFIG_MODE_INFO_TYPE_TARGET && targetIdsToChange.Contains(modes[i].Id))
|
||||||
|
{
|
||||||
|
// Patch the cloned ids with a real working one!
|
||||||
|
modes[i].Id = targetIdMap[modes[i].Id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Store the active paths and modes in our display config object
|
// Store the active paths and modes in our display config object
|
||||||
windowsDisplayConfig.DisplayConfigPaths = paths;
|
windowsDisplayConfig.DisplayConfigPaths = paths;
|
||||||
@ -522,7 +532,6 @@ namespace DisplayMagicianShared.Windows
|
|||||||
windowsDisplayConfig.DisplayHDRStates = hdrInfos;
|
windowsDisplayConfig.DisplayHDRStates = hdrInfos;
|
||||||
windowsDisplayConfig.GdiDisplaySettings = GetGdiDisplaySettings();
|
windowsDisplayConfig.GdiDisplaySettings = GetGdiDisplaySettings();
|
||||||
|
|
||||||
|
|
||||||
return windowsDisplayConfig;
|
return windowsDisplayConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1018,8 +1027,9 @@ namespace DisplayMagicianShared.Windows
|
|||||||
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: ERROR - SetDisplayConfig couldn't validate the display configuration supplied. This display configuration won't work if applied.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: ERROR - SetDisplayConfig couldn't validate the display configuration supplied. This display configuration won't work if applied.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Yay! The display configuration is valid! Attempting to set the Display Config now");
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Yay! The display configuration is valid! Attempting to set the Display Config now");
|
||||||
|
|
||||||
|
|
||||||
// Now set the specified display configuration for this computer
|
// Now set the specified display configuration for this computer
|
||||||
err = CCDImport.SetDisplayConfig(myPathsCount, displayConfig.DisplayConfigPaths, myModesCount, displayConfig.DisplayConfigModes, SDC.DISPLAYMAGICIAN_SET | SDC.SDC_FORCE_MODE_ENUMERATION);
|
err = CCDImport.SetDisplayConfig(myPathsCount, displayConfig.DisplayConfigPaths, myModesCount, displayConfig.DisplayConfigModes, SDC.DISPLAYMAGICIAN_SET | SDC.SDC_FORCE_MODE_ENUMERATION);
|
||||||
if (err == WIN32STATUS.ERROR_SUCCESS)
|
if (err == WIN32STATUS.ERROR_SUCCESS)
|
||||||
@ -1090,18 +1100,23 @@ namespace DisplayMagicianShared.Windows
|
|||||||
// Apply the previously saved display settings to the new displays (match them up)
|
// Apply the previously saved display settings to the new displays (match them up)
|
||||||
// NOTE: This may be the only mode needed once it's completed.
|
// NOTE: This may be the only mode needed once it's completed.
|
||||||
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Attempting to change Display Device settings through GDI API using ");
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Attempting to change Display Device settings through GDI API using ");
|
||||||
foreach (var myGdiDisplaySettings in displayConfig.GdiDisplaySettings)
|
for (int i = 0; i < displayConfig.GdiDisplaySettings.Count; i++)
|
||||||
{
|
{
|
||||||
string displayDeviceKey = myGdiDisplaySettings.Key;
|
|
||||||
GDI_DISPLAY_SETTING displayDeviceSettings = myGdiDisplaySettings.Value;
|
var thisGdiSetting = displayConfig.GdiDisplaySettings.ElementAt(i);
|
||||||
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Trying to change Device Mode for Display {displayDeviceKey}.");
|
string displayDeviceKey = thisGdiSetting.Key;
|
||||||
|
GDI_DISPLAY_SETTING displayDeviceSettings = displayConfig.GdiDisplaySettings[displayDeviceKey];
|
||||||
|
|
||||||
if (currentGdiDisplaySettings.ContainsKey(displayDeviceKey))
|
if (currentGdiDisplaySettings.ContainsKey(displayDeviceKey))
|
||||||
{
|
{
|
||||||
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Trying to change Device Mode for Display {displayDeviceKey}.");
|
||||||
string currentDeviceName = currentGdiDisplaySettings[displayDeviceKey].Device.DeviceName;
|
string currentDeviceName = currentGdiDisplaySettings[displayDeviceKey].Device.DeviceName;
|
||||||
DEVICE_MODE currentModeToUse = currentGdiDisplaySettings[displayDeviceKey].DeviceMode;
|
//DEVICE_MODE currentModeToUse = currentGdiDisplaySettings[displayDeviceKey].DeviceMode;
|
||||||
DEVICE_MODE modeToUse = displayDeviceSettings.DeviceMode;
|
DEVICE_MODE modeToUse = displayDeviceSettings.DeviceMode;
|
||||||
|
|
||||||
|
// Update the Device name to match what the OS currently thinks that is (Ensures the device settings are provided to the correct screens)
|
||||||
|
displayDeviceSettings.Device.DeviceName = currentGdiDisplaySettings[displayDeviceKey].Device.DeviceName;
|
||||||
|
|
||||||
CHANGE_DISPLAY_RESULTS result = GDIImport.ChangeDisplaySettingsEx(currentDeviceName, ref modeToUse, IntPtr.Zero, CHANGE_DISPLAY_SETTINGS_FLAGS.CDS_UPDATEREGISTRY, IntPtr.Zero);
|
CHANGE_DISPLAY_RESULTS result = GDIImport.ChangeDisplaySettingsEx(currentDeviceName, ref modeToUse, IntPtr.Zero, CHANGE_DISPLAY_SETTINGS_FLAGS.CDS_UPDATEREGISTRY, IntPtr.Zero);
|
||||||
if (result == CHANGE_DISPLAY_RESULTS.Successful)
|
if (result == CHANGE_DISPLAY_RESULTS.Successful)
|
||||||
{
|
{
|
||||||
@ -1147,7 +1162,10 @@ namespace DisplayMagicianShared.Windows
|
|||||||
SharedLogger.logger.Trace($"WinLibrary/GetWindowsDisplayConfig: Display {displayDeviceKey} not updated to use the new mode.");
|
SharedLogger.logger.Trace($"WinLibrary/GetWindowsDisplayConfig: Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Trace($"WinLibrary/GetWindowsDisplayConfig: Display {displayDeviceKey} is not currently in use, so cannot set it!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user