Revision 38cc9b60
b/audio/alsaaudio.c | ||
---|---|---|
843 | 843 |
return 0; |
844 | 844 |
} |
845 | 845 |
|
846 |
static int alsa_voice_ctl (snd_pcm_t *handle, const char *typ, int pause) |
|
846 |
#define VOICE_CTL_PAUSE 0 |
|
847 |
#define VOICE_CTL_PREPARE 1 |
|
848 |
#define VOICE_CTL_START 2 |
|
849 |
|
|
850 |
static int alsa_voice_ctl (snd_pcm_t *handle, const char *typ, int ctl) |
|
847 | 851 |
{ |
848 | 852 |
int err; |
849 | 853 |
|
850 |
if (pause) {
|
|
854 |
if (ctl == VOICE_CTL_PAUSE) {
|
|
851 | 855 |
err = snd_pcm_drop (handle); |
852 | 856 |
if (err < 0) { |
853 | 857 |
alsa_logerr (err, "Could not stop %s\n", typ); |
... | ... | |
860 | 864 |
alsa_logerr (err, "Could not prepare handle for %s\n", typ); |
861 | 865 |
return -1; |
862 | 866 |
} |
867 |
if (ctl == VOICE_CTL_START) { |
|
868 |
err = snd_pcm_start(handle); |
|
869 |
if (err < 0) { |
|
870 |
alsa_logerr (err, "Could not start handle for %s\n", typ); |
|
871 |
return -1; |
|
872 |
} |
|
873 |
} |
|
863 | 874 |
} |
864 | 875 |
|
865 | 876 |
return 0; |
... | ... | |
884 | 895 |
poll_mode = 0; |
885 | 896 |
} |
886 | 897 |
hw->poll_mode = poll_mode; |
887 |
return alsa_voice_ctl (alsa->handle, "playback", 0);
|
|
898 |
return alsa_voice_ctl (alsa->handle, "playback", VOICE_CTL_PREPARE);
|
|
888 | 899 |
} |
889 | 900 |
|
890 | 901 |
case VOICE_DISABLE: |
... | ... | |
893 | 904 |
hw->poll_mode = 0; |
894 | 905 |
alsa_fini_poll (&alsa->pollhlp); |
895 | 906 |
} |
896 |
return alsa_voice_ctl (alsa->handle, "playback", 1);
|
|
907 |
return alsa_voice_ctl (alsa->handle, "playback", VOICE_CTL_PAUSE);
|
|
897 | 908 |
} |
898 | 909 |
|
899 | 910 |
return -1; |
... | ... | |
1106 | 1117 |
} |
1107 | 1118 |
hw->poll_mode = poll_mode; |
1108 | 1119 |
|
1109 |
return alsa_voice_ctl (alsa->handle, "capture", 0);
|
|
1120 |
return alsa_voice_ctl (alsa->handle, "capture", VOICE_CTL_START);
|
|
1110 | 1121 |
} |
1111 | 1122 |
|
1112 | 1123 |
case VOICE_DISABLE: |
... | ... | |
1115 | 1126 |
hw->poll_mode = 0; |
1116 | 1127 |
alsa_fini_poll (&alsa->pollhlp); |
1117 | 1128 |
} |
1118 |
return alsa_voice_ctl (alsa->handle, "capture", 1);
|
|
1129 |
return alsa_voice_ctl (alsa->handle, "capture", VOICE_CTL_PAUSE);
|
|
1119 | 1130 |
} |
1120 | 1131 |
|
1121 | 1132 |
return -1; |
Also available in: Unified diff