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) ...@@ -2536,6 +2536,12 @@ GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
return stat; return stat;
} }
if (graphics->temp_hdc)
{
DeleteDC(graphics->temp_hdc);
graphics->temp_hdc = NULL;
}
if(graphics->owndc) if(graphics->owndc)
ReleaseDC(graphics->hwnd, graphics->hdc); ReleaseDC(graphics->hwnd, graphics->hdc);
...@@ -6662,7 +6668,15 @@ GpStatus WINGDIPAPI GdipGetDC(GpGraphics *graphics, HDC *hdc) ...@@ -6662,7 +6668,15 @@ GpStatus WINGDIPAPI GdipGetDC(GpGraphics *graphics, HDC *hdc)
if (!hbitmap) if (!hbitmap)
return GenericError; return GenericError;
temp_hdc = CreateCompatibleDC(0); if (!graphics->temp_hdc)
{
temp_hdc = CreateCompatibleDC(0);
}
else
{
temp_hdc = graphics->temp_hdc;
}
if (!temp_hdc) if (!temp_hdc)
{ {
DeleteObject(hbitmap); DeleteObject(hbitmap);
...@@ -6723,9 +6737,7 @@ GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics *graphics, HDC hdc) ...@@ -6723,9 +6737,7 @@ GpStatus WINGDIPAPI GdipReleaseDC(GpGraphics *graphics, HDC hdc)
graphics->temp_hbitmap_width * 4, PixelFormat32bppARGB); graphics->temp_hbitmap_width * 4, PixelFormat32bppARGB);
/* Clean up. */ /* Clean up. */
DeleteDC(graphics->temp_hdc);
DeleteObject(graphics->temp_hbitmap); DeleteObject(graphics->temp_hbitmap);
graphics->temp_hdc = NULL;
graphics->temp_hbitmap = NULL; graphics->temp_hbitmap = NULL;
} }
else if (hdc != graphics->hdc) else if (hdc != graphics->hdc)
......
...@@ -6870,7 +6870,7 @@ static void test_gdi_interop(void) ...@@ -6870,7 +6870,7 @@ static void test_gdi_interop(void)
stat = GdipBitmapGetPixel(bitmap, 26, 26, &color); stat = GdipBitmapGetPixel(bitmap, 26, 26, &color);
expect(Ok, stat); expect(Ok, stat);
todo_wine expect(0xff0000ff, color); expect(0xff0000ff, color);
stat = GdipBitmapGetPixel(bitmap, 86, 86, &color); stat = GdipBitmapGetPixel(bitmap, 86, 86, &color);
expect(Ok, stat); 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