[PATCH 1/5] mfplat: Fix scanline pointer returned with Lock2D().
Nikolay Sivov
nsivov at codeweavers.com
Thu Mar 19 07:07:37 CDT 2020
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
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 71bae4c42f..7206cf6d5a 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 8e9bf8102a..497c451f72 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);
--
2.25.1
More information about the wine-devel
mailing list