Commit 6e387f34 authored by Alexandre Julliard's avatar Alexandre Julliard

gdi32: Store the return value separately in StretchDIBits instead of overwriting heightSrc.

parent 12ae8ff8
......@@ -188,16 +188,17 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst,
const BITMAPINFO *info, UINT wUsage, DWORD dwRop )
{
DC *dc;
INT ret;
if (!bits || !info)
return 0;
if (!(dc = get_dc_ptr( hdc ))) return FALSE;
if (!(dc = get_dc_ptr( hdc ))) return 0;
if(dc->funcs->pStretchDIBits)
{
update_dc( dc );
heightSrc = dc->funcs->pStretchDIBits(dc->physDev, xDst, yDst, widthDst,
ret = dc->funcs->pStretchDIBits(dc->physDev, xDst, yDst, widthDst,
heightDst, xSrc, ySrc, widthSrc,
heightSrc, bits, info, wUsage, dwRop);
release_dc_ptr( dc );
......@@ -248,7 +249,7 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst,
{
/* fast path */
TRACE("using fast path\n");
heightSrc = SetDIBits( hdc, hBitmap, 0, height, bits, info, wUsage);
ret = SetDIBits( hdc, hBitmap, 0, height, bits, info, wUsage);
}
else
{
......@@ -290,11 +291,11 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst,
dwRop );
}
heightSrc = SetDIBits(hdcMem, hBitmap, 0, height, bits, info, wUsage);
ret = SetDIBits(hdcMem, hBitmap, 0, height, bits, info, wUsage);
/* Origin for DIBitmap may be bottom left (positive biHeight) or top
left (negative biHeight) */
if (heightSrc) StretchBlt( hdc, xDst, yDst, widthDst, heightDst,
if (ret) StretchBlt( hdc, xDst, yDst, widthDst, heightDst,
hdcMem, xSrc, abs(height) - heightSrc - ySrc,
widthSrc, heightSrc, dwRop );
if(hpal)
......@@ -304,7 +305,7 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst,
DeleteObject( hBitmap );
}
}
return heightSrc;
return ret;
}
......
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