From 1a2c5ea594fe22874c4d2fd12aa0e60e738c6970 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 1 Aug 2011 17:07:24 -0700 Subject: [PATCH] Check for the extension to determine support instead of the function --- buffer.c | 19 ++++++++++--------- primary.c | 10 ++++++---- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/buffer.c b/buffer.c index b09fc33..59069cf 100644 --- a/buffer.c +++ b/buffer.c @@ -720,8 +720,8 @@ static HRESULT DS8Data_Create(DS8Data **ppv, const DSBUFFERDESC *desc, DS8Primar { const char *fmt_str; - if(!(pBuffer->dsbflags&DSBCAPS_STATIC) && !prim->ExtAL.BufferSubData && - !prim->ExtAL.BufferDataStatic) + if(!(pBuffer->dsbflags&DSBCAPS_STATIC) && !prim->SupportedExt[SOFT_BUFFER_SUB_DATA] && + !prim->SupportedExt[EXT_STATIC_BUFFER]) { ALCint refresh = FAKE_REFRESH_COUNT; ALuint newSize; @@ -1079,7 +1079,8 @@ static HRESULT WINAPI DS8Buffer_GetCurrentPosition(IDirectSoundBuffer8 *iface, D pos *= This->buffer->segsize; writecursor = This->curidx * This->buffer->segsize; } - else if(This->ExtAL->BufferSubData || This->ExtAL->BufferSamplesSOFT) + else if(This->primary->SupportedExt[SOFT_BUFFER_SUB_DATA] || + This->primary->SupportedExt[SOFT_BUFFER_SAMPLES]) { ALint rwpos[2] = { 0, 0 }; @@ -1364,16 +1365,16 @@ static HRESULT WINAPI DS8Buffer_Initialize(IDirectSoundBuffer8 *iface, IDirectSo else memset(buf->data, 0x00, buf->buf_size); - if(This->ExtAL->BufferDataStatic) + if(This->primary->SupportedExt[EXT_STATIC_BUFFER]) This->ExtAL->BufferDataStatic(buf->buffers[0], buf->buf_format, buf->data, buf->buf_size, buf->format.Format.nSamplesPerSec); - else if(This->ExtAL->BufferSamplesSOFT) + else if(This->primary->SupportedExt[SOFT_BUFFER_SAMPLES]) This->ExtAL->BufferSamplesSOFT(buf->buffers[0], buf->format.Format.nSamplesPerSec, buf->buf_format, buf->buf_size/buf->format.Format.nBlockAlign, buf->in_chans, buf->in_type, buf->data); - else if(This->ExtAL->BufferSubData) + else if(This->primary->SupportedExt[SOFT_BUFFER_SUB_DATA]) alBufferData(buf->buffers[0], buf->buf_format, buf->data, buf->buf_size, buf->format.Format.nSamplesPerSec); @@ -1826,10 +1827,10 @@ static HRESULT WINAPI DS8Buffer_Unlock(IDirectSoundBuffer8 *iface, void *ptr1, D if(!len1 && !len2) goto out; - if(This->ExtAL->BufferDataStatic) + if(This->primary->SupportedExt[EXT_STATIC_BUFFER]) goto out; - if(This->ExtAL->BufferSubSamplesSOFT) + if(This->primary->SupportedExt[SOFT_BUFFER_SAMPLES]) { const WAVEFORMATEX *format = &buf->format.Format; @@ -1847,7 +1848,7 @@ static HRESULT WINAPI DS8Buffer_Unlock(IDirectSoundBuffer8 *iface, void *ptr1, D buf->in_chans, buf->in_type, ptr2); getALError(); } - else if(This->ExtAL->BufferSubData) + else if(This->primary->SupportedExt[SOFT_BUFFER_SUB_DATA]) { const WAVEFORMATEX *format = &buf->format.Format; diff --git a/primary.c b/primary.c index 4a39ca4..6620b48 100644 --- a/primary.c +++ b/primary.c @@ -130,8 +130,9 @@ static DWORD CALLBACK ThreadProc(void *dwUser) /* OpenAL doesn't support our lovely buffer extensions * so just make sure enough buffers are queued */ - if(!prim->ExtAL.BufferSamplesSOFT && !prim->ExtAL.BufferSubData && - !prim->ExtAL.BufferDataStatic) + if(!prim->SupportedExt[SOFT_BUFFER_SAMPLES] && + !prim->SupportedExt[SOFT_BUFFER_SUB_DATA] && + !prim->SupportedExt[EXT_STATIC_BUFFER]) { for(i = 0;i < prim->nbuffers;++i) { @@ -330,8 +331,9 @@ HRESULT DS8Primary_Create(DS8Primary **ppv, DS8Impl *parent) */ This->buf_size = 32768; - if(!This->ExtAL.BufferSubData && !This->ExtAL.BufferSamplesSOFT && - !This->ExtAL.BufferDataStatic) + if(!This->SupportedExt[SOFT_BUFFER_SUB_DATA] && + !This->SupportedExt[SOFT_BUFFER_SAMPLES] && + !This->SupportedExt[EXT_STATIC_BUFFER]) { ERR("Missing alBufferSubDataSOFT, alBufferSamplesSOFT , and alBufferDataStatic on device '%s', sound playback quality may be degraded\n", alcGetString(parent->device, ALC_DEVICE_SPECIFIER)); -- 2.11.4.GIT