[PATCH v2 5/7] gdi32: Use NtGdiBitBlt for BitBlt.

Dmitry Timoshkov dmitry at baikal.ru
Thu Aug 12 04:43:44 CDT 2021


>  /***********************************************************************
>   *           BitBlt    (GDI32.@)
>   */
> -BOOL WINAPI DECLSPEC_HOTPATCH BitBlt( HDC hdcDst, INT xDst, INT yDst, INT width,
> -                                      INT height, HDC hdcSrc, INT xSrc, INT ySrc, DWORD rop )
> +BOOL WINAPI NtGdiBitBlt( HDC hdc_dst, INT x_dst, INT y_dst, INT width, INT height,
> +                         HDC hdc_src, INT x_src, INT y_src, DWORD rop, DWORD bk_color, FLONG fl )
>  {
> -    if (!rop_uses_src( rop )) return PatBlt( hdcDst, xDst, yDst, width, height, rop );
> -    else return StretchBlt( hdcDst, xDst, yDst, width, height,
> -                            hdcSrc, xSrc, ySrc, width, height, rop );
> +    return NtGdiStretchBlt( hdc_dst, x_dst, y_dst, width, height,
> +                            hdc_src, x_src, y_src, width, height, rop, bk_color );
>  }
...
> +/***********************************************************************
> + *           BitBlt    (GDI32.@)
> + */
> +BOOL WINAPI BitBlt( HDC hdc_dst, INT x_dst, INT y_dst, INT width, INT height,
> +                    HDC hdc_src, INT x_src, INT y_src, DWORD rop )
> +{
> +    DC_ATTR *dc_attr;
> +
> +    if (is_meta_dc( hdc_dst )) return METADC_BitBlt( hdc_dst, x_dst, y_dst, width, height,
> +                                                 hdc_src, x_src, y_src, rop );
> +    if (!(dc_attr = get_dc_attr( hdc_dst ))) return FALSE;
> +    if (dc_attr->emf && !EMFDC_BitBlt( dc_attr, x_dst, y_dst, width, height,
> +                                       hdc_src, x_src, y_src, rop ))
> +        return FALSE;
> +    return NtGdiBitBlt( hdc_dst, x_dst, y_dst, width, height,
> +                        hdc_src, x_src, y_src, rop, 0 /* FIXME */, 0 /* FIXME */ );
> +}

This effectively reverts cde2fbb08e2810572ed393afb2f7939959eb3bd9.
What is the reason for that?

-- 
Dmitry.



More information about the wine-devel mailing list