Index: content/common/gpu/image_transport_surface.cc |
diff --git a/content/common/gpu/image_transport_surface.cc b/content/common/gpu/image_transport_surface.cc |
index d5c1affed3d9d7bbd0385ac8c0fad46f87164900..fe909139c785ccb02367cd5f16d003b1be945795 100644 |
--- a/content/common/gpu/image_transport_surface.cc |
+++ b/content/common/gpu/image_transport_surface.cc |
@@ -157,6 +157,13 @@ void ImageTransportHelper::SendResizeView(const gfx::Size& size) { |
size)); |
} |
+void ImageTransportHelper::SendUpdateVSyncParameters( |
+ base::TimeTicks timebase, base::TimeDelta interval) { |
+ manager_->Send(new GpuHostMsg_UpdateVSyncParameters(stub_->surface_id(), |
+ timebase, |
+ interval)); |
+} |
+ |
void ImageTransportHelper::SetScheduled(bool is_scheduled) { |
gpu::GpuScheduler* scheduler = Scheduler(); |
if (!scheduler) |
@@ -271,6 +278,7 @@ void PassThroughImageTransportSurface::Destroy() { |
bool PassThroughImageTransportSurface::SwapBuffers() { |
bool result = gfx::GLSurfaceAdapter::SwapBuffers(); |
+ SendVSyncUpdateIfAvailable(); |
if (transport_) { |
// Round trip to the browser UI thread, for throttling, by sending a dummy |
@@ -287,6 +295,7 @@ bool PassThroughImageTransportSurface::SwapBuffers() { |
bool PassThroughImageTransportSurface::PostSubBuffer( |
int x, int y, int width, int height) { |
bool result = gfx::GLSurfaceAdapter::PostSubBuffer(x, y, width, height); |
+ SendVSyncUpdateIfAvailable(); |
if (transport_) { |
// Round trip to the browser UI thread, for throttling, by sending a dummy |
@@ -343,6 +352,14 @@ gfx::Size PassThroughImageTransportSurface::GetSize() { |
PassThroughImageTransportSurface::~PassThroughImageTransportSurface() {} |
+void PassThroughImageTransportSurface::SendVSyncUpdateIfAvailable() { |
+ base::TimeTicks timebase; |
+ base::TimeDelta interval; |
+ if (GetVSyncParameters(&timebase, &interval)) { |
+ helper_->SendUpdateVSyncParameters(timebase, interval); |
+ } |
+} |
+ |
} // namespace content |
#endif // defined(ENABLE_GPU) |