summaryrefslogtreecommitdiffstats
path: root/drivers/alsa/audio_driver_alsa.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/alsa/audio_driver_alsa.cpp')
-rw-r--r--drivers/alsa/audio_driver_alsa.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp
index 689f76389b..966137920a 100644
--- a/drivers/alsa/audio_driver_alsa.cpp
+++ b/drivers/alsa/audio_driver_alsa.cpp
@@ -44,7 +44,8 @@ extern int initialize_pulse(int verbose);
#endif
Error AudioDriverALSA::init_output_device() {
- mix_rate = GLOBAL_GET("audio/driver/mix_rate");
+ mix_rate = _get_configured_mix_rate();
+
speaker_mode = SPEAKER_MODE_STEREO;
channels = 2;
@@ -169,6 +170,18 @@ Error AudioDriverALSA::init() {
return ERR_CANT_OPEN;
}
#endif
+ bool ver_ok = false;
+ String version = String::utf8(snd_asoundlib_version());
+ Vector<String> ver_parts = version.split(".");
+ if (ver_parts.size() >= 2) {
+ ver_ok = ((ver_parts[0].to_int() == 1 && ver_parts[1].to_int() >= 1)) || (ver_parts[0].to_int() > 1); // 1.1.0
+ }
+ print_verbose(vformat("ALSA %s detected.", version));
+ if (!ver_ok) {
+ print_verbose("Unsupported ALSA library version!");
+ return ERR_CANT_OPEN;
+ }
+
active.clear();
exit_thread.clear();
@@ -326,7 +339,9 @@ void AudioDriverALSA::finish_output_device() {
void AudioDriverALSA::finish() {
exit_thread.set();
- thread.wait_to_finish();
+ if (thread.is_started()) {
+ thread.wait_to_finish();
+ }
finish_output_device();
}