diff options
author | piman@google.com <piman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-17 03:54:57 +0000 |
---|---|---|
committer | piman@google.com <piman@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-17 03:54:57 +0000 |
commit | 8aad42dcc8d683242c730901c51061de710046b9 (patch) | |
tree | 8039a09fa18702dca2681646612b54ef05957485 | |
parent | bf802a7a32cbd53466c30773498fa6c3674688ea (diff) | |
download | chromium_src-8aad42dcc8d683242c730901c51061de710046b9.zip chromium_src-8aad42dcc8d683242c730901c51061de710046b9.tar.gz chromium_src-8aad42dcc8d683242c730901c51061de710046b9.tar.bz2 |
Revert 69511 - Make Graphics3D::SwapBuffers take a completion callback
BUG=none
TEST=with pepper flash, rate control works
Review URL: http://codereview.chromium.org/5944001
TBR=piman@google.com
Review URL: http://codereview.chromium.org/5835007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69512 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/renderer/render_view.h | 2 | ||||
-rw-r--r-- | chrome/renderer/webgraphicscontext3d_command_buffer_impl.cc | 5 | ||||
-rw-r--r-- | ppapi/c/dev/ppb_graphics_3d_dev.h | 11 | ||||
-rw-r--r-- | ppapi/cpp/dev/graphics_3d_dev.cc | 5 | ||||
-rw-r--r-- | ppapi/cpp/dev/graphics_3d_dev.h | 3 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_plugin_instance.cc | 6 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_graphics_3d_impl.cc | 36 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_graphics_3d_impl.h | 15 |
8 files changed, 16 insertions, 67 deletions
diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index ae7bc6a..d7589dc 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -669,13 +669,13 @@ class RenderView : public RenderWidget, // appropriate section, add it there. If not, there are some random functions // nearer to the top you can add it to. - virtual void DidFlushPaint(); protected: // RenderWidget overrides: virtual void Close(); virtual void OnResize(const gfx::Size& new_size, const gfx::Rect& resizer_rect); virtual void DidInitiatePaint(); + virtual void DidFlushPaint(); virtual bool GetBitmapForOptimizedPluginPaint( const gfx::Rect& paint_bounds, TransportDIB** dib, diff --git a/chrome/renderer/webgraphicscontext3d_command_buffer_impl.cc b/chrome/renderer/webgraphicscontext3d_command_buffer_impl.cc index 1be5461..659c8be 100644 --- a/chrome/renderer/webgraphicscontext3d_command_buffer_impl.cc +++ b/chrome/renderer/webgraphicscontext3d_command_buffer_impl.cc @@ -116,11 +116,6 @@ bool WebGraphicsContext3DCommandBufferImpl::initialize( renderview->routing_id(), kWebGraphicsContext3DPerferredGLExtensions, attribs); - if (context_) { - ggl::SetSwapBuffersCallback( - context_, - NewCallback(renderview, &RenderView::DidFlushPaint)); - } } else { bool compositing_enabled = !CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableAcceleratedCompositing); diff --git a/ppapi/c/dev/ppb_graphics_3d_dev.h b/ppapi/c/dev/ppb_graphics_3d_dev.h index eb8c150..7bd739b 100644 --- a/ppapi/c/dev/ppb_graphics_3d_dev.h +++ b/ppapi/c/dev/ppb_graphics_3d_dev.h @@ -6,7 +6,6 @@ #define PPAPI_C_DEV_PPB_GRAPHICS_3D_DEV_H_ #include "ppapi/c/pp_bool.h" -#include "ppapi/c/pp_completion_callback.h" #include "ppapi/c/pp_instance.h" #include "ppapi/c/pp_module.h" #include "ppapi/c/pp_resource.h" @@ -21,12 +20,12 @@ // CHECK(device->MakeCurrent(context)); // glClear(GL_COLOR_BUFFER); // CHECK(device->MakeCurrent(NULL)); -// CHECK(device->SwapBuffers(context, callback)); +// CHECK(device->SwapBuffers(context)); // // // Shutdown. // core->ReleaseResource(context); -#define PPB_GRAPHICS_3D_DEV_INTERFACE "PPB_Graphics3D(Dev);0.4" +#define PPB_GRAPHICS_3D_DEV_INTERFACE "PPB_Graphics3D(Dev);0.3" // These are the same error codes as used by EGL. enum { @@ -90,15 +89,11 @@ struct PPB_Graphics3D_Dev { // Snapshots the rendered frame and makes it available for composition with // the rest of the page. The alpha channel is used for translucency effects. // One means fully opaque. Zero means fully transparent. Any thread. - // The callback will be called when SwapBuffers completes. While a SwapBuffers - // call is pending, all subsequent SwapBuffers calls will fail. Specifying a - // NULL callback means blocking but this is not legal on the main thread. // TODO(apatrick): premultiplied alpha or linear alpha? Premultiplied alpha is // better for correct alpha blending effect. Most existing OpenGL code assumes // linear. I could convert from linear to premultiplied during the copy from // back-buffer to offscreen "front-buffer". - PP_Bool (*SwapBuffers)(PP_Resource context, - struct PP_CompletionCallback callback); + PP_Bool (*SwapBuffers)(PP_Resource context); // Returns the current error for this thread. This is not associated with a // particular context. It is distinct from the GL error returned by diff --git a/ppapi/cpp/dev/graphics_3d_dev.cc b/ppapi/cpp/dev/graphics_3d_dev.cc index b1fa037..a15417c 100644 --- a/ppapi/cpp/dev/graphics_3d_dev.cc +++ b/ppapi/cpp/dev/graphics_3d_dev.cc @@ -119,9 +119,8 @@ bool Graphics3D_Dev::MakeCurrent() const { return graphics_3d_f && graphics_3d_f->MakeCurent(pp_resource()); } -bool Graphics3D_Dev::SwapBuffers(const CompletionCallback& cc) const { - return graphics_3d_f && graphics_3d_f->SwapBuffers( - pp_resource(), cc.pp_completion_callback()); +bool Graphics3D_Dev::SwapBuffers() const { + return graphics_3d_f && graphics_3d_f->SwapBuffers(pp_resource()); } } // namespace pp diff --git a/ppapi/cpp/dev/graphics_3d_dev.h b/ppapi/cpp/dev/graphics_3d_dev.h index ac9406b..88fe47d 100644 --- a/ppapi/cpp/dev/graphics_3d_dev.h +++ b/ppapi/cpp/dev/graphics_3d_dev.h @@ -7,7 +7,6 @@ #include "ppapi/c/dev/ppb_graphics_3d_dev.h" #include "ppapi/c/dev/ppb_opengles_dev.h" -#include "ppapi/cpp/completion_callback.h" #include "ppapi/cpp/instance.h" #include "ppapi/cpp/resource.h" @@ -42,7 +41,7 @@ class Graphics3D_Dev : public Resource { const int32_t* attrib_list); bool MakeCurrent() const; - bool SwapBuffers(const CompletionCallback& cc) const; + bool SwapBuffers() const; protected: explicit Graphics3D_Dev(PP_Resource resource_id) : Resource(resource_id) {} diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.cc b/webkit/plugins/ppapi/ppapi_plugin_instance.cc index 6f8cbeb..3b7aff9 100644 --- a/webkit/plugins/ppapi/ppapi_plugin_instance.cc +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.cc @@ -591,7 +591,7 @@ void PluginInstance::ViewChanged(const gfx::Rect& position, // potentially been rendered. Plan is to embed resize commands in the // command buffer just before ViewChanged is called. bound_graphics_3d()->ResizeBackingTexture(position.size()); - bound_graphics_3d()->SwapBuffers(PP_BlockUntilComplete()); + bound_graphics_3d()->SwapBuffers(); } position_ = position; @@ -639,15 +639,11 @@ void PluginInstance::SetContentAreaFocus(bool has_focus) { void PluginInstance::ViewInitiatedPaint() { if (bound_graphics_2d()) bound_graphics_2d()->ViewInitiatedPaint(); - if (bound_graphics_3d()) - bound_graphics_3d()->ViewInitiatedPaint(); } void PluginInstance::ViewFlushedPaint() { if (bound_graphics_2d()) bound_graphics_2d()->ViewFlushedPaint(); - if (bound_graphics_3d()) - bound_graphics_3d()->ViewFlushedPaint(); } bool PluginInstance::GetBitmapForOptimizedPluginPaint( diff --git a/webkit/plugins/ppapi/ppb_graphics_3d_impl.cc b/webkit/plugins/ppapi/ppb_graphics_3d_impl.cc index 118c570..0355262 100644 --- a/webkit/plugins/ppapi/ppb_graphics_3d_impl.cc +++ b/webkit/plugins/ppapi/ppb_graphics_3d_impl.cc @@ -97,10 +97,10 @@ PP_Resource GetCurrentContext() { return current_context ? current_context->GetReference() : 0; } -PP_Bool SwapBuffers(PP_Resource graphics3d, PP_CompletionCallback callback) { +PP_Bool SwapBuffers(PP_Resource graphics3d) { scoped_refptr<PPB_Graphics3D_Impl> context( Resource::GetAs<PPB_Graphics3D_Impl>(graphics3d)); - return BoolToPPBool(context && context->SwapBuffers(callback)); + return BoolToPPBool(context && context->SwapBuffers()); } uint32_t GetError() { @@ -132,9 +132,7 @@ const PPB_Graphics3D_Dev ppb_graphics3d = { PPB_Graphics3D_Impl::PPB_Graphics3D_Impl(PluginModule* module) : Resource(module), - bound_instance_(NULL), - swap_initiated_(false), - swap_callback_(PP_BlockUntilComplete()) { + bound_instance_(NULL) { } const PPB_Graphics3D_Dev* PPB_Graphics3D_Impl::GetInterface() { @@ -215,16 +213,10 @@ bool PPB_Graphics3D_Impl::MakeCurrent() { return true; } -bool PPB_Graphics3D_Impl::SwapBuffers(PP_CompletionCallback callback) { +bool PPB_Graphics3D_Impl::SwapBuffers() { if (!platform_context_.get()) return false; - if (swap_callback_.func) { - // Already a pending SwapBuffers that hasn't returned yet. - return false; - } - - swap_callback_ = callback; return platform_context_->SwapBuffers(); } @@ -249,26 +241,6 @@ void PPB_Graphics3D_Impl::SetSwapBuffersCallback(Callback0::Type* callback) { platform_context_->SetSwapBuffersCallback(callback); } -void PPB_Graphics3D_Impl::ViewInitiatedPaint() { - if (swap_callback_.func) { - swap_initiated_ = true; - } -} - -void PPB_Graphics3D_Impl::ViewFlushedPaint() { - // Notify any "painted" callback. See |unpainted_flush_callback_| in the - // header for more. - if (swap_initiated_ && swap_callback_.func) { - // We must clear swap_callback_ before issuing the callback. It will be - // common for the plugin to issue another SwapBuffers in response to the - // callback, and we don't want to think that a callback is already pending. - PP_CompletionCallback callback = PP_BlockUntilComplete(); - std::swap(callback, swap_callback_); - swap_initiated_ = false; - PP_RunCompletionCallback(&callback, PP_OK); - } -} - unsigned PPB_Graphics3D_Impl::GetBackingTextureId() { if (!platform_context_.get()) return 0; diff --git a/webkit/plugins/ppapi/ppb_graphics_3d_impl.h b/webkit/plugins/ppapi/ppb_graphics_3d_impl.h index 98c8885..8124979 100644 --- a/webkit/plugins/ppapi/ppb_graphics_3d_impl.h +++ b/webkit/plugins/ppapi/ppb_graphics_3d_impl.h @@ -48,15 +48,15 @@ class PPB_Graphics3D_Impl : public Resource { bool Init(PP_Instance instance_id, int32_t config, const int32_t* attrib_list); - // Associates this PPB_Graphics3D_Impl with the given plugin instance. You can - // pass NULL to clear the existing device. Returns true on success. In this - // case, the last rendered frame is displayed. + // Associates this PPB_Graphics3D_Impl with the given plugin instance. You can pass + // NULL to clear the existing device. Returns true on success. In this case, + // the last rendered frame is displayed. // TODO(apatrick): Figure out the best semantics here. bool BindToInstance(PluginInstance* new_instance); bool MakeCurrent(); - bool SwapBuffers(PP_CompletionCallback callback); + bool SwapBuffers(); unsigned GetError(); @@ -64,9 +64,6 @@ class PPB_Graphics3D_Impl : public Resource { void SetSwapBuffersCallback(Callback0::Type* callback); - void ViewInitiatedPaint(); - void ViewFlushedPaint(); - unsigned GetBackingTextureId(); gpu::gles2::GLES2Implementation* impl() { @@ -80,10 +77,6 @@ class PPB_Graphics3D_Impl : public Resource { // to, if any. If the context is currently unbound, this will be NULL. PluginInstance* bound_instance_; - // True when the page's SwapBuffers has been issued but not returned yet. - bool swap_initiated_; - PP_CompletionCallback swap_callback_; - // PluginDelegate's 3D Context. Responsible for providing the command buffer. scoped_ptr<PluginDelegate::PlatformContext3D> platform_context_; |