summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-20 01:20:47 +0000
committerapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-20 01:20:47 +0000
commit024e9386c24b862cae3a4cf4bd22fd4651b02cc5 (patch)
tree12f9a2c80e2a142856c1adefc3253f66a491f0bb /gpu
parent9cf005d236d090fb18d8a5b6c6c630a94e893ef4 (diff)
downloadchromium_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.cc4
-rw-r--r--gpu/demos/framework/demo.h4
-rw-r--r--gpu/demos/framework/main_pepper.cc5
-rw-r--r--gpu/demos/framework/plugin.cc35
-rw-r--r--gpu/demos/framework/plugin.h4
-rw-r--r--gpu/demos/framework/window_win.cc4
-rw-r--r--gpu/demos/gles2_book/simple_vertex_shader.cc4
-rw-r--r--gpu/pgl/pgl.cc2
-rw-r--r--gpu/pgl/pgl.h16
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