fonts: don't call LineTo with the gdi lock

Huw D M Davies h.davies1 at physics.ox.ac.uk
Sun Aug 28 06:04:41 CDT 2005


        Huw Davies <huw at codeweavers.com>
        Don't call LineTo while holding the gdi lock
Index: dlls/gdi/font.c
===================================================================
RCS file: /home/wine/wine/dlls/gdi/font.c,v
retrieving revision 1.15
diff -u -p -r1.15 font.c
--- dlls/gdi/font.c	23 Aug 2005 09:38:59 -0000	1.15
+++ dlls/gdi/font.c	28 Aug 2005 11:01:01 -0000
@@ -2021,7 +2021,8 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x,
             pts[1].y = y - ywidth;
             DPtoLP(hdc, pts, 2);
             MoveToEx(hdc, pts[0].x - underlinePos * sinEsc, pts[0].y - underlinePos * cosEsc, &oldpt);
-            LineTo(hdc, pts[1].x - underlinePos * sinEsc, pts[1].y - underlinePos * cosEsc);
+            if(dc->funcs->pLineTo)
+                dc->funcs->pLineTo(dc->physDev, pts[1].x - underlinePos * sinEsc, pts[1].y - underlinePos * cosEsc);
             MoveToEx(hdc, oldpt.x, oldpt.y, NULL);
             DeleteObject(SelectObject(hdc, hpen));
         }
@@ -2037,7 +2038,8 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x,
             pts[1].y = y - ywidth;
             DPtoLP(hdc, pts, 2);
             MoveToEx(hdc, pts[0].x - strikeoutPos * sinEsc, pts[0].y - strikeoutPos * cosEsc, &oldpt);
-            LineTo(hdc, pts[1].x - strikeoutPos * sinEsc, pts[1].y - strikeoutPos * cosEsc);
+            if(dc->funcs->pLineTo)
+                dc->funcs->pLineTo(dc->physDev, pts[1].x - strikeoutPos * sinEsc, pts[1].y - strikeoutPos * cosEsc);
             MoveToEx(hdc, oldpt.x, oldpt.y, NULL);
             DeleteObject(SelectObject(hdc, hpen));
         }



More information about the wine-patches mailing list