Index: content/browser/android/in_process/synchronous_compositor_output_surface.cc |
diff --git a/content/browser/android/in_process/synchronous_compositor_output_surface.cc b/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
index 4e8ff8d38a62b5cc0f392499639cc99f5406828a..6701965726aab242bc95ee80b31f7d59eae80430 100644 |
--- a/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
+++ b/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
@@ -14,6 +14,7 @@ |
#include "content/browser/android/in_process/synchronous_compositor_impl.h" |
#include "content/browser/gpu/compositor_util.h" |
#include "content/public/browser/browser_thread.h" |
+#include "content/renderer/gpu/frame_swap_message_queue.h" |
#include "gpu/command_buffer/client/gles2_interface.h" |
#include "gpu/command_buffer/common/gpu_memory_allocation.h" |
#include "third_party/skia/include/core/SkCanvas.h" |
@@ -67,7 +68,8 @@ class SynchronousCompositorOutputSurface::SoftwareDevice |
}; |
SynchronousCompositorOutputSurface::SynchronousCompositorOutputSurface( |
- int routing_id) |
+ int routing_id, |
+ scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue) |
: cc::OutputSurface( |
scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareDevice(this))), |
routing_id_(routing_id), |
@@ -75,7 +77,8 @@ SynchronousCompositorOutputSurface::SynchronousCompositorOutputSurface( |
invoking_composite_(false), |
current_sw_canvas_(NULL), |
memory_policy_(0), |
- output_surface_client_(NULL) { |
+ output_surface_client_(NULL), |
+ frame_swap_message_queue_(frame_swap_message_queue) { |
capabilities_.deferred_gl_initialization = true; |
capabilities_.draw_and_swap_full_viewport_every_frame = true; |
capabilities_.adjust_deadline_for_parent = false; |
@@ -249,6 +252,14 @@ void SynchronousCompositorOutputSurface::SetMemoryPolicy( |
output_surface_client_->SetMemoryPolicy(memory_policy_); |
} |
+void SynchronousCompositorOutputSurface::GetMessagesToDeliver( |
+ ScopedVector<IPC::Message>* messages) { |
+ DCHECK(CalledOnValidThread()); |
+ scoped_ptr<FrameSwapMessageQueue::SendMessageScope> send_message_scope = |
+ frame_swap_message_queue_->AcquireSendMessageScope(); |
+ frame_swap_message_queue_->DrainMessages(messages); |
+} |
+ |
// Not using base::NonThreadSafe as we want to enforce a more exacting threading |
// requirement: SynchronousCompositorOutputSurface() must only be used on the UI |
// thread. |