[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