[PATCH v2 4/4] gdi32: Return correct color depth for display DCs in GetDeviceCaps().
Zhiyi Zhang
zzhang at codeweavers.com
Tue May 18 04:15:41 CDT 2021
On 5/18/21 2:34 AM, Alexandre Julliard wrote:
> Zhiyi Zhang <zzhang at codeweavers.com> writes:
>
>> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=29184
>> Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
>> ---
>> dlls/gdi32/driver.c | 19 ++++++++++++++++++-
>> dlls/user32/tests/monitor.c | 1 -
>> dlls/winex11.drv/init.c | 2 --
>> 3 files changed, 18 insertions(+), 4 deletions(-)
>>
>> diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c
>> index a2ebd018bca..2042701dd45 100644
>> --- a/dlls/gdi32/driver.c
>> +++ b/dlls/gdi32/driver.c
>> @@ -460,7 +460,24 @@ static INT CDECL nulldrv_GetDeviceCaps( PHYSDEV dev, INT cap )
>>
>> return pGetSystemMetrics ? pGetSystemMetrics( SM_CYSCREEN ) : 480;
>> }
>> - case BITSPIXEL: return 32;
>> + case BITSPIXEL:
>> + {
>> + DEVMODEW devmode;
>> + WCHAR *display;
>> + DC *dc;
>> +
>> + if (GetDeviceCaps( dev->hdc, TECHNOLOGY ) == DT_RASDISPLAY && pEnumDisplaySettingsW)
>> + {
>> + dc = get_nulldrv_dc( dev );
>> + display = dc->display[0] ? dc->display : NULL;
>> + memset( &devmode, 0, sizeof(devmode) );
>> + devmode.dmSize = sizeof(devmode);
>> + if (pEnumDisplaySettingsW( display, ENUM_CURRENT_SETTINGS, &devmode )
>> + && devmode.dmFields & DM_BITSPERPEL && devmode.dmBitsPerPel)
>> + return devmode.dmBitsPerPel;
>> + }
> Isn't this going to be too slow? GetDeviceCaps(BITSPIXEL) can be called
> very frequently.
>
Right, please apply this after 205952. Thanks.
More information about the wine-devel
mailing list