$OpenBSD: patch-libs_hydrogen_src_hydrogen_cpp,v 1.2 2019/01/08 21:24:29 sebastia Exp $
Index: libs/hydrogen/src/hydrogen.cpp
--- libs/hydrogen/src/hydrogen.cpp.orig
+++ libs/hydrogen/src/hydrogen.cpp
@@ -69,6 +69,8 @@
 #include <hydrogen/playlist.h>
 
 #include "IO/OssDriver.h"
+#include "IO/SndioAudioDriver.h"
+#include "IO/SndioMidiDriver.h"
 #include "IO/FakeDriver.h"
 #include "IO/AlsaAudioDriver.h"
 #include "IO/PortAudioDriver.h"
@@ -1554,6 +1556,12 @@ AudioOutput* createDriver( const QString& sDriver )
 			delete pDriver;
 			pDriver = NULL;
 		}
+	} else if ( sDriver == "SndioAudio" ) {
+		pDriver = new SndioAudioDriver( audioEngine_process );
+		if ( pDriver->get_class_name() == "NullDriver" ) {
+			delete pDriver;
+			pDriver = NULL;
+		}
 	} else if ( sDriver == "Jack" ) {
 		pDriver = new JackOutput( audioEngine_process );
 		if ( pDriver->get_class_name() == "NullDriver" ) {
@@ -1641,6 +1649,7 @@ void audioEngine_startAudioDrivers()
 	QString sAudioDriver = preferencesMng->m_sAudioDriver;
 //	sAudioDriver = "Auto";
 	if ( sAudioDriver == "Auto" ) {
+	    if ( ( m_pAudioDriver = createDriver( "SndioAudio" ) ) == NULL ) {
 		if ( ( m_pAudioDriver = createDriver( "Jack" ) ) == NULL ) {
 			if ( ( m_pAudioDriver = createDriver( "Alsa" ) ) == NULL ) {
 				if ( ( m_pAudioDriver = createDriver( "CoreAudio" ) ) == NULL ) {
@@ -1658,6 +1667,7 @@ void audioEngine_startAudioDrivers()
 				}
 			}
 		}
+	    }
 	} else {
 		m_pAudioDriver = createDriver( sAudioDriver );
 		if ( m_pAudioDriver == NULL ) {
@@ -1677,6 +1687,12 @@ void audioEngine_startAudioDrivers()
 		AlsaMidiDriver *alsaMidiDriver = new AlsaMidiDriver();
 		m_pMidiDriverOut = alsaMidiDriver;
 		m_pMidiDriver = alsaMidiDriver;
+		m_pMidiDriver->open();
+		m_pMidiDriver->setActive( true );
+#endif
+	} else if ( preferencesMng->m_sMidiDriver == "SndioMidi" ) {
+#ifdef SNDIO_SUPPORT
+		m_pMidiDriver = new SndioMidiDriver();
 		m_pMidiDriver->open();
 		m_pMidiDriver->setActive( true );
 #endif
