Index: services/ui/ws/server_window_surface.cc |
diff --git a/services/ui/ws/server_window_surface.cc b/services/ui/ws/server_window_surface.cc |
index 01de6021a8ed06c1b95be5dd8b4bc29e37ed9162..5f0e3b5465f1ae4bc9cdff4f95740b2e7384a7b3 100644 |
--- a/services/ui/ws/server_window_surface.cc |
+++ b/services/ui/ws/server_window_surface.cc |
@@ -20,8 +20,8 @@ namespace ws { |
ServerWindowSurface::ServerWindowSurface( |
ServerWindowSurfaceManager* manager, |
const cc::FrameSinkId& frame_sink_id, |
- mojo::InterfaceRequest<Surface> request, |
- mojom::SurfaceClientPtr client) |
+ cc::mojom::MojoCompositorFrameSinkRequest request, |
+ cc::mojom::MojoCompositorFrameSinkClientPtr client) |
: frame_sink_id_(frame_sink_id), |
manager_(manager), |
surface_factory_(frame_sink_id_, manager_->GetSurfaceManager(), this), |
@@ -43,9 +43,11 @@ ServerWindowSurface::~ServerWindowSurface() { |
surface_manager->InvalidateFrameSinkId(frame_sink_id_); |
} |
-void ServerWindowSurface::SubmitCompositorFrame( |
- cc::CompositorFrame frame, |
- const SubmitCompositorFrameCallback& callback) { |
+void ServerWindowSurface::SetNeedsBeginFrame(bool needs_begin_frame) { |
rjkroege
2016/10/20 21:33:18
if it works without it, then why is it needed? Wha
Fady Samuel
2016/10/20 23:04:10
We don't use unified BeginFrame in Mus yet. staraz
|
+ // TODO(fsamuel): Implement this. |
+} |
+ |
+void ServerWindowSurface::SubmitCompositorFrame(cc::CompositorFrame frame) { |
gfx::Size frame_size = |
frame.delegated_frame_data->render_pass_list[0]->output_rect.size(); |
// If the size of the CompostiorFrame has changed then destroy the existing |
@@ -57,8 +59,10 @@ void ServerWindowSurface::SubmitCompositorFrame( |
surface_factory_.Create(local_frame_id_); |
} |
may_contain_video_ = frame.metadata.may_contain_video; |
- surface_factory_.SubmitCompositorFrame(local_frame_id_, std::move(frame), |
- callback); |
+ surface_factory_.SubmitCompositorFrame( |
+ local_frame_id_, std::move(frame), |
+ base::Bind(&ServerWindowSurface::DidReceiveCompositorFrameAck, |
+ base::Unretained(this))); |
last_submitted_frame_size_ = frame_size; |
window()->delegate()->OnScheduleWindowPaint(window()); |
} |
@@ -77,11 +81,17 @@ ServerWindow* ServerWindowSurface::window() { |
return manager_->window(); |
} |
+void ServerWindowSurface::DidReceiveCompositorFrameAck() { |
rjkroege
2016/10/20 21:33:18
You are deleting ServerWindowSurface in a subseque
Fady Samuel
2016/10/20 23:04:10
Not quite. ServerWindowSurface => ServerWindowComp
|
+ if (!client_ || !base::MessageLoop::current()) |
+ return; |
+ client_->DidReceiveCompositorFrameAck(); |
+} |
+ |
void ServerWindowSurface::ReturnResources( |
const cc::ReturnedResourceArray& resources) { |
if (!client_ || !base::MessageLoop::current()) |
return; |
- client_->ReturnResources(mojo::Array<cc::ReturnedResource>::From(resources)); |
+ client_->ReclaimResources(resources); |
} |
void ServerWindowSurface::SetBeginFrameSource( |