[PATCH 1/4] gdi32: Implement MFDRV_SetLayout().

Huw Davies huw at codeweavers.com
Mon May 24 02:58:00 CDT 2021


On Mon, May 17, 2021 at 04:59:59PM +0800, Zhiyi Zhang wrote:
> Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
> ---
>  dlls/gdi32/mfdrv/dc.c          | 12 ++++++
>  dlls/gdi32/mfdrv/init.c        |  2 +-
>  dlls/gdi32/mfdrv/metafiledrv.h |  1 +
>  dlls/gdi32/tests/metafile.c    | 79 ++++++++++++++++++++++++++++++++++
>  4 files changed, 93 insertions(+), 1 deletion(-)
> 
> diff --git a/dlls/gdi32/mfdrv/dc.c b/dlls/gdi32/mfdrv/dc.c
> index 61417bfd462..1133102371a 100644
> --- a/dlls/gdi32/mfdrv/dc.c
> +++ b/dlls/gdi32/mfdrv/dc.c
> @@ -85,6 +85,18 @@ INT CDECL MFDRV_OffsetClipRgn( PHYSDEV dev, INT x, INT y )
>      return MFDRV_MetaParam2( dev, META_OFFSETCLIPRGN, x, y );
>  }
>  
> +DWORD CDECL MFDRV_SetLayout( PHYSDEV dev, DWORD layout )
> +{
> +    PHYSDEV next = GET_NEXT_PHYSDEV( dev, pSetLayout );
> +
> +    if (!MFDRV_MetaParam2( dev, META_SETLAYOUT, HIWORD(layout), LOWORD(layout) ))
> +        return GDI_ERROR;
> +
> +    next->funcs->pSetLayout( next, layout );
> +    /* Always return LAYOUT_RTL according to tests */
> +    return LAYOUT_RTL;
> +}

Since the mfdrv doesn't save the dc state, you should just return the result
of MFDRV_MetaParam2() here.  See SetMapMode below.

Huw.



More information about the wine-devel mailing list