aboutsummaryrefslogtreecommitdiff
path: root/www/nspluginwrapper-devel
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2011-04-26 18:56:14 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2011-04-26 18:56:14 +0000
commitcb3864f6b7691b492e220fde1960adce237117e4 (patch)
tree597508a1787c00baa0f92171ca74ede8a0ff32ad /www/nspluginwrapper-devel
parentdc898af0e91999e4a3c1007d8ed40ec99ebab777 (diff)
downloadports-cb3864f6b7691b492e220fde1960adce237117e4.tar.gz
ports-cb3864f6b7691b492e220fde1960adce237117e4.zip
Notes
Diffstat (limited to 'www/nspluginwrapper-devel')
-rw-r--r--www/nspluginwrapper-devel/Makefile17
-rw-r--r--www/nspluginwrapper-devel/distinfo8
-rw-r--r--www/nspluginwrapper-devel/files/patch-NPNVprivateModeBool43
-rw-r--r--www/nspluginwrapper-devel/files/patch-fix-npident-array-sending178
-rw-r--r--www/nspluginwrapper-devel/files/patch-ignore-flash-button355
-rw-r--r--www/nspluginwrapper-devel/files/patch-racecond209
-rw-r--r--www/nspluginwrapper-devel/files/patch-src-npw-common.h11
-rw-r--r--www/nspluginwrapper-devel/files/patch-src-npw-config.c30
-rw-r--r--www/nspluginwrapper-devel/files/patch-src-npw-wrapper.c10
-rw-r--r--www/nspluginwrapper-devel/files/patch-src-rpc.c11
-rw-r--r--www/nspluginwrapper-devel/pkg-descr2
-rw-r--r--www/nspluginwrapper-devel/pkg-plist1
12 files changed, 38 insertions, 537 deletions
diff --git a/www/nspluginwrapper-devel/Makefile b/www/nspluginwrapper-devel/Makefile
index cabfef3aafd1..f96a3e8cb8fb 100644
--- a/www/nspluginwrapper-devel/Makefile
+++ b/www/nspluginwrapper-devel/Makefile
@@ -6,11 +6,11 @@
#
PORTNAME= nspluginwrapper
-PORTVERSION= 1.3.0
-PORTREVISION= 9
+PORTVERSION= 1.3.2
CATEGORIES= www linux emulators
-MASTER_SITES= LOCAL/jkim
-DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${BINFILE}${EXTRACT_SUFX}
+MASTER_SITES= http://web.mit.edu/davidben/Public/nspluginwrapper/ \
+ LOCAL/jkim:binfile
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX} ${BINFILE}:binfile
MAINTAINER= jkim@FreeBSD.org
COMMENT= A compatibility plugin for Mozilla NPAPI (development version)
@@ -21,11 +21,11 @@ LATEST_LINK= ${PORTNAME}-devel
CONFLICTS= nspluginwrapper-1.2.*
-BINFILE= ${PORTNAME}-i386-${PORTVERSION}-5
+BINBUILD= 1
+BINFILE= ${PORTNAME}-i386-${PORTVERSION}-${BINBUILD}${EXTRACT_SUFX}
ONLY_FOR_ARCHS= i386 amd64
-USE_BZIP2= yes
USE_LINUX= yes
USE_LINUX_APPS= gtk2
USE_XORG= x11 xext xt
@@ -39,8 +39,7 @@ HAS_CONFIGURE= yes
CONFIGURE_ARGS= --enable-generic --enable-strip --prefix=${PREFIX} \
--target-os=linux --target-cpu=i386 \
- --with-cc=${CC} --with-cxx=${CXX} \
- --with-x11-prefix=${LOCALBASE}
+ --with-cc=${CC} --with-cxx=${CXX}
LIBDIR= ${PREFIX}/lib/${PORTNAME}
@@ -58,7 +57,7 @@ HOST_ARCH= ${ARCH}
.endif
post-patch:
- ${REINPLACE_CMD} -e 's,/usr/X11R6,${LOCALBASE},g' \
+ ${REINPLACE_CMD} -e 's,%%LOCALBASE%%,${LOCALBASE},g' \
${WRKSRC}/src/npw-config.c
post-install:
diff --git a/www/nspluginwrapper-devel/distinfo b/www/nspluginwrapper-devel/distinfo
index 750bfdee648d..3763227e9912 100644
--- a/www/nspluginwrapper-devel/distinfo
+++ b/www/nspluginwrapper-devel/distinfo
@@ -1,4 +1,4 @@
-SHA256 (nspluginwrapper-1.3.0.tar.bz2) = b8900bd5f0bd950f95b963e5c8f5e20d7d15cc70e777b6058289687ad968b21c
-SIZE (nspluginwrapper-1.3.0.tar.bz2) = 336049
-SHA256 (nspluginwrapper-i386-1.3.0-5.tar.bz2) = 57904964581c0b171be392fce30542941caf9a848b8b1db4987171949615283a
-SIZE (nspluginwrapper-i386-1.3.0-5.tar.bz2) = 62313
+SHA256 (nspluginwrapper-1.3.2.tar.gz) = f3a40d160601520d36b6f5c342e1e9751b2bdc70dff5e2e880e1d18ed8830201
+SIZE (nspluginwrapper-1.3.2.tar.gz) = 410887
+SHA256 (nspluginwrapper-i386-1.3.2-1.tar.gz) = 56bc1e4699456e6798929da47a867cf9e47bf29b3d5e7a88885a4f05f8de3be0
+SIZE (nspluginwrapper-i386-1.3.2-1.tar.gz) = 64964
diff --git a/www/nspluginwrapper-devel/files/patch-NPNVprivateModeBool b/www/nspluginwrapper-devel/files/patch-NPNVprivateModeBool
deleted file mode 100644
index 5dfefabd59ff..000000000000
--- a/www/nspluginwrapper-devel/files/patch-NPNVprivateModeBool
+++ /dev/null
@@ -1,43 +0,0 @@
---- npapi/npapi.h 2009-01-02 09:22:28.000000000 -0500
-+++ npapi/npapi.h 2010-08-18 19:07:09.000000000 -0400
-@@ -439,7 +439,9 @@ typedef enum {
- /* Get the NPObject wrapper for the plugins DOM element. */
- NPNVPluginElementNPObject = 16,
-
-- NPNVSupportsWindowless = 17
-+ NPNVSupportsWindowless = 17,
-+
-+ NPNVprivateModeBool = 18
-
- } NPNVariable;
-
---- src/npw-rpc.c 2010-08-18 19:10:19.000000000 -0400
-+++ src/npw-rpc.c 2010-08-18 19:08:24.000000000 -0400
-@@ -41,6 +41,7 @@ int rpc_type_of_NPNVariable(int variable
- case NPNVisOfflineBool:
- case NPNVSupportsXEmbedBool:
- case NPNVSupportsWindowless:
-+ case NPNVprivateModeBool:
- type = RPC_TYPE_BOOLEAN;
- break;
- case NPNVToolkit:
---- src/npw-viewer.c 2010-08-18 19:10:19.000000000 -0400
-+++ src/npw-viewer.c 2010-08-18 19:05:46.000000000 -0400
-@@ -1266,6 +1266,7 @@ g_NPN_GetValue(NPP instance, NPNVariable
- case NPNVSupportsXEmbedBool:
- case NPNVWindowNPObject:
- case NPNVPluginElementNPObject:
-+ case NPNVprivateModeBool:
- return g_NPN_GetValue_real(instance, variable, value);
- default:
- switch (variable & 0xff) {
---- src/utils.c 2009-01-02 09:22:29.000000000 -0500
-+++ src/utils.c 2010-08-18 19:09:31.000000000 -0400
-@@ -283,6 +283,7 @@ const char *string_of_NPNVariable(int va
- _(NPNVWindowNPObject);
- _(NPNVPluginElementNPObject);
- _(NPNVSupportsWindowless);
-+ _(NPNVprivateModeBool);
- #undef _
- default:
- switch (variable & 0xff) {
diff --git a/www/nspluginwrapper-devel/files/patch-fix-npident-array-sending b/www/nspluginwrapper-devel/files/patch-fix-npident-array-sending
deleted file mode 100644
index 568a4ea1f79a..000000000000
--- a/www/nspluginwrapper-devel/files/patch-fix-npident-array-sending
+++ /dev/null
@@ -1,178 +0,0 @@
-Index: src/npw-viewer.c
-===================================================================
---- src/npw-viewer.c (revision 942)
-+++ src/npw-viewer.c (working copy)
-@@ -2059,7 +2059,7 @@
- RPC_METHOD_NPN_INVOKE,
- RPC_TYPE_NPW_PLUGIN_INSTANCE, plugin,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, methodName,
-+ RPC_TYPE_NP_IDENTIFIER, &methodName,
- RPC_TYPE_ARRAY, RPC_TYPE_NP_VARIANT, argCount, args,
- RPC_TYPE_INVALID);
-
-@@ -2249,7 +2249,7 @@
- RPC_METHOD_NPN_GET_PROPERTY,
- RPC_TYPE_NPW_PLUGIN_INSTANCE, plugin,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, propertyName,
-+ RPC_TYPE_NP_IDENTIFIER, &propertyName,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -2311,7 +2311,7 @@
- RPC_METHOD_NPN_SET_PROPERTY,
- RPC_TYPE_NPW_PLUGIN_INSTANCE, plugin,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, propertyName,
-+ RPC_TYPE_NP_IDENTIFIER, &propertyName,
- RPC_TYPE_NP_VARIANT, value,
- RPC_TYPE_INVALID);
-
-@@ -2370,7 +2370,7 @@
- RPC_METHOD_NPN_REMOVE_PROPERTY,
- RPC_TYPE_NPW_PLUGIN_INSTANCE, plugin,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, propertyName,
-+ RPC_TYPE_NP_IDENTIFIER, &propertyName,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -2427,7 +2427,7 @@
- RPC_METHOD_NPN_HAS_PROPERTY,
- RPC_TYPE_NPW_PLUGIN_INSTANCE, plugin,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, propertyName,
-+ RPC_TYPE_NP_IDENTIFIER, &propertyName,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -2484,7 +2484,7 @@
- RPC_METHOD_NPN_HAS_METHOD,
- RPC_TYPE_NPW_PLUGIN_INSTANCE, plugin,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, methodName,
-+ RPC_TYPE_NP_IDENTIFIER, &methodName,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -2780,7 +2780,7 @@
-
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPN_IDENTIFIER_IS_STRING,
-- RPC_TYPE_NP_IDENTIFIER, identifier,
-+ RPC_TYPE_NP_IDENTIFIER, &identifier,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -2838,7 +2838,7 @@
-
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPN_UTF8_FROM_IDENTIFIER,
-- RPC_TYPE_NP_IDENTIFIER, identifier,
-+ RPC_TYPE_NP_IDENTIFIER, &identifier,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -2902,7 +2902,7 @@
-
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPN_INT_FROM_IDENTIFIER,
-- RPC_TYPE_NP_IDENTIFIER, identifier,
-+ RPC_TYPE_NP_IDENTIFIER, &identifier,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-Index: src/npw-wrapper.c
-===================================================================
---- src/npw-wrapper.c (revision 942)
-+++ src/npw-wrapper.c (working copy)
-@@ -1528,7 +1528,7 @@
- free(name);
-
- return rpc_method_send_reply(connection,
-- RPC_TYPE_NP_IDENTIFIER, ident,
-+ RPC_TYPE_NP_IDENTIFIER, &ident,
- RPC_TYPE_INVALID);
- }
-
-@@ -1601,7 +1601,7 @@
- NPIdentifier ident = g_NPN_GetIntIdentifier(intid);
-
- return rpc_method_send_reply(connection,
-- RPC_TYPE_NP_IDENTIFIER, ident,
-+ RPC_TYPE_NP_IDENTIFIER, &ident,
- RPC_TYPE_INVALID);
- }
-
-Index: src/npruntime.c
-===================================================================
---- src/npruntime.c (revision 942)
-+++ src/npruntime.c (working copy)
-@@ -221,7 +221,7 @@
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPCLASS_HAS_METHOD,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, name,
-+ RPC_TYPE_NP_IDENTIFIER, &name,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -327,7 +327,7 @@
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPCLASS_INVOKE,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, name,
-+ RPC_TYPE_NP_IDENTIFIER, &name,
- RPC_TYPE_ARRAY, RPC_TYPE_NP_VARIANT, argCount, args,
- RPC_TYPE_INVALID);
-
-@@ -509,7 +509,7 @@
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPCLASS_HAS_PROPERTY,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, name,
-+ RPC_TYPE_NP_IDENTIFIER, &name,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -599,7 +599,7 @@
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPCLASS_GET_PROPERTY,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, name,
-+ RPC_TYPE_NP_IDENTIFIER, &name,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-@@ -684,7 +684,7 @@
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPCLASS_SET_PROPERTY,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, name,
-+ RPC_TYPE_NP_IDENTIFIER, &name,
- RPC_TYPE_NP_VARIANT, value,
- RPC_TYPE_INVALID);
-
-@@ -763,7 +763,7 @@
- int error = rpc_method_invoke(g_rpc_connection,
- RPC_METHOD_NPCLASS_REMOVE_PROPERTY,
- RPC_TYPE_NP_OBJECT, npobj,
-- RPC_TYPE_NP_IDENTIFIER, name,
-+ RPC_TYPE_NP_IDENTIFIER, &name,
- RPC_TYPE_INVALID);
-
- if (error != RPC_ERROR_NO_ERROR) {
-Index: src/npw-rpc.c
-===================================================================
---- src/npw-rpc.c (revision 942)
-+++ src/npw-rpc.c (working copy)
-@@ -1252,7 +1252,7 @@
- // the browser side
- static int do_send_NPIdentifier(rpc_message_t *message, void *p_value)
- {
-- NPIdentifier ident = (NPIdentifier)p_value;
-+ NPIdentifier ident = *(NPIdentifier *)p_value;
- int id = 0;
- if (ident) {
- #ifdef BUILD_WRAPPER
diff --git a/www/nspluginwrapper-devel/files/patch-ignore-flash-button3 b/www/nspluginwrapper-devel/files/patch-ignore-flash-button3
deleted file mode 100644
index 1788efb06ed5..000000000000
--- a/www/nspluginwrapper-devel/files/patch-ignore-flash-button3
+++ /dev/null
@@ -1,55 +0,0 @@
---- src/npw-wrapper.c.orig 2009-01-02 09:22:29.000000000 -0500
-+++ src/npw-wrapper.c 2011-03-31 12:34:33.000000000 -0400
-@@ -2560,6 +2561,35 @@
- return ret;
- }
-
-+#define NPW_ADOBE_FLASH_PLUGIN "Shockwave Flash"
-+
-+struct flash_version {
-+ unsigned int major;
-+ unsigned int minor;
-+};
-+
-+// Detect Adobe Flash plugin version
-+static void adobe_flash_version(struct flash_version *vers)
-+{
-+ static struct flash_version fv = { 0, 0 };
-+ static bool tested = false;
-+
-+ if (!tested) {
-+ if (g_plugin.name != NULL && g_plugin.description != NULL &&
-+ strcmp(g_plugin.name, NPW_ADOBE_FLASH_PLUGIN) == 0 &&
-+ strncmp(g_plugin.description, NPW_ADOBE_FLASH_PLUGIN,
-+ strlen(NPW_ADOBE_FLASH_PLUGIN)) == 0) {
-+ char *ptr, *endp;
-+ ptr = g_plugin.description + strlen(NPW_ADOBE_FLASH_PLUGIN);
-+ fv.major = strtol(ptr, &endp, 10);
-+ if (*endp == '.')
-+ fv.minor = strtol(endp + 1, NULL, 10);
-+ }
-+ tested = true;
-+ }
-+ *vers = fv;
-+}
-+
- static int16 g_NPP_HandleEvent(NPP instance, void *event)
- {
- if (instance == NULL)
-@@ -2569,6 +2599,16 @@
- if (plugin == NULL)
- return NPERR_INVALID_INSTANCE_ERROR;
-
-+ if (((NPEvent *)event)->type == ButtonPress && ((XButtonEvent *)event)->button == Button3) {
-+ static struct flash_version vers;
-+ adobe_flash_version(&vers);
-+ /* XXX: work around "right click" hang with Flash plugin 10.1 and later */
-+ if ((vers.major == 10 && vers.minor >= 1) || vers.major > 10) {
-+ D(bug("NPP_HandleEvent instance=%p, ignoring ButtonPress event for "
-+ NPW_ADOBE_FLASH_PLUGIN " %u.%u\n", instance, vers.major, vers.minor));
-+ return false;
-+ }
-+ }
- if (((NPEvent *)event)->type == GraphicsExpose) {
- /* XXX: flush the X output buffer so that the call to
- gdk_pixmap_foreign_new() in the viewer can work */
diff --git a/www/nspluginwrapper-devel/files/patch-racecond b/www/nspluginwrapper-devel/files/patch-racecond
deleted file mode 100644
index 97960e4a113b..000000000000
--- a/www/nspluginwrapper-devel/files/patch-racecond
+++ /dev/null
@@ -1,209 +0,0 @@
---- src/npw-viewer.c.orig 2011-03-28 17:46:24.000000000 -0400
-+++ src/npw-viewer.c 2011-03-28 17:52:16.000000000 -0400
-@@ -221,8 +221,17 @@
- static GList *g_delayed_calls = NULL;
- static guint g_delayed_calls_id = 0;
-
-+// We put delayed NPP_Destroy calls on a separate list because, unlike
-+// NPN_ReleaseObject, these must be called on a clean stack and have no
-+// other cause to get cleared. Otherwise, it is possible for the
-+// delayed_calls_process in g_NPP_Destroy_Now to call it early.
-+static GList *g_delayed_destroys = NULL;
-+static guint g_delayed_destroys_id = 0;
-+
- static void g_NPN_ReleaseObject_Now(NPObject *npobj);
-+static NPError g_NPP_Destroy_Now(PluginInstance *plugin, NPSavedData **sdata);
- static gboolean delayed_calls_process_cb(gpointer user_data);
-+static gboolean delayed_destroys_process_cb(gpointer user_data);
-
- static void delayed_calls_add(int type, gpointer data)
- {
-@@ -238,13 +247,19 @@
- delayed_calls_process_cb, NULL, NULL);
- }
-
-+static void delayed_destroys_add(PluginInstance *plugin)
-+{
-+ g_delayed_destroys = g_list_append(g_delayed_destroys, plugin);
-+
-+ if (g_delayed_destroys_id == 0)
-+ g_delayed_destroys_id = g_idle_add_full(G_PRIORITY_LOW,
-+ delayed_destroys_process_cb, NULL, NULL);
-+}
-+
- // Returns whether there are pending calls left in the queue
- static gboolean delayed_calls_process(PluginInstance *plugin, gboolean is_in_NPP_Destroy)
- {
-- GList *l = g_delayed_calls;
-- while (l != NULL) {
-- GList *cl = l;
-- l = l->next;
-+ while (g_delayed_calls != NULL) {
-
- if (!is_in_NPP_Destroy) {
- /* Continue later if there is incoming RPC */
-@@ -252,7 +267,11 @@
- return TRUE;
- }
-
-- DelayedCall *dcall = (DelayedCall *)cl->data;
-+ DelayedCall *dcall = (DelayedCall *)g_delayed_calls->data;
-+ /* XXX: Remove the link first; this function /must/ be
-+ * re-entrant. We may be called again while processing the
-+ * delayed call. */
-+ g_delayed_calls = g_list_delete_link(g_delayed_calls, g_delayed_calls);
- switch (dcall->type) {
- case RPC_DELAYED_NPN_RELEASE_OBJECT:
- {
-@@ -262,7 +281,6 @@
- }
- }
- NPW_MemFree(dcall);
-- g_delayed_calls = g_list_delete_link(g_delayed_calls, cl);
- }
-
- if (g_delayed_calls)
-@@ -280,6 +298,25 @@
- return delayed_calls_process(NULL, FALSE);
- }
-
-+static gboolean delayed_destroys_process_cb(gpointer user_data)
-+{
-+ while (g_delayed_destroys != NULL) {
-+ PluginInstance *plugin = (PluginInstance *)g_delayed_destroys->data;
-+ g_delayed_destroys = g_list_delete_link(g_delayed_destroys,
-+ g_delayed_destroys);
-+ g_NPP_Destroy_Now(plugin, NULL);
-+ }
-+
-+ if (g_delayed_destroys)
-+ return TRUE;
-+
-+ if (g_delayed_destroys_id) {
-+ g_source_remove(g_delayed_destroys_id);
-+ g_delayed_destroys_id = 0;
-+ }
-+ return FALSE;
-+}
-+
- // NPIdentifier cache
- static inline bool use_npidentifier_cache(void)
- {
-@@ -741,7 +778,6 @@
- }
- }
-
--
- /* ====================================================================== */
- /* === XPCOM glue === */
- /* ====================================================================== */
-@@ -3338,6 +3374,13 @@
- return error;
- }
-
-+ /* Clear any NPP_Destroys we may have delayed. Although it doesn't
-+ really matter, and the plugin is going to die soon.
-+
-+ XXX: To be really picky, we should probably delay this and make
-+ sure it is run on a new event loop iteration. */
-+ delayed_destroys_process_cb(NULL);
-+
- NPError ret = g_NP_Shutdown();
- return rpc_method_send_reply(connection, RPC_TYPE_INT32, ret, RPC_TYPE_INVALID);
- }
-@@ -3459,6 +3502,8 @@
-
- // Process all pending calls as the data could become junk afterwards
- // XXX: this also processes delayed calls from other instances
-+ // XXX: Also, if this was delayed, the NPN_ReleaseObject calls will
-+ // be ignored; the browser thinks we've already died.
- delayed_calls_process(plugin, TRUE);
-
- D(bugiI("NPP_Destroy instance=%p\n", instance));
-@@ -3473,6 +3518,22 @@
- return ret;
- }
-
-+static NPError g_NPP_Destroy_Now(PluginInstance *plugin, NPSavedData **save)
-+{
-+ D(bug("g_NPP_Destroy_Now\n"));
-+
-+ NPSavedData *save_area = NULL;
-+ NPError ret = g_NPP_Destroy(PLUGIN_INSTANCE_NPP(plugin), &save_area);
-+ if (save) {
-+ *save = save_area;
-+ } else if (save_area) {
-+ npw_printf("WARNING: NPP_Destroy returned save_area, but it was ignored\n");
-+ }
-+
-+ rpc_connection_unref(g_rpc_connection);
-+ return ret;
-+}
-+
- static int handle_NPP_Destroy(rpc_connection_t *connection)
- {
- D(bug("handle_NPP_Destroy\n"));
-@@ -3488,8 +3549,26 @@
- return error;
- }
-
-- NPSavedData *save_area;
-- NPError ret = g_NPP_Destroy(PLUGIN_INSTANCE_NPP(plugin), &save_area);
-+ NPSavedData *save_area = NULL;
-+ NPError ret = NPERR_NO_ERROR;
-+ /* Take a ref for the rpc_method_send_reply; otherwise the
-+ * rpc_connection_unref in g_NPP_Destroy_Now may cause a slight
-+ * nuisance. */
-+ rpc_connection_ref(connection);
-+ if (!rpc_method_in_invoke(connection)) {
-+ /* The plugin is not on the stack; it's safe to call this. */
-+ D(bug("NPP_Destroy is fine.\n"));
-+ ret = g_NPP_Destroy_Now(plugin, &save_area);
-+ } else {
-+ /* It is not safe to call NPP_Destroy right now. Delay it until we
-+ * return to the event loop.
-+ *
-+ * NOTE: This means that the browser never sees the real return
-+ * value of NPP_Destroy; the NPSavedData will be discarded, and any
-+ * error code will be ignored. */
-+ D(bug("NPP_Destroy raced; delaying it to get a clean stack.\n"));
-+ delayed_destroys_add(plugin);
-+ }
-
- error = rpc_method_send_reply(connection,
- RPC_TYPE_INT32, ret,
---- src/rpc.c.orig 2009-01-02 09:22:29.000000000 -0500
-+++ src/rpc.c 2011-03-28 17:52:16.000000000 -0400
-@@ -2097,6 +2097,22 @@
- return ret;
- }
-
-+bool rpc_method_in_invoke(rpc_connection_t *connection)
-+{
-+ D(bug("rpc_method_in_invoke\n"));
-+ if (connection == NULL)
-+ return false;
-+ // Our stack should alternate between handle/dispatch and
-+ // invokes. Some calls are only safe to handle called from an event
-+ // loop. In this case, we should have values invoke_depth = 0;
-+ // handle_depth = 1; dispatch_depth = 1
-+ D(bug("invoke_depth = %d; dispatch_depth = %d; handle_depth = %d\n",
-+ connection->invoke_depth,
-+ connection->dispatch_depth,
-+ connection->handle_depth));
-+ return connection->invoke_depth > 0;
-+}
-+
-
- /* ====================================================================== */
- /* === Test Program === */
---- src/rpc.h.orig 2009-01-02 09:22:29.000000000 -0500
-+++ src/rpc.h 2011-03-28 17:52:16.000000000 -0400
-@@ -119,6 +119,7 @@
- extern int rpc_method_wait_for_reply(rpc_connection_t *connection, ...) attribute_hidden;
- extern int rpc_method_get_args(rpc_connection_t *connection, ...) attribute_hidden;
- extern int rpc_method_send_reply(rpc_connection_t *connection, ...) attribute_hidden;
-+extern bool rpc_method_in_invoke(rpc_connection_t *connection) attribute_hidden;
-
- #ifdef __cplusplus
- }
diff --git a/www/nspluginwrapper-devel/files/patch-src-npw-common.h b/www/nspluginwrapper-devel/files/patch-src-npw-common.h
deleted file mode 100644
index b3eb062cafba..000000000000
--- a/www/nspluginwrapper-devel/files/patch-src-npw-common.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/npw-common.h.orig 2009-01-02 15:22:29.000000000 +0100
-+++ src/npw-common.h 2009-11-10 09:58:34.000000000 +0100
-@@ -115,7 +115,7 @@ npw_plugin_instance_is_valid(void *ptr)
- static inline NPW_PluginInstance *
- _npw_get_plugin_instance (NPP instance)
- {
-- return (NPW_PluginInstance *)instance->_NPW_INSTANCE_PRIVATE_DATA;
-+ return instance ? (NPW_PluginInstance *)instance->_NPW_INSTANCE_PRIVATE_DATA : NULL;
- }
-
- static inline NPW_PluginInstance *
diff --git a/www/nspluginwrapper-devel/files/patch-src-npw-config.c b/www/nspluginwrapper-devel/files/patch-src-npw-config.c
index 0d8d2847065d..b14462ac2fef 100644
--- a/www/nspluginwrapper-devel/files/patch-src-npw-config.c
+++ b/www/nspluginwrapper-devel/files/patch-src-npw-config.c
@@ -1,13 +1,33 @@
---- ./src/npw-config.c.orig Sun Mar 4 23:01:22 2007
-+++ ./src/npw-config.c Wed Apr 4 20:20:59 2007
-@@ -119,8 +119,8 @@
+--- src/npw-config.c.orig 2011-04-23 14:47:21.000000000 -0400
++++ src/npw-config.c 2011-04-25 17:46:44.000000000 -0400
+@@ -186,8 +186,9 @@
#if defined(__FreeBSD__)
{
static const char *freebsd_dirs[] = {
- "/usr/X11R6/" LIB "/browser_plugins",
- "/usr/X11R6/" LIB "/firefox/plugins",
-+ "/usr/local/" LIB "/browser_plugins",
-+ "/usr/local/" LIB "/firefox/plugins",
++ "%%LOCALBASE%%/" LIB "/browser_plugins",
++ "%%LOCALBASE%%/" LIB "/firefox/plugins",
++ "%%LOCALBASE%%/" LIB "/seamonkey/plugins",
};
dirs = freebsd_dirs;
}
+@@ -283,11 +284,13 @@
+ "/usr/lib32/nsbrowser/plugins", // XXX how unfortunate
+ "/usr/lib64/nsbrowser/plugins",
+ #if defined(__FreeBSD__)
+- "/usr/X11R6/lib/browser_plugins",
+- "/usr/X11R6/lib/firefox/plugins",
+- "/usr/X11R6/lib/linux-mozilla/plugins",
+- "/usr/local/lib/npapi/linux-flashplugin",
+- "/usr/X11R6/Adobe/Acrobat7.0/ENU/Browser/intellinux",
++ "%%LOCALBASE%%/lib/browser_plugins",
++ "%%LOCALBASE%%/lib/firefox/plugins",
++ "%%LOCALBASE%%/lib/seamonkey/plugins",
++ "%%LOCALBASE%%/lib/npapi/linux-flashplugin",
++ "%%LOCALBASE%%/lib/npapi/linux-f10-flashplugin",
++ "%%LOCALBASE%%/Adobe/Acrobat7.0/ENU/Browser/intellinux",
++ "%%LOCALBASE%%/Adobe/Reader8/ENU/Adobe/Reader8/Browser/intellinux",
+ #endif
+ #if defined(__DragonFly__)
+ "/usr/pkg/lib/netscape/plugins",
diff --git a/www/nspluginwrapper-devel/files/patch-src-npw-wrapper.c b/www/nspluginwrapper-devel/files/patch-src-npw-wrapper.c
deleted file mode 100644
index 343def710cce..000000000000
--- a/www/nspluginwrapper-devel/files/patch-src-npw-wrapper.c
+++ /dev/null
@@ -1,10 +0,0 @@
---- ./src/npw-wrapper.c.orig Sun Mar 4 23:01:22 2007
-+++ ./src/npw-wrapper.c Wed Apr 4 20:20:59 2007
-@@ -28,6 +28,7 @@
- #include <unistd.h>
- #include <pthread.h>
- #include <semaphore.h>
-+#include <signal.h>
- #include <sys/wait.h>
-
- #include <glib.h>
diff --git a/www/nspluginwrapper-devel/files/patch-src-rpc.c b/www/nspluginwrapper-devel/files/patch-src-rpc.c
deleted file mode 100644
index 7dbd65179bac..000000000000
--- a/www/nspluginwrapper-devel/files/patch-src-rpc.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/rpc.c.orig 2009-01-02 15:22:29.000000000 +0100
-+++ src/rpc.c 2010-06-29 14:24:39.000000000 +0200
-@@ -68,7 +68,7 @@
-
- // Define the maximum amount of time (in seconds) to wait for a message
- #ifndef RPC_MESSAGE_TIMEOUT
--#define RPC_MESSAGE_TIMEOUT 30
-+#define RPC_MESSAGE_TIMEOUT 10
- #endif
-
- // Define the maximum amount of time (in seconds) to wait for plugin connection
diff --git a/www/nspluginwrapper-devel/pkg-descr b/www/nspluginwrapper-devel/pkg-descr
index 5651d21f244e..8aac1e6a3878 100644
--- a/www/nspluginwrapper-devel/pkg-descr
+++ b/www/nspluginwrapper-devel/pkg-descr
@@ -3,4 +3,4 @@ The nspluginwrapper is an Open Source compatibility plugin for Netscape 4
not built for. For example, you can use the Adobe Flash plugin on Linux/x86_64,
NetBSD and FreeBSD platforms.
-WWW: http://gwenole.beauchesne.info/projects/nspluginwrapper/
+WWW: https://github.com/davidben/nspluginwrapper
diff --git a/www/nspluginwrapper-devel/pkg-plist b/www/nspluginwrapper-devel/pkg-plist
index c8d8f831012c..834593cb1849 100644
--- a/www/nspluginwrapper-devel/pkg-plist
+++ b/www/nspluginwrapper-devel/pkg-plist
@@ -4,7 +4,6 @@ bin/nspluginwrapper
%%LIBDIR%%/%%HOST_ARCH%%/freebsd/npplayer
%%LIBDIR%%/%%HOST_ARCH%%/freebsd/npwrapper.so
%%LIBDIR%%/i386/linux/libnoxshm.so
-%%LIBDIR%%/i386/linux/libxpcom.so
%%LIBDIR%%/i386/linux/npviewer
%%LIBDIR%%/i386/linux/npviewer.bin
%%LIBDIR%%/noarch/npviewer.sh