@@ -29,7 +29,6 @@ type context struct {
29
29
scriptProcessor js.Value
30
30
scriptProcessorCallback js.Func
31
31
ready bool
32
- callbacks map [string ]js.Func
33
32
34
33
mux * mux.Mux
35
34
}
@@ -165,28 +164,32 @@ registerProcessor('oto-worklet-processor', OtoWorkletProcessor);
165
164
sp .Call ("connect" , d .audioContext .Get ("destination" ))
166
165
}
167
166
168
- setCallback := func (event string ) js.Func {
169
- var f js.Func
170
- f = js .FuncOf (func (this js.Value , arguments []js.Value ) any {
171
- if ! d .ready {
172
- d .audioContext .Call ("resume" )
173
- d .ready = true
174
- close (ready )
175
- }
176
- js .Global ().Get ("document" ).Call ("removeEventListener" , event , f )
177
- return nil
178
- })
179
- js .Global ().Get ("document" ).Call ("addEventListener" , event , f )
180
- d .callbacks [event ] = f
181
- return f
182
- }
183
-
184
167
// Browsers require user interaction to start the audio.
185
168
// https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio
186
- d .callbacks = map [string ]js.Func {}
187
- setCallback ("touchend" )
188
- setCallback ("keyup" )
189
- setCallback ("mouseup" )
169
+
170
+ events := []string {"touchend" , "keyup" , "mouseup" }
171
+
172
+ var onEventFired js.Func
173
+ var onResumeSuccess js.Func
174
+ onResumeSuccess = js .FuncOf (func (this js.Value , arguments []js.Value ) any {
175
+ d .ready = true
176
+ close (ready )
177
+ for _ , event := range events {
178
+ js .Global ().Get ("document" ).Call ("removeEventListener" , event , onEventFired )
179
+ }
180
+ onEventFired .Release ()
181
+ onResumeSuccess .Release ()
182
+ return nil
183
+ })
184
+ onEventFired = js .FuncOf (func (this js.Value , arguments []js.Value ) any {
185
+ if ! d .ready {
186
+ d .audioContext .Call ("resume" ).Call ("then" , onResumeSuccess )
187
+ }
188
+ return nil
189
+ })
190
+ for _ , event := range events {
191
+ js .Global ().Get ("document" ).Call ("addEventListener" , event , onEventFired )
192
+ }
190
193
191
194
return d , ready , nil
192
195
}
0 commit comments