Commit 34aa1172 authored by Shawn M. Chapla's avatar Shawn M. Chapla Committed by Alexandre Julliard

gdiplus: Preserve temp DC state for bitmap backed graphics objects.

parent 739d0a1d
......@@ -2536,6 +2536,12 @@ GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
return stat;
}
if (graphics->temp_hdc)
{
DeleteDC(graphics->temp_hdc);
graphics->temp_hdc = NULL;
}
if(graphics->owndc)
ReleaseDC(graphics->hwnd, graphics->hdc);
......@@ -6662,7 +6668,15 @@ GpStatus WINGDIPAPI GdipGetDC(GpGraphics *graphics, HDC *hdc)
if (!hbitmap)
return GenericError;
temp_hdc = CreateCompatibleDC(0);
if (!graphics->temp_hdc)
{
temp_hdc = CreateCompatibleDC(0);
}
else
{
temp_hdc = graphics->temp_hdc;
}
if (!temp_hdc)
{
DeleteObject(hbitmap);
......@@ -6723,9 +6737,7 @@ GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics *graphics, HDC hdc)
graphics->temp_hbitmap_width * 4, PixelFormat32bppARGB);
/* Clean up. */
DeleteDC(graphics->temp_hdc);
DeleteObject(graphics->temp_hbitmap);
graphics->temp_hdc = NULL;
graphics->temp_hbitmap = NULL;
}
else if (hdc != graphics->hdc)
......
......@@ -6870,7 +6870,7 @@ static void test_gdi_interop(void)
stat = GdipBitmapGetPixel(bitmap, 26, 26, &color);
expect(Ok, stat);
todo_wine expect(0xff0000ff, color);
expect(0xff0000ff, color);
stat = GdipBitmapGetPixel(bitmap, 86, 86, &color);
expect(Ok, stat);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment