[PATCH 04/10] d3drm: Introduce a d3drm_matrix structure.

Jeff Smith whydoubt at gmail.com
Thu Jun 20 00:45:20 CDT 2019


On Wed, Jun 19, 2019 at 5:01 PM Henri Verbeet <hverbeet at codeweavers.com> wrote:
> @@ -1432,9 +1435,7 @@ static HRESULT WINAPI d3drm_frame2_GetTransform(IDirect3DRMFrame2 *iface, D3DRMM
>
>      TRACE("iface %p, matrix %p.\n", iface, matrix);
>
> -    memcpy(matrix, frame->transform, sizeof(D3DRMMATRIX4D));
> -
> -    return D3DRM_OK;
> +    return d3drm_frame3_GetTransform(&frame->IDirect3DRMFrame3_iface, NULL, matrix);
>  }
>
>  static HRESULT WINAPI d3drm_frame1_GetTransform(IDirect3DRMFrame *iface, D3DRMMATRIX4D matrix)
> @@ -1443,7 +1444,7 @@ static HRESULT WINAPI d3drm_frame1_GetTransform(IDirect3DRMFrame *iface, D3DRMMA
>
>      TRACE("iface %p, matrix %p.\n", iface, matrix);
>
> -    return d3drm_frame2_GetTransform(&frame->IDirect3DRMFrame2_iface, matrix);
> +    return d3drm_frame3_GetTransform(&frame->IDirect3DRMFrame3_iface, NULL, matrix);
>  }
>

Hi Henri,

I would advise against implementing d3drm_frame2_GetTransform and
d3drm_frame1_GetTransform by calling on d3drm_frame3_GetTransform.
While that currently would work, because the reference is ignored, it
will not work with a properly-implemented d3drm_frame3_GetTransform.
I have such a fix in my queue for GetTransform to properly use the
reference, and so I would have to revert your changes to make it all
correct.
I suggest taking these hunks out, and just change 'memcpy(...)' to
'matrix = frame->transform' as you've done elsewhere.

-- Jeff



More information about the wine-devel mailing list