| Index: Source/modules/webaudio/AudioContext.h
|
| diff --git a/Source/modules/webaudio/AudioContext.h b/Source/modules/webaudio/AudioContext.h
|
| index 52462a91b678158cadb5e841a9679d590ef182d6..9102268fb8eb529bc3b9781c6cf11a1f01e15f95 100644
|
| --- a/Source/modules/webaudio/AudioContext.h
|
| +++ b/Source/modules/webaudio/AudioContext.h
|
| @@ -79,7 +79,10 @@ class WaveShaperNode;
|
| // AudioContext is the cornerstone of the web audio API and all AudioNodes are created from it.
|
| // For thread safety between the audio thread and the main thread, it has a rendering graph locking mechanism.
|
|
|
| -class AudioContext : public RefCountedGarbageCollectedEventTargetWithInlineData<AudioContext>, public ActiveDOMObject {
|
| +class AudioContext
|
| + : public RefCountedGarbageCollectedEventTargetWithInlineData<AudioContext>
|
| + , public ActiveDOMObject
|
| + , private ThreadState::MarkingTask {
|
| DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<AudioContext>);
|
| WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(AudioContext);
|
| DEFINE_WRAPPERTYPEINFO();
|
| @@ -103,6 +106,8 @@ public:
|
|
|
| bool isInitialized() const { return m_isInitialized; }
|
| bool isOfflineContext() { return m_isOfflineContext; }
|
| + AudioContextState contextState() const { return m_contextState; }
|
| + void setLastZombie(void*);
|
|
|
| // Document notification
|
| virtual void stop() override final;
|
| @@ -290,6 +295,10 @@ private:
|
| void initialize();
|
| void uninitialize();
|
|
|
| + // ThreadState::MarkingTask functions.
|
| + void willStartMarking(ThreadState&) override;
|
| + void didFinishMarking(ThreadState&) override;
|
| +
|
| // ExecutionContext calls stop twice.
|
| // We'd like to schedule only one stop action for them.
|
| bool m_isStopScheduled;
|
| @@ -399,6 +408,10 @@ private:
|
| bool m_didInitializeContextGraphMutex;
|
| RecursiveMutex m_contextGraphMutex;
|
| volatile ThreadIdentifier m_audioThread;
|
| + // Accessing m_last*Zombie should be protected by
|
| + // m_didInitializeContextGraphMutex.
|
| + void* m_lastZombie;
|
| + void* m_lastRemovableZombie;
|
|
|
| // Only accessed in the audio thread.
|
| // Oilpan: Since items are added to these vectors by the audio thread (not registered to Oilpan),
|
|
|