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