diff options
author | balrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-05-02 02:24:55 +0000 |
---|---|---|
committer | balrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-05-02 02:24:55 +0000 |
commit | deb9d2eea7c385c9d19d15be9a7576cbfe9ed5a5 (patch) | |
tree | 5d0e3ad901962a25bdbe49ae70b042b02ac42603 /audio/esdaudio.c | |
parent | b0f6edb18edd30f9eb0d5789ceb78f2f04e95d8f (diff) | |
download | qemu-deb9d2eea7c385c9d19d15be9a7576cbfe9ed5a5.zip qemu-deb9d2eea7c385c9d19d15be9a7576cbfe9ed5a5.tar.gz qemu-deb9d2eea7c385c9d19d15be9a7576cbfe9ed5a5.tar.bz2 |
Audio endianness and mutex usage fixes (malc.git).
From http://repo.or.cz/w/qemu/malc.git?a=shortlog;h=refs/heads/audio :
Implicitly lock the mutex at startup of playback/capture threads, otherwise
pthread_mutex_destroy (in audio_pt_fini) fails with EBUSY.
Endianness fix.
Remove a c&p residue.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4296 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'audio/esdaudio.c')
-rw-r--r-- | audio/esdaudio.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/audio/esdaudio.c b/audio/esdaudio.c index fa42348..d91468b 100644 --- a/audio/esdaudio.c +++ b/audio/esdaudio.c @@ -84,6 +84,10 @@ static void *qesd_thread_out (void *arg) threshold = conf.divisor ? hw->samples / conf.divisor : 0; + if (audio_pt_lock (&esd->pt, AUDIO_FUNC)) { + return NULL; + } + for (;;) { int decr, to_mix, rpos; @@ -215,13 +219,10 @@ static int qesd_init_out (HWVoiceOut *hw, audsettings_t *as) default: dolog ("Internal logic error: Bad audio format %d\n", as->fmt); -#ifdef DEBUG_FMOD - abort (); -#endif goto deffmt; } - obt_as.endianness = 0; + obt_as.endianness = AUDIO_HOST_ENDIANNESS; audio_pcm_init_info (&hw->info, &obt_as); @@ -315,6 +316,10 @@ static void *qesd_thread_in (void *arg) threshold = conf.divisor ? hw->samples / conf.divisor : 0; + if (audio_pt_lock (&esd->pt, AUDIO_FUNC)) { + return NULL; + } + for (;;) { int incr, to_grab, wpos; @@ -447,7 +452,7 @@ static int qesd_init_in (HWVoiceIn *hw, audsettings_t *as) obt_as.fmt = AUD_FMT_S16; break; } - obt_as.endianness = 0; + obt_as.endianness = AUDIO_HOST_ENDIANNESS; audio_pcm_init_info (&hw->info, &obt_as); |