Anton Baskanov : quartz: Handle NULL target format in FilterGraph:: ConvertTimeFormat.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 12 12:15:22 CST 2016


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

Author: Anton Baskanov <baskanov at gmail.com>
Date:   Wed Jan  6 23:29:42 2016 +0600

quartz: Handle NULL target format in FilterGraph::ConvertTimeFormat.

Signed-off-by: Anton Baskanov <baskanov at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/quartz/filtergraph.c       |  3 +++
 dlls/quartz/tests/filtergraph.c | 21 +++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index 5b4b080..5cb670e 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -2530,6 +2530,9 @@ static HRESULT WINAPI MediaSeeking_ConvertTimeFormat(IMediaSeeking *iface, LONGL
     if (!pSourceFormat)
         pSourceFormat = &This->timeformatseek;
 
+    if (!pTargetFormat)
+        pTargetFormat = &This->timeformatseek;
+
     if (IsEqualGUID(pTargetFormat, pSourceFormat))
         *pTarget = Source;
     else
diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c
index 39d6e88..87b1123 100644
--- a/dlls/quartz/tests/filtergraph.c
+++ b/dlls/quartz/tests/filtergraph.c
@@ -255,6 +255,7 @@ static void test_mediacontrol(void)
 {
     HRESULT hr;
     LONGLONG pos = 0xdeadbeef;
+    GUID format = GUID_NULL;
     IMediaSeeking *seeking = NULL;
     IMediaFilter *filter = NULL;
     IMediaControl *control = NULL;
@@ -282,6 +283,26 @@ static void test_mediacontrol(void)
         return;
     }
 
+    format = GUID_NULL;
+    hr = IMediaSeeking_GetTimeFormat(seeking, &format);
+    ok(hr == S_OK, "GetTimeFormat failed: %08x\n", hr);
+    ok(IsEqualGUID(&format, &TIME_FORMAT_MEDIA_TIME), "GetTimeFormat: unexpected format %s\n", wine_dbgstr_guid(&format));
+
+    pos = 0xdeadbeef;
+    hr = IMediaSeeking_ConvertTimeFormat(seeking, &pos, NULL, 0x123456789a, NULL);
+    ok(hr == S_OK, "ConvertTimeFormat failed: %08x\n", hr);
+    ok(pos == 0x123456789a, "ConvertTimeFormat: expected 123456789a, got (%x%08x)\n", (DWORD)(pos >> 32), (DWORD)pos);
+
+    pos = 0xdeadbeef;
+    hr = IMediaSeeking_ConvertTimeFormat(seeking, &pos, &TIME_FORMAT_MEDIA_TIME, 0x123456789a, NULL);
+    ok(hr == S_OK, "ConvertTimeFormat failed: %08x\n", hr);
+    ok(pos == 0x123456789a, "ConvertTimeFormat: expected 123456789a, got (%x%08x)\n", (DWORD)(pos >> 32), (DWORD)pos);
+
+    pos = 0xdeadbeef;
+    hr = IMediaSeeking_ConvertTimeFormat(seeking, &pos, NULL, 0x123456789a, &TIME_FORMAT_MEDIA_TIME);
+    ok(hr == S_OK, "ConvertTimeFormat failed: %08x\n", hr);
+    ok(pos == 0x123456789a, "ConvertTimeFormat: expected 123456789a, got (%x%08x)\n", (DWORD)(pos >> 32), (DWORD)pos);
+
     hr = IMediaSeeking_GetCurrentPosition(seeking, &pos);
     ok(hr == S_OK, "GetCurrentPosition failed: %08x\n", hr);
     ok(pos == 0, "Position != 0 (%x%08x)\n", (DWORD)(pos >> 32), (DWORD)pos);




More information about the wine-cvs mailing list