[PATCH v4 1/4] gdi32: Implement D3DKMTOpenAdapterFromGdiDisplayName.

Alexandre Julliard julliard at winehq.org
Wed Jun 5 09:59:59 CDT 2019


Zhiyi Zhang <zzhang at codeweavers.com> writes:

> +/******************************************************************************
> + *		D3DKMTOpenAdapterFromGdiDisplayName [GDI32.@]
> + */
> +NTSTATUS WINAPI D3DKMTOpenAdapterFromGdiDisplayName( D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME *desc )
> +{
> +    static const WCHAR display1W[] = {'\\','\\','.','\\','D','I','S','P','L','A','Y','1',0};
> +    static D3DKMT_HANDLE handle_start = 0;
> +    struct d3dkmt_adapter *adapter;
> +
> +    TRACE("(%p) semi-stub\n", desc);
> +
> +    if (!desc)
> +        return STATUS_UNSUCCESSFUL;
> +
> +    /* FIXME: Support multiple monitors */
> +    if (lstrcmpiW( desc->DeviceName, display1W ))
> +    {
> +        FIXME("%s is unsupported\n", wine_dbgstr_w( desc->DeviceName ));
> +        return STATUS_UNSUCCESSFUL;
> +    }
> +
> +    adapter = heap_alloc( sizeof( *adapter ) );
> +    if (!adapter)
> +        return STATUS_NO_MEMORY;
> +
> +    /* D3DKMT_HANDLE is UINT, so we can't use pointer as handle */
> +    adapter->handle = ++handle_start;

You should use interlocked functions, or do that inside the critical
section.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list