Revision 301901b5
b/audio/alsaaudio.c | ||
---|---|---|
861 | 861 |
|
862 | 862 |
static int alsa_ctl_out (HWVoiceOut *hw, int cmd, ...) |
863 | 863 |
{ |
864 |
va_list ap; |
|
865 |
int poll_mode; |
|
866 | 864 |
ALSAVoiceOut *alsa = (ALSAVoiceOut *) hw; |
867 | 865 |
|
868 |
va_start (ap, cmd); |
|
869 |
poll_mode = va_arg (ap, int); |
|
870 |
va_end (ap); |
|
871 |
|
|
872 | 866 |
switch (cmd) { |
873 | 867 |
case VOICE_ENABLE: |
874 |
ldebug ("enabling voice\n"); |
|
875 |
if (poll_mode && alsa_poll_out (hw)) { |
|
876 |
poll_mode = 0; |
|
868 |
{ |
|
869 |
va_list ap; |
|
870 |
int poll_mode; |
|
871 |
|
|
872 |
va_start (ap, cmd); |
|
873 |
poll_mode = va_arg (ap, int); |
|
874 |
va_end (ap); |
|
875 |
|
|
876 |
ldebug ("enabling voice\n"); |
|
877 |
if (poll_mode && alsa_poll_out (hw)) { |
|
878 |
poll_mode = 0; |
|
879 |
} |
|
880 |
hw->poll_mode = poll_mode; |
|
881 |
return alsa_voice_ctl (alsa->handle, "playback", 0); |
|
877 | 882 |
} |
878 |
hw->poll_mode = poll_mode; |
|
879 |
return alsa_voice_ctl (alsa->handle, "playback", 0); |
|
880 | 883 |
|
881 | 884 |
case VOICE_DISABLE: |
882 | 885 |
ldebug ("disabling voice\n"); |
b/audio/ossaudio.c | ||
---|---|---|
583 | 583 |
static int oss_ctl_out (HWVoiceOut *hw, int cmd, ...) |
584 | 584 |
{ |
585 | 585 |
int trig; |
586 |
va_list ap; |
|
587 |
int poll_mode; |
|
588 | 586 |
OSSVoiceOut *oss = (OSSVoiceOut *) hw; |
589 | 587 |
|
590 |
va_start (ap, cmd); |
|
591 |
poll_mode = va_arg (ap, int); |
|
592 |
va_end (ap); |
|
593 |
|
|
594 | 588 |
switch (cmd) { |
595 | 589 |
case VOICE_ENABLE: |
596 |
ldebug ("enabling voice\n"); |
|
597 |
if (poll_mode && oss_poll_out (hw)) { |
|
598 |
poll_mode = 0; |
|
599 |
} |
|
600 |
hw->poll_mode = poll_mode; |
|
590 |
{ |
|
591 |
va_list ap; |
|
592 |
int poll_mode; |
|
601 | 593 |
|
602 |
if (!oss->mmapped) {
|
|
603 |
return 0;
|
|
604 |
}
|
|
594 |
va_start (ap, cmd);
|
|
595 |
poll_mode = va_arg (ap, int);
|
|
596 |
va_end (ap);
|
|
605 | 597 |
|
606 |
audio_pcm_info_clear_buf (&hw->info, oss->pcm_buf, hw->samples); |
|
607 |
trig = PCM_ENABLE_OUTPUT; |
|
608 |
if (ioctl (oss->fd, SNDCTL_DSP_SETTRIGGER, &trig) < 0) { |
|
609 |
oss_logerr ( |
|
610 |
errno, |
|
611 |
"SNDCTL_DSP_SETTRIGGER PCM_ENABLE_OUTPUT failed\n" |
|
612 |
); |
|
613 |
return -1; |
|
598 |
ldebug ("enabling voice\n"); |
|
599 |
if (poll_mode && oss_poll_out (hw)) { |
|
600 |
poll_mode = 0; |
|
601 |
} |
|
602 |
hw->poll_mode = poll_mode; |
|
603 |
|
|
604 |
if (!oss->mmapped) { |
|
605 |
return 0; |
|
606 |
} |
|
607 |
|
|
608 |
audio_pcm_info_clear_buf (&hw->info, oss->pcm_buf, hw->samples); |
|
609 |
trig = PCM_ENABLE_OUTPUT; |
|
610 |
if (ioctl (oss->fd, SNDCTL_DSP_SETTRIGGER, &trig) < 0) { |
|
611 |
oss_logerr ( |
|
612 |
errno, |
|
613 |
"SNDCTL_DSP_SETTRIGGER PCM_ENABLE_OUTPUT failed\n" |
|
614 |
); |
|
615 |
return -1; |
|
616 |
} |
|
614 | 617 |
} |
615 | 618 |
break; |
616 | 619 |
|
Also available in: Unified diff