gdiplus: Preserve temp DC state for bitmap backed graphics objects.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com> Signed-off-by: Esme Povirk <vincent@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
739d0a1dfa
commit
34aa117278
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue