| Index: content/renderer/android/synchronous_compositor_filter.cc
|
| diff --git a/content/renderer/android/synchronous_compositor_filter.cc b/content/renderer/android/synchronous_compositor_filter.cc
|
| index b01ce0712c766a177758a1ff473a7115b71360c6..ae42cc31d455758251ef66fc2509af7fa1b7eaf3 100644
|
| --- a/content/renderer/android/synchronous_compositor_filter.cc
|
| +++ b/content/renderer/android/synchronous_compositor_filter.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "content/renderer/android/synchronous_compositor_filter.h"
|
|
|
| +#include <utility>
|
| +
|
| #include "base/callback.h"
|
| #include "base/stl_util.h"
|
| #include "base/thread_task_runner_handle.h"
|
| @@ -128,7 +130,11 @@ void SynchronousCompositorFilter::RegisterOutputSurface(
|
| Entry& entry = entry_map_[routing_id];
|
| DCHECK(!entry.output_surface);
|
| entry.output_surface = output_surface;
|
| - CheckIsReady(routing_id);
|
| +
|
| + SynchronousCompositorProxy* proxy = FindProxy(routing_id);
|
| + if (proxy) {
|
| + proxy->SetOutputSurface(output_surface);
|
| + }
|
| }
|
|
|
| void SynchronousCompositorFilter::UnregisterOutputSurface(
|
| @@ -140,8 +146,10 @@ void SynchronousCompositorFilter::UnregisterOutputSurface(
|
| Entry& entry = entry_map_[routing_id];
|
| DCHECK_EQ(output_surface, entry.output_surface);
|
|
|
| - if (entry.IsReady())
|
| - UnregisterObjects(routing_id);
|
| + SynchronousCompositorProxy* proxy = FindProxy(routing_id);
|
| + if (proxy) {
|
| + proxy->SetOutputSurface(nullptr);
|
| + }
|
| entry.output_surface = nullptr;
|
| RemoveEntryIfNeeded(routing_id);
|
| }
|
| @@ -178,11 +186,12 @@ void SynchronousCompositorFilter::CheckIsReady(int routing_id) {
|
| Entry& entry = entry_map_[routing_id];
|
| if (filter_ready_ && entry.IsReady()) {
|
| DCHECK(!sync_compositor_map_.contains(routing_id));
|
| - sync_compositor_map_.add(
|
| - routing_id,
|
| - make_scoped_ptr(new SynchronousCompositorProxy(
|
| - routing_id, this, entry.output_surface, entry.begin_frame_source,
|
| - entry.synchronous_input_handler_proxy, &input_handler_)));
|
| + scoped_ptr<SynchronousCompositorProxy> proxy(new SynchronousCompositorProxy(
|
| + routing_id, this, entry.begin_frame_source,
|
| + entry.synchronous_input_handler_proxy, &input_handler_));
|
| + if (entry.output_surface)
|
| + proxy->SetOutputSurface(entry.output_surface);
|
| + sync_compositor_map_.add(routing_id, std::move(proxy));
|
| }
|
| }
|
|
|
| @@ -269,8 +278,7 @@ SynchronousCompositorFilter::Entry::Entry()
|
| synchronous_input_handler_proxy(nullptr) {}
|
|
|
| bool SynchronousCompositorFilter::Entry::IsReady() {
|
| - return begin_frame_source && output_surface &&
|
| - synchronous_input_handler_proxy;
|
| + return begin_frame_source && synchronous_input_handler_proxy;
|
| }
|
|
|
| } // namespace content
|
|
|