Andrew Eikum : mmdevapi: Use a sane default if no buffer size is requested.

Alexandre Julliard julliard at winehq.org
Mon Jul 18 12:47:02 CDT 2011


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

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Mon Jul 18 11:19:30 2011 -0500

mmdevapi: Use a sane default if no buffer size is requested.

---

 dlls/mmdevapi/tests/render.c      |    9 +++++++++
 dlls/winealsa.drv/mmdevdrv.c      |    2 ++
 dlls/winecoreaudio.drv/mmdevdrv.c |    2 ++
 dlls/wineoss.drv/mmdevdrv.c       |    2 ++
 4 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/dlls/mmdevapi/tests/render.c b/dlls/mmdevapi/tests/render.c
index ad81709..4274e83 100644
--- a/dlls/mmdevapi/tests/render.c
+++ b/dlls/mmdevapi/tests/render.c
@@ -211,6 +211,15 @@ static void test_audioclient(void)
     hr = IAudioClient_Initialize(ac, AUDCLNT_SHAREMODE_SHARED, 0, 5000000, 0, NULL, NULL);
     ok(hr == E_POINTER, "Initialize with null format returns %08x\n", hr);
 
+    hr = IAudioClient_Initialize(ac, AUDCLNT_SHAREMODE_SHARED, 0, 0, 0, pwfx, NULL);
+    ok(hr == S_OK, "Initialize with 0 buffer size returns %08x\n", hr);
+
+    IAudioClient_Release(ac);
+
+    hr = IMMDevice_Activate(dev, &IID_IAudioClient, CLSCTX_INPROC_SERVER,
+            NULL, (void**)&ac);
+    ok(hr == S_OK, "Activation failed with %08x\n", hr);
+
     hr = IAudioClient_Initialize(ac, AUDCLNT_SHAREMODE_SHARED, 0, 5000000, 0, pwfx, NULL);
     ok(hr == S_OK, "Valid Initialize returns %08x\n", hr);
 
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 080887a..4d92b17 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -799,6 +799,8 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient *iface,
         goto exit;
     }
 
+    if(!duration)
+        duration = 300000; /* 0.03s */
     This->bufsize_frames = ceil((duration / 10000000.) * fmt->nSamplesPerSec);
     This->local_buffer = HeapAlloc(GetProcessHeap(), 0,
             This->bufsize_frames * fmt->nBlockAlign);
diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c
index 0f73095..fcb337d 100644
--- a/dlls/winecoreaudio.drv/mmdevdrv.c
+++ b/dlls/winecoreaudio.drv/mmdevdrv.c
@@ -862,6 +862,8 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient *iface,
     }else
         This->period_ms = MinimumPeriod / 10000;
 
+    if(!duration)
+        duration = 300000; /* 0.03s */
     This->bufsize_frames = ceil(fmt->nSamplesPerSec * (duration / 10000000.));
 
     if(This->dataflow == eCapture){
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
index ac684f7..0fd0364 100644
--- a/dlls/wineoss.drv/mmdevdrv.c
+++ b/dlls/wineoss.drv/mmdevdrv.c
@@ -819,6 +819,8 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient *iface,
     else
         This->period_us = DefaultPeriod / 10;
 
+    if(!duration)
+        duration = 300000; /* 0.03s */
     This->bufsize_frames = ceil(fmt->nSamplesPerSec * (duration / 10000000.));
     This->local_buffer = HeapAlloc(GetProcessHeap(), 0,
             This->bufsize_frames * fmt->nBlockAlign);




More information about the wine-cvs mailing list