| 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 ac5eb2e7e2c649a5cae7c606e1823c8965d15d3f..6d2808f1295e695d169663260a8d93d71951ac5f 100644
|
| --- a/content/common/gpu/image_transport_surface.cc
|
| +++ b/content/common/gpu/image_transport_surface.cc
|
| @@ -187,7 +187,7 @@ void PassThroughImageTransportSurface::SetLatencyInfo(
|
| latency_info_.push_back(latency_info[i]);
|
| }
|
|
|
| -bool PassThroughImageTransportSurface::SwapBuffers() {
|
| +gfx::SwapResult PassThroughImageTransportSurface::SwapBuffers() {
|
| // GetVsyncValues before SwapBuffers to work around Mali driver bug:
|
| // crbug.com/223558.
|
| SendVSyncUpdateIfAvailable();
|
| @@ -206,12 +206,16 @@ bool PassThroughImageTransportSurface::SwapBuffers() {
|
| new std::vector<ui::LatencyInfo>();
|
| latency_info_ptr->swap(latency_info_);
|
| return gfx::GLSurfaceAdapter::SwapBuffersAsync(base::Bind(
|
| - &PassThroughImageTransportSurface::SwapBuffersCallBack,
|
| - weak_ptr_factory_.GetWeakPtr(), base::Owned(latency_info_ptr)));
|
| + &PassThroughImageTransportSurface::SwapBuffersCallBack,
|
| + weak_ptr_factory_.GetWeakPtr(), base::Owned(latency_info_ptr)))
|
| + ? gfx::SwapResult::SWAP_ACK
|
| + : gfx::SwapResult::SWAP_FAILED;
|
| }
|
|
|
| -bool PassThroughImageTransportSurface::PostSubBuffer(
|
| - int x, int y, int width, int height) {
|
| +gfx::SwapResult PassThroughImageTransportSurface::PostSubBuffer(int x,
|
| + int y,
|
| + int width,
|
| + int height) {
|
| SendVSyncUpdateIfAvailable();
|
|
|
| base::TimeTicks swap_time = base::TimeTicks::Now();
|
| @@ -228,14 +232,17 @@ bool PassThroughImageTransportSurface::PostSubBuffer(
|
| new std::vector<ui::LatencyInfo>();
|
| latency_info_ptr->swap(latency_info_);
|
| return gfx::GLSurfaceAdapter::PostSubBufferAsync(
|
| - x, y, width, height,
|
| - base::Bind(&PassThroughImageTransportSurface::SwapBuffersCallBack,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - base::Owned(latency_info_ptr)));
|
| + x, y, width, height,
|
| + base::Bind(&PassThroughImageTransportSurface::SwapBuffersCallBack,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + base::Owned(latency_info_ptr)))
|
| + ? gfx::SwapResult::SWAP_ACK
|
| + : gfx::SwapResult::SWAP_FAILED;
|
| }
|
|
|
| void PassThroughImageTransportSurface::SwapBuffersCallBack(
|
| - std::vector<ui::LatencyInfo>* latency_info_ptr) {
|
| + std::vector<ui::LatencyInfo>* latency_info_ptr,
|
| + gfx::SwapResult result) {
|
| base::TimeTicks swap_ack_time = base::TimeTicks::Now();
|
| for (auto& latency : *latency_info_ptr) {
|
| latency.AddLatencyNumberWithTimestamp(
|
| @@ -243,7 +250,7 @@ void PassThroughImageTransportSurface::SwapBuffersCallBack(
|
| swap_ack_time, 1);
|
| }
|
|
|
| - helper_->stub()->SendSwapBuffersCompleted(*latency_info_ptr);
|
| + helper_->stub()->SendSwapBuffersCompleted(*latency_info_ptr, result);
|
| }
|
|
|
| bool PassThroughImageTransportSurface::OnMakeCurrent(gfx::GLContext* context) {
|
|
|