diff --git a/dlls/evr/presenter.c b/dlls/evr/presenter.c index d8bdbee3915..06592f8766e 100644 --- a/dlls/evr/presenter.c +++ b/dlls/evr/presenter.c @@ -1531,7 +1531,8 @@ static HRESULT WINAPI video_presenter_control_GetCurrentImage(IMFVideoDisplayCon { if (SUCCEEDED(hr = IDirect3DSurface9_LockRect(readback, &mapped_rect, NULL, D3DLOCK_READONLY))) { - memcpy(*dib, mapped_rect.pBits, *dib_size); + hr = MFCopyImage(stride < 0 ? *dib + *dib_size + stride : *dib, stride, + mapped_rect.pBits, mapped_rect.Pitch, abs(stride), surface_desc.Height); IDirect3DSurface9_UnlockRect(readback); } } diff --git a/dlls/evr/tests/evr.c b/dlls/evr/tests/evr.c index 161d910971f..8842a858b83 100644 --- a/dlls/evr/tests/evr.c +++ b/dlls/evr/tests/evr.c @@ -3466,8 +3466,7 @@ static void test_presenter_orientation(const GUID *subtype) SetRect(&rect, 0, 0, header.biWidth, header.biHeight); diff = check_rgb32_data(L"rgb32frame-flip.bmp", data, header.biSizeImage, &rect); - todo_wine - ok(diff <= 3, "Unexpected %lu%% diff\n", diff); + ok(diff <= 5, "Unexpected %lu%% diff\n", diff); CoTaskMemFree(data); hr = IMFVideoPresenter_ProcessMessage(presenter, MFVP_MESSAGE_ENDSTREAMING, 0);