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 65a6f4a5503b6fa0e8b0b7d12769b7250501c9b2..0ad873296ed35678beaf0cb18428f4a38e0f5dd1 100644 |
--- a/content/renderer/gpu/compositor_output_surface.cc |
+++ b/content/renderer/gpu/compositor_output_surface.cc |
@@ -6,6 +6,7 @@ |
#include "base/message_loop_proxy.h" |
#include "cc/compositor_frame.h" |
+#include "cc/compositor_frame_ack.h" |
#include "cc/output_surface_client.h" |
#include "content/common/view_messages.h" |
#include "content/renderer/render_thread_impl.h" |
@@ -26,7 +27,11 @@ namespace content { |
IPC::ForwardingMessageFilter* CompositorOutputSurface::CreateFilter( |
base::TaskRunner* target_task_runner) |
{ |
- uint32 messages_to_filter[] = {ViewMsg_UpdateVSyncParameters::ID}; |
+ uint32 messages_to_filter[] = { |
+ ViewMsg_UpdateVSyncParameters::ID, |
+ ViewMsg_SwapCompositorFrameAck::ID |
+ }; |
+ |
return new IPC::ForwardingMessageFilter( |
messages_to_filter, arraysize(messages_to_filter), |
target_task_runner); |
@@ -35,7 +40,8 @@ IPC::ForwardingMessageFilter* CompositorOutputSurface::CreateFilter( |
CompositorOutputSurface::CompositorOutputSurface( |
int32 routing_id, |
WebGraphicsContext3D* context3D, |
- cc::SoftwareOutputDevice* software_device) |
+ cc::SoftwareOutputDevice* software_device, |
+ bool renderToMailbox) |
: output_surface_filter_( |
RenderThreadImpl::current()->compositor_output_surface_filter()), |
client_(NULL), |
@@ -44,6 +50,7 @@ CompositorOutputSurface::CompositorOutputSurface( |
software_device_(software_device) { |
DCHECK(output_surface_filter_); |
capabilities_.has_parent_compositor = false; |
+ capabilities_.render_to_mailbox = renderToMailbox; |
DetachFromThread(); |
} |
@@ -102,6 +109,7 @@ void CompositorOutputSurface::OnMessageReceived(const IPC::Message& message) { |
return; |
IPC_BEGIN_MESSAGE_MAP(CompositorOutputSurface, message) |
IPC_MESSAGE_HANDLER(ViewMsg_UpdateVSyncParameters, OnUpdateVSyncParameters); |
+ IPC_MESSAGE_HANDLER(ViewMsg_SwapCompositorFrameAck, OnSwapAck); |
IPC_END_MESSAGE_MAP() |
} |
@@ -112,6 +120,10 @@ void CompositorOutputSurface::OnUpdateVSyncParameters( |
client_->OnVSyncParametersChanged(timebase, interval); |
} |
+void CompositorOutputSurface::OnSwapAck(const cc::CompositorFrameAck& ack) { |
+ client_->OnSendFrameToParentCompositorAck(ack); |
+} |
+ |
bool CompositorOutputSurface::Send(IPC::Message* message) { |
return ChildThread::current()->sync_message_filter()->Send(message); |
} |