mirror of
https://github.com/reactos/reactos.git
synced 2024-09-28 13:34:53 +00:00
[WIN32SS:USER] Fall back to base video (ie VGA) if main display driver failed
This commit is contained in:
parent
6904b3f5ac
commit
29d80cb14f
|
@ -179,7 +179,6 @@ EngpUpdateGraphicsDeviceList(VOID)
|
|||
WCHAR awcBuffer[256];
|
||||
NTSTATUS Status;
|
||||
PGRAPHICS_DEVICE pGraphicsDevice;
|
||||
BOOLEAN bFoundNewDevice = FALSE;
|
||||
ULONG cbValue;
|
||||
HKEY hkey;
|
||||
|
||||
|
@ -248,7 +247,6 @@ EngpUpdateGraphicsDeviceList(VOID)
|
|||
TRACE("gpVgaGraphicsDevice = %p\n", gpVgaGraphicsDevice);
|
||||
}
|
||||
}
|
||||
bFoundNewDevice = TRUE;
|
||||
|
||||
/* Set the first one as primary device */
|
||||
if (!gpPrimaryGraphicsDevice || EngpHasVgaDriver(gpPrimaryGraphicsDevice))
|
||||
|
@ -273,7 +271,7 @@ EngpUpdateGraphicsDeviceList(VOID)
|
|||
gpPrimaryGraphicsDevice->pVgaDevice = gpVgaGraphicsDevice;
|
||||
}
|
||||
|
||||
if (bFoundNewDevice && gbBaseVideo)
|
||||
if (gbBaseVideo)
|
||||
{
|
||||
PGRAPHICS_DEVICE pToDelete;
|
||||
|
||||
|
|
|
@ -794,6 +794,10 @@ PDEVOBJ_lChangeDisplaySettings(
|
|||
RequestedMode ? RequestedMode->dmDisplayFrequency : 0,
|
||||
pmdevOld, ppmdevNew);
|
||||
|
||||
/* Update device list (some devices may have been added/removed,
|
||||
or gbBaseVideo variable may have been changed) */
|
||||
EngpUpdateGraphicsDeviceList();
|
||||
|
||||
if (pustrDeviceName)
|
||||
{
|
||||
pGraphicsDevice = EngpFindGraphicsDevice(pustrDeviceName, 0);
|
||||
|
|
|
@ -264,8 +264,16 @@ co_IntInitializeDesktopGraphics(VOID)
|
|||
TEXTMETRICW tmw;
|
||||
UNICODE_STRING DriverName = RTL_CONSTANT_STRING(L"DISPLAY");
|
||||
PDESKTOP pdesk;
|
||||
LONG lRet;
|
||||
|
||||
if (PDEVOBJ_lChangeDisplaySettings(NULL, NULL, NULL, &gpmdev, TRUE) != DISP_CHANGE_SUCCESSFUL)
|
||||
lRet = PDEVOBJ_lChangeDisplaySettings(NULL, NULL, NULL, &gpmdev, TRUE);
|
||||
if (lRet != DISP_CHANGE_SUCCESSFUL && !gbBaseVideo)
|
||||
{
|
||||
ERR("PDEVOBJ_lChangeDisplaySettings() failed. Trying with base video\n");
|
||||
gbBaseVideo = TRUE;
|
||||
lRet = PDEVOBJ_lChangeDisplaySettings(NULL, NULL, NULL, &gpmdev, TRUE);
|
||||
}
|
||||
if (lRet != DISP_CHANGE_SUCCESSFUL)
|
||||
{
|
||||
ERR("PDEVOBJ_lChangeDisplaySettings() failed.\n");
|
||||
return FALSE;
|
||||
|
|
Loading…
Reference in a new issue