Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(427)

Unified Diff: content/common/gpu/image_transport_surface.cc

Issue 11195011: Send vsync timebase updates to the browser compositor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased, and added a missing chunk Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 47bb204d7d225474af46f82affacd7ae222385f9..de566748e97ec0c65303b1386e87c0f72ce1e15a 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,18 @@ gfx::Size PassThroughImageTransportSurface::GetSize() {
PassThroughImageTransportSurface::~PassThroughImageTransportSurface() {}
+void PassThroughImageTransportSurface::SendVSyncUpdateIfAvailable() {
+// TODO (ajuma): Fix up the browser-side handling of these updates on
+// non-Aura, so we can remove this ifdef.
+#if defined(USE_AURA)
piman 2012/10/29 20:36:39 No ifdef AURA in the GPU-process code. Aura is a U
ajuma 2012/10/30 21:04:04 I've removed the ifdef. It turns out that not much
+ base::TimeTicks timebase;
+ base::TimeDelta interval;
+ if (GetVSyncParameters(&timebase, &interval)) {
+ helper_->SendUpdateVSyncParameters(timebase, interval);
+ }
+#endif
+}
+
} // namespace content
#endif // defined(ENABLE_GPU)

Powered by Google App Engine
This is Rietveld 408576698