Chromium Code Reviews| Index: Source/modules/webaudio/AudioContext.h |
| diff --git a/Source/modules/webaudio/AudioContext.h b/Source/modules/webaudio/AudioContext.h |
| index 5b19a40d2b8248048d972429ba0e5fe3275e7b52..9a09cc816b943bec3f4b530694ed6a6af2228340 100644 |
| --- a/Source/modules/webaudio/AudioContext.h |
| +++ b/Source/modules/webaudio/AudioContext.h |
| @@ -241,6 +241,25 @@ protected: |
| RefPtrWillBeMember<ScriptPromiseResolver> m_offlineResolver; |
| private: |
| + class SuspendResumeResolver { |
|
hongchan
2015/05/04 17:28:38
Should we consider take this definition out of the
Raymond Toy
2015/05/04 17:38:34
It seems natural to keep it here since it's only r
hongchan
2015/05/04 17:41:50
Acknowledged.
|
| + public: |
| + enum ResolverType { |
| + ResolverTypeSuspend, |
| + ResolverTypeResume |
| + }; |
| + |
| + static SuspendResumeResolver* createSuspendHandler(PassRefPtrWillBeRawPtr<ScriptPromiseResolver>); |
| + static SuspendResumeResolver* createResumeHandler(PassRefPtrWillBeRawPtr<ScriptPromiseResolver>); |
| + ResolverType handlerType() { return m_resolverType; } |
| + PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver() { return m_resolver; } |
| + |
| + private: |
| + SuspendResumeResolver(ResolverType, PassRefPtrWillBeRawPtr<ScriptPromiseResolver>); |
| + ~SuspendResumeResolver(); |
| + ResolverType m_resolverType; |
| + RefPtrWillBeRawPtr<ScriptPromiseResolver> m_resolver; |
| + }; |
| + |
| void initialize(); |
| void uninitialize(); |
| @@ -279,23 +298,20 @@ private: |
| void stopRendering(); |
| // Handle Promises for resume() and suspend() |
| - void resolvePromisesForResume(); |
| - void resolvePromisesForResumeOnMainThread(); |
| + void resolvePromisesForSuspendResume(); |
| + void resolvePromisesForSuspendResumeOnMainThread(); |
| - void resolvePromisesForSuspend(); |
| - void resolvePromisesForSuspendOnMainThread(); |
| + // Vector of promises created by suspend() and resume(). It takes time to handle them, so we |
| + // collect all of the promises here until they can be resolved or rejected. We can then also |
| + // process them in the order in which suspend/resume was called. |
| + Vector<SuspendResumeResolver*> m_suspendResumeResolvers; |
| - // Vector of promises created by resume(). It takes time to handle them, so we collect all of |
| - // the promises here until they can be resolved or rejected. |
| - WillBeHeapVector<RefPtrWillBeMember<ScriptPromiseResolver>> m_resumeResolvers; |
| - // Like m_resumeResolvers but for suspend(). |
| - WillBeHeapVector<RefPtrWillBeMember<ScriptPromiseResolver>> m_suspendResolvers; |
| void rejectPendingResolvers(); |
| - // True if we're in the process of resolving promises for resume(). Resolving can take some |
| - // time and the audio context process loop is very fast, so we don't want to call resolve an |
| - // excessive number of times. |
| - bool m_isResolvingResumePromises; |
| + // True if we're in the process of resolving promises for suspend()/resume(). Resolving can |
| + // take some time and the audio context process loop is very fast, so we don't want to call |
| + // resolve an excessive number of times. |
| + bool m_isResolvingSuspendResumePromises; |
| unsigned m_connectionCount; |