Commit 4a4a7348 authored by gklassen's avatar gklassen Committed by Commit Bot

Use HitTestAggregator in GpuRootCompositorFrameSink

GpuRootCompositorFrameSink creates an instance of HitTestAggregator
and provides the notifications required when surfaces are added to the
next CompositorFrame, destroyed and when the next frame begins.

BUG=732399

Review-Url: https://codereview.chromium.org/2937233002
Cr-Commit-Position: refs/heads/master@{#487495}
parent 1342f6d5
......@@ -6,6 +6,7 @@
#include <utility>
#include "base/command_line.h"
#include "components/viz/service/display/display.h"
#include "components/viz/service/frame_sinks/compositor_frame_sink_support.h"
#include "components/viz/service/frame_sinks/frame_sink_manager.h"
......@@ -118,7 +119,9 @@ void GpuRootCompositorFrameSink::DisplayOutputSurfaceLost() {
void GpuRootCompositorFrameSink::DisplayWillDrawAndSwap(
bool will_draw_and_swap,
const cc::RenderPassList& render_pass) {}
const cc::RenderPassList& render_pass) {
hit_test_aggregator_.PostTaskAggregate(display_->CurrentSurfaceId());
}
void GpuRootCompositorFrameSink::DisplayDidDrawAndSwap() {}
......@@ -129,6 +132,7 @@ void GpuRootCompositorFrameSink::DidReceiveCompositorFrameAck(
}
void GpuRootCompositorFrameSink::OnBeginFrame(const cc::BeginFrameArgs& args) {
hit_test_aggregator_.Swap();
if (client_)
client_->OnBeginFrame(args);
}
......
......@@ -14,6 +14,7 @@
#include "components/viz/service/display/display_client.h"
#include "components/viz/service/frame_sinks/compositor_frame_sink_support_client.h"
#include "components/viz/service/frame_sinks/gpu_compositor_frame_sink_delegate.h"
#include "components/viz/service/hit_test/hit_test_aggregator.h"
#include "mojo/public/cpp/bindings/associated_binding.h"
#include "mojo/public/cpp/bindings/binding.h"
......@@ -101,6 +102,8 @@ class GpuRootCompositorFrameSink
compositor_frame_sink_private_binding_;
mojo::AssociatedBinding<cc::mojom::DisplayPrivate> display_private_binding_;
HitTestAggregator hit_test_aggregator_;
DISALLOW_COPY_AND_ASSIGN(GpuRootCompositorFrameSink);
};
......
......@@ -133,7 +133,8 @@ void HitTestAggregator::Aggregate(const SurfaceId& display_surface_id) {
void HitTestAggregator::AppendRoot(const SurfaceId& surface_id) {
auto search = active_.find(surface_id);
DCHECK(search != active_.end());
if (search == active_.end())
return;
mojom::HitTestRegionList* hit_test_region_list = search->second.get();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment