mirror of
https://github.com/terrymacdonald/DisplayMagician.git
synced 2024-08-30 18:32:20 +00:00
parent
77188ddb6d
commit
dab58a5a2b
@ -484,12 +484,11 @@ namespace DisplayMagicianShared.Windows
|
|||||||
public WINDOWS_DISPLAY_CONFIG GetActiveConfig()
|
public WINDOWS_DISPLAY_CONFIG GetActiveConfig()
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Trace($"WinLibrary/GetActiveConfig: Getting the currently active config");
|
SharedLogger.logger.Trace($"WinLibrary/GetActiveConfig: Getting the currently active config");
|
||||||
// We want to include head mounted devices, inform windows we're virtual mode aware
|
|
||||||
// We'll leave virtual refresh rate aware until we can reliably detect Windows 11 versions.
|
// We'll leave virtual refresh rate aware until we can reliably detect Windows 11 versions.
|
||||||
return GetWindowsDisplayConfig(QDC.QDC_ONLY_ACTIVE_PATHS | QDC.QDC_INCLUDE_HMD);
|
return GetWindowsDisplayConfig(QDC.QDC_ONLY_ACTIVE_PATHS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private WINDOWS_DISPLAY_CONFIG GetWindowsDisplayConfig(QDC selector = QDC.QDC_ONLY_ACTIVE_PATHS | QDC.QDC_INCLUDE_HMD)
|
private WINDOWS_DISPLAY_CONFIG GetWindowsDisplayConfig(QDC selector = QDC.QDC_ONLY_ACTIVE_PATHS)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Prepare the empty windows display config
|
// Prepare the empty windows display config
|
||||||
@ -1349,7 +1348,7 @@ namespace DisplayMagicianShared.Windows
|
|||||||
|
|
||||||
// Get the all possible windows display configs
|
// Get the all possible windows display configs
|
||||||
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Generating a list of all the current display configs");
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Generating a list of all the current display configs");
|
||||||
WINDOWS_DISPLAY_CONFIG allWindowsDisplayConfig = GetWindowsDisplayConfig(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD);
|
WINDOWS_DISPLAY_CONFIG allWindowsDisplayConfig = GetWindowsDisplayConfig(QDC.QDC_ALL_PATHS);
|
||||||
|
|
||||||
if (displayConfig.IsCloned)
|
if (displayConfig.IsCloned)
|
||||||
{
|
{
|
||||||
@ -1558,7 +1557,8 @@ 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 ChangeDisplaySettingsEx");
|
||||||
|
bool appliedGdiDisplaySettings = false;
|
||||||
foreach (var gdiDisplay in displayConfig.GdiDisplaySettings)
|
foreach (var gdiDisplay in displayConfig.GdiDisplaySettings)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -1577,58 +1577,152 @@ namespace DisplayMagicianShared.Windows
|
|||||||
// Sets the greyscale and interlaced settings
|
// Sets the greyscale and interlaced settings
|
||||||
currentDeviceSetting.DeviceMode.DisplayFlags = displayDeviceSettings.DeviceMode.DisplayFlags;
|
currentDeviceSetting.DeviceMode.DisplayFlags = displayDeviceSettings.DeviceMode.DisplayFlags;
|
||||||
|
|
||||||
CHANGE_DISPLAY_RESULTS result = GDIImport.ChangeDisplaySettingsEx(currentDeviceSetting.Device.DeviceName, ref currentDeviceSetting.DeviceMode, IntPtr.Zero, CHANGE_DISPLAY_SETTINGS_FLAGS.CDS_UPDATEREGISTRY, IntPtr.Zero);
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Testing whether the GDI Device Mode will work for display {displayDeviceKey}.");
|
||||||
|
// First of all check that setting the GDI mode will work
|
||||||
|
CHANGE_DISPLAY_RESULTS result = GDIImport.ChangeDisplaySettingsEx(currentDeviceSetting.Device.DeviceName, ref currentDeviceSetting.DeviceMode, IntPtr.Zero, CHANGE_DISPLAY_SETTINGS_FLAGS.CDS_TEST, IntPtr.Zero);
|
||||||
if (result == CHANGE_DISPLAY_RESULTS.Successful)
|
if (result == CHANGE_DISPLAY_RESULTS.Successful)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Successfully changed display {displayDeviceKey} to use the new mode!");
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Success. The GDI Device Mode will work for display {displayDeviceKey}.");
|
||||||
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Actually going to try to set the GDI Device Mode for display {displayDeviceKey} now.");
|
||||||
|
result = GDIImport.ChangeDisplaySettingsEx(currentDeviceSetting.Device.DeviceName, ref currentDeviceSetting.DeviceMode, IntPtr.Zero, (CHANGE_DISPLAY_SETTINGS_FLAGS.CDS_UPDATEREGISTRY | CHANGE_DISPLAY_SETTINGS_FLAGS.CDS_NORESET), IntPtr.Zero);
|
||||||
|
if (result == CHANGE_DISPLAY_RESULTS.Successful)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Successfully changed display {displayDeviceKey} to use the new mode!");
|
||||||
|
appliedGdiDisplaySettings = true;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.BadDualView)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The settings change was unsuccessful because the system is DualView capable. Display {displayDeviceKey} not updated to new mode.");
|
||||||
|
//return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.BadFlags)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: An invalid set of flags was passed in. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
|
//return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.BadMode)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The graphics mode is not supported. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
|
//return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.BadParam)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: An invalid parameter was passed in. This can include an invalid flag or combination of flags. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
|
//return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.Failed)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The display driver failed to apply the specified graphics mode. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
|
//return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.NotUpdated)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Unable to write new settings to the registry. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
|
//return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.Restart)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The computer must be restarted for the graphics mode to work. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
|
//return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Unknown error while trying to change Display {displayDeviceKey} to use the new mode.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (result == CHANGE_DISPLAY_RESULTS.BadDualView)
|
else if (result == CHANGE_DISPLAY_RESULTS.BadDualView)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The settings change was unsuccessful because the system is DualView capable. Display {displayDeviceKey} not updated to new mode.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The GDI mode change would be unsuccessful because the system is DualView capable. Skipping setting Display {displayDeviceKey}.");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else if (result == CHANGE_DISPLAY_RESULTS.BadFlags)
|
else if (result == CHANGE_DISPLAY_RESULTS.BadFlags)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: An invalid set of flags was passed in. Display {displayDeviceKey} not updated to use the new mode.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The GDI mode change would be unsuccessful because an invalid set of flags was passed in. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else if (result == CHANGE_DISPLAY_RESULTS.BadMode)
|
else if (result == CHANGE_DISPLAY_RESULTS.BadMode)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The graphics mode is not supported. Display {displayDeviceKey} not updated to use the new mode.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The GDI mode change would be unsuccessful because the graphics mode is not supported. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else if (result == CHANGE_DISPLAY_RESULTS.BadParam)
|
else if (result == CHANGE_DISPLAY_RESULTS.BadParam)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: An invalid parameter was passed in. This can include an invalid flag or combination of flags. Display {displayDeviceKey} not updated to use the new mode.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The GDI mode change would be unsuccessful because an invalid parameter was passed in. This can include an invalid flag or combination of flags. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else if (result == CHANGE_DISPLAY_RESULTS.Failed)
|
else if (result == CHANGE_DISPLAY_RESULTS.Failed)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The display driver failed to apply the specified graphics mode. Display {displayDeviceKey} not updated to use the new mode.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The GDI mode change would be unsuccessful because the display driver failed to apply the specified graphics mode. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else if (result == CHANGE_DISPLAY_RESULTS.NotUpdated)
|
else if (result == CHANGE_DISPLAY_RESULTS.NotUpdated)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Unable to write new settings to the registry. Display {displayDeviceKey} not updated to use the new mode.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The GDI mode change would be unsuccessful because we're unable to write new settings to the registry. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else if (result == CHANGE_DISPLAY_RESULTS.Restart)
|
else if (result == CHANGE_DISPLAY_RESULTS.Restart)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The computer must be restarted for the graphics mode to work. Display {displayDeviceKey} not updated to use the new mode.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The GDI mode change would be unsuccessful because the computer must be restarted for the graphics mode to work. Display {displayDeviceKey} not updated to use the new mode.");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Display {displayDeviceKey} not updated to use the new mode.");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: The GDI mode change would be unsuccessful because there was an unknown error testing if Display {displayDeviceKey} could use the new mode.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Display {displayDeviceKey} is not currently in use, so cannot set it!");
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Display {displayDeviceKey} is not currently in use, so cannot set it!");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we have applied GDI settings for multiple displays, then we need to run ChangeDisplaySettingsEx one more time
|
||||||
|
// see https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-changedisplaysettingsexa
|
||||||
|
if (appliedGdiDisplaySettings)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Other display settings were changed, so applying all the changes now.");
|
||||||
|
CHANGE_DISPLAY_RESULTS result = GDIImport.ChangeDisplaySettingsEx(null, IntPtr.Zero, IntPtr.Zero, CHANGE_DISPLAY_SETTINGS_FLAGS.CDS_NONE, IntPtr.Zero);
|
||||||
|
if (result == CHANGE_DISPLAY_RESULTS.Successful)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Trace($"WinLibrary/SetActiveConfig: Successfully applied the new GDI modes!");
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.BadDualView)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Couldn't apply the new GDI modes because the system is DualView capable.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.BadFlags)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Couldn't apply the new GDI modes because an invalid set of flags was passed in.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.BadMode)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Couldn't apply the new GDI modes because the graphics mode is not supported.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.BadParam)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Couldn't apply the new GDI modes because an invalid parameter was passed in. This can include an invalid flag or combination of flags.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.Failed)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Couldn't apply the new GDI modes because the display driver failed to apply the specified graphics mode.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.NotUpdated)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Couldn't apply the new GDI modes because unable to write new settings to the registry.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (result == CHANGE_DISPLAY_RESULTS.Restart)
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Couldn't apply the new GDI modes because the computer must be restarted for the graphics mode to work.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SharedLogger.logger.Error($"WinLibrary/SetActiveConfig: Unknown error while trying to apply the new GDI modes.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// NOTE: I have disabled the TaskBar setting logic for now due to errors I cannot fix in this code.
|
// NOTE: I have disabled the TaskBar setting logic for now due to errors I cannot fix in this code.
|
||||||
// WinLibrary will still track the location of the taskbars, but won't actually set them as the setting of the taskbars doesnt work at the moment.
|
// WinLibrary will still track the location of the taskbars, but won't actually set them as the setting of the taskbars doesnt work at the moment.
|
||||||
@ -1741,7 +1835,7 @@ namespace DisplayMagicianShared.Windows
|
|||||||
public bool IsValidConfig(WINDOWS_DISPLAY_CONFIG displayConfig)
|
public bool IsValidConfig(WINDOWS_DISPLAY_CONFIG displayConfig)
|
||||||
{
|
{
|
||||||
// Get the current windows display configs
|
// Get the current windows display configs
|
||||||
WINDOWS_DISPLAY_CONFIG allWindowsDisplayConfig = GetWindowsDisplayConfig(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD);
|
WINDOWS_DISPLAY_CONFIG allWindowsDisplayConfig = GetWindowsDisplayConfig(QDC.QDC_ALL_PATHS);
|
||||||
|
|
||||||
SharedLogger.logger.Trace("WinLibrary/PatchAdapterIDs: Going through the list of adapters we stored in the config to make sure they still exist");
|
SharedLogger.logger.Trace("WinLibrary/PatchAdapterIDs: Going through the list of adapters we stored in the config to make sure they still exist");
|
||||||
// Firstly check that the Adapter Names are still currently available (i.e. the adapter hasn't been replaced).
|
// Firstly check that the Adapter Names are still currently available (i.e. the adapter hasn't been replaced).
|
||||||
@ -1802,18 +1896,18 @@ namespace DisplayMagicianShared.Windows
|
|||||||
public List<string> GetCurrentDisplayIdentifiers()
|
public List<string> GetCurrentDisplayIdentifiers()
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Trace($"WinLibrary/GetCurrentDisplayIdentifiers: Getting the current display identifiers for the displays in use now");
|
SharedLogger.logger.Trace($"WinLibrary/GetCurrentDisplayIdentifiers: Getting the current display identifiers for the displays in use now");
|
||||||
return GetSomeDisplayIdentifiers(QDC.QDC_ONLY_ACTIVE_PATHS | QDC.QDC_INCLUDE_HMD);
|
return GetSomeDisplayIdentifiers(QDC.QDC_ONLY_ACTIVE_PATHS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<string> GetAllConnectedDisplayIdentifiers()
|
public List<string> GetAllConnectedDisplayIdentifiers()
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Trace($"WinLibrary/GetAllConnectedDisplayIdentifiers: Getting all the display identifiers that can possibly be used");
|
SharedLogger.logger.Trace($"WinLibrary/GetAllConnectedDisplayIdentifiers: Getting all the display identifiers that can possibly be used");
|
||||||
_allConnectedDisplayIdentifiers = GetSomeDisplayIdentifiers(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD);
|
_allConnectedDisplayIdentifiers = GetSomeDisplayIdentifiers(QDC.QDC_ALL_PATHS);
|
||||||
|
|
||||||
return _allConnectedDisplayIdentifiers;
|
return _allConnectedDisplayIdentifiers;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<string> GetSomeDisplayIdentifiers(QDC selector = QDC.QDC_ONLY_ACTIVE_PATHS | QDC.QDC_INCLUDE_HMD)
|
private List<string> GetSomeDisplayIdentifiers(QDC selector = QDC.QDC_ONLY_ACTIVE_PATHS)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Debug($"WinLibrary/GetCurrentDisplayIdentifiers: Generating the unique Display Identifiers for the currently active configuration");
|
SharedLogger.logger.Debug($"WinLibrary/GetCurrentDisplayIdentifiers: Generating the unique Display Identifiers for the currently active configuration");
|
||||||
|
|
||||||
@ -2010,7 +2104,7 @@ namespace DisplayMagicianShared.Windows
|
|||||||
// Get the size of the largest Active Paths and Modes arrays
|
// Get the size of the largest Active Paths and Modes arrays
|
||||||
int pathCount = 0;
|
int pathCount = 0;
|
||||||
int modeCount = 0;
|
int modeCount = 0;
|
||||||
WIN32STATUS err = CCDImport.GetDisplayConfigBufferSizes(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD, out pathCount, out modeCount);
|
WIN32STATUS err = CCDImport.GetDisplayConfigBufferSizes(QDC.QDC_ALL_PATHS, out pathCount, out modeCount);
|
||||||
if (err != WIN32STATUS.ERROR_SUCCESS)
|
if (err != WIN32STATUS.ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/GetCurrentPCIVideoCardVendors: ERROR - GetDisplayConfigBufferSizes returned WIN32STATUS {err} when trying to get the maximum path and mode sizes");
|
SharedLogger.logger.Error($"WinLibrary/GetCurrentPCIVideoCardVendors: ERROR - GetDisplayConfigBufferSizes returned WIN32STATUS {err} when trying to get the maximum path and mode sizes");
|
||||||
@ -2020,7 +2114,7 @@ namespace DisplayMagicianShared.Windows
|
|||||||
SharedLogger.logger.Trace($"WinLibrary/GetSomeDisplayIdentifiers: Getting the current Display Config path and mode arrays");
|
SharedLogger.logger.Trace($"WinLibrary/GetSomeDisplayIdentifiers: Getting the current Display Config path and mode arrays");
|
||||||
var paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
var paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
||||||
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
||||||
err = CCDImport.QueryDisplayConfig(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
err = CCDImport.QueryDisplayConfig(QDC.QDC_ALL_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
||||||
if (err == WIN32STATUS.ERROR_INSUFFICIENT_BUFFER)
|
if (err == WIN32STATUS.ERROR_INSUFFICIENT_BUFFER)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Warn($"WinLibrary/GetCurrentPCIVideoCardVendors: The displays were modified between GetDisplayConfigBufferSizes and QueryDisplayConfig so we need to get the buffer sizes again.");
|
SharedLogger.logger.Warn($"WinLibrary/GetCurrentPCIVideoCardVendors: The displays were modified between GetDisplayConfigBufferSizes and QueryDisplayConfig so we need to get the buffer sizes again.");
|
||||||
@ -2036,7 +2130,7 @@ namespace DisplayMagicianShared.Windows
|
|||||||
SharedLogger.logger.Trace($"WinLibrary/GetSomeDisplayIdentifiers: Getting the current Display Config path and mode arrays");
|
SharedLogger.logger.Trace($"WinLibrary/GetSomeDisplayIdentifiers: Getting the current Display Config path and mode arrays");
|
||||||
paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
||||||
modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
||||||
err = CCDImport.QueryDisplayConfig(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
err = CCDImport.QueryDisplayConfig(QDC.QDC_ALL_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
||||||
if (err == WIN32STATUS.ERROR_INSUFFICIENT_BUFFER)
|
if (err == WIN32STATUS.ERROR_INSUFFICIENT_BUFFER)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/GetCurrentPCIVideoCardVendors: ERROR - The displays were still modified between GetDisplayConfigBufferSizes and QueryDisplayConfig, even though we tried twice. Something is wrong.");
|
SharedLogger.logger.Error($"WinLibrary/GetCurrentPCIVideoCardVendors: ERROR - The displays were still modified between GetDisplayConfigBufferSizes and QueryDisplayConfig, even though we tried twice. Something is wrong.");
|
||||||
@ -2160,7 +2254,7 @@ namespace DisplayMagicianShared.Windows
|
|||||||
// Get the size of the largest All Paths and Modes arrays
|
// Get the size of the largest All Paths and Modes arrays
|
||||||
int pathCount = 0;
|
int pathCount = 0;
|
||||||
int modeCount = 0;
|
int modeCount = 0;
|
||||||
WIN32STATUS err = CCDImport.GetDisplayConfigBufferSizes(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD, out pathCount, out modeCount);
|
WIN32STATUS err = CCDImport.GetDisplayConfigBufferSizes(QDC.QDC_ALL_PATHS, out pathCount, out modeCount);
|
||||||
if (err != WIN32STATUS.ERROR_SUCCESS)
|
if (err != WIN32STATUS.ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/GetCurrentAdapterIDs: ERROR - GetDisplayConfigBufferSizes returned WIN32STATUS {err} when trying to get the maximum path and mode sizes");
|
SharedLogger.logger.Error($"WinLibrary/GetCurrentAdapterIDs: ERROR - GetDisplayConfigBufferSizes returned WIN32STATUS {err} when trying to get the maximum path and mode sizes");
|
||||||
@ -2170,7 +2264,7 @@ namespace DisplayMagicianShared.Windows
|
|||||||
SharedLogger.logger.Trace($"WinLibrary/GetCurrentAdapterIDs: Getting the current Display Config path and mode arrays");
|
SharedLogger.logger.Trace($"WinLibrary/GetCurrentAdapterIDs: Getting the current Display Config path and mode arrays");
|
||||||
var paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
var paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
||||||
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
var modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
||||||
err = CCDImport.QueryDisplayConfig(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
err = CCDImport.QueryDisplayConfig(QDC.QDC_ALL_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
||||||
if (err == WIN32STATUS.ERROR_INSUFFICIENT_BUFFER)
|
if (err == WIN32STATUS.ERROR_INSUFFICIENT_BUFFER)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Warn($"WinLibrary/GetCurrentAdapterIDs: The displays were modified between GetDisplayConfigBufferSizes and QueryDisplayConfig so we need to get the buffer sizes again.");
|
SharedLogger.logger.Warn($"WinLibrary/GetCurrentAdapterIDs: The displays were modified between GetDisplayConfigBufferSizes and QueryDisplayConfig so we need to get the buffer sizes again.");
|
||||||
@ -2186,7 +2280,7 @@ namespace DisplayMagicianShared.Windows
|
|||||||
SharedLogger.logger.Trace($"WinLibrary/GetCurrentAdapterIDs: Getting the current Display Config path and mode arrays");
|
SharedLogger.logger.Trace($"WinLibrary/GetCurrentAdapterIDs: Getting the current Display Config path and mode arrays");
|
||||||
paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
paths = new DISPLAYCONFIG_PATH_INFO[pathCount];
|
||||||
modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
modes = new DISPLAYCONFIG_MODE_INFO[modeCount];
|
||||||
err = CCDImport.QueryDisplayConfig(QDC.QDC_ALL_PATHS | QDC.QDC_INCLUDE_HMD, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
err = CCDImport.QueryDisplayConfig(QDC.QDC_ALL_PATHS, ref pathCount, paths, ref modeCount, modes, IntPtr.Zero);
|
||||||
if (err == WIN32STATUS.ERROR_INSUFFICIENT_BUFFER)
|
if (err == WIN32STATUS.ERROR_INSUFFICIENT_BUFFER)
|
||||||
{
|
{
|
||||||
SharedLogger.logger.Error($"WinLibrary/GetCurrentAdapterIDs: ERROR - The displays were still modified between GetDisplayConfigBufferSizes and QueryDisplayConfig, even though we tried twice. Something is wrong.");
|
SharedLogger.logger.Error($"WinLibrary/GetCurrentAdapterIDs: ERROR - The displays were still modified between GetDisplayConfigBufferSizes and QueryDisplayConfig, even though we tried twice. Something is wrong.");
|
||||||
|
Loading…
Reference in New Issue
Block a user