Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2501)

Unified Diff: Source/modules/webaudio/AudioNodeInput.cpp

Issue 1037683002: Web Audio: Unapply Oilpan to AudioSummingJunction. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove m_didCallDispose Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/webaudio/AudioNodeInput.h ('k') | Source/modules/webaudio/AudioParam.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/webaudio/AudioNodeInput.cpp
diff --git a/Source/modules/webaudio/AudioNodeInput.cpp b/Source/modules/webaudio/AudioNodeInput.cpp
index e2af1dbe85189f64447f905ffc80247e72d512b7..e1abb49b6c7aa43d954ce5925e10e0d8a37c14ce 100644
--- a/Source/modules/webaudio/AudioNodeInput.cpp
+++ b/Source/modules/webaudio/AudioNodeInput.cpp
@@ -33,7 +33,7 @@
namespace blink {
inline AudioNodeInput::AudioNodeInput(AudioNode& node)
- : AudioSummingJunction(node.context())
+ : AudioSummingJunction(node.context()->handler())
, m_node(node)
{
// Set to mono by default.
@@ -47,13 +47,18 @@ AudioNodeInput* AudioNodeInput::create(AudioNode& node)
DEFINE_TRACE(AudioNodeInput)
{
+ // TODO(tkent): Oilpan: m_renderingOutputs should not be strong references.
+ // This is a short-term workaround to avoid crashes, and causes AudioNode
+ // leaks.
+ AudioContext::AutoLocker locker(deferredTaskHandler());
+ for (size_t i = 0; i < m_renderingOutputs.size(); ++i)
+ visitor->trace(m_renderingOutputs[i]);
visitor->trace(m_node);
- AudioSummingJunction::trace(visitor);
}
void AudioNodeInput::connect(AudioNodeOutput& output)
{
- ASSERT(context()->isGraphOwner());
+ ASSERT(deferredTaskHandler().isGraphOwner());
// Check if we're already connected to this output.
if (m_outputs.contains(&output))
@@ -66,7 +71,7 @@ void AudioNodeInput::connect(AudioNodeOutput& output)
void AudioNodeInput::disconnect(AudioNodeOutput& output)
{
- ASSERT(context()->isGraphOwner());
+ ASSERT(deferredTaskHandler().isGraphOwner());
// First try to disconnect from "active" connections.
if (m_outputs.contains(&output)) {
@@ -92,7 +97,7 @@ void AudioNodeInput::disconnect(AudioNodeOutput& output)
void AudioNodeInput::disable(AudioNodeOutput& output)
{
- ASSERT(context()->isGraphOwner());
+ ASSERT(deferredTaskHandler().isGraphOwner());
ASSERT(m_outputs.contains(&output));
m_disabledOutputs.add(&output);
@@ -105,7 +110,7 @@ void AudioNodeInput::disable(AudioNodeOutput& output)
void AudioNodeInput::enable(AudioNodeOutput& output)
{
- ASSERT(context()->isGraphOwner());
+ ASSERT(deferredTaskHandler().isGraphOwner());
ASSERT(m_disabledOutputs.contains(&output));
// Move output from disabled list to active list.
@@ -124,8 +129,8 @@ void AudioNodeInput::didUpdate()
void AudioNodeInput::updateInternalBus()
{
- ASSERT(context()->isAudioThread());
- ASSERT(context()->isGraphOwner());
+ ASSERT(deferredTaskHandler().isAudioThread());
+ ASSERT(deferredTaskHandler().isGraphOwner());
unsigned numberOfInputChannels = numberOfChannels();
@@ -158,7 +163,7 @@ unsigned AudioNodeInput::numberOfChannels() const
AudioBus* AudioNodeInput::bus()
{
- ASSERT(context()->isAudioThread());
+ ASSERT(deferredTaskHandler().isAudioThread());
// Handle single connection specially to allow for in-place processing.
if (numberOfRenderingConnections() == 1 && node().internalChannelCountMode() == AudioNode::Max)
@@ -170,14 +175,14 @@ AudioBus* AudioNodeInput::bus()
AudioBus* AudioNodeInput::internalSummingBus()
{
- ASSERT(context()->isAudioThread());
+ ASSERT(deferredTaskHandler().isAudioThread());
return m_internalSummingBus.get();
}
void AudioNodeInput::sumAllConnections(AudioBus* summingBus, size_t framesToProcess)
{
- ASSERT(context()->isAudioThread());
+ ASSERT(deferredTaskHandler().isAudioThread());
// We shouldn't be calling this method if there's only one connection, since it's less efficient.
ASSERT(numberOfRenderingConnections() > 1 || node().internalChannelCountMode() != AudioNode::Max);
@@ -204,7 +209,7 @@ void AudioNodeInput::sumAllConnections(AudioBus* summingBus, size_t framesToProc
AudioBus* AudioNodeInput::pull(AudioBus* inPlaceBus, size_t framesToProcess)
{
- ASSERT(context()->isAudioThread());
+ ASSERT(deferredTaskHandler().isAudioThread());
// Handle single connection case.
if (numberOfRenderingConnections() == 1 && node().internalChannelCountMode() == AudioNode::Max) {
« no previous file with comments | « Source/modules/webaudio/AudioNodeInput.h ('k') | Source/modules/webaudio/AudioParam.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698