Improved sound buffer (re)allocation.

This commit is contained in:
OBattler
2022-02-08 20:16:16 +01:00
parent 732db12b31
commit f0d7c659be

View File

@@ -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);