| Index: Source/modules/webaudio/AudioSummingJunction.cpp | 
| diff --git a/Source/modules/webaudio/AudioSummingJunction.cpp b/Source/modules/webaudio/AudioSummingJunction.cpp | 
| index 5517f9e03fbb563d6248ed52734f5297ae78203c..76af2c0291ad7e36f74a6b781cdcdfacb50e290a 100644 | 
| --- a/Source/modules/webaudio/AudioSummingJunction.cpp | 
| +++ b/Source/modules/webaudio/AudioSummingJunction.cpp | 
| @@ -32,48 +32,30 @@ | 
|  | 
| namespace blink { | 
|  | 
| -AudioSummingJunction::AudioSummingJunction(AudioContext* context) | 
| -    : m_context(context) | 
| +AudioSummingJunction::AudioSummingJunction(DeferredTaskHandler& handler) | 
| +    : m_deferredTaskHandler(handler) | 
| , m_renderingStateNeedUpdating(false) | 
| -    , m_didCallDispose(false) | 
| { | 
| -    ASSERT(context); | 
| -    m_context->registerLiveAudioSummingJunction(*this); | 
| -} | 
| - | 
| -void AudioSummingJunction::dispose() | 
| -{ | 
| -    m_didCallDispose = true; | 
| -    m_context->handler().removeMarkedSummingJunction(this); | 
| } | 
|  | 
| AudioSummingJunction::~AudioSummingJunction() | 
| { | 
| -} | 
| - | 
| -DEFINE_TRACE(AudioSummingJunction) | 
| -{ | 
| -    visitor->trace(m_context); | 
| -    // FIXME: Oilpan: m_renderingOutputs should not be strong references.  This | 
| -    // is a short-term workaround to avoid crashes, and causes AudioNode leaks. | 
| -    AudioContext::AutoLocker locker(m_context); | 
| -    for (size_t i = 0; i < m_renderingOutputs.size(); ++i) | 
| -        visitor->trace(m_renderingOutputs[i]); | 
| +    deferredTaskHandler().removeMarkedSummingJunction(this); | 
| } | 
|  | 
| void AudioSummingJunction::changedOutputs() | 
| { | 
| -    ASSERT(context()->isGraphOwner()); | 
| -    if (!m_renderingStateNeedUpdating && !m_didCallDispose) { | 
| -        context()->handler().markSummingJunctionDirty(this); | 
| +    ASSERT(deferredTaskHandler().isGraphOwner()); | 
| +    if (!m_renderingStateNeedUpdating) { | 
| +        deferredTaskHandler().markSummingJunctionDirty(this); | 
| m_renderingStateNeedUpdating = true; | 
| } | 
| } | 
|  | 
| void AudioSummingJunction::updateRenderingState() | 
| { | 
| -    ASSERT(context()->isAudioThread()); | 
| -    ASSERT(context()->isGraphOwner()); | 
| +    ASSERT(deferredTaskHandler().isAudioThread()); | 
| +    ASSERT(deferredTaskHandler().isGraphOwner()); | 
| if (m_renderingStateNeedUpdating) { | 
| // Copy from m_outputs to m_renderingOutputs. | 
| m_renderingOutputs.resize(m_outputs.size()); | 
|  |