gdiplus: Only release device contexts created internally.

This commit is contained in:
Vincent Povirk 2009-04-24 13:29:56 -05:00 committed by Alexandre Julliard
parent fea6d0a764
commit 8a3d9ff773
2 changed files with 4 additions and 1 deletions

View File

@ -91,6 +91,7 @@ struct GpPen{
struct GpGraphics{
HDC hdc;
HWND hwnd;
BOOL owndc;
SmoothingMode smoothing;
CompositingQuality compqual;
InterpolationMode interpolation;

View File

@ -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);