diff options
author | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-20 01:20:47 +0000 |
---|---|---|
committer | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-20 01:20:47 +0000 |
commit | 024e9386c24b862cae3a4cf4bd22fd4651b02cc5 (patch) | |
tree | 12f9a2c80e2a142856c1adefc3253f66a491f0bb /gpu | |
parent | 9cf005d236d090fb18d8a5b6c6c630a94e893ef4 (diff) | |
download | chromium_src-024e9386c24b862cae3a4cf4bd22fd4651b02cc5.zip chromium_src-024e9386c24b862cae3a4cf4bd22fd4651b02cc5.tar.gz chromium_src-024e9386c24b862cae3a4cf4bd22fd4651b02cc5.tar.bz2 |
Revert 39530 - GPU plugin forwards repaint events to Pepper plugin.
WM_PAINT results in a call to Pepper repaint callback.
Implemented WM_ERASEBKGND to prevent flickering on repaint.
Implemented PGL_NO_CONTEXT (copied from EGL spec). This is already reviewed by alokp but unfortunately got entangled with this CL.
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/571018
TBR=alokp@chromium.org
Review URL: http://codereview.chromium.org/650100
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39535 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/demos/framework/demo.cc | 4 | ||||
-rw-r--r-- | gpu/demos/framework/demo.h | 4 | ||||
-rw-r--r-- | gpu/demos/framework/main_pepper.cc | 5 | ||||
-rw-r--r-- | gpu/demos/framework/plugin.cc | 35 | ||||
-rw-r--r-- | gpu/demos/framework/plugin.h | 4 | ||||
-rw-r--r-- | gpu/demos/framework/window_win.cc | 4 | ||||
-rw-r--r-- | gpu/demos/gles2_book/simple_vertex_shader.cc | 4 | ||||
-rw-r--r-- | gpu/pgl/pgl.cc | 2 | ||||
-rw-r--r-- | gpu/pgl/pgl.h | 16 |
9 files changed, 19 insertions, 59 deletions
diff --git a/gpu/demos/framework/demo.cc b/gpu/demos/framework/demo.cc index 1679b3f..49fa519 100644 --- a/gpu/demos/framework/demo.cc +++ b/gpu/demos/framework/demo.cc @@ -31,9 +31,5 @@ void Demo::Draw() { Render(elapsed_sec); } -bool Demo::IsAnimated() { - return false; -} - } // namespace demos } // namespace gpu diff --git a/gpu/demos/framework/demo.h b/gpu/demos/framework/demo.h index 28c8923..801609b 100644 --- a/gpu/demos/framework/demo.h +++ b/gpu/demos/framework/demo.h @@ -33,10 +33,6 @@ class Demo { // a rendering context has already been created and made current. virtual bool InitGL() = 0; - // Returns whether the demo is animated. Animated demos are drawn - // continuously. Unanimated demos are only drawn when the window is invalid. - virtual bool IsAnimated(); - // This function is called by the framework to perform OpenGL rendering. // When this function is called, it is assumed that the rendering context // has been made current. diff --git a/gpu/demos/framework/main_pepper.cc b/gpu/demos/framework/main_pepper.cc index cf8f510..6937b62 100644 --- a/gpu/demos/framework/main_pepper.cc +++ b/gpu/demos/framework/main_pepper.cc @@ -90,11 +90,6 @@ void NPP_Print(NPP instance, NPPrint* platformPrint) { } int16 NPP_HandleEvent(NPP instance, void* event) { - Plugin* plugin = static_cast<Plugin*>(instance->pdata); - - if (plugin) - return plugin->HandleEvent(*static_cast<NPPepperEvent*>(event)); - return 0; } diff --git a/gpu/demos/framework/plugin.cc b/gpu/demos/framework/plugin.cc index 9ba01d4..0514f81 100644 --- a/gpu/demos/framework/plugin.cc +++ b/gpu/demos/framework/plugin.cc @@ -74,13 +74,8 @@ NPClass plugin_class = { PluginSetProperty, }; -void TickCallback(void* data) { - reinterpret_cast<gpu::demos::Plugin*>(data)->Tick(); -} - -void RepaintCallback(NPP npp, NPDeviceContext3D* /* context */) { - Plugin* plugin = static_cast<Plugin*>(npp->pdata); - plugin->Paint(); +void PaintCallback(void* data) { + reinterpret_cast<gpu::demos::Plugin*>(data)->Paint(); } } @@ -101,7 +96,7 @@ Plugin::~Plugin() { // Destroy demo while GL context is current and before it is destroyed. pglMakeCurrent(pgl_context_); demo_.reset(); - pglMakeCurrent(PGL_NO_CONTEXT); + pglMakeCurrent(NULL); DestroyContext(); } @@ -126,22 +121,10 @@ void Plugin::SetWindow(const NPWindow& window) { if (!pgl_context_) { CreateContext(); - - // Schedule first call to Tick. - if (demo_->IsAnimated()) - g_browser->pluginthreadasynccall(npp_, TickCallback, this); } -} -int32 Plugin::HandleEvent(const NPPepperEvent& event) { - return 0; -} - -void Plugin::Tick() { - Paint(); - - // Schedule another call to Tick. - g_browser->pluginthreadasynccall(npp_, TickCallback, this); + // Schedule the first call to Draw. + g_browser->pluginthreadasynccall(npp_, PaintCallback, this); } void Plugin::Paint() { @@ -153,7 +136,10 @@ void Plugin::Paint() { demo_->Draw(); pglSwapBuffers(); - pglMakeCurrent(PGL_NO_CONTEXT); + pglMakeCurrent(NULL); + + // Schedule another call to Paint. + g_browser->pluginthreadasynccall(npp_, PaintCallback, this); } void Plugin::CreateContext() { @@ -163,7 +149,6 @@ void Plugin::CreateContext() { NPDeviceContext3DConfig config; config.commandBufferSize = kCommandBufferSize; device3d_->initializeContext(npp_, &config, &context3d_); - context3d_.repaintCallback = RepaintCallback; // Create a PGL context. pgl_context_ = pglCreateContext(npp_, device3d_, &context3d_); @@ -171,7 +156,7 @@ void Plugin::CreateContext() { // Initialize demo. pglMakeCurrent(pgl_context_); CHECK(demo_->InitGL()); - pglMakeCurrent(PGL_NO_CONTEXT); + pglMakeCurrent(NULL); } void Plugin::DestroyContext() { diff --git a/gpu/demos/framework/plugin.h b/gpu/demos/framework/plugin.h index 640d9c0..0f4b55e 100644 --- a/gpu/demos/framework/plugin.h +++ b/gpu/demos/framework/plugin.h @@ -26,10 +26,6 @@ class Plugin : public NPObject { NPP npp() const { return npp_; } void New(NPMIMEType pluginType, int16 argc, char* argn[], char* argv[]); void SetWindow(const NPWindow& window); - int32 HandleEvent(const NPPepperEvent& event); - - // Called continuously for animated demos. - void Tick(); // Called by the browser to paint the window. void Paint(); diff --git a/gpu/demos/framework/window_win.cc b/gpu/demos/framework/window_win.cc index dfd79fc..37f41c2 100644 --- a/gpu/demos/framework/window_win.cc +++ b/gpu/demos/framework/window_win.cc @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "gpu/demos/framework/demo.h" #include "gpu/demos/framework/window.h" namespace { @@ -53,8 +52,7 @@ void Window::MainLoop() { ::DispatchMessage(&msg); } // Message queue is empty and application has not quit yet - keep painting. - if (!done && demo_->IsAnimated()) - ::InvalidateRect(window_handle_,NULL, FALSE); + if (!done) ::InvalidateRect(window_handle_, NULL, FALSE); } } diff --git a/gpu/demos/gles2_book/simple_vertex_shader.cc b/gpu/demos/gles2_book/simple_vertex_shader.cc index 0f8b72e..dff99ca 100644 --- a/gpu/demos/gles2_book/simple_vertex_shader.cc +++ b/gpu/demos/gles2_book/simple_vertex_shader.cc @@ -22,10 +22,6 @@ class SimpleVertexShader : public Example<SVSUserData> { const wchar_t* Title() const { return L"Simple Vertex Shader"; } - - virtual bool IsAnimated() { - return true; - } }; } // namespace gles2_book diff --git a/gpu/pgl/pgl.cc b/gpu/pgl/pgl.cc index 59c2635..d357fe2 100644 --- a/gpu/pgl/pgl.cc +++ b/gpu/pgl/pgl.cc @@ -223,7 +223,7 @@ PGLBoolean pglDestroyContext(PGLContext pgl_context) { return PGL_FALSE; if (pgl_context == pglGetCurrentContext()) - pglMakeCurrent(PGL_NO_CONTEXT); + pglMakeCurrent(NULL); delete static_cast<PGLContextImpl*>(pgl_context); return PGL_TRUE; diff --git a/gpu/pgl/pgl.h b/gpu/pgl/pgl.h index 118d6fe..ac67ec1 100644 --- a/gpu/pgl/pgl.h +++ b/gpu/pgl/pgl.h @@ -8,10 +8,8 @@ #include "npapi.h" #include "npapi_extensions.h" -#define PGL_TRUE 1 -#define PGL_FALSE 0 - -#define PGL_NO_CONTEXT ((PGLContext) 0) +#define PGL_TRUE 1 +#define PGL_FALSE 0 #ifdef __cplusplus extern "C" { @@ -23,11 +21,11 @@ typedef int32 PGLInt; // These are the same error codes as used by EGL. enum { - PGL_SUCCESS = 0x3000, - PGL_NOT_INITIALIZED = 0x3001, - PGL_BAD_CONTEXT = 0x3006, - PGL_BAD_PARAMETER = 0x300C, - PGL_CONTEXT_LOST = 0x300E + PGL_SUCCESS = 0x3000, + PGL_NOT_INITIALIZED = 0x3001, + PGL_BAD_CONTEXT = 0x3006, + PGL_BAD_PARAMETER = 0x300C, + PGL_CONTEXT_LOST = 0x300E }; // Initialize the PGL library. This must have completed before any other PGL |