Index: Source/modules/webaudio/AbstractAudioContext.h |
diff --git a/Source/modules/webaudio/AbstractAudioContext.h b/Source/modules/webaudio/AbstractAudioContext.h |
index 5994c223ef747ca2a9a8fd28584233c983c62d91..ce0fbb09234f8f0c5938fa433ab3b80966eaaf07 100644 |
--- a/Source/modules/webaudio/AbstractAudioContext.h |
+++ b/Source/modules/webaudio/AbstractAudioContext.h |
@@ -160,8 +160,13 @@ public: |
// Close |
virtual ScriptPromise closeContext(ScriptState*) = 0; |
- // Suspend/Resume |
+ // Suspend for online audio context. |
virtual ScriptPromise suspendContext(ScriptState*) = 0; |
+ |
+ // Suspend for offline audio context. |
+ virtual ScriptPromise suspendContext(ScriptState*, double) = 0; |
+ |
+ // Resume |
virtual ScriptPromise resumeContext(ScriptState*) = 0; |
// When a source node has started processing and needs to be protected, |
@@ -220,13 +225,14 @@ public: |
const AtomicString& interfaceName() const final; |
ExecutionContext* executionContext() const final; |
- DEFINE_ATTRIBUTE_EVENT_LISTENER(complete); |
DEFINE_ATTRIBUTE_EVENT_LISTENER(statechange); |
void startRendering(); |
- void fireCompletionEvent(); |
void notifyStateChange(); |
+ // TODO(hongchan): move this to OfflineAudioContext. |
+ AudioBuffer* renderTarget() const { return m_renderTarget.get(); } |
+ |
// A context is considered closed if: |
// - closeContext() has been called. |
// - it has been stopped by its execution context. |
@@ -243,8 +249,6 @@ protected: |
virtual void didClose() {} |
void uninitialize(); |
- RefPtrWillBeMember<ScriptPromiseResolver> m_offlineResolver; |
- |
// FIXME(dominicc): Move m_resumeResolvers to AudioContext, because only |
// it creates these Promises. |
// Vector of promises created by resume(). It takes time to handle them, so we collect all of |
@@ -300,6 +304,8 @@ private: |
bool m_didInitializeContextGraphMutex; |
RefPtr<DeferredTaskHandler> m_deferredTaskHandler; |
+ // For offline audio context. |
+ // TODO(hongchan): move this to OfflineAudioContext class. |
Member<AudioBuffer> m_renderTarget; |
// The state of the AbstractAudioContext. |
@@ -312,6 +318,9 @@ private: |
// can, try to stop them so they can be collected. |
void handleStoppableSourceNodes(); |
+ // Perform common tasks after the render quantum. Called by handlePostRenderTasks(). |
+ void performPostRenderTasks(); |
+ |
// This is considering 32 is large enough for multiple channels audio. |
// It is somewhat arbitrary and could be increased if necessary. |
enum { MaxNumberOfChannels = 32 }; |