user32: Initialize more fields in the DEVMODE structure.
This commit is contained in:
parent
d43fdc5ab0
commit
2712eb50b1
|
@ -2985,7 +2985,6 @@ LONG WINAPI ChangeDisplaySettingsW( LPDEVMODEW devmode, DWORD flags )
|
||||||
LONG WINAPI ChangeDisplaySettingsExA( LPCSTR devname, LPDEVMODEA devmode, HWND hwnd,
|
LONG WINAPI ChangeDisplaySettingsExA( LPCSTR devname, LPDEVMODEA devmode, HWND hwnd,
|
||||||
DWORD flags, LPVOID lparam )
|
DWORD flags, LPVOID lparam )
|
||||||
{
|
{
|
||||||
DEVMODEW devmodeW;
|
|
||||||
LONG ret;
|
LONG ret;
|
||||||
UNICODE_STRING nameW;
|
UNICODE_STRING nameW;
|
||||||
|
|
||||||
|
@ -2994,13 +2993,11 @@ LONG WINAPI ChangeDisplaySettingsExA( LPCSTR devname, LPDEVMODEA devmode, HWND h
|
||||||
|
|
||||||
if (devmode)
|
if (devmode)
|
||||||
{
|
{
|
||||||
devmodeW.dmBitsPerPel = devmode->dmBitsPerPel;
|
DEVMODEW *devmodeW;
|
||||||
devmodeW.dmPelsHeight = devmode->dmPelsHeight;
|
|
||||||
devmodeW.dmPelsWidth = devmode->dmPelsWidth;
|
devmodeW = GdiConvertToDevmodeW(devmode);
|
||||||
devmodeW.dmDisplayFlags = devmode->dmDisplayFlags;
|
ret = ChangeDisplaySettingsExW(nameW.Buffer, devmodeW, hwnd, flags, lparam);
|
||||||
devmodeW.dmDisplayFrequency = devmode->dmDisplayFrequency;
|
HeapFree(GetProcessHeap(), 0, devmodeW);
|
||||||
devmodeW.dmFields = devmode->dmFields;
|
|
||||||
ret = ChangeDisplaySettingsExW(nameW.Buffer, &devmodeW, hwnd, flags, lparam);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3063,12 +3060,23 @@ BOOL WINAPI EnumDisplaySettingsExA(LPCSTR lpszDeviceName, DWORD iModeNum,
|
||||||
ret = EnumDisplaySettingsExW(nameW.Buffer,iModeNum,&devmodeW,dwFlags);
|
ret = EnumDisplaySettingsExW(nameW.Buffer,iModeNum,&devmodeW,dwFlags);
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
|
lpDevMode->dmSize = sizeof(*lpDevMode);
|
||||||
|
lpDevMode->dmSpecVersion = devmodeW.dmSpecVersion;
|
||||||
|
lpDevMode->dmDriverVersion = devmodeW.dmDriverVersion;
|
||||||
|
WideCharToMultiByte(CP_ACP, 0, devmodeW.dmDeviceName, -1,
|
||||||
|
(LPSTR)lpDevMode->dmDeviceName, CCHDEVICENAME, NULL, NULL);
|
||||||
|
lpDevMode->dmDriverExtra = 0; /* FIXME */
|
||||||
lpDevMode->dmBitsPerPel = devmodeW.dmBitsPerPel;
|
lpDevMode->dmBitsPerPel = devmodeW.dmBitsPerPel;
|
||||||
lpDevMode->dmPelsHeight = devmodeW.dmPelsHeight;
|
lpDevMode->dmPelsHeight = devmodeW.dmPelsHeight;
|
||||||
lpDevMode->dmPelsWidth = devmodeW.dmPelsWidth;
|
lpDevMode->dmPelsWidth = devmodeW.dmPelsWidth;
|
||||||
lpDevMode->dmDisplayFlags = devmodeW.dmDisplayFlags;
|
lpDevMode->dmDisplayFlags = devmodeW.dmDisplayFlags;
|
||||||
lpDevMode->dmDisplayFrequency = devmodeW.dmDisplayFrequency;
|
lpDevMode->dmDisplayFrequency = devmodeW.dmDisplayFrequency;
|
||||||
lpDevMode->dmFields = devmodeW.dmFields;
|
lpDevMode->dmFields = devmodeW.dmFields;
|
||||||
|
|
||||||
|
lpDevMode->dmPosition.x = devmodeW.dmPosition.x;
|
||||||
|
lpDevMode->dmPosition.y = devmodeW.dmPosition.y;
|
||||||
|
lpDevMode->dmDisplayOrientation = devmodeW.dmDisplayOrientation;
|
||||||
|
lpDevMode->dmDisplayFixedOutput = devmodeW.dmDisplayFixedOutput;
|
||||||
}
|
}
|
||||||
if (lpszDeviceName) RtlFreeUnicodeString(&nameW);
|
if (lpszDeviceName) RtlFreeUnicodeString(&nameW);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -165,11 +165,25 @@ void X11DRV_Settings_Init(void)
|
||||||
*/
|
*/
|
||||||
BOOL X11DRV_EnumDisplaySettingsEx( LPCWSTR name, DWORD n, LPDEVMODEW devmode, DWORD flags)
|
BOOL X11DRV_EnumDisplaySettingsEx( LPCWSTR name, DWORD n, LPDEVMODEW devmode, DWORD flags)
|
||||||
{
|
{
|
||||||
DWORD dwBpp = screen_depth;
|
static const WCHAR dev_name[CCHDEVICENAME] =
|
||||||
|
{ 'W','i','n','e',' ','X','1','1',' ','d','r','i','v','e','r',0 };
|
||||||
|
DWORD dwBpp;
|
||||||
|
|
||||||
|
dwBpp = screen_depth;
|
||||||
if (dwBpp == 24) dwBpp = 32;
|
if (dwBpp == 24) dwBpp = 32;
|
||||||
|
|
||||||
|
devmode->dmSize = sizeof(DEVMODEW);
|
||||||
|
devmode->dmSpecVersion = MAKEWORD(1,4);
|
||||||
|
devmode->dmDriverVersion = MAKEWORD(1,4);
|
||||||
|
memcpy(devmode->dmDeviceName, dev_name, sizeof(dev_name));
|
||||||
|
devmode->dmDriverExtra = 0;
|
||||||
devmode->dmDisplayFlags = 0;
|
devmode->dmDisplayFlags = 0;
|
||||||
devmode->dmDisplayFrequency = 0;
|
devmode->dmDisplayFrequency = 0;
|
||||||
devmode->dmSize = sizeof(DEVMODEW);
|
devmode->dmPosition.x = 0;
|
||||||
|
devmode->dmPosition.y = 0;
|
||||||
|
devmode->dmDisplayOrientation = 0;
|
||||||
|
devmode->dmDisplayFixedOutput = 0;
|
||||||
|
|
||||||
if (n == ENUM_CURRENT_SETTINGS)
|
if (n == ENUM_CURRENT_SETTINGS)
|
||||||
{
|
{
|
||||||
TRACE("mode %d (current) -- getting current mode (%s)\n", n, handler_name);
|
TRACE("mode %d (current) -- getting current mode (%s)\n", n, handler_name);
|
||||||
|
|
Loading…
Reference in New Issue