Chromium Code Reviews| Index: components/viz/hittest/hittest_aggregator.cc |
| diff --git a/components/viz/hittest/hittest_aggregator.cc b/components/viz/hittest/hittest_aggregator.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d2beafab308aaba7baf175ec748495c13f59ff39 |
| --- /dev/null |
| +++ b/components/viz/hittest/hittest_aggregator.cc |
| @@ -0,0 +1,55 @@ |
| +// Copyright 2017 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "components/viz/hittest/hittest_aggregator.h" |
| +#include "base/logging.h" |
| + |
| +namespace viz { |
| + |
| +namespace { |
| + |
| +#define INITIAL_COUNT 128 |
| +} |
| + |
| +HittestAggregator::HittestAggregator() { |
| + regions_[0] = (Element*)malloc(INITIAL_COUNT * sizeof(Element)); |
|
rjkroege
2017/06/02 22:45:45
this is most certainly not how you want to do it i
|
| + regions_[1] = (Element*)malloc(INITIAL_COUNT * sizeof(Element)); |
| + regions_[0][0].child_count_ = LAST_REGION; |
| + regions_[1][0].child_count_ = LAST_REGION; |
| + |
| + current_regions_ = regions_[0]; |
| +} |
| +HittestAggregator::~HittestAggregator() {} |
| + |
| +cc::SurfaceId HittestAggregator::SurfaceIdAtPoint( |
| + cc::SurfaceId root_surface_id, |
| + const gfx::Point& point, |
| + gfx::Point* transformed_point) { |
| + return root_surface_id; |
|
rjkroege
2017/06/02 22:45:45
that's not right.
|
| +} |
| + |
| +void HittestAggregator::SubmitHittestData( |
| + hittest::mojom::HittestDataPtr hittest_data) { |
| + pending_[hittest_data->surface_id_] = std::move(hittest_data); |
|
rjkroege
2017/06/02 22:45:45
not sufficient. one surface may have multiple hitt
gklassen
2017/06/05 21:32:14
I'd like to understand this better. If there are
|
| +} |
| + |
| +void HittestAggregator::Aggregate(cc::SurfaceId display_surface_id) {} |
| + |
| +void HittestAggregator::swap() { |
|
rjkroege
2017/06/02 22:45:45
how is this connected up to BeginFrame?
|
| + if (current_regions_ == regions_[0]) { |
| + current_regions_ = regions_[1]; |
| + } else { |
| + current_regions_ = regions_[0]; |
| + } |
| +} |
| + |
| +void HittestAggregator::OnSurfaceDiscarded(const cc::SurfaceId& surface_id) { |
| + pending_.erase(surface_id); |
| + active_.erase(surface_id); |
| +} |
| +void HittestAggregator::OnSurfaceWillDraw(const cc::SurfaceId& surface_id) { |
| + active_[surface_id] = std::move(pending_[surface_id]); |
| +} |
| + |
| +} // namespace viz |