Revert "audio: Bug fix: Fill empty data even when audio is suspended"

This reverts commit 529dddda53.

Updates #975

Reason: This causes PARTIAL_WAKE_LOCK on Android (AudioDirectOut) (#931)
This commit is contained in:
Hajime Hoshi 2019-11-09 15:19:27 +09:00
parent 8d12446dbe
commit 5182060899

View File

@ -63,11 +63,11 @@ type Context struct {
sampleRate int sampleRate int
err error err error
ready bool ready bool
suspended bool
players map[*playerImpl]struct{} players map[*playerImpl]struct{}
m sync.Mutex m sync.Mutex
semaphore chan struct{}
} }
var ( var (
@ -75,8 +75,6 @@ var (
theContextLock sync.Mutex theContextLock sync.Mutex
) )
var emptyBytes = make([]byte, 256)
// NewContext creates a new audio context with the given sample rate. // NewContext creates a new audio context with the given sample rate.
// //
// The sample rate is also used for decoding MP3 with audio/mp3 package // The sample rate is also used for decoding MP3 with audio/mp3 package
@ -101,19 +99,16 @@ func NewContext(sampleRate int) (*Context, error) {
c: newContext(sampleRate), c: newContext(sampleRate),
players: map[*playerImpl]struct{}{}, players: map[*playerImpl]struct{}{},
inited: make(chan struct{}), inited: make(chan struct{}),
semaphore: make(chan struct{}, 1),
} }
theContext = c theContext = c
h := getHook() h := getHook()
h.OnSuspendAudio(func() { h.OnSuspendAudio(func() {
c.m.Lock() c.semaphore <- struct{}{}
c.suspended = true
c.m.Unlock()
}) })
h.OnResumeAudio(func() { h.OnResumeAudio(func() {
c.m.Lock() <-c.semaphore
c.suspended = false
c.m.Unlock()
}) })
h.AppendHookOnBeforeUpdate(func() error { h.AppendHookOnBeforeUpdate(func() error {
@ -460,14 +455,10 @@ func (p *playerImpl) read() ([]byte, bool) {
const bufSize = 2048 const bufSize = 2048
// If audio is suspended, fill zero values not to cause delay (#975). p.context.semaphore <- struct{}{}
// TODO: Oto's players should be able to be suspended and resumed. defer func() {
p.context.m.Lock() <-p.context.semaphore
s := p.context.suspended }()
p.context.m.Unlock()
if s {
return emptyBytes, true
}
newBuf := make([]byte, bufSize-len(p.buf)) newBuf := make([]byte, bufSize-len(p.buf))
n, err := p.src.Read(newBuf) n, err := p.src.Read(newBuf)