Jacek Caban : gdi32: Use NtGdiGetRandomRgn for GetMetaRgn.

Alexandre Julliard julliard at winehq.org
Thu Sep 2 15:45:30 CDT 2021


Module: wine
Branch: master
Commit: b096da8a50210cb437376a2d65374e310d53eeff
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b096da8a50210cb437376a2d65374e310d53eeff

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Sep  2 14:14:08 2021 +0200

gdi32: Use NtGdiGetRandomRgn for GetMetaRgn.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/clipping.c | 26 ++------------------------
 dlls/gdi32/gdidc.c    |  8 ++++++++
 2 files changed, 10 insertions(+), 24 deletions(-)

diff --git a/dlls/gdi32/clipping.c b/dlls/gdi32/clipping.c
index 4f22e6f3cde..02247f03620 100644
--- a/dlls/gdi32/clipping.c
+++ b/dlls/gdi32/clipping.c
@@ -392,28 +392,6 @@ INT WINAPI NtGdiGetAppClipBox( HDC hdc, RECT *rect )
 }
 
 
-/***********************************************************************
- *           GetMetaRgn    (GDI32.@)
- */
-INT WINAPI GetMetaRgn( HDC hdc, HRGN hRgn )
-{
-    INT ret = 0;
-    DC * dc = get_dc_ptr( hdc );
-
-    if (dc)
-    {
-        if (dc->hMetaRgn && NtGdiCombineRgn( hRgn, dc->hMetaRgn, 0, RGN_COPY ) != ERROR)
-        {
-            ret = 1;
-            if (dc->attr->layout & LAYOUT_RTL)
-                mirror_region( hRgn, hRgn, dc->attr->vis_rect.right - dc->attr->vis_rect.left );
-        }
-        release_dc_ptr( dc );
-    }
-    return ret;
-}
-
-
 /***********************************************************************
  *           NtGdiGetRandomRgn    (win32u.@)
  *
@@ -442,8 +420,8 @@ INT WINAPI NtGdiGetRandomRgn( HDC hDC, HRGN hRgn, INT iCode )
         else if (!NtGdiCombineRgn( hRgn, dc->hClipRgn, 0, RGN_COPY )) ret = -1;
         break;
     case 2:
-        if (dc->hMetaRgn) NtGdiCombineRgn( hRgn, dc->hMetaRgn, 0, RGN_COPY );
-        else ret = 0;
+        if (!dc->hMetaRgn) ret = 0;
+        else if (!NtGdiCombineRgn( hRgn, dc->hMetaRgn, 0, RGN_COPY )) ret = -1;
         break;
     case 3:
         if (dc->hClipRgn && dc->hMetaRgn) NtGdiCombineRgn( hRgn, dc->hClipRgn, dc->hMetaRgn, RGN_AND );
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index 6f534dce061..f175d8f59bc 100644
--- a/dlls/gdi32/gdidc.c
+++ b/dlls/gdi32/gdidc.c
@@ -1641,6 +1641,14 @@ INT WINAPI GetClipRgn( HDC hdc, HRGN rgn )
     return NtGdiGetRandomRgn( hdc, rgn, NTGDI_RGN_MIRROR_RTL | 1 );
 }
 
+/***********************************************************************
+ *           GetMetaRgn    (GDI32.@)
+ */
+INT WINAPI GetMetaRgn( HDC hdc, HRGN rgn )
+{
+    return NtGdiGetRandomRgn( hdc, rgn, NTGDI_RGN_MIRROR_RTL | 2 );
+}
+
 /***********************************************************************
  *           IntersectClipRect    (GDI32.@)
  */




More information about the wine-cvs mailing list