From 40331bae5d14f2380170b0d2ebd77b711e5b7612 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Fri, 24 Apr 2009 13:29:56 -0500 Subject: [PATCH] gdiplus: only release device contexts created internally --- dlls/gdiplus/gdiplus_private.h | 1 + dlls/gdiplus/graphics.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletions(-) diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index dbeebe3..a8c49d3 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -91,6 +91,7 @@ struct GpPen{ struct GpGraphics{ HDC hdc; HWND hwnd; + BOOL owndc; SmoothingMode smoothing; CompositingQuality compqual; InterpolationMode interpolation; diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 2a98ee5..af3968c 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -924,6 +924,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC2(HDC hdc, HANDLE hDevice, GpGraphics **gra (*graphics)->hdc = hdc; (*graphics)->hwnd = WindowFromDC(hdc); + (*graphics)->owndc = FALSE; (*graphics)->smoothing = SmoothingModeDefault; (*graphics)->compqual = CompositingQualityDefault; (*graphics)->interpolation = InterpolationModeDefault; @@ -947,6 +948,7 @@ GpStatus WINGDIPAPI GdipCreateFromHWND(HWND hwnd, GpGraphics **graphics) return ret; (*graphics)->hwnd = hwnd; + (*graphics)->owndc = TRUE; return Ok; } @@ -1081,7 +1083,7 @@ GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics) if(!graphics) return InvalidParameter; if(graphics->busy) return ObjectBusy; - if(graphics->hwnd) + if(graphics->owndc) ReleaseDC(graphics->hwnd, graphics->hdc); GdipDeleteRegion(graphics->clip); -- 1.5.4.3