| Index: services/ui/ws/frame_generator.cc
|
| diff --git a/services/ui/ws/frame_generator.cc b/services/ui/ws/frame_generator.cc
|
| index 2ae2aaca95542947174403507be0be06d752c61c..45972186894066a7d22ecf955d0bd2636c10c8f4 100644
|
| --- a/services/ui/ws/frame_generator.cc
|
| +++ b/services/ui/ws/frame_generator.cc
|
| @@ -10,7 +10,6 @@
|
| #include "cc/quads/render_pass_draw_quad.h"
|
| #include "cc/quads/shared_quad_state.h"
|
| #include "cc/quads/surface_draw_quad.h"
|
| -#include "cc/surfaces/surface.h"
|
| #include "cc/surfaces/surface_id.h"
|
| #include "gpu/ipc/client/gpu_channel_host.h"
|
| #include "services/ui/surfaces/display_compositor.h"
|
| @@ -247,21 +246,13 @@ void FrameGenerator::AddOrUpdateSurfaceReference(
|
| window->compositor_frame_sink_manager()->GetLatestSurfaceId(type);
|
| if (surface_id.is_null())
|
| return;
|
| - // TODO(fsamuel): Use mojo interface to give root window a surface reference.
|
| - cc::SurfaceManager* surface_manager = display_compositor_->manager();
|
| auto it = dependencies_.find(surface_id.frame_sink_id());
|
| if (it == dependencies_.end()) {
|
| - cc::Surface* surface = surface_manager->GetSurfaceForId(surface_id);
|
| - if (!surface) {
|
| - LOG(ERROR) << "Attempting to add dependency to nonexistent surface "
|
| - << surface_id.ToString();
|
| - return;
|
| - }
|
| SurfaceDependency dependency = {
|
| surface_id.local_frame_id(),
|
| surface_sequence_generator_.CreateSurfaceSequence()};
|
| - surface->AddDestructionDependency(dependency.sequence);
|
| dependencies_[surface_id.frame_sink_id()] = dependency;
|
| + display_compositor_->AddSurfaceReference(surface_id, dependency.sequence);
|
| // Observe |window_surface|'s window so that we can release references when
|
| // the window is destroyed.
|
| Add(window);
|
| @@ -294,17 +285,17 @@ void FrameGenerator::ReleaseFrameSinkReference(
|
| return;
|
| std::vector<uint32_t> sequences;
|
| sequences.push_back(it->second.sequence.sequence);
|
| - cc::SurfaceManager* surface_manager = display_compositor_->manager();
|
| - surface_manager->DidSatisfySequences(frame_sink_id_, &sequences);
|
| + display_compositor_->ReturnSurfaceReferences(frame_sink_id,
|
| + std::move(sequences));
|
| dependencies_.erase(it);
|
| }
|
|
|
| void FrameGenerator::ReleaseAllSurfaceReferences() {
|
| - cc::SurfaceManager* surface_manager = display_compositor_->manager();
|
| std::vector<uint32_t> sequences;
|
| for (auto& dependency : dependencies_)
|
| sequences.push_back(dependency.second.sequence.sequence);
|
| - surface_manager->DidSatisfySequences(frame_sink_id_, &sequences);
|
| + display_compositor_->ReturnSurfaceReferences(frame_sink_id_,
|
| + std::move(sequences));
|
| dependencies_.clear();
|
| }
|
|
|
|
|