[PATCH v7 5/6] wmp: Stub IWMPNetwork get download/buffering progress

Anton Romanov theli.ua at gmail.com
Wed Mar 28 10:31:47 CDT 2018


Signed-off-by: Anton Romanov <theli.ua at gmail.com>
---
 dlls/wmp/player.c      | 27 +++++++++++++++++++++++----
 dlls/wmp/tests/media.c | 16 ++++++++++++++++
 2 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/dlls/wmp/player.c b/dlls/wmp/player.c
index 7b57ec54ae..e67f46d234 100644
--- a/dlls/wmp/player.c
+++ b/dlls/wmp/player.c
@@ -1130,8 +1130,17 @@ static HRESULT WINAPI WMPNetwork_get_bufferingCount(IWMPNetwork *iface, LONG *pl
 static HRESULT WINAPI WMPNetwork_get_bufferingProgress(IWMPNetwork *iface, LONG *plBufferingProgress)
 {
     WindowsMediaPlayer *This = impl_from_IWMPNetwork(iface);
-    FIXME("(%p)->(%p)\n", This, plBufferingProgress);
-    return E_NOTIMPL;
+    TRACE("(%p)->(%p)\n", This, plBufferingProgress);
+    if (!This->filter_graph) {
+        return S_FALSE;
+    }
+    /* Ideally we would use IAMOpenProgress for URL reader but we don't have it in wine (yet)
+     * For file sources FileAsyncReader->Length should work
+     * */
+    FIXME("stub: Returning buffering progress 100\n");
+    *plBufferingProgress = 100;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI WMPNetwork_get_bufferingTime(IWMPNetwork *iface, LONG *plBufferingTime)
@@ -1256,8 +1265,18 @@ static HRESULT WINAPI WMPNetwork_put_maxBandwidth(IWMPNetwork *iface, LONG lMaxB
 static HRESULT WINAPI WMPNetwork_get_downloadProgress(IWMPNetwork *iface, LONG *plDownloadProgress)
 {
     WindowsMediaPlayer *This = impl_from_IWMPNetwork(iface);
-    FIXME("(%p)->(%p)\n", This, plDownloadProgress);
-    return E_NOTIMPL;
+    TRACE("(%p)->(%p)\n", This, plDownloadProgress);
+    if (!This->filter_graph) {
+        return S_FALSE;
+    }
+    /* Ideally we would use IAMOpenProgress for URL reader but we don't have it in wine (yet)
+     * For file sources FileAsyncReader->Length could work or it should just be
+     * 100
+     * */
+    FIXME("stub: Returning download progress 100\n");
+    *plDownloadProgress = 100;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI WMPNetwork_get_encodedFrameRate(IWMPNetwork *iface, LONG *plFrameRate)
diff --git a/dlls/wmp/tests/media.c b/dlls/wmp/tests/media.c
index b6849b0657..8ac2c78f5a 100644
--- a/dlls/wmp/tests/media.c
+++ b/dlls/wmp/tests/media.c
@@ -190,8 +190,10 @@ static void test_wmp(void)
     IOleObject *oleobj;
     static DWORD dw = 100;
     IWMPSettings *settings;
+    IWMPNetwork *network;
     DOUBLE duration;
     VARIANT_BOOL vbool;
+    LONG progress;
     IWMPMedia *media;
     static const WCHAR currentPosition[] = {'c','u','r','r','e','n','t','P','o','s','i','t','i','o','n',0};
     BSTR bstrcurrentPosition = SysAllocString(currentPosition);
@@ -306,6 +308,20 @@ static void test_wmp(void)
             , "unexpected value: %f\n", duration);
     IWMPMedia_Release(media);
 
+    network = NULL;
+    hres = IWMPPlayer4_get_network(player4, &network);
+    ok(hres == S_OK, "get_network failed: %08x\n", hres);
+    ok(network != NULL, "network = NULL\n");
+    progress = 0;
+    hres = IWMPNetwork_get_bufferingProgress(network, &progress);
+    ok(hres == S_OK || broken(hres == S_FALSE), "IWMPNetwork_get_bufferingProgress failed: %08x\n", hres);
+    ok(progress == 100, "unexpected value: %d\n", progress);
+    progress = 0;
+    hres = IWMPNetwork_get_downloadProgress(network, &progress);
+    ok(hres == S_OK, "IWMPNetwork_get_downloadProgress failed: %08x\n", hres);
+    ok(progress == 100, "unexpected value: %d\n", progress);
+    IWMPNetwork_Release(network);
+
     SET_EXPECT(OPENSTATE_CHANGE); todo_wine ok(FALSE || broken(TRUE), "WMP in wine changes open state when stopping\n");
     SET_EXPECT(PLAYSTATE_CHANGE);
     hres = IWMPControls_stop(controls);
-- 
2.16.2




More information about the wine-devel mailing list