forked from Mirrors/wine-wine
Fixed SetTextAlign(), SetBkMode(), SetROP2(), SetPolyFillMode(), and
SetStretchBltMode() to assume that the corresponding DC driver functions return only a BOOL success flag, and therefore a proper return value should be generated by the main function. Fixed EMFDRV_StretchDIBits() to return a proper value (like MFDRV_StretchDIBits already does). Added comments about other cases of improper return values.oldstable
parent
26b40c296f
commit
30d6d5dc92
|
@ -187,7 +187,10 @@ INT WINAPI OffsetClipRgn( HDC hdc, INT x, INT y )
|
||||||
TRACE("%p %d,%d\n", hdc, x, y );
|
TRACE("%p %d,%d\n", hdc, x, y );
|
||||||
|
|
||||||
if(dc->funcs->pOffsetClipRgn)
|
if(dc->funcs->pOffsetClipRgn)
|
||||||
|
{
|
||||||
ret = dc->funcs->pOffsetClipRgn( dc->physDev, x, y );
|
ret = dc->funcs->pOffsetClipRgn( dc->physDev, x, y );
|
||||||
|
/* FIXME: ret is just a success flag, we should return a proper value */
|
||||||
|
}
|
||||||
else if (dc->hClipRgn) {
|
else if (dc->hClipRgn) {
|
||||||
ret = OffsetRgn( dc->hClipRgn, MulDiv( x, dc->vportExtX, dc->wndExtX ),
|
ret = OffsetRgn( dc->hClipRgn, MulDiv( x, dc->vportExtX, dc->wndExtX ),
|
||||||
MulDiv( y, dc->vportExtY, dc->wndExtY ) );
|
MulDiv( y, dc->vportExtY, dc->wndExtY ) );
|
||||||
|
@ -229,7 +232,10 @@ INT WINAPI ExcludeClipRect( HDC hdc, INT left, INT top,
|
||||||
TRACE("%p %dx%d,%dx%d\n", hdc, left, top, right, bottom );
|
TRACE("%p %dx%d,%dx%d\n", hdc, left, top, right, bottom );
|
||||||
|
|
||||||
if(dc->funcs->pExcludeClipRect)
|
if(dc->funcs->pExcludeClipRect)
|
||||||
|
{
|
||||||
ret = dc->funcs->pExcludeClipRect( dc->physDev, left, top, right, bottom );
|
ret = dc->funcs->pExcludeClipRect( dc->physDev, left, top, right, bottom );
|
||||||
|
/* FIXME: ret is just a success flag, we should return a proper value */
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
POINT pt[2];
|
POINT pt[2];
|
||||||
|
@ -266,7 +272,10 @@ INT WINAPI IntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom
|
||||||
TRACE("%p %d,%d - %d,%d\n", hdc, left, top, right, bottom );
|
TRACE("%p %d,%d - %d,%d\n", hdc, left, top, right, bottom );
|
||||||
|
|
||||||
if(dc->funcs->pIntersectClipRect)
|
if(dc->funcs->pIntersectClipRect)
|
||||||
|
{
|
||||||
ret = dc->funcs->pIntersectClipRect( dc->physDev, left, top, right, bottom );
|
ret = dc->funcs->pIntersectClipRect( dc->physDev, left, top, right, bottom );
|
||||||
|
/* FIXME: ret is just a success flag, we should return a proper value */
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
POINT pt[2];
|
POINT pt[2];
|
||||||
|
|
|
@ -505,6 +505,7 @@ INT WINAPI SaveDC( HDC hdc )
|
||||||
{
|
{
|
||||||
ret = dc->funcs->pSaveDC( dc->physDev );
|
ret = dc->funcs->pSaveDC( dc->physDev );
|
||||||
GDI_ReleaseObj( hdc );
|
GDI_ReleaseObj( hdc );
|
||||||
|
/* FIXME: ret is just a success flag, we should return a proper value */
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -998,20 +999,20 @@ UINT WINAPI GetTextAlign( HDC hdc )
|
||||||
*/
|
*/
|
||||||
UINT WINAPI SetTextAlign( HDC hdc, UINT align )
|
UINT WINAPI SetTextAlign( HDC hdc, UINT align )
|
||||||
{
|
{
|
||||||
UINT prevAlign;
|
UINT ret;
|
||||||
DC *dc = DC_GetDCPtr( hdc );
|
DC *dc = DC_GetDCPtr( hdc );
|
||||||
|
|
||||||
TRACE("hdc=%p align=%d\n", hdc, align);
|
TRACE("hdc=%p align=%d\n", hdc, align);
|
||||||
|
|
||||||
if (!dc) return 0x0;
|
if (!dc) return 0x0;
|
||||||
|
ret = dc->textAlign;
|
||||||
if (dc->funcs->pSetTextAlign)
|
if (dc->funcs->pSetTextAlign)
|
||||||
prevAlign = dc->funcs->pSetTextAlign(dc->physDev, align);
|
if (!dc->funcs->pSetTextAlign(dc->physDev, align))
|
||||||
else {
|
ret = GDI_ERROR;
|
||||||
prevAlign = dc->textAlign;
|
if (ret != GDI_ERROR)
|
||||||
dc->textAlign = align;
|
dc->textAlign = align;
|
||||||
}
|
|
||||||
GDI_ReleaseObj( hdc );
|
GDI_ReleaseObj( hdc );
|
||||||
return prevAlign;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -1620,13 +1621,13 @@ INT WINAPI SetBkMode( HDC hdc, INT mode )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!(dc = DC_GetDCPtr( hdc ))) return 0;
|
if (!(dc = DC_GetDCPtr( hdc ))) return 0;
|
||||||
if (dc->funcs->pSetBkMode)
|
|
||||||
ret = dc->funcs->pSetBkMode( dc->physDev, mode );
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = dc->backgroundMode;
|
ret = dc->backgroundMode;
|
||||||
|
if (dc->funcs->pSetBkMode)
|
||||||
|
if (!dc->funcs->pSetBkMode( dc->physDev, mode ))
|
||||||
|
ret = 0;
|
||||||
|
if (ret)
|
||||||
dc->backgroundMode = mode;
|
dc->backgroundMode = mode;
|
||||||
}
|
|
||||||
GDI_ReleaseObj( hdc );
|
GDI_ReleaseObj( hdc );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1661,13 +1662,12 @@ INT WINAPI SetROP2( HDC hdc, INT mode )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!(dc = DC_GetDCPtr( hdc ))) return 0;
|
if (!(dc = DC_GetDCPtr( hdc ))) return 0;
|
||||||
if (dc->funcs->pSetROP2)
|
|
||||||
ret = dc->funcs->pSetROP2( dc->physDev, mode );
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = dc->ROPmode;
|
ret = dc->ROPmode;
|
||||||
|
if (dc->funcs->pSetROP2)
|
||||||
|
if (!dc->funcs->pSetROP2( dc->physDev, mode ))
|
||||||
|
ret = 0;
|
||||||
|
if (ret)
|
||||||
dc->ROPmode = mode;
|
dc->ROPmode = mode;
|
||||||
}
|
|
||||||
GDI_ReleaseObj( hdc );
|
GDI_ReleaseObj( hdc );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1727,13 +1727,12 @@ INT WINAPI SetPolyFillMode( HDC hdc, INT mode )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!(dc = DC_GetDCPtr( hdc ))) return 0;
|
if (!(dc = DC_GetDCPtr( hdc ))) return 0;
|
||||||
if (dc->funcs->pSetPolyFillMode)
|
|
||||||
ret = dc->funcs->pSetPolyFillMode( dc->physDev, mode );
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = dc->polyFillMode;
|
ret = dc->polyFillMode;
|
||||||
|
if (dc->funcs->pSetPolyFillMode)
|
||||||
|
if (!dc->funcs->pSetPolyFillMode( dc->physDev, mode ))
|
||||||
|
ret = 0;
|
||||||
|
if (ret)
|
||||||
dc->polyFillMode = mode;
|
dc->polyFillMode = mode;
|
||||||
}
|
|
||||||
GDI_ReleaseObj( hdc );
|
GDI_ReleaseObj( hdc );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1768,13 +1767,12 @@ INT WINAPI SetStretchBltMode( HDC hdc, INT mode )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!(dc = DC_GetDCPtr( hdc ))) return 0;
|
if (!(dc = DC_GetDCPtr( hdc ))) return 0;
|
||||||
if (dc->funcs->pSetStretchBltMode)
|
|
||||||
ret = dc->funcs->pSetStretchBltMode( dc->physDev, mode );
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = dc->stretchBltMode;
|
ret = dc->stretchBltMode;
|
||||||
|
if (dc->funcs->pSetStretchBltMode)
|
||||||
|
if (!dc->funcs->pSetStretchBltMode( dc->physDev, mode ))
|
||||||
|
ret = 0;
|
||||||
|
if (ret)
|
||||||
dc->stretchBltMode = mode;
|
dc->stretchBltMode = mode;
|
||||||
}
|
|
||||||
GDI_ReleaseObj( hdc );
|
GDI_ReleaseObj( hdc );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -254,7 +254,7 @@ INT EMFDRV_StretchDIBits( PHYSDEV dev, INT xDst, INT yDst, INT widthDst,
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, emr);
|
HeapFree(GetProcessHeap(), 0, emr);
|
||||||
|
|
||||||
return ret;
|
return ret ? heightSrc : GDI_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
INT EMFDRV_SetDIBitsToDevice(
|
INT EMFDRV_SetDIBitsToDevice(
|
||||||
|
|
|
@ -2225,7 +2225,10 @@ DWORD WINAPI SetMapperFlags( HDC hDC, DWORD dwFlag )
|
||||||
DWORD ret = 0;
|
DWORD ret = 0;
|
||||||
if(!dc) return 0;
|
if(!dc) return 0;
|
||||||
if(dc->funcs->pSetMapperFlags)
|
if(dc->funcs->pSetMapperFlags)
|
||||||
|
{
|
||||||
ret = dc->funcs->pSetMapperFlags( dc->physDev, dwFlag );
|
ret = dc->funcs->pSetMapperFlags( dc->physDev, dwFlag );
|
||||||
|
/* FIXME: ret is just a success flag, we should return a proper value */
|
||||||
|
}
|
||||||
else
|
else
|
||||||
FIXME("(%p, 0x%08lx): stub - harmless\n", hDC, dwFlag);
|
FIXME("(%p, 0x%08lx): stub - harmless\n", hDC, dwFlag);
|
||||||
GDI_ReleaseObj( hDC );
|
GDI_ReleaseObj( hDC );
|
||||||
|
|
Loading…
Reference in New Issue