Vincent Povirk : gdiplus: Add clipping to GDI32_GdipFillRegion.

Alexandre Julliard julliard at winehq.org
Tue Sep 20 10:45:00 CDT 2016


Module: wine
Branch: master
Commit: 3fd47e1be1dff3f27b060045abaf1e0f4eae2fad
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3fd47e1be1dff3f27b060045abaf1e0f4eae2fad

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Mon Sep 19 15:07:00 2016 -0500

gdiplus: Add clipping to GDI32_GdipFillRegion.

Signed-off-by: Vincent Povirk <vincent at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdiplus/graphics.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 4ae1f48..964fa9f 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -3942,6 +3942,23 @@ static GpStatus GDI32_GdipFillRegion(GpGraphics* graphics, GpBrush* brush,
 
     ExtSelectClipRgn(graphics->hdc, hrgn, RGN_AND);
 
+    DeleteObject(hrgn);
+
+    hrgn = NULL;
+    status = get_clip_hrgn(graphics, &hrgn);
+
+    if (status != Ok)
+    {
+        RestoreDC(graphics->hdc, save_state);
+        return status;
+    }
+
+    if (hrgn)
+    {
+        ExtSelectClipRgn(graphics->hdc, hrgn, RGN_AND);
+        DeleteObject(hrgn);
+    }
+
     if (GetClipBox(graphics->hdc, &rc) != NULLREGION)
     {
         BeginPath(graphics->hdc);
@@ -3953,7 +3970,6 @@ static GpStatus GDI32_GdipFillRegion(GpGraphics* graphics, GpBrush* brush,
 
     RestoreDC(graphics->hdc, save_state);
 
-    DeleteObject(hrgn);
 
     return Ok;
 }




More information about the wine-cvs mailing list