vp-build/srcpkgs/electron9/files/sndio-patches/media_audio_linux_audio_man...

44 lines
1.4 KiB
Diff

diff --git a/chromium/media/audio/linux/audio_manager_linux.cc b/chromium/media/audio/linux/audio_manager_linux.cc
index 5d703549372..9e60b40c749 100644
--- media/audio/linux/audio_manager_linux.cc
+++ media/audio/linux/audio_manager_linux.cc
@@ -20,6 +20,10 @@
#include "media/audio/pulse/audio_manager_pulse.h"
#include "media/audio/pulse/pulse_util.h"
#endif
+#if defined(USE_SNDIO)
+#include <sndio.h>
+#include "media/audio/openbsd/audio_manager_openbsd.h"
+#endif
namespace media {
@@ -27,7 +31,8 @@ enum LinuxAudioIO {
kPulse,
kAlsa,
kCras,
- kAudioIOMax = kCras // Must always be equal to largest logged entry.
+ kSndio,
+ kAudioIOMax = kSndio // Must always be equal to largest logged entry.
};
std::unique_ptr<media::AudioManager> CreateAudioManager(
@@ -41,6 +46,17 @@ std::unique_ptr<media::AudioManager> CreateAudioManager(
}
#endif
+#if defined(USE_SNDIO)
+ struct sio_hdl * hdl = NULL;
+ if ((hdl=sio_open(SIO_DEVANY, SIO_PLAY, 1)) != NULL) {
+ sio_close(hdl);
+ UMA_HISTOGRAM_ENUMERATION("Media.LinuxAudioIO", kSndio, kAudioIOMax +1);
+ return std::make_unique<AudioManagerOpenBSD>(std::move(audio_thread),
+ audio_log_factory);
+ }
+ DVLOG(1) << "Sndio is not available on the OS";
+#endif
+
#if defined(USE_PULSEAUDIO)
pa_threaded_mainloop* pa_mainloop = nullptr;
pa_context* pa_context = nullptr;