user32: Use NtUserGetDisplayConfigBufferSizes.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2021-12-01 16:02:37 +01:00 committed by Alexandre Julliard
parent 1221722ed3
commit 8b9b2580a5
2 changed files with 1 additions and 58 deletions

View File

@ -4201,63 +4201,6 @@ BOOL WINAPI PhysicalToLogicalPoint( HWND hwnd, POINT *point )
return TRUE;
}
/**********************************************************************
* GetDisplayConfigBufferSizes (USER32.@)
*/
LONG WINAPI GetDisplayConfigBufferSizes(UINT32 flags, UINT32 *num_path_info, UINT32 *num_mode_info)
{
LONG ret = ERROR_GEN_FAILURE;
HANDLE mutex;
HDEVINFO devinfo;
SP_DEVINFO_DATA device_data = {sizeof(device_data)};
DWORD monitor_index = 0, state_flags, type;
FIXME("(0x%x %p %p): semi-stub\n", flags, num_path_info, num_mode_info);
if (!num_path_info || !num_mode_info)
return ERROR_INVALID_PARAMETER;
*num_path_info = 0;
if (flags != QDC_ALL_PATHS &&
flags != QDC_ONLY_ACTIVE_PATHS &&
flags != QDC_DATABASE_CURRENT)
return ERROR_INVALID_PARAMETER;
if (flags != QDC_ONLY_ACTIVE_PATHS)
FIXME("only returning active paths\n");
wait_graphics_driver_ready();
mutex = get_display_device_init_mutex();
/* Iterate through "targets"/monitors.
* Each target corresponds to a path, and each path references a source and a target mode.
*/
devinfo = SetupDiGetClassDevsW(&GUID_DEVCLASS_MONITOR, L"DISPLAY", NULL, DIGCF_PRESENT);
if (devinfo == INVALID_HANDLE_VALUE)
goto done;
while (SetupDiEnumDeviceInfo(devinfo, monitor_index++, &device_data))
{
/* Only count active monitors */
if (!SetupDiGetDevicePropertyW(devinfo, &device_data, &WINE_DEVPROPKEY_MONITOR_STATEFLAGS,
&type, (BYTE *)&state_flags, sizeof(state_flags), NULL, 0))
goto done;
if (state_flags & DISPLAY_DEVICE_ACTIVE)
(*num_path_info)++;
}
*num_mode_info = *num_path_info * 2;
ret = ERROR_SUCCESS;
TRACE("returning %u path(s) %u mode(s)\n", *num_path_info, *num_mode_info);
done:
SetupDiDestroyDeviceInfoList(devinfo);
release_display_device_init_mutex(mutex);
return ret;
}
static DISPLAYCONFIG_ROTATION get_dc_rotation(const DEVMODEW *devmode)
{
if (devmode->dmFields & DM_DISPLAYORIENTATION)

View File

@ -291,7 +291,7 @@
@ stdcall GetDesktopWindow()
@ stdcall GetDialogBaseUnits()
@ stdcall GetDisplayAutoRotationPreferences(ptr)
@ stdcall GetDisplayConfigBufferSizes(long ptr ptr)
@ stdcall GetDisplayConfigBufferSizes(long ptr ptr) NtUserGetDisplayConfigBufferSizes
@ stdcall GetDlgCtrlID(long)
@ stdcall GetDlgItem(long long)
@ stdcall GetDlgItemInt(long long ptr long)