| Index: gpu/demos/framework/plugin.cc
|
| diff --git a/gpu/demos/framework/plugin.cc b/gpu/demos/framework/plugin.cc
|
| deleted file mode 100644
|
| index db605e6cc50ae43f7c61ec6ea43be906dccec6d5..0000000000000000000000000000000000000000
|
| --- a/gpu/demos/framework/plugin.cc
|
| +++ /dev/null
|
| @@ -1,209 +0,0 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "gpu/demos/framework/plugin.h"
|
| -
|
| -#include <cassert>
|
| -#include "gpu/demos/framework/demo_factory.h"
|
| -
|
| -using gpu::demos::Plugin;
|
| -
|
| -namespace {
|
| -const int32 kCommandBufferSize = 1024 * 1024;
|
| -NPExtensions* g_extensions = NULL;
|
| -
|
| -// Plugin class functions.
|
| -NPObject* PluginAllocate(NPP npp, NPClass* the_class) {
|
| - Plugin* plugin = new Plugin(npp);
|
| - return plugin;
|
| -}
|
| -
|
| -void PluginDeallocate(NPObject* header) {
|
| - Plugin* plugin = static_cast<Plugin*>(header);
|
| - delete plugin;
|
| -}
|
| -
|
| -void PluginInvalidate(NPObject* obj) {
|
| -}
|
| -
|
| -bool PluginHasMethod(NPObject* obj, NPIdentifier name) {
|
| - return false;
|
| -}
|
| -
|
| -bool PluginInvoke(NPObject* header,
|
| - NPIdentifier name,
|
| - const NPVariant* args, uint32 arg_count,
|
| - NPVariant* result) {
|
| - return false;
|
| -}
|
| -
|
| -bool PluginInvokeDefault(NPObject* obj,
|
| - const NPVariant* args, uint32 arg_count,
|
| - NPVariant* result) {
|
| - VOID_TO_NPVARIANT(*result);
|
| - return true;
|
| -}
|
| -
|
| -bool PluginHasProperty(NPObject* obj, NPIdentifier name) {
|
| - return false;
|
| -}
|
| -
|
| -bool PluginGetProperty(NPObject* obj,
|
| - NPIdentifier name,
|
| - NPVariant* result) {
|
| - return false;
|
| -}
|
| -
|
| -bool PluginSetProperty(NPObject* obj,
|
| - NPIdentifier name,
|
| - const NPVariant* variant) {
|
| - return false;
|
| -}
|
| -
|
| -NPClass plugin_class = {
|
| - NP_CLASS_STRUCT_VERSION,
|
| - PluginAllocate,
|
| - PluginDeallocate,
|
| - PluginInvalidate,
|
| - PluginHasMethod,
|
| - PluginInvoke,
|
| - PluginInvokeDefault,
|
| - PluginHasProperty,
|
| - PluginGetProperty,
|
| - 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();
|
| -}
|
| -}
|
| -
|
| -namespace gpu {
|
| -namespace demos {
|
| -
|
| -NPNetscapeFuncs* g_browser;
|
| -
|
| -Plugin::Plugin(NPP npp)
|
| - : npp_(npp),
|
| - device3d_(NULL),
|
| - pgl_context_(NULL),
|
| - demo_(CreateDemo()) {
|
| - memset(&context3d_, 0, sizeof(context3d_));
|
| -}
|
| -
|
| -Plugin::~Plugin() {
|
| - // Destroy demo while GL context is current and before it is destroyed.
|
| - pglMakeCurrent(pgl_context_);
|
| - demo_.reset();
|
| - pglMakeCurrent(PGL_NO_CONTEXT);
|
| -
|
| - DestroyContext();
|
| -}
|
| -
|
| -NPClass* Plugin::GetPluginClass() {
|
| - return &plugin_class;
|
| -}
|
| -
|
| -void Plugin::New(NPMIMEType pluginType,
|
| - int16 argc, char* argn[], char* argv[]) {
|
| - if (!g_extensions) {
|
| - g_browser->getvalue(npp_, NPNVPepperExtensions, &g_extensions);
|
| - assert(g_extensions);
|
| - }
|
| -
|
| - device3d_ = g_extensions->acquireDevice(npp_, NPPepper3DDevice);
|
| - assert(device3d_);
|
| -}
|
| -
|
| -void Plugin::SetWindow(const NPWindow& window) {
|
| - demo_->InitWindowSize(window.width, window.height);
|
| -
|
| - if (!pgl_context_) {
|
| - if (!CreateContext())
|
| - return;
|
| -
|
| - // 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);
|
| -}
|
| -
|
| -void Plugin::Paint() {
|
| - if (!pglMakeCurrent(pgl_context_) && pglGetError() == PGL_CONTEXT_LOST) {
|
| - DestroyContext();
|
| - if (!CreateContext())
|
| - return;
|
| -
|
| - pglMakeCurrent(pgl_context_);
|
| - }
|
| -
|
| - demo_->Draw();
|
| - pglSwapBuffers();
|
| - pglMakeCurrent(PGL_NO_CONTEXT);
|
| -}
|
| -
|
| -bool Plugin::CreateContext() {
|
| - assert(!pgl_context_);
|
| -
|
| - // Initialize a 3D context.
|
| - NPDeviceContext3DConfig config;
|
| - config.commandBufferSize = kCommandBufferSize;
|
| - if (NPERR_NO_ERROR != device3d_->initializeContext(npp_,
|
| - &config,
|
| - &context3d_)) {
|
| - DestroyContext();
|
| - return false;
|
| - }
|
| -
|
| - context3d_.repaintCallback = RepaintCallback;
|
| -
|
| - // Create a PGL context.
|
| - pgl_context_ = pglCreateContext(npp_, device3d_, &context3d_);
|
| - if (!pgl_context_) {
|
| - DestroyContext();
|
| - return false;
|
| - }
|
| -
|
| - // Initialize demo.
|
| - pglMakeCurrent(pgl_context_);
|
| - if (!demo_->InitGL()) {
|
| - DestroyContext();
|
| - return false;
|
| - }
|
| -
|
| - pglMakeCurrent(PGL_NO_CONTEXT);
|
| -
|
| - return true;
|
| -}
|
| -
|
| -void Plugin::DestroyContext() {
|
| - if (pgl_context_) {
|
| - pglDestroyContext(pgl_context_);
|
| - pgl_context_ = NULL;
|
| - }
|
| -
|
| - if (context3d_.commandBuffer) {
|
| - device3d_->destroyContext(npp_, &context3d_);
|
| - memset(&context3d_, 0, sizeof(context3d_));
|
| - }
|
| -}
|
| -
|
| -} // namespace demos
|
| -} // namespace gpu
|
|
|