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

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

Issue 423783002: WebAudio: Remove OfflineAudioDestinationNode::m_keepAliveWhileRendering (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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
Index: Source/modules/webaudio/OfflineAudioDestinationNode.cpp
diff --git a/Source/modules/webaudio/OfflineAudioDestinationNode.cpp b/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
index d7948fc802aec0d0b4cf3f73307a3cd89f78a595..2c9746aef921b27f59e13d6158e47351c610ec23 100644
--- a/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
+++ b/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
@@ -28,16 +28,23 @@
#include "modules/webaudio/OfflineAudioDestinationNode.h"
-#include <algorithm>
-#include "platform/audio/AudioBus.h"
-#include "platform/audio/HRTFDatabaseLoader.h"
+#include "core/dom/CrossThreadTask.h"
#include "modules/webaudio/AudioContext.h"
#include "platform/Task.h"
+#include "platform/audio/AudioBus.h"
+#include "platform/audio/HRTFDatabaseLoader.h"
#include "public/platform/Platform.h"
-#include "wtf/MainThread.h"
+#include <algorithm>
namespace blink {
+#if !ENABLE(OILPAN)
+// We need a dedicated specialization for OfflineAudioDestinationNode because it
+// doesn't inherit from RefCounted.
+template<> struct CrossThreadCopierBase<false, false, false, PassRefPtr<OfflineAudioDestinationNode> > : public CrossThreadCopierPassThrough<PassRefPtr<OfflineAudioDestinationNode> > {
+};
+#endif
+
const size_t renderQuantumSize = 128;
OfflineAudioDestinationNode::OfflineAudioDestinationNode(AudioContext* context, AudioBuffer* renderTarget)
@@ -87,9 +94,8 @@ void OfflineAudioDestinationNode::startRendering()
if (!m_startedRendering) {
m_startedRendering = true;
- m_keepAliveWhileRendering = this;
m_renderThread = adoptPtr(blink::Platform::current()->createThread("Offline Audio Renderer"));
- m_renderThread->postTask(new Task(WTF::bind(&OfflineAudioDestinationNode::offlineRender, this)));
+ m_renderThread->postTask(new Task(bind(&OfflineAudioDestinationNode::offlineRender, PassRefPtrWillBeRawPtr<OfflineAudioDestinationNode>(this))));
}
}
@@ -138,18 +144,8 @@ void OfflineAudioDestinationNode::offlineRender()
}
// Our work is done. Let the AudioContext know.
- callOnMainThread(notifyCompleteDispatch, this);
-}
-
-void OfflineAudioDestinationNode::notifyCompleteDispatch(void* userData)
-{
- OfflineAudioDestinationNode* destinationNode = static_cast<OfflineAudioDestinationNode*>(userData);
- ASSERT(destinationNode);
- if (!destinationNode)
- return;
-
- destinationNode->notifyComplete();
- destinationNode->m_keepAliveWhileRendering.clear();
+ if (context()->executionContext())
+ context()->executionContext()->postTask(createCrossThreadTask(&OfflineAudioDestinationNode::notifyComplete, PassRefPtrWillBeRawPtr<OfflineAudioDestinationNode>(this)));
}
void OfflineAudioDestinationNode::notifyComplete()

Powered by Google App Engine
This is Rietveld 408576698