diff --git a/.travis.yml b/.travis.yml index 2cad20131..121bafe1f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ before_install: - sudo add-apt-repository 'deb http://us.archive.ubuntu.com/ubuntu/ utopic main restricted universe multiverse' - sudo add-apt-repository 'deb http://us.archive.ubuntu.com/ubuntu/ utopic-updates main restricted universe multiverse' - sudo apt-get update -qq - - sudo apt-get install -qq libglew-dev libglfw3-dev libopenal1 libopenal-dev + - sudo apt-get install -qq libglew-dev libglfw3-dev libopenal-dev libalut-dev - export NODE_PATH=$(npm config get prefix)/lib/node_modules - npm install --global gl diff --git a/internal/audio/audio.go b/internal/audio/audio.go index d1ce7346f..d30a5be62 100644 --- a/internal/audio/audio.go +++ b/internal/audio/audio.go @@ -18,6 +18,8 @@ import ( "sync" ) +var audioEnabled = false + const bufferSize = 1024 const SampleRate = 44100 @@ -75,6 +77,10 @@ func Play(channel int, l []float32, r []float32) bool { channelsLock.Lock() defer channelsLock.Unlock() + if !audioEnabled { + return false + } + if len(l) != len(r) { panic("len(l) must equal to len(r)") } @@ -93,6 +99,10 @@ func Queue(channel int, l []float32, r []float32) { channelsLock.Lock() defer channelsLock.Unlock() + if !audioEnabled { + return + } + if len(l) != len(r) { panic("len(l) must equal to len(r)") } @@ -116,6 +126,10 @@ func isChannelsEmpty() bool { channelsLock.Lock() defer channelsLock.Unlock() + if !audioEnabled { + return true + } + for _, ch := range channels { if 0 < len(ch.l) { return false @@ -128,6 +142,10 @@ func loadChannelBuffers() (l, r []float32) { channelsLock.Lock() defer channelsLock.Unlock() + if !audioEnabled { + return nil, nil + } + inputL := make([]float32, bufferSize) inputR := make([]float32, bufferSize) for _, ch := range channels { @@ -150,5 +168,9 @@ func IsPlaying(channel int) bool { channelsLock.Lock() defer channelsLock.Unlock() + if !audioEnabled { + return false + } + return isPlaying(channel) } diff --git a/internal/audio/audio_js.go b/internal/audio/audio_js.go index 896d1d758..1af796300 100644 --- a/internal/audio/audio_js.go +++ b/internal/audio/audio_js.go @@ -49,6 +49,7 @@ func initialize() { r.SetIndex(i, inputR[i]) } }) + audioEnabled = true } func start() { diff --git a/internal/audio/audio_openal.go b/internal/audio/audio_openal.go index b26f3ad7a..c2911a7b4 100644 --- a/internal/audio/audio_openal.go +++ b/internal/audio/audio_openal.go @@ -21,6 +21,7 @@ import ( "encoding/binary" "fmt" "github.com/timshannon/go-openal/openal" + "log" "math" "runtime" "time" @@ -55,12 +56,14 @@ func initialize() { context := device.CreateContext() context.Activate() - source := openal.NewSource() - if alErr := openal.GetError(); alErr != 0 { - panic(fmt.Sprintf("OpenAL initialize error: %d", alErr)) + log.Printf("OpenAL initialize error: %d", alErr) + close(ch) + return } + audioEnabled = true + source := openal.NewSource() close(ch) emptyBytes := make([]byte, 4*bufferSize)