original buffer parameters stored for OpenAL compatibility

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@603 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
avolkov
2003-01-30 02:02:48 +00:00
parent 59fe69b434
commit 4116867a54
2 changed files with 20 additions and 6 deletions
+14 -6
View File
@@ -1187,6 +1187,10 @@ mixSDL_GenBuffers (uint32 n, mixSDL_Object *pbufobj)
buf->size = 0; buf->size = 0;
buf->next = 0; buf->next = 0;
buf->orgdata = 0; buf->orgdata = 0;
buf->orgfreq = 0;
buf->orgsize = 0;
buf->orgchannels = 0;
buf->orgchansize = 0;
*pbufobj = (mixSDL_Object) buf; *pbufobj = (mixSDL_Object) buf;
} }
@@ -1322,22 +1326,21 @@ mixSDL_GetBufferi (mixSDL_Object bufobj, mixSDL_BufferProp pname,
} }
else else
{ {
/* All buffers are converted when filled /* Return original buffer values
* so we simply return mixer values
*/ */
switch (pname) switch (pname)
{ {
case MIX_FREQUENCY: case MIX_FREQUENCY:
*value = mixer_spec.freq; *value = buf->orgfreq;
break; break;
case MIX_BITS: case MIX_BITS:
*value = mixer_chansize << 3; *value = buf->orgchansize << 3;
break; break;
case MIX_CHANNELS: case MIX_CHANNELS:
*value = mixer_spec.channels; *value = buf->orgchannels;
break; break;
case MIX_SIZE: case MIX_SIZE:
*value = buf->size; *value = buf->orgsize;
break; break;
case MIX_DATA: case MIX_DATA:
*value = (mixSDL_Object) buf->orgdata; *value = (mixSDL_Object) buf->orgdata;
@@ -1404,7 +1407,12 @@ mixSDL_BufferData (mixSDL_Object bufobj, uint32 format, void* data,
HFree (buf->data); HFree (buf->data);
buf->data = 0; buf->data = 0;
buf->size = 0; buf->size = 0;
/* Store original buffer values for OpenAL compatibility */
buf->orgdata = data; buf->orgdata = data;
buf->orgfreq = freq;
buf->orgsize = size;
buf->orgchannels = MIX_FORMAT_CHANS (format);
buf->orgchansize = MIX_FORMAT_BPC (format);
conv.srcsamples = size / MIX_FORMAT_SAMPSIZE (format); conv.srcsamples = size / MIX_FORMAT_SAMPSIZE (format);
conv.dstsamples = (uint32) conv.dstsamples = (uint32)
@@ -144,7 +144,13 @@ typedef struct _mixSDL_Buffer
mixSDL_BufferState state; mixSDL_BufferState state;
uint8 *data; uint8 *data;
uint32 size; uint32 size;
/* original buffer values for OpenAL compat */
void* orgdata; void* orgdata;
uint32 orgfreq;
uint32 orgsize;
uint32 orgchannels;
uint32 orgchansize;
/* next buffer in chain */
struct _mixSDL_Buffer *next; struct _mixSDL_Buffer *next;
} mixSDL_Buffer; } mixSDL_Buffer;