| Index: third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp b/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
|
| index eafe4053bb6948bfc5a9ca808171a694ae5ea92b..4e911155cc3f071c7b096884c1b96b59d5571f26 100644
|
| --- a/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
|
| +++ b/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
|
| @@ -48,8 +48,7 @@ OfflineAudioDestinationHandler::OfflineAudioDestinationHandler(
|
| render_target_(render_target),
|
| frames_processed_(0),
|
| frames_to_process_(0),
|
| - is_rendering_started_(false),
|
| - should_suspend_(false) {
|
| + is_rendering_started_(false) {
|
| render_bus_ = AudioBus::Create(render_target->numberOfChannels(),
|
| AudioUtilities::kRenderQuantumFrames);
|
| frames_to_process_ = render_target_->length();
|
| @@ -197,20 +196,14 @@ void OfflineAudioDestinationHandler::DoOfflineRendering() {
|
| destinations.push_back(render_target_->getChannelData(i).View()->Data());
|
| }
|
|
|
| - // Reset the suspend flag.
|
| - should_suspend_ = false;
|
| -
|
| // If there is more to process and there is no suspension at the moment,
|
| // do continue to render quanta. Then calling OfflineAudioContext.resume()
|
| // will pick up the render loop again from where it was suspended.
|
| - while (frames_to_process_ > 0 && !should_suspend_) {
|
| - // Suspend the rendering and update m_shouldSuspend if a scheduled
|
| - // suspend found at the current sample frame. Otherwise render one
|
| - // quantum and return false.
|
| - should_suspend_ = RenderIfNotSuspended(
|
| - 0, render_bus_.Get(), AudioUtilities::kRenderQuantumFrames);
|
| -
|
| - if (should_suspend_)
|
| + while (frames_to_process_ > 0) {
|
| + // Suspend the rendering if a scheduled suspend found at the current
|
| + // sample frame. Otherwise render one quantum.
|
| + if (RenderIfNotSuspended(0, render_bus_.Get(),
|
| + AudioUtilities::kRenderQuantumFrames))
|
| return;
|
|
|
| size_t frames_available_to_copy =
|
| @@ -230,9 +223,8 @@ void OfflineAudioDestinationHandler::DoOfflineRendering() {
|
| frames_to_process_ -= frames_available_to_copy;
|
| }
|
|
|
| - // Finish up the rendering loop if there is no more to process.
|
| - if (!frames_to_process_)
|
| - FinishOfflineRendering();
|
| + DCHECK_EQ(frames_to_process_, 0u);
|
| + FinishOfflineRendering();
|
| }
|
|
|
| void OfflineAudioDestinationHandler::SuspendOfflineRendering() {
|
|
|