Commit 352e2ff6 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

gdi32: Use supplied hdc for DIB_RGB_COLORS if it's valid.

This is about fixing regression introduced with 2854884a. Initial patch fixed MSVS 2005 toolbars blackness, this one doesn't break a fix, and fixes regressed Animation control glitches (and probably reported games related problems).
parent 6f0560df
......@@ -332,21 +332,26 @@ INT WINAPI SetDIBits( HDC hdc, HBITMAP hbitmap, UINT startscan,
UINT lines, LPCVOID bits, const BITMAPINFO *info,
UINT coloruse )
{
DC *dc;
DC *dc = get_dc_ptr( hdc );
BOOL delete_hdc = FALSE;
BITMAPOBJ *bitmap;
INT result = 0;
if (coloruse == DIB_RGB_COLORS) hdc = CreateCompatibleDC(0);
if (coloruse == DIB_RGB_COLORS && !dc)
{
hdc = CreateCompatibleDC(0);
dc = get_dc_ptr( hdc );
delete_hdc = TRUE;
}
if (!(dc = get_dc_ptr( hdc )))
return 0;
if (!dc) return 0;
update_dc( dc );
if (!(bitmap = GDI_GetObjPtr( hbitmap, OBJ_BITMAP )))
{
release_dc_ptr( dc );
if (coloruse == DIB_RGB_COLORS) DeleteDC(hdc);
if (delete_hdc) DeleteDC(hdc);
return 0;
}
......@@ -365,7 +370,7 @@ INT WINAPI SetDIBits( HDC hdc, HBITMAP hbitmap, UINT startscan,
done:
GDI_ReleaseObj( hbitmap );
release_dc_ptr( dc );
if (coloruse == DIB_RGB_COLORS) DeleteDC(hdc);
if (delete_hdc) DeleteDC(hdc);
return result;
}
......
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