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

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

Issue 2470143006: Remove dependency on SurfaceManager in FrameGenerator (Closed)
Patch Set: Remove a couple of bad std::moves 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
« no previous file with comments | « services/ui/ws/frame_generator.h ('k') | services/ui/ws/frame_generator_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..c239fb04b26f3a48abd79c1cb60bea3595258662 100644
--- a/services/ui/ws/frame_generator.cc
+++ b/services/ui/ws/frame_generator.cc
@@ -10,26 +10,22 @@
#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"
#include "services/ui/surfaces/surfaces_context_provider.h"
#include "services/ui/ws/frame_generator_delegate.h"
#include "services/ui/ws/server_window.h"
-#include "services/ui/ws/server_window_compositor_frame_sink.h"
#include "services/ui/ws/server_window_compositor_frame_sink_manager.h"
+#include "services/ui/ws/server_window_delegate.h"
namespace ui {
namespace ws {
-FrameGenerator::FrameGenerator(
- FrameGeneratorDelegate* delegate,
- ServerWindow* root_window,
- scoped_refptr<DisplayCompositor> display_compositor)
+FrameGenerator::FrameGenerator(FrameGeneratorDelegate* delegate,
+ ServerWindow* root_window)
: delegate_(delegate),
- display_compositor_(display_compositor),
frame_sink_id_(
WindowIdToTransportId(root_window->id()),
static_cast<uint32_t>(mojom::CompositorFrameSinkType::DEFAULT)),
@@ -247,21 +243,14 @@ 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;
+ GetDisplayCompositor()->AddSurfaceReference(surface_id,
+ dependency.sequence);
// Observe |window_surface|'s window so that we can release references when
// the window is destroyed.
Add(window);
@@ -294,20 +283,22 @@ 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);
+ GetDisplayCompositor()->ReturnSurfaceReferences(frame_sink_id, 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);
+ GetDisplayCompositor()->ReturnSurfaceReferences(frame_sink_id_, sequences);
dependencies_.clear();
}
+ui::DisplayCompositor* FrameGenerator::GetDisplayCompositor() {
+ return root_window_->delegate()->GetDisplayCompositor();
+}
+
void FrameGenerator::OnWindowDestroying(ServerWindow* window) {
Remove(window);
ServerWindowCompositorFrameSinkManager* compositor_frame_sink_manager =
« no previous file with comments | « services/ui/ws/frame_generator.h ('k') | services/ui/ws/frame_generator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698