Index: content/browser/aura/software_browser_compositor_output_surface.cc |
diff --git a/content/browser/aura/software_browser_compositor_output_surface.cc b/content/browser/aura/software_browser_compositor_output_surface.cc |
index 773e7df75bb6edc62e1ded4cf8fe07e71472e616..554f29bd5584304d3c5cbdad572a0a850657111c 100644 |
--- a/content/browser/aura/software_browser_compositor_output_surface.cc |
+++ b/content/browser/aura/software_browser_compositor_output_surface.cc |
@@ -4,18 +4,34 @@ |
#include "content/browser/aura/software_browser_compositor_output_surface.h" |
+#include "base/memory/ref_counted.h" |
#include "base/message_loop/message_loop.h" |
#include "base/time/time.h" |
#include "cc/output/compositor_frame.h" |
#include "cc/output/software_output_device.h" |
+#include "content/browser/aura/browser_compositor_output_surface_proxy.h" |
#include "content/browser/renderer_host/render_widget_host_impl.h" |
#include "ui/events/latency_info.h" |
+#include "ui/gl/vsync_provider.h" |
namespace content { |
SoftwareBrowserCompositorOutputSurface::SoftwareBrowserCompositorOutputSurface( |
- scoped_ptr<cc::SoftwareOutputDevice> software_device) |
- : cc::OutputSurface(software_device.Pass()) {} |
+ scoped_refptr<BrowserCompositorOutputSurfaceProxy> surface_proxy, |
+ scoped_ptr<cc::SoftwareOutputDevice> software_device, |
+ int surface_id, |
+ IDMap<BrowserCompositorOutputSurface>* output_surface_map, |
+ base::MessageLoopProxy* compositor_message_loop, |
+ base::WeakPtr<ui::Compositor> compositor) |
+ : BrowserCompositorOutputSurface(software_device.Pass(), |
+ surface_id, |
+ output_surface_map, |
+ compositor_message_loop, |
+ compositor), |
+ output_surface_proxy_(surface_proxy) {} |
+ |
+SoftwareBrowserCompositorOutputSurface:: |
+ ~SoftwareBrowserCompositorOutputSurface() {} |
void SoftwareBrowserCompositorOutputSurface::SwapBuffers( |
cc::CompositorFrame* frame) { |
@@ -28,6 +44,15 @@ void SoftwareBrowserCompositorOutputSurface::SwapBuffers( |
base::Bind( |
&RenderWidgetHostImpl::CompositorFrameDrawn, |
latency_info)); |
+ |
+ gfx::VSyncProvider* vsync_provider = software_device()->GetVSyncProvider(); |
+ if (vsync_provider) { |
+ vsync_provider->GetVSyncParameters( |
+ base::Bind(&BrowserCompositorOutputSurfaceProxy:: |
+ OnUpdateVSyncParametersOnCompositorThread, |
+ output_surface_proxy_, |
+ surface_id_)); |
+ } |
} |
} // namespace content |