| Index: Source/modules/webaudio/AudioContext.h
|
| diff --git a/Source/modules/webaudio/AudioContext.h b/Source/modules/webaudio/AudioContext.h
|
| index ca8a882dc9fc9f0baf5f4810ccf1e8beb2ecb112..a37b2a39412b5f34e0997e6f531788fd0375d674 100644
|
| --- a/Source/modules/webaudio/AudioContext.h
|
| +++ b/Source/modules/webaudio/AudioContext.h
|
| @@ -77,7 +77,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();
|
| @@ -101,6 +104,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;
|
| @@ -280,6 +285,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;
|
| @@ -387,6 +396,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),
|
|
|