Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2677)

Unified Diff: services/ui/ws/frame_generator.cc

Issue 2470143006: Remove dependency on SurfaceManager in FrameGenerator (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
}

Powered by Google App Engine
This is Rietveld 408576698