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

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

Issue 599020: Implemented linux-specific NPAPI interface for pepper demos. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 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 | « no previous file | no next file » | 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 38584)
+++ gpu/demos/framework/main_pepper.cc (working copy)
@@ -8,11 +8,20 @@
#include "gpu/pgl/pgl.h"
#include "webkit/glue/plugins/nphostapi.h"
+#if __GNUC__ >= 4
+#define EXPORT __attribute__ ((visibility("default")))
+#else
+// We use .def file to export symbols on OS_WIN. We could potentially use
+// __declspec(dllexport) but API_CALL always adds something to the function
+// signature even inside extern "C" {}
+#define EXPORT
+#endif // GNUC
+
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_;
+base::AtExitManager* g_at_exit_manager;
} // namespace
namespace gpu {
@@ -92,8 +101,19 @@
NPError err = NPERR_NO_ERROR;
switch (variable) {
+#if defined(OS_LINUX)
+ case NPPVpluginNameString:
+ *(static_cast<const char**>(value)) = "Pepper GPU Demo";
+ break;
+ case NPPVpluginDescriptionString:
+ *(static_cast<const char**>(value)) = "Pepper plug-in for GPU demo.";
+ break;
+ case NPPVpluginNeedsXEmbed:
+ *(static_cast<NPBool*>(value)) = TRUE;
+ break;
+#endif
case NPPVpluginScriptableNPObject: {
- void** v = reinterpret_cast<void**>(value);
+ void** v = static_cast<void**>(value);
Plugin* plugin = static_cast<Plugin*>(instance->pdata);
// Return value is expected to be retained
g_browser->retainobject(plugin);
@@ -117,7 +137,7 @@
// NP entry points
extern "C" {
-NPError API_CALL NP_GetEntryPoints(NPPluginFuncs* plugin_funcs) {
+EXPORT 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;
@@ -137,15 +157,34 @@
return NPERR_NO_ERROR;
}
-NPError API_CALL NP_Initialize(NPNetscapeFuncs* browser_funcs) {
- g_at_exit_manager_ = new base::AtExitManager();
+EXPORT NPError API_CALL NP_Initialize(NPNetscapeFuncs* browser_funcs
+#if defined(OS_LINUX)
+ , NPPluginFuncs* plugin_funcs
+#endif // OS_LINUX
+ ) {
+ g_at_exit_manager = new base::AtExitManager();
gpu::demos::g_browser = browser_funcs;
pglInitialize();
+
+#if defined(OS_LINUX)
+ NP_GetEntryPoints(plugin_funcs);
+#endif // OS_LINUX
return NPERR_NO_ERROR;
}
-void API_CALL NP_Shutdown() {
+EXPORT void API_CALL NP_Shutdown() {
pglTerminate();
- delete g_at_exit_manager_;
+ delete g_at_exit_manager;
}
+
+#if defined(OS_LINUX)
+EXPORT NPError API_CALL NP_GetValue(NPP instance, NPPVariable variable,
+ void* value) {
+ return gpu::demos::NPP_GetValue(instance, variable, value);
+}
+
+EXPORT const char* API_CALL NP_GetMIMEDescription() {
+ return "pepper-application/x-gpu-demo::Pepper GPU Demo";
+}
+#endif // OS_LINUX
} // extern "C"
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698