Nikolay Sivov : gdiplus: Add testing for ObjectBusy in some Graphics methods.

Alexandre Julliard julliard at winehq.org
Tue Feb 3 09:13:19 CST 2009


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

Author: Nikolay Sivov <bunglehead at gmail.com>
Date:   Mon Feb  2 23:48:01 2009 +0300

gdiplus: Add testing for ObjectBusy in some Graphics methods.

---

 dlls/gdiplus/graphics.c       |   12 ++++++++++++
 dlls/gdiplus/tests/graphics.c |   14 +++++++++++++-
 include/gdiplusflat.h         |    5 +++++
 3 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 1c88453..04beb0b 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -2415,6 +2415,9 @@ GpStatus WINGDIPAPI GdipGetClipBounds(GpGraphics *graphics, GpRectF *rect)
     if(!graphics)
         return InvalidParameter;
 
+    if(graphics->busy)
+        return ObjectBusy;
+
     return GdipGetRegionBounds(graphics->clip, graphics, rect);
 }
 
@@ -2428,6 +2431,9 @@ GpStatus WINGDIPAPI GdipGetClipBoundsI(GpGraphics *graphics, GpRect *rect)
     if(!graphics)
         return InvalidParameter;
 
+    if(graphics->busy)
+        return ObjectBusy;
+
     return GdipGetRegionBoundsI(graphics->clip, graphics, rect);
 }
 
@@ -3378,6 +3384,9 @@ GpStatus WINGDIPAPI GdipTranslateClip(GpGraphics *graphics, REAL dx, REAL dy)
     if(!graphics)
         return InvalidParameter;
 
+    if(graphics->busy)
+        return ObjectBusy;
+
     return GdipTranslateRegion(graphics->clip, dx, dy);
 }
 
@@ -3391,5 +3400,8 @@ GpStatus WINGDIPAPI GdipTranslateClipI(GpGraphics *graphics, INT dx, INT dy)
     if(!graphics)
         return InvalidParameter;
 
+    if(graphics->busy)
+        return ObjectBusy;
+
     return GdipTranslateRegion(graphics->clip, (REAL)dx, (REAL)dy);
 }
diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c
index fb98a38..8091a9a 100644
--- a/dlls/gdiplus/tests/graphics.c
+++ b/dlls/gdiplus/tests/graphics.c
@@ -486,6 +486,7 @@ static void test_Get_Release_DC(void)
     INT i;
     BOOL res;
     ARGB color = 0x00000000;
+    HRGN hrgn = CreateRectRgn(0, 0, 10, 10);
 
     pt[0].X = 10;
     pt[0].Y = 10;
@@ -653,6 +654,10 @@ static void test_Get_Release_DC(void)
     expect(ObjectBusy, status); status = Ok;
     status = GdipFlush(graphics, FlushIntentionFlush);
     expect(ObjectBusy, status); status = Ok;
+    status = GdipGetClipBounds(graphics, rectf);
+    expect(ObjectBusy, status); status = Ok;
+    status = GdipGetClipBoundsI(graphics, rect);
+    expect(ObjectBusy, status); status = Ok;
     status = GdipGetCompositingMode(graphics, &compmode);
     expect(ObjectBusy, status); status = Ok;
     status = GdipGetCompositingQuality(graphics, &quality);
@@ -711,6 +716,8 @@ static void test_Get_Release_DC(void)
     expect(ObjectBusy, status); status = Ok;
     status = GdipTranslateWorldTransform(graphics, 0.0, 0.0, MatrixOrderPrepend);
     expect(ObjectBusy, status); status = Ok;
+    status = GdipSetClipHrgn(graphics, hrgn, CombineModeReplace);
+    expect(ObjectBusy, status); status = Ok;
     status = GdipSetClipPath(graphics, path, CombineModeReplace);
     expect(ObjectBusy, status); status = Ok;
     status = GdipSetClipRect(graphics, 0.0, 0.0, 10.0, 10.0, CombineModeReplace);
@@ -718,7 +725,11 @@ static void test_Get_Release_DC(void)
     status = GdipSetClipRectI(graphics, 0, 0, 10, 10, CombineModeReplace);
     expect(ObjectBusy, status); status = Ok;
     status = GdipSetClipRegion(graphics, clip, CombineModeReplace);
-    expect(ObjectBusy, status);
+    expect(ObjectBusy, status); status = Ok;
+    status = GdipTranslateClip(graphics, 0.0, 0.0);
+    expect(ObjectBusy, status); status = Ok;
+    status = GdipTranslateClipI(graphics, 0, 0);
+    expect(ObjectBusy, status); status = Ok;
     status = GdipDrawPolygon(graphics, pen, ptf, 5);
     expect(ObjectBusy, status); status = Ok;
     status = GdipDrawPolygonI(graphics, pen, pt, 5);
@@ -746,6 +757,7 @@ static void test_Get_Release_DC(void)
     GdipDeleteBrush((GpBrush*)brush);
     GdipDeleteRegion(region);
     GdipDeleteMatrix(m);
+    DeleteObject(hrgn);
 
     ReleaseDC(0, hdc);
 }
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index dd01d1b..56540cd 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -190,6 +190,8 @@ GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics*,GpBrush*,GDIPCONST GpRectF*,I
 GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics*,GpBrush*,GDIPCONST GpRect*,INT);
 GpStatus WINGDIPAPI GdipFillRegion(GpGraphics*,GpBrush*,GpRegion*);
 GpStatus WINGDIPAPI GdipGetClip(GpGraphics*,GpRegion*);
+GpStatus WINGDIPAPI GdipGetClipBounds(GpGraphics*,GpRectF*);
+GpStatus WINGDIPAPI GdipGetClipBoundsI(GpGraphics*,GpRect*);
 GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
 GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
 GpStatus WINGDIPAPI GdipGetDC(GpGraphics*,HDC*);
@@ -222,6 +224,7 @@ GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
 GpStatus WINGDIPAPI GdipRotateWorldTransform(GpGraphics*,REAL,GpMatrixOrder);
 GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
 GpStatus WINGDIPAPI GdipScaleWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
+GpStatus WINGDIPAPI GdipSetClipHrgn(GpGraphics*,HRGN,CombineMode);
 GpStatus WINGDIPAPI GdipSetClipPath(GpGraphics*,GpPath*,CombineMode);
 GpStatus WINGDIPAPI GdipSetClipRect(GpGraphics*,REAL,REAL,REAL,REAL,CombineMode);
 GpStatus WINGDIPAPI GdipSetClipRectI(GpGraphics*,INT,INT,INT,INT,CombineMode);
@@ -240,6 +243,8 @@ GpStatus WINGDIPAPI GdipTransformPoints(GpGraphics*, GpCoordinateSpace, GpCoordi
                                         GpPointF *, INT);
 GpStatus WINGDIPAPI GdipTransformPointsI(GpGraphics*, GpCoordinateSpace, GpCoordinateSpace,
                                          GpPoint *, INT);
+GpStatus WINGDIPAPI GdipTranslateClip(GpGraphics*,REAL,REAL);
+GpStatus WINGDIPAPI GdipTranslateClipI(GpGraphics*,INT,INT);
 GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics*,REAL,REAL,GpMatrixOrder);
 
 /* GraphicsPath */




More information about the wine-cvs mailing list