| Index: Source/modules/webaudio/AudioContext.h
|
| diff --git a/Source/modules/webaudio/AudioContext.h b/Source/modules/webaudio/AudioContext.h
|
| index 6e17e01ef814888c23a2366325e40c5377f58e0b..cb7253dcb34279bed616e7243a1b3b0d6d988bd7 100644
|
| --- a/Source/modules/webaudio/AudioContext.h
|
| +++ b/Source/modules/webaudio/AudioContext.h
|
| @@ -237,7 +237,7 @@ public:
|
| AudioBuffer* createBuffer(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate, ExceptionState&);
|
|
|
| // Asynchronous audio file data decoding.
|
| - void decodeAudioData(DOMArrayBuffer*, AudioBufferCallback*, AudioBufferCallback*, ExceptionState&);
|
| + ScriptPromise decodeAudioData(ScriptState*, DOMArrayBuffer*, AudioBufferCallback*, AudioBufferCallback*, ExceptionState&);
|
|
|
| AudioListener* listener() { return m_listener.get(); }
|
|
|
| @@ -348,6 +348,7 @@ public:
|
| // Get the security origin for this audio context.
|
| SecurityOrigin* securityOrigin() const;
|
|
|
| + void removeAudioDecoderResolver(ScriptPromiseResolver*);
|
| protected:
|
| explicit AudioContext(Document*);
|
| AudioContext(Document*, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate);
|
| @@ -434,6 +435,8 @@ private:
|
| void setContextState(AudioContextState);
|
|
|
| AsyncAudioDecoder m_audioDecoder;
|
| + // A vector of the ScriptPromiseResolvers the decodeAudioData method uses.
|
| + WillBeHeapVector<RefPtrWillBeMember<ScriptPromiseResolver>> m_audioDecoderResolvers;
|
|
|
| // The Promise that is returned by close();
|
| RefPtrWillBeMember<ScriptPromiseResolver> m_closeResolver;
|
| @@ -441,6 +444,11 @@ private:
|
| // Follows the destination's currentSampleFrame, but might be slightly behind due to locking.
|
| size_t m_cachedSampleFrame;
|
|
|
| + // When a context is closed, the sample rate is cleared. But decodeAudioData can be called
|
| + // after the context has been closed and it needs the sample rate. When the context is closed,
|
| + // the sample rate is saved here.
|
| + float m_closedContextSampleRate;
|
| +
|
| // Tries to handle AudioBufferSourceNodes that were started but became disconnected or was never
|
| // connected. Because these never get pulled anymore, they will stay around forever. So if we
|
| // can, try to stop them so they can be collected.
|
|
|