mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-26 02:42:02 +01:00
parent
3479b80f1c
commit
647d8f0094
@ -458,7 +458,8 @@ func (p *Player) readLoop() {
|
|||||||
close(p.readLoopEndedCh)
|
close(p.readLoopEndedCh)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
t := time.After(0)
|
timer := time.NewTimer(0)
|
||||||
|
timerCh := timer.C
|
||||||
var readErr error
|
var readErr error
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
@ -472,13 +473,21 @@ func (p *Player) readLoop() {
|
|||||||
p.pos = pos
|
p.pos = pos
|
||||||
p.srcEOF = false
|
p.srcEOF = false
|
||||||
p.seekedCh <- err
|
p.seekedCh <- err
|
||||||
t = time.After(time.Millisecond)
|
if timer != nil {
|
||||||
|
timer.Stop()
|
||||||
|
}
|
||||||
|
timer = time.NewTimer(time.Millisecond)
|
||||||
|
timerCh = timer.C
|
||||||
break
|
break
|
||||||
|
|
||||||
case <-t:
|
case <-timerCh:
|
||||||
// If the buffer has 1 second, that's enough.
|
// If the buffer has 1 second, that's enough.
|
||||||
if len(p.buf) >= p.sampleRate*bytesPerSample*channelNum {
|
if len(p.buf) >= p.sampleRate*bytesPerSample*channelNum {
|
||||||
t = time.After(100 * time.Millisecond)
|
if timer != nil {
|
||||||
|
timer.Stop()
|
||||||
|
}
|
||||||
|
timer = time.NewTimer(100 * time.Millisecond)
|
||||||
|
timerCh = timer.C
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -499,19 +508,31 @@ func (p *Player) readLoop() {
|
|||||||
p.srcEOF = true
|
p.srcEOF = true
|
||||||
}
|
}
|
||||||
if p.srcEOF && len(p.buf) == 0 {
|
if p.srcEOF && len(p.buf) == 0 {
|
||||||
t = nil
|
if timer != nil {
|
||||||
|
timer.Stop()
|
||||||
|
}
|
||||||
|
timer = nil
|
||||||
|
timerCh = nil
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if err != nil && err != io.EOF {
|
if err != nil && err != io.EOF {
|
||||||
readErr = err
|
readErr = err
|
||||||
t = nil
|
if timer != nil {
|
||||||
|
timer.Stop()
|
||||||
|
}
|
||||||
|
timer = nil
|
||||||
|
timerCh = nil
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if web.IsBrowser() {
|
if timer != nil {
|
||||||
t = time.After(10 * time.Millisecond)
|
timer.Stop()
|
||||||
} else {
|
|
||||||
t = time.After(time.Millisecond)
|
|
||||||
}
|
}
|
||||||
|
if web.IsBrowser() {
|
||||||
|
timer = time.NewTimer(10 * time.Millisecond)
|
||||||
|
} else {
|
||||||
|
timer = time.NewTimer(time.Millisecond)
|
||||||
|
}
|
||||||
|
timerCh = timer.C
|
||||||
|
|
||||||
case buf := <-p.proceedCh:
|
case buf := <-p.proceedCh:
|
||||||
if readErr != nil {
|
if readErr != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user