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