--- np2/x11/soundmng.c 2003/11/16 16:43:45 1.1 +++ np2/x11/soundmng.c 2003/11/28 16:31:08 1.4 @@ -95,9 +95,9 @@ static BOOL nosound_setup(void); static void PARTSCALL (*fnmix)(SINT16* dst, const SINT32* src, UINT size); #if defined(__GNUC__) && (defined(i386) || defined(__i386__)) -void PARTSCALL _satuation_s16(SINT16 *dst, const SINT32 *src, UINT size); -void PARTSCALL _satuation_s16x(SINT16 *dst, const SINT32 *src, UINT size); -void PARTSCALL satuation_s16mmx(SINT16 *dst, const SINT32 *src, UINT size); +void PARTSCALL _saturation_s16(SINT16 *dst, const SINT32 *src, UINT size); +void PARTSCALL _saturation_s16x(SINT16 *dst, const SINT32 *src, UINT size); +void PARTSCALL saturation_s16mmx(SINT16 *dst, const SINT32 *src, UINT size); #endif /* @@ -224,21 +224,17 @@ UINT soundmng_create(UINT rate, UINT bufmsec) { UINT samples; -#if defined(VERMOUTH_LIB) - UINT num; -#endif if (opened || ((rate != 11025) && (rate != 22050) && (rate != 44100))) { return 0; } - snddrv_setup(); - - if (bufmsec < 50) { - bufmsec = 50; - } else if (bufmsec > 1000) { + if (bufmsec < 20) + bufmsec = 20; + else if (bufmsec > 1000) bufmsec = 1000; - } + + snddrv_setup(); samples = (rate * bufmsec) / 1000 / 2; samples = calc_blocksize(samples); @@ -253,10 +249,7 @@ soundmng_create(UINT rate, UINT bufmsec) #if defined(VERMOUTH_LIB) vermouth_module = midimod_create(rate); - for (num = 0; num < 128; num++) { - midimod_loadprogram(vermouth_module, num); - midimod_loadrhythm(vermouth_module, num); - } + midimod_loadall(vermouth_module); #endif soundmng_setreverse(FALSE); @@ -293,6 +286,7 @@ soundmng_destroy(void) (*snddrv.sndstop)(); (*snddrv.drvterm)(); buffer_destroy(); + nosound_setup(); audio_fd = -1; opened = FALSE; } @@ -358,12 +352,12 @@ soundmng_setreverse(BOOL reverse) #if defined(__GNUC__) && (defined(i386) || defined(__i386__)) if (!reverse) { if (mmxflag & (MMXFLAG_NOTSUPPORT|MMXFLAG_DISABLE)) { - fnmix = _satuation_s16; + fnmix = _saturation_s16; } else { - fnmix = satuation_s16mmx; + fnmix = saturation_s16mmx; } } else { - fnmix = _satuation_s16x; + fnmix = _saturation_s16x; } #else if (!reverse) { @@ -606,23 +600,19 @@ buffer_play(void *arg) size_t len = opna_frame; size_t s; ssize_t r; + int nextbuf; UNUSED(arg); - buf = (char *)_MALLOC(len, "sound playing buf"); - if (buf == NULL) { - fprintf(stderr, "buffer_play: can't alloc memory\n"); - return NULL; - } - is_proc = TRUE; while (is_proc) { + nextbuf = sound_nextbuf; if (sound_event) memset(sound_event, 0, len); - memcpy(buf, sound_buffer[sound_nextbuf], len); sound_nextbuf = (sound_nextbuf + 1) % NSOUNDBUFFER; sound_event = sound_buffer[sound_nextbuf]; + buf = sound_buffer[nextbuf]; s = 0; for (;;) { r = write(audio_fd, buf + s, len - s); @@ -633,7 +623,6 @@ buffer_play(void *arg) } } } - _MFREE(buf); is_proc = FALSE; return NULL; @@ -659,7 +648,7 @@ snddrv_stop(void) #if defined(__GNUC__) && (defined(i386) || defined(__i386__)) void PARTSCALL -_satuation_s16(SINT16 *dst, const SINT32 *src, UINT size) +_saturation_s16(SINT16 *dst, const SINT32 *src, UINT size) { asm volatile ( "movl %0, %%ecx;" @@ -690,7 +679,7 @@ _satuation_s16(SINT16 *dst, const SINT32 } void PARTSCALL -_satuation_s16x(SINT16 *dst, const SINT32 *src, UINT size) +_saturation_s16x(SINT16 *dst, const SINT32 *src, UINT size) { asm volatile ( @@ -733,7 +722,7 @@ _satuation_s16x(SINT16 *dst, const SINT3 } void PARTSCALL -satuation_s16mmx(SINT16 *dst, const SINT32 *src, UINT size) +saturation_s16mmx(SINT16 *dst, const SINT32 *src, UINT size) { asm volatile (