Commit 4787c71d179ae9b67b0e682a2a95b6ceca4e68c4

Authored by bellard
1 parent 541e0844

debug fix (malc)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1619 c046a42c-6fe2-441c-8c8c-71466251a162
audio/alsaaudio.c
@@ -570,36 +570,39 @@ static int alsa_run_out (HWVoiceOut *hw) @@ -570,36 +570,39 @@ static int alsa_run_out (HWVoiceOut *hw)
570 570
571 hw->clip (dst, src, convert_samples); 571 hw->clip (dst, src, convert_samples);
572 572
573 - again:  
574 - written = snd_pcm_writei (alsa->handle, dst, convert_samples);  
575 -  
576 - if (written < 0) {  
577 - switch (written) {  
578 - case -EPIPE:  
579 - if (!alsa_recover (alsa->handle)) {  
580 - goto again;  
581 - }  
582 - dolog (  
583 - "Failed to write %d frames to %p, handle %p not prepared\n",  
584 - convert_samples,  
585 - dst,  
586 - alsa->handle  
587 - );  
588 - goto exit; 573 + while (convert_samples) {
  574 + written = snd_pcm_writei (alsa->handle, dst, convert_samples);
589 575
590 - case -EAGAIN:  
591 - goto again; 576 + if (written < 0) {
  577 + switch (written) {
  578 + case -EPIPE:
  579 + if (!alsa_recover (alsa->handle)) {
  580 + continue;
  581 + }
  582 + dolog ("Failed to write %d frames to %p, "
  583 + "handle %p not prepared\n",
  584 + convert_samples,
  585 + dst,
  586 + alsa->handle);
  587 + goto exit;
592 588
593 - default:  
594 - alsa_logerr (written, "Failed to write %d frames to %p\n",  
595 - convert_samples, dst);  
596 - goto exit; 589 + case -EAGAIN:
  590 + continue;
  591 +
  592 + default:
  593 + alsa_logerr (written, "Failed to write %d frames to %p\n",
  594 + convert_samples, dst);
  595 + goto exit;
  596 + }
597 } 597 }
598 - }  
599 598
600 - mixeng_clear (src, written);  
601 - rpos = (rpos + written) % hw->samples;  
602 - samples -= written; 599 + mixeng_clear (src, written);
  600 + rpos = (rpos + written) % hw->samples;
  601 + samples -= written;
  602 + convert_samples -= written;
  603 + dst = advance (dst, written << hw->info.shift);
  604 + src += written;
  605 + }
603 } 606 }
604 607
605 exit: 608 exit:
@@ -661,8 +664,8 @@ static int alsa_init_out (HWVoiceOut *hw, audsettings_t *as) @@ -661,8 +664,8 @@ static int alsa_init_out (HWVoiceOut *hw, audsettings_t *as)
661 664
662 alsa->pcm_buf = audio_calloc (AUDIO_FUNC, obt.samples, 1 << hw->info.shift); 665 alsa->pcm_buf = audio_calloc (AUDIO_FUNC, obt.samples, 1 << hw->info.shift);
663 if (!alsa->pcm_buf) { 666 if (!alsa->pcm_buf) {
664 - dolog ("Could not allocate DAC buffer (%d bytes)\n",  
665 - hw->samples << hw->info.shift); 667 + dolog ("Could not allocate DAC buffer (%d samples, each %d bytes)\n",
  668 + hw->samples, 1 << hw->info.shift);
666 alsa_anal_close (&handle); 669 alsa_anal_close (&handle);
667 return -1; 670 return -1;
668 } 671 }
@@ -751,8 +754,8 @@ static int alsa_init_in (HWVoiceIn *hw, audsettings_t *as) @@ -751,8 +754,8 @@ static int alsa_init_in (HWVoiceIn *hw, audsettings_t *as)
751 754
752 alsa->pcm_buf = audio_calloc (AUDIO_FUNC, hw->samples, 1 << hw->info.shift); 755 alsa->pcm_buf = audio_calloc (AUDIO_FUNC, hw->samples, 1 << hw->info.shift);
753 if (!alsa->pcm_buf) { 756 if (!alsa->pcm_buf) {
754 - dolog ("Could not allocate ADC buffer (%d bytes)\n",  
755 - hw->samples << hw->info.shift); 757 + dolog ("Could not allocate ADC buffer (%d samples, each %d bytes)\n",
  758 + hw->samples, 1 << hw->info.shift);
756 alsa_anal_close (&handle); 759 alsa_anal_close (&handle);
757 return -1; 760 return -1;
758 } 761 }
audio/audio_int.h
@@ -216,7 +216,7 @@ static inline int audio_need_to_swap_endian (int endianness) @@ -216,7 +216,7 @@ static inline int audio_need_to_swap_endian (int endianness)
216 #if defined __GNUC__ 216 #if defined __GNUC__
217 #define GCC_ATTR __attribute__ ((__unused__, __format__ (__printf__, 1, 2))) 217 #define GCC_ATTR __attribute__ ((__unused__, __format__ (__printf__, 1, 2)))
218 #define INIT_FIELD(f) . f 218 #define INIT_FIELD(f) . f
219 -#define GCC_FMT_ATTR(n, m) __attribute__ ((__format__ (printf, n, m))) 219 +#define GCC_FMT_ATTR(n, m) __attribute__ ((__format__ (__printf__, n, m)))
220 #else 220 #else
221 #define GCC_ATTR /**/ 221 #define GCC_ATTR /**/
222 #define INIT_FIELD(f) /**/ 222 #define INIT_FIELD(f) /**/