| Index: content/renderer/gpu/compositor_output_surface.cc
|
| diff --git a/content/renderer/gpu/compositor_output_surface.cc b/content/renderer/gpu/compositor_output_surface.cc
|
| index c6424415e1add67e3d71ffdea014a592ab89492e..0bbe870fa0ef3d90491d74b49d668abd92fe7bf8 100644
|
| --- a/content/renderer/gpu/compositor_output_surface.cc
|
| +++ b/content/renderer/gpu/compositor_output_surface.cc
|
| @@ -15,6 +15,7 @@
|
| #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h"
|
| #include "content/common/view_messages.h"
|
| #include "content/public/common/content_switches.h"
|
| +#include "content/renderer/gpu/frame_swap_message_queue.h"
|
| #include "content/renderer/render_thread_impl.h"
|
| #include "gpu/command_buffer/client/context_support.h"
|
| #include "gpu/command_buffer/client/gles2_interface.h"
|
| @@ -54,12 +55,14 @@ CompositorOutputSurface::CompositorOutputSurface(
|
| uint32 output_surface_id,
|
| const scoped_refptr<ContextProviderCommandBuffer>& context_provider,
|
| scoped_ptr<cc::SoftwareOutputDevice> software_device,
|
| + scoped_refptr<FrameSwapMessageQueue> swap_frame_message_queue,
|
| bool use_swap_compositor_frame_message)
|
| : OutputSurface(context_provider, software_device.Pass()),
|
| output_surface_id_(output_surface_id),
|
| use_swap_compositor_frame_message_(use_swap_compositor_frame_message),
|
| output_surface_filter_(
|
| RenderThreadImpl::current()->compositor_output_surface_filter()),
|
| + swap_frame_message_queue_(swap_frame_message_queue),
|
| routing_id_(routing_id),
|
| prefers_smoothness_(false),
|
| #if defined(OS_WIN)
|
| @@ -71,6 +74,7 @@ CompositorOutputSurface::CompositorOutputSurface(
|
| layout_test_mode_(RenderThreadImpl::current()->layout_test_mode()),
|
| weak_ptrs_(this) {
|
| DCHECK(output_surface_filter_.get());
|
| + DCHECK(swap_frame_message_queue_.get());
|
| DetachFromThread();
|
| message_sender_ = RenderThreadImpl::current()->sync_message_filter();
|
| DCHECK(message_sender_.get());
|
| @@ -162,9 +166,13 @@ void CompositorOutputSurface::SwapBuffers(cc::CompositorFrame* frame) {
|
| }
|
|
|
| if (use_swap_compositor_frame_message_) {
|
| + std::vector<IPC::Message> messages_to_deliver_with_frame;
|
| + swap_frame_message_queue_->DrainMessages(
|
| + frame->metadata.source_frame_number, &messages_to_deliver_with_frame);
|
| Send(new ViewHostMsg_SwapCompositorFrame(routing_id_,
|
| output_surface_id_,
|
| - *frame));
|
| + *frame,
|
| + messages_to_deliver_with_frame));
|
| client_->DidSwapBuffers();
|
| return;
|
| }
|
|
|