diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2011-04-26 18:56:14 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2011-04-26 18:56:14 +0000 |
commit | cb3864f6b7691b492e220fde1960adce237117e4 (patch) | |
tree | 597508a1787c00baa0f92171ca74ede8a0ff32ad /www | |
parent | dc898af0e91999e4a3c1007d8ed40ec99ebab777 (diff) | |
download | ports-cb3864f6b7691b492e220fde1960adce237117e4.tar.gz ports-cb3864f6b7691b492e220fde1960adce237117e4.zip |
Notes
Diffstat (limited to 'www')
-rw-r--r-- | www/nspluginwrapper-devel/Makefile | 17 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/distinfo | 8 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/files/patch-NPNVprivateModeBool | 43 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/files/patch-fix-npident-array-sending | 178 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/files/patch-ignore-flash-button3 | 55 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/files/patch-racecond | 209 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/files/patch-src-npw-common.h | 11 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/files/patch-src-npw-config.c | 30 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/files/patch-src-npw-wrapper.c | 10 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/files/patch-src-rpc.c | 11 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/pkg-descr | 2 | ||||
-rw-r--r-- | www/nspluginwrapper-devel/pkg-plist | 1 |
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 |