Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(253)

Unified Diff: gpu/demos/framework/main_pepper.cc

Issue 554053: Added infrastructure to run gpu demos under Pepper3D. Created a Demo class th... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/demos/framework/main_exe.cc ('k') | gpu/demos/framework/platform.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/demos/framework/main_pepper.cc
===================================================================
--- gpu/demos/framework/main_pepper.cc (revision 0)
+++ gpu/demos/framework/main_pepper.cc (revision 0)
@@ -0,0 +1,148 @@
+// 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 "base/at_exit.h"
+#include "base/logging.h"
+#include "gpu/demos/framework/plugin.h"
+#include "webkit/glue/plugins/nphostapi.h"
+
+namespace {
+// AtExitManager is used by singleton classes to delete themselves when
+// the program terminates. There should be only one instance of this class
+// per thread;
+base::AtExitManager* g_at_exit_manager_;
+} // namespace
+
+namespace gpu {
+namespace demos {
+// NPP entry points.
+NPError NPP_New(NPMIMEType pluginType,
+ NPP instance,
+ uint16 mode,
+ int16 argc, char* argn[], char* argv[],
+ NPSavedData* saved) {
+ if (g_browser->version < NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL) {
+ return NPERR_INCOMPATIBLE_VERSION_ERROR;
+ }
+
+ Plugin* plugin = static_cast<Plugin*>(
+ g_browser->createobject(instance, Plugin::GetPluginClass()));
+ instance->pdata = plugin;
+ plugin->New(pluginType, argc, argn, argv);
+
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_Destroy(NPP instance, NPSavedData** save) {
+ Plugin* plugin = static_cast<Plugin*>(instance->pdata);
+ if (plugin) g_browser->releaseobject(plugin);
+
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_SetWindow(NPP instance, NPWindow* window) {
+ Plugin* plugin = static_cast<Plugin*>(instance->pdata);
+ if (plugin) plugin->SetWindow(*window);
+
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_NewStream(NPP instance,
+ NPMIMEType type,
+ NPStream* stream,
+ NPBool seekable,
+ uint16* stype) {
+ *stype = NP_ASFILEONLY;
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason) {
+ return NPERR_NO_ERROR;
+}
+
+void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname) {
+}
+
+int32 NPP_Write(NPP instance,
+ NPStream* stream,
+ int32 offset,
+ int32 len,
+ void* buffer) {
+ return 0;
+}
+
+int32 NPP_WriteReady(NPP instance, NPStream* stream) {
+ return 0;
+}
+
+void NPP_Print(NPP instance, NPPrint* platformPrint) {
+}
+
+int16 NPP_HandleEvent(NPP instance, void* event) {
+ return 0;
+}
+
+void NPP_URLNotify(NPP instance, const char* url, NPReason reason,
+ void* notify_data) {
+}
+
+NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value) {
+ NPError err = NPERR_NO_ERROR;
+
+ switch (variable) {
+ case NPPVpluginScriptableNPObject: {
+ void** v = reinterpret_cast<void**>(value);
+ Plugin* plugin = static_cast<Plugin*>(instance->pdata);
+ // Return value is expected to be retained
+ g_browser->retainobject(plugin);
+ *v = plugin;
+ break;
+ }
+ default:
+ LOG(INFO) << "Unhandled variable to NPP_GetValue\n";
+ err = NPERR_GENERIC_ERROR;
+ break;
+ }
+
+ return err;
+}
+
+NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value) {
+ return NPERR_GENERIC_ERROR;
+}
+} // namespace demos
+} // namespace gpu
+
+// NP entry points
+extern "C" {
+NPError API_CALL NP_GetEntryPoints(NPPluginFuncs* plugin_funcs) {
+ plugin_funcs->version = NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL;
+ plugin_funcs->size = sizeof(plugin_funcs);
+ plugin_funcs->newp = gpu::demos::NPP_New;
+ plugin_funcs->destroy = gpu::demos::NPP_Destroy;
+ plugin_funcs->setwindow = gpu::demos::NPP_SetWindow;
+ plugin_funcs->newstream = gpu::demos::NPP_NewStream;
+ plugin_funcs->destroystream = gpu::demos::NPP_DestroyStream;
+ plugin_funcs->asfile = gpu::demos::NPP_StreamAsFile;
+ plugin_funcs->writeready = gpu::demos::NPP_WriteReady;
+ plugin_funcs->write = gpu::demos::NPP_Write;
+ plugin_funcs->print = gpu::demos::NPP_Print;
+ plugin_funcs->event = gpu::demos::NPP_HandleEvent;
+ plugin_funcs->urlnotify = gpu::demos::NPP_URLNotify;
+ plugin_funcs->getvalue = gpu::demos::NPP_GetValue;
+ plugin_funcs->setvalue = gpu::demos::NPP_SetValue;
+
+ return NPERR_NO_ERROR;
+}
+
+NPError API_CALL NP_Initialize(NPNetscapeFuncs* browser_funcs) {
+ g_at_exit_manager_ = new base::AtExitManager();
+ gpu::demos::g_browser = browser_funcs;
+ return NPERR_NO_ERROR;
+}
+
+void API_CALL NP_Shutdown() {
+ delete g_at_exit_manager_;
+}
+} // extern "C"
Property changes on: gpu\demos\framework\main_pepper.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « gpu/demos/framework/main_exe.cc ('k') | gpu/demos/framework/platform.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698