path: worldtransform fixes

Huw D M Davies h.davies1 at physics.ox.ac.uk
Mon Nov 10 10:55:42 CST 2003


        Huw Davies <huw at codeweavers.com>
	We need to set the WorldTransform to the identity before stroking or
	filling the path.
	Fix a memory leak.
-- 
Huw Davies
huw at codeweavers.com
Index: graphics/path.c
===================================================================
RCS file: /home/wine/wine/graphics/path.c,v
retrieving revision 1.36
diff -u -r1.36 path.c
--- graphics/path.c	5 Sep 2003 23:15:45 -0000	1.36
+++ graphics/path.c	10 Nov 2003 16:53:39 -0000
@@ -376,6 +376,10 @@
       SetMapMode(dc->hSelf, MM_TEXT);
       SetViewportOrgEx(dc->hSelf, 0, 0, NULL);
       SetWindowOrgEx(dc->hSelf, 0, 0, NULL);
+      graphicsMode=GetGraphicsMode(dc->hSelf);
+      SetGraphicsMode(dc->hSelf, GM_ADVANCED);
+      ModifyWorldTransform(dc->hSelf, &xform, MWT_IDENTITY);
+      SetGraphicsMode(dc->hSelf, graphicsMode);
 
       /* Paint the region */
       PaintRgn(dc->hSelf, hrgn);
@@ -1120,7 +1124,7 @@
     }
     newPath.state = PATH_Closed;
     PATH_AssignGdiPath(pPath, &newPath);
-    PATH_EmptyPath(&newPath);
+    PATH_DestroyGdiPath(&newPath);
     return TRUE;
 }
 
@@ -1453,7 +1457,10 @@
     SetMapMode(dc->hSelf, MM_TEXT);
     SetViewportOrgEx(dc->hSelf, 0, 0, NULL);
     SetWindowOrgEx(dc->hSelf, 0, 0, NULL);
-
+    graphicsMode=GetGraphicsMode(dc->hSelf);
+    SetGraphicsMode(dc->hSelf, GM_ADVANCED);
+    ModifyWorldTransform(dc->hSelf, &xform, MWT_IDENTITY);
+    SetGraphicsMode(dc->hSelf, graphicsMode);
 
     for(i = 0; i < pPath->numEntriesUsed; i++) {
         switch(pPath->pFlags[i]) {



More information about the wine-patches mailing list