[PATCH 3/6] mmdevapi: Implement IsOffloadCapable

Andrew Eikum aeikum at codeweavers.com
Thu Oct 1 14:31:27 CDT 2020


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
 dlls/mmdevapi/tests/render.c      | 7 +++++++
 dlls/winealsa.drv/mmdevdrv.c      | 9 +++++++--
 dlls/wineandroid.drv/mmdevdrv.c   | 9 +++++++--
 dlls/winecoreaudio.drv/mmdevdrv.c | 9 +++++++--
 dlls/wineoss.drv/mmdevdrv.c       | 9 +++++++--
 dlls/winepulse.drv/mmdevdrv.c     | 9 +++++++--
 6 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/dlls/mmdevapi/tests/render.c b/dlls/mmdevapi/tests/render.c
index 8d52f483333..e58cc449d86 100644
--- a/dlls/mmdevapi/tests/render.c
+++ b/dlls/mmdevapi/tests/render.c
@@ -140,6 +140,7 @@ static void test_audioclient(void)
     WAVEFORMATEX *pwfx, *pwfx2;
     REFERENCE_TIME t1, t2;
     HANDLE handle;
+    BOOL offload_capable;
 
     hr = IMMDevice_Activate(dev, &IID_IAudioClient2, CLSCTX_INPROC_SERVER,
             NULL, (void**)&ac2);
@@ -253,6 +254,12 @@ static void test_audioclient(void)
     hr = IAudioClient_QueryInterface(ac, &IID_IAudioClient2, (void**)&ac2);
     ok(hr == S_OK, "Failed to query IAudioClient2 interface: %08x\n", hr);
 
+    hr = IAudioClient2_IsOffloadCapable(ac2, AudioCategory_BackgroundCapableMedia, NULL);
+    ok(hr == E_INVALIDARG, "IsOffloadCapable gave wrong error: %08x\n", hr);
+
+    hr = IAudioClient2_IsOffloadCapable(ac2, AudioCategory_BackgroundCapableMedia, &offload_capable);
+    ok(hr == S_OK, "IsOffloadCapable failed: %08x\n", hr);
+
     IAudioClient2_Release(ac2);
 
     test_uninitialized(ac);
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 2c3165385e6..233b0dfda11 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -2661,9 +2661,14 @@ static HRESULT WINAPI AudioClient_IsOffloadCapable(IAudioClient2 *iface,
 {
     ACImpl *This = impl_from_IAudioClient2(iface);
 
-    FIXME("(%p)->(0x%x, %p)\n", This, category, offload_capable);
+    TRACE("(%p)->(0x%x, %p)\n", This, category, offload_capable);
 
-    return E_NOTIMPL;
+    if(!offload_capable)
+        return E_INVALIDARG;
+
+    *offload_capable = FALSE;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI AudioClient_SetClientProperties(IAudioClient2 *iface,
diff --git a/dlls/wineandroid.drv/mmdevdrv.c b/dlls/wineandroid.drv/mmdevdrv.c
index 4e9ada3f55b..8ee1bb12d35 100644
--- a/dlls/wineandroid.drv/mmdevdrv.c
+++ b/dlls/wineandroid.drv/mmdevdrv.c
@@ -1620,9 +1620,14 @@ static HRESULT WINAPI AudioClient_IsOffloadCapable(IAudioClient2 *iface,
 {
     ACImpl *This = impl_from_IAudioClient2(iface);
 
-    FIXME("(%p)->(0x%x, %p)\n", This, category, offload_capable);
+    TRACE("(%p)->(0x%x, %p)\n", This, category, offload_capable);
 
-    return E_NOTIMPL;
+    if(!offload_capable)
+        return E_INVALIDARG;
+
+    *offload_capable = FALSE;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI AudioClient_SetClientProperties(IAudioClient2 *iface,
diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c
index dd2ad916f8d..f32c1d5e417 100644
--- a/dlls/winecoreaudio.drv/mmdevdrv.c
+++ b/dlls/winecoreaudio.drv/mmdevdrv.c
@@ -2228,9 +2228,14 @@ static HRESULT WINAPI AudioClient_IsOffloadCapable(IAudioClient2 *iface,
 {
     ACImpl *This = impl_from_IAudioClient2(iface);
 
-    FIXME("(%p)->(0x%x, %p)\n", This, category, offload_capable);
+    TRACE("(%p)->(0x%x, %p)\n", This, category, offload_capable);
 
-    return E_NOTIMPL;
+    if(!offload_capable)
+        return E_INVALIDARG;
+
+    *offload_capable = FALSE;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI AudioClient_SetClientProperties(IAudioClient2 *iface,
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
index 50c7db2c7c1..9b1cdf3fa7c 100644
--- a/dlls/wineoss.drv/mmdevdrv.c
+++ b/dlls/wineoss.drv/mmdevdrv.c
@@ -1785,9 +1785,14 @@ static HRESULT WINAPI AudioClient_IsOffloadCapable(IAudioClient2 *iface,
 {
     ACImpl *This = impl_from_IAudioClient2(iface);
 
-    FIXME("(%p)->(0x%x, %p)\n", This, category, offload_capable);
+    TRACE("(%p)->(0x%x, %p)\n", This, category, offload_capable);
 
-    return E_NOTIMPL;
+    if(!offload_capable)
+        return E_INVALIDARG;
+
+    *offload_capable = FALSE;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI AudioClient_SetClientProperties(IAudioClient2 *iface,
diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c
index b8386cfe553..e384955b019 100644
--- a/dlls/winepulse.drv/mmdevdrv.c
+++ b/dlls/winepulse.drv/mmdevdrv.c
@@ -2233,9 +2233,14 @@ static HRESULT WINAPI AudioClient_IsOffloadCapable(IAudioClient2 *iface,
 {
     ACImpl *This = impl_from_IAudioClient2(iface);
 
-    FIXME("(%p)->(0x%x, %p)\n", This, category, offload_capable);
+    TRACE("(%p)->(0x%x, %p)\n", This, category, offload_capable);
 
-    return E_NOTIMPL;
+    if(!offload_capable)
+        return E_INVALIDARG;
+
+    *offload_capable = FALSE;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI AudioClient_SetClientProperties(IAudioClient2 *iface,
-- 
2.28.0





More information about the wine-devel mailing list