Nikolay Sivov : mfplat: Copy attributes when cloning presentation descriptor.

Alexandre Julliard julliard at winehq.org
Tue Apr 30 15:59:55 CDT 2019


Module: wine
Branch: master
Commit: dda9037c37ead73bbdbc955b0b9cdb7afb06f913
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=dda9037c37ead73bbdbc955b0b9cdb7afb06f913

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Apr 30 13:33:24 2019 +0300

mfplat: Copy attributes when cloning presentation descriptor.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mfplat/mediatype.c    |  3 ++-
 dlls/mfplat/tests/mfplat.c | 11 +++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c
index aaf0714..e522e90 100644
--- a/dlls/mfplat/mediatype.c
+++ b/dlls/mfplat/mediatype.c
@@ -1616,7 +1616,8 @@ static HRESULT WINAPI presentation_descriptor_Clone(IMFPresentationDescriptor *i
         object->descriptors[i] = presentation_desc->descriptors[i];
         IMFStreamDescriptor_AddRef(object->descriptors[i].descriptor);
     }
-    /* FIXME: copy attributes */
+
+    attributes_CopyAllItems(&presentation_desc->attributes, (IMFAttributes *)&object->IMFPresentationDescriptor_iface);
 
     LeaveCriticalSection(&presentation_desc->cs);
 
diff --git a/dlls/mfplat/tests/mfplat.c b/dlls/mfplat/tests/mfplat.c
index 541b236..b349c51 100644
--- a/dlls/mfplat/tests/mfplat.c
+++ b/dlls/mfplat/tests/mfplat.c
@@ -2289,6 +2289,7 @@ static void test_presentation_descriptor(void)
     IMFMediaType *media_type;
     unsigned int i;
     BOOL selected;
+    UINT64 value;
     DWORD count;
     HRESULT hr;
 
@@ -2330,14 +2331,24 @@ static void test_presentation_descriptor(void)
     ok(!!selected, "Unexpected selected state.\n");
     IMFStreamDescriptor_Release(stream_desc2);
 
+    hr = IMFPresentationDescriptor_SetUINT64(pd, &MF_PD_TOTAL_FILE_SIZE, 1);
+    ok(hr == S_OK, "Failed to set attribute, hr %#x.\n", hr);
+
     hr = IMFPresentationDescriptor_Clone(pd, &pd2);
     ok(hr == S_OK, "Failed to clone, hr %#x.\n", hr);
 
     hr = IMFPresentationDescriptor_GetStreamDescriptorByIndex(pd2, 0, &selected, &stream_desc2);
     ok(hr == S_OK, "Failed to get stream descriptor, hr %#x.\n", hr);
     ok(!!selected, "Unexpected selected state.\n");
+    ok(stream_desc2 == stream_desc[0], "Unexpected stream descriptor.\n");
     IMFStreamDescriptor_Release(stream_desc2);
 
+    value = 0;
+    hr = IMFPresentationDescriptor_GetUINT64(pd2, &MF_PD_TOTAL_FILE_SIZE, &value);
+    ok(hr == S_OK, "Failed to get attribute, hr %#x.\n", hr);
+    ok(value == 1, "Unexpected attribute value.\n");
+
+    IMFPresentationDescriptor_Release(pd2);
     IMFPresentationDescriptor_Release(pd);
 
     for (i = 0; i < ARRAY_SIZE(stream_desc); ++i)




More information about the wine-cvs mailing list