| Index: webkit/plugins/ppapi/ppb_surface_3d_impl.cc
|
| diff --git a/webkit/plugins/ppapi/ppb_surface_3d_impl.cc b/webkit/plugins/ppapi/ppb_surface_3d_impl.cc
|
| index e79fcd7b7ebb8884824499a354feb7dd08b2084c..0c81c1a132b3ed8f02ab76146568d9ca8935d5a5 100644
|
| --- a/webkit/plugins/ppapi/ppb_surface_3d_impl.cc
|
| +++ b/webkit/plugins/ppapi/ppb_surface_3d_impl.cc
|
| @@ -144,9 +144,6 @@ int32_t PPB_Surface3D_Impl::SwapBuffers(PP_CompletionCallback callback) {
|
| }
|
|
|
| void PPB_Surface3D_Impl::ViewInitiatedPaint() {
|
| - if (swap_callback_.func) {
|
| - swap_initiated_ = true;
|
| - }
|
| }
|
|
|
| void PPB_Surface3D_Impl::ViewFlushedPaint() {
|
| @@ -166,8 +163,17 @@ unsigned int PPB_Surface3D_Impl::GetBackingTextureId() {
|
| }
|
|
|
| void PPB_Surface3D_Impl::OnSwapBuffers() {
|
| - if (bound_to_instance_)
|
| + if (bound_to_instance_) {
|
| instance()->CommitBackingTexture();
|
| + swap_initiated_ = true;
|
| + } else if (swap_callback_.func) {
|
| + // If we're off-screen, no need to trigger compositing so run the callback
|
| + // immediately.
|
| + PP_CompletionCallback callback = PP_BlockUntilComplete();
|
| + std::swap(callback, swap_callback_);
|
| + swap_initiated_ = false;
|
| + PP_RunCompletionCallback(&callback, PP_OK);
|
| + }
|
| }
|
|
|
| } // namespace ppapi
|
|
|