[PATCH v2 5/7] gdi32: Use NtGdiBitBlt for BitBlt.
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> --- dlls/gdi32/bitblt.c | 9 ++++---- dlls/gdi32/enhmfdrv/bitblt.c | 12 +++++++---- dlls/gdi32/gdi_private.h | 4 ++++ dlls/gdi32/gdidc.c | 18 ++++++++++++++++ dlls/gdi32/mfdrv/bitblt.c | 42 +++++++++++++++++++++++------------- include/ntgdi.h | 2 ++ 6 files changed, 63 insertions(+), 24 deletions(-)
/*********************************************************************** * 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.
On 8/12/21 11:43 AM, Dmitry Timoshkov wrote:
/*********************************************************************** * 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?
It wasn't intentional, I will send another version. Thanks, Jacek
participants (2)
-
Dmitry Timoshkov -
Jacek Caban