gdi32: Only reselect the objects if the linear transform portion changes.
Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
24291f2b6a
commit
28bb9d15a6
|
@ -324,6 +324,17 @@ static void construct_window_to_viewport(DC *dc, XFORM *xform)
|
||||||
if (dc->layout & LAYOUT_RTL) xform->eDx = dc->vis_rect.right - dc->vis_rect.left - 1 - xform->eDx;
|
if (dc->layout & LAYOUT_RTL) xform->eDx = dc->vis_rect.right - dc->vis_rect.left - 1 - xform->eDx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* linear_xform_cmp
|
||||||
|
*
|
||||||
|
* Compares the linear transform portion of two XFORMs (i.e. the 2x2 submatrix).
|
||||||
|
* Returns 0 if they match.
|
||||||
|
*/
|
||||||
|
static inline int linear_xform_cmp( const XFORM *a, const XFORM *b )
|
||||||
|
{
|
||||||
|
return memcmp( a, b, FIELD_OFFSET( XFORM, eDx ) );
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DC_UpdateXforms
|
* DC_UpdateXforms
|
||||||
*
|
*
|
||||||
|
@ -351,7 +362,7 @@ void DC_UpdateXforms( DC *dc )
|
||||||
|
|
||||||
/* Reselect the font and pen back into the dc so that the size
|
/* Reselect the font and pen back into the dc so that the size
|
||||||
gets updated. */
|
gets updated. */
|
||||||
if (memcmp(&oldworld2vport, &dc->xformWorld2Vport, sizeof(oldworld2vport)) &&
|
if (linear_xform_cmp( &oldworld2vport, &dc->xformWorld2Vport ) &&
|
||||||
!GdiIsMetaFileDC(dc->hSelf))
|
!GdiIsMetaFileDC(dc->hSelf))
|
||||||
{
|
{
|
||||||
SelectObject(dc->hSelf, dc->hFont);
|
SelectObject(dc->hSelf, dc->hFont);
|
||||||
|
|
Loading…
Reference in New Issue