Improved sound buffer (re)allocation.
This commit is contained in:
@@ -354,16 +354,23 @@ sound_cd_thread(void *param)
|
|||||||
static void
|
static void
|
||||||
sound_realloc_buffers(void)
|
sound_realloc_buffers(void)
|
||||||
{
|
{
|
||||||
if (outbuffer_ex != NULL)
|
if (outbuffer_ex != NULL) {
|
||||||
free(outbuffer_ex);
|
free(outbuffer_ex);
|
||||||
|
outbuffer_ex = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (outbuffer_ex_int16 != NULL)
|
if (outbuffer_ex_int16 != NULL) {
|
||||||
free(outbuffer_ex_int16);
|
free(outbuffer_ex_int16);
|
||||||
|
outbuffer_ex_int16 = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (sound_is_float)
|
if (sound_is_float) {
|
||||||
outbuffer_ex = calloc(SOUNDBUFLEN * 2, sizeof(float));
|
outbuffer_ex = calloc(SOUNDBUFLEN * 2, sizeof(float));
|
||||||
else
|
memset(outbuffer_ex, 0x00, SOUNDBUFLEN * 2, sizeof(float));
|
||||||
|
} else {
|
||||||
outbuffer_ex_int16 = calloc(SOUNDBUFLEN * 2, sizeof(int16_t));
|
outbuffer_ex_int16 = calloc(SOUNDBUFLEN * 2, sizeof(int16_t));
|
||||||
|
memset(outbuffer_ex_int16, 0x00, SOUNDBUFLEN * 2, sizeof(int16_t));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -376,7 +383,9 @@ sound_init(void)
|
|||||||
outbuffer_ex = NULL;
|
outbuffer_ex = NULL;
|
||||||
outbuffer_ex_int16 = NULL;
|
outbuffer_ex_int16 = NULL;
|
||||||
|
|
||||||
|
outbuffer = NULL;
|
||||||
outbuffer = calloc(SOUNDBUFLEN * 2, sizeof(int32_t));
|
outbuffer = calloc(SOUNDBUFLEN * 2, sizeof(int32_t));
|
||||||
|
memset(outbuffer, 0x00, SOUNDBUFLEN * 2, sizeof(int32_t));
|
||||||
|
|
||||||
for (i = 0; i < CDROM_NUM; i++) {
|
for (i = 0; i < CDROM_NUM; i++) {
|
||||||
if (cdrom[i].bus_type != CDROM_BUS_DISABLED)
|
if (cdrom[i].bus_type != CDROM_BUS_DISABLED)
|
||||||
@@ -432,7 +441,7 @@ sound_poll(void *priv)
|
|||||||
if (sound_pos_global == SOUNDBUFLEN) {
|
if (sound_pos_global == SOUNDBUFLEN) {
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
memset(outbuffer, 0, SOUNDBUFLEN * 2 * sizeof(int32_t));
|
memset(outbuffer, 0x00, SOUNDBUFLEN * 2 * sizeof(int32_t));
|
||||||
|
|
||||||
for (c = 0; c < sound_handlers_num; c++)
|
for (c = 0; c < sound_handlers_num; c++)
|
||||||
sound_handlers[c].get_buffer(outbuffer, SOUNDBUFLEN, sound_handlers[c].priv);
|
sound_handlers[c].get_buffer(outbuffer, SOUNDBUFLEN, sound_handlers[c].priv);
|
||||||
|
|||||||
Reference in New Issue
Block a user