Module: wine Branch: master Commit: 607733af0e02312e17a72d9bda64ed881207f38b URL: https://source.winehq.org/git/wine.git/?a=commit;h=607733af0e02312e17a72d9bd...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Jul 23 10:49:00 2021 +0200
gdi32: Use NtGdiPolyPolyDraw for CreatePolyPolygonRgn implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/gdi32/objects.c | 10 ++++++++++ dlls/gdi32/painting.c | 4 ++++ dlls/gdi32/region.c | 9 --------- 3 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/dlls/gdi32/objects.c b/dlls/gdi32/objects.c index e614a9d6a52..84ed2377954 100644 --- a/dlls/gdi32/objects.c +++ b/dlls/gdi32/objects.c @@ -281,6 +281,16 @@ HRGN WINAPI ExtCreateRegion( const XFORM *xform, DWORD count, const RGNDATA *dat return NtGdiExtCreateRegion( xform, count, data ); }
+/*********************************************************************** + * CreatePolyPolygonRgn (GDI32.@) + */ +HRGN WINAPI CreatePolyPolygonRgn( const POINT *points, const INT *counts, INT count, INT mode ) +{ + ULONG ret = NtGdiPolyPolyDraw( ULongToHandle(mode), points, (const UINT *)counts, + count, NtGdiPolyPolygonRgn ); + return ULongToHandle( ret ); +} + /*********************************************************************** * CreateRectRgnIndirect (GDI32.@) * diff --git a/dlls/gdi32/painting.c b/dlls/gdi32/painting.c index f9fa18c4de0..803b9797736 100644 --- a/dlls/gdi32/painting.c +++ b/dlls/gdi32/painting.c @@ -585,6 +585,10 @@ ULONG WINAPI NtGdiPolyPolyDraw( HDC hdc, const POINT *points, const UINT *counts ULONG ret; DC *dc;
+ if (function == NtGdiPolyPolygonRgn) + return HandleToULong( create_polypolygon_region( points, (const INT *)counts, count, + HandleToULong(hdc), NULL )); + if (!(dc = get_dc_ptr( hdc ))) return FALSE; update_dc( dc );
diff --git a/dlls/gdi32/region.c b/dlls/gdi32/region.c index 502ce108a8f..4df48209de5 100644 --- a/dlls/gdi32/region.c +++ b/dlls/gdi32/region.c @@ -2692,12 +2692,3 @@ HRGN create_polypolygon_region( const POINT *Pts, const INT *Count, INT nbpolygo HeapFree( GetProcessHeap(), 0, pETEs ); return hrgn; } - - -/*********************************************************************** - * CreatePolyPolygonRgn (GDI32.@) - */ -HRGN WINAPI CreatePolyPolygonRgn( const POINT *pts, const INT *count, INT nbpolygons, INT mode ) -{ - return create_polypolygon_region( pts, count, nbpolygons, mode, NULL ); -}