From bd3f27abda15c7f169a53a63d61972053d0e4227 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Thu, 19 Mar 2020 15:07:37 +0300 Subject: [PATCH] mfplat: Fix scanline pointer returned with Lock2D(). Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/mfplat/buffer.c | 2 +- dlls/mfplat/tests/mfplat.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/mfplat/buffer.c b/dlls/mfplat/buffer.c index 71bae4c42fe..7206cf6d5af 100644 --- a/dlls/mfplat/buffer.c +++ b/dlls/mfplat/buffer.c @@ -340,7 +340,7 @@ static HRESULT memory_2d_buffer_lock(struct memory_buffer *buffer, BYTE **scanli else { ++buffer->_2d.locks; - *scanline0 = buffer->data; + *scanline0 = buffer->_2d.scanline0; *pitch = buffer->_2d.pitch; if (buffer_start) *buffer_start = buffer->data; diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c index 8e9bf8102a8..497c451f72f 100644 --- a/dlls/mfplat/tests/mfplat.c +++ b/dlls/mfplat/tests/mfplat.c @@ -4694,7 +4694,7 @@ static void test_MFCreate2DMediaBuffer(void) IMF2DBuffer2 *_2dbuffer2; IMF2DBuffer *_2dbuffer; IMFMediaBuffer *buffer; - int i, pitch; + int i, pitch, pitch2; HRESULT hr; BOOL ret; @@ -4898,6 +4898,12 @@ static void test_MFCreate2DMediaBuffer(void) hr = IMF2DBuffer_Lock2D(_2dbuffer, &data, &pitch); ok(hr == S_OK, "Failed to lock buffer, hr %#x.\n", hr); + + hr = IMF2DBuffer_GetScanline0AndPitch(_2dbuffer, &data2, &pitch2); + ok(hr == S_OK, "Failed to get scanline, hr %#x.\n", hr); + ok(data2 == data, "Unexpected data pointer.\n"); + ok(pitch == pitch2, "Unexpected pitch.\n"); + hr = IMF2DBuffer_Unlock2D(_2dbuffer); ok(hr == S_OK, "Failed to unlock buffer, hr %#x.\n", hr);