Index: cc/output/output_surface.cc |
diff --git a/cc/output/output_surface.cc b/cc/output/output_surface.cc |
index 2b6b7829999ef01c60648b6de7ed9acb4dce1fe7..2c251eb9c44c748320d60c820344c8ca1d39ad8c 100644 |
--- a/cc/output/output_surface.cc |
+++ b/cc/output/output_surface.cc |
@@ -177,9 +177,6 @@ void OutputSurface::SetUpContext3d() { |
context_provider_->SetLostContextCallback( |
base::Bind(&OutputSurface::DidLoseOutputSurface, |
base::Unretained(this))); |
- context_provider_->ContextSupport()->SetSwapBuffersCompleteCallback( |
- base::Bind(&OutputSurface::OnSwapBuffersComplete, |
- base::Unretained(this))); |
context_provider_->SetMemoryPolicyChangedCallback( |
base::Bind(&OutputSurface::SetMemoryPolicy, |
base::Unretained(this))); |
@@ -207,8 +204,6 @@ void OutputSurface::ResetContext3d() { |
ContextProvider::LostContextCallback()); |
context_provider_->SetMemoryPolicyChangedCallback( |
ContextProvider::MemoryPolicyChangedCallback()); |
- if (gpu::ContextSupport* support = context_provider_->ContextSupport()) |
- support->SetSwapBuffersCompleteCallback(base::Closure()); |
} |
context_provider_ = NULL; |
} |
@@ -266,6 +261,12 @@ void OutputSurface::SwapBuffers(CompositorFrame* frame) { |
context_provider_->ContextSupport()->PartialSwapBuffers( |
frame->gl_frame_data->sub_buffer_rect); |
} |
+ uint32_t sync_point = |
+ context_provider_->ContextGL()->InsertSyncPointCHROMIUM(); |
+ context_provider_->ContextSupport()->SignalSyncPoint( |
+ sync_point, |
+ base::Bind(&OutputSurface::OnSwapBuffersComplete, |
+ weak_ptr_factory_.GetWeakPtr())); |
client_->DidSwapBuffers(); |
} |