| Index: services/ui/surfaces/display_compositor.cc
|
| diff --git a/services/ui/surfaces/display_compositor.cc b/services/ui/surfaces/display_compositor.cc
|
| index 9f466291fe5a395fa60257343eea6a8baa5e852d..16d9010a76ff694817c9bf0bf25c81512a80ea7f 100644
|
| --- a/services/ui/surfaces/display_compositor.cc
|
| +++ b/services/ui/surfaces/display_compositor.cc
|
| @@ -28,6 +28,8 @@ DisplayCompositor::DisplayCompositor(
|
| reference_manager_(&manager_),
|
| binding_(this, std::move(request)) {
|
| manager_.AddObserver(this);
|
| + if (client_)
|
| + client_->OnRootSurfaceId(GetRootSurfaceId());
|
| }
|
|
|
| void DisplayCompositor::CreateCompositorFrameSink(
|
| @@ -54,14 +56,11 @@ void DisplayCompositor::CreateCompositorFrameSink(
|
| std::move(private_request), std::move(client));
|
| }
|
|
|
| -void DisplayCompositor::AddRootSurfaceReference(const cc::SurfaceId& child_id) {
|
| +void DisplayCompositor::AddSurfaceReference(const cc::SurfaceReference& ref) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - AddSurfaceReference(GetRootSurfaceId(), child_id);
|
| -}
|
| + const cc::SurfaceId& parent_id = ref.parent_id();
|
| + const cc::SurfaceId& child_id = ref.child_id();
|
|
|
| -void DisplayCompositor::AddSurfaceReference(const cc::SurfaceId& parent_id,
|
| - const cc::SurfaceId& child_id) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| auto vector_iter = temp_references_.find(child_id.frame_sink_id());
|
|
|
| // If there are no temporary references for the FrameSinkId then we can just
|
| @@ -110,18 +109,11 @@ void DisplayCompositor::AddSurfaceReference(const cc::SurfaceId& parent_id,
|
| refs.erase(refs.begin(), ++temp_ref_iter);
|
| }
|
|
|
| -void DisplayCompositor::RemoveRootSurfaceReference(
|
| - const cc::SurfaceId& child_id) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - RemoveSurfaceReference(GetRootSurfaceId(), child_id);
|
| -}
|
| -
|
| -void DisplayCompositor::RemoveSurfaceReference(const cc::SurfaceId& parent_id,
|
| - const cc::SurfaceId& child_id) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| +void DisplayCompositor::RemoveSurfaceReference(
|
| + const cc::SurfaceReference& ref) {
|
| // TODO(kylechar): Each remove reference can trigger GC, it would be better if
|
| // we GC only once if removing multiple references.
|
| - reference_manager_->RemoveSurfaceReference(parent_id, child_id);
|
| + reference_manager_->RemoveSurfaceReference(ref.parent_id(), ref.child_id());
|
| }
|
|
|
| DisplayCompositor::~DisplayCompositor() {
|
|
|