Commit 7605dc0d authored by Chris Robinson's avatar Chris Robinson Committed by Alexandre Julliard

quartz: Stop and free the dsound buffer when needed.

parent 3b5b2331
......@@ -166,6 +166,17 @@ static HRESULT DSoundRender_SendSampleData(DSoundRenderImpl* This, LPBYTE data,
DWORD size2;
DWORD play_pos,buf_free;
if (This->state != State_Running) {
DWORD state;
if (SUCCEEDED(IDirectSoundBuffer_GetStatus(This->dsbuffer, &state))) {
if (state & DSBSTATUS_PLAYING) {
IDirectSoundBuffer_Stop(This->dsbuffer);
This->started = FALSE;
}
}
return S_OK;
}
while (1)
{
hr = IDirectSoundBuffer_GetCurrentPosition(This->dsbuffer, &play_pos, NULL);
......@@ -391,6 +402,13 @@ static ULONG WINAPI DSoundRender_Release(IBaseFilter * iface)
if (This->pClock)
IReferenceClock_Release(This->pClock);
if (This->dsbuffer)
IDirectSoundBuffer_Release(This->dsbuffer);
This->dsbuffer = NULL;
if (This->dsound)
IDirectSound_Release(This->dsound);
This->dsound = NULL;
IPin_Release(This->ppPins[0]);
HeapFree(GetProcessHeap(), 0, This->ppPins);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment