Module: wine Branch: master Commit: 80fd691e9e8f78f978ca0537875849ac9bf60313 URL: http://source.winehq.org/git/wine.git/?a=commit;h=80fd691e9e8f78f978ca053787...
Author: Andrew Eikum aeikum@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);