From owner-freebsd-current@FreeBSD.ORG Thu Mar 31 05:58:43 2011 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from [127.0.0.1] (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id C7044106564A; Thu, 31 Mar 2011 05:58:41 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: Alexander Best Date: Thu, 31 Mar 2011 01:58:24 -0400 User-Agent: KMail/1.6.2 References: <201103301520.09432.jkim@FreeBSD.org> <20110330205432.GA16169@freebsd.org> In-Reply-To: <20110330205432.GA16169@freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_EgBlNwKQrYpU/m8" Message-Id: <201103310158.29297.jkim@FreeBSD.org> Cc: Buganini , freebsd-current@freebsd.org, Dimitry Andric , kmoore@freebsd.org Subject: Re: Wow... (<-- blown away at performance) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Mar 2011 05:58:43 -0000 --Boundary-00=_EgBlNwKQrYpU/m8 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline On Wednesday 30 March 2011 04:54 pm, Alexander Best wrote: > On Wed Mar 30 11, Jung-uk Kim wrote: > > On Wednesday 30 March 2011 12:50 pm, Jung-uk Kim wrote: > > > On Wednesday 30 March 2011 12:46 am, Buganini wrote: > > > > It seems work well now, no lockup when I went through pages. > > > > but I still got lockup when I right-click on some flash > > > > advertisement. for example, here: http://tw.yahoo.com/ > > > > > > "Don't do that" is not an answer, I guess? ;-) > > > > > > Seriously, this problem is very well known. There were several > > > work-arounds suggested but the most popular one is setting > > > GDK_NATIVE_WINDOWS environment variable. Try > > > "GDK_NATIVE_WINDOWS Flash" on Google and you will see tons of > > > them. Actually, Fedora took that hack into nspluginwrapper > > > later: > > > > > > https://bugzilla.redhat.com/show_bug.cgi?id=542424 > > > > > > Basically, Gnome people broke the ABI in the middle of major > > > release branch, if my understanding is correct. Of course, > > > that caused a lot of complaints and they had to add the > > > variable to restore the previous behavior. Now here is the bad > > > news for you. This environment variable does nothing for us > > > because > > > linux-f10-gtk2-2.14.7 does not have the compat hack. :-( > > > > > > One thing we can do is re-rolling linux-f10-gtk2 with the hack > > > locally (as we did for x11-toolkits/linux-f10-pango) and using > > > the hack from www/nspluginwrapper-devel *iff* that actually > > > fixes the problem. > > > > > > There was another attempt by PC-BSD to address this issue: > > > > > > http://trac.pcbsd.org/changeset/3799 > > > > > > Unfortunately, I have no idea how Pango can affect the "right > > > click" problem in the first place. In fact, I wasn't able to > > > reproduce the fix on FreeBSD (long ago) and I *thought* their > > > fix is PBI-specific (kmoore added to CC list). > > > > I forgot one important thing. Actually, this problem only > > started happening from Flash plugin 10.1. So, the easist > > workaround is going back to the last 10.0 release (e.g., > > 10.0.45.2 does not have this issue). You can find old versions > > from here: > > just wanted to report that the bug still exists in flash 11. I wrote an ugly but very simple workaround. Drop the attached patch in www/nspluginwrapper-devel/files and replaces old one, rebuild, reinstall, redo plugin wrappers, etc., etc... Cheers, JK > > http://kb2.adobe.com/cps/142/tn_14266.html > > > > FYI, the following Chromium PR has the most plausible root-cause > > analysis of this problem I've ever seen on the Net: > > > > http://code.google.com/p/chromium/issues/detail?id=40157 > > > > Just in case if anyone is capable and willing to fix it for > > good... > > > > Jung-uk Kim --Boundary-00=_EgBlNwKQrYpU/m8 Content-Type: text/plain; charset="iso-8859-1"; name="patch-src-npw-wrapper.c" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="patch-src-npw-wrapper.c" --- src/npw-wrapper.c.orig 2011-03-30 19:53:27.000000000 -0400 +++ src/npw-wrapper.c 2011-03-30 19:54:15.000000000 -0400 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -2560,6 +2561,24 @@ return ret; } +#define NPW_ADOBE_FLASH_NAME "Shockwave Flash" + +// Detect Adobe Flash plugin version +static float is_adobe_flash(void) +{ + static float version = 0.0; + static bool tested = false; + + if (!tested) { + if (strcmp(g_plugin.name, NPW_ADOBE_FLASH_NAME) == 0 && + strncmp(g_plugin.description, NPW_ADOBE_FLASH_NAME, + strlen(NPW_ADOBE_FLASH_NAME)) == 0) + version = strtof(g_plugin.description + strlen(NPW_ADOBE_FLASH_NAME), NULL); + tested = true; + } + return version; +} + static int16 g_NPP_HandleEvent(NPP instance, void *event) { if (instance == NULL) @@ -2569,6 +2588,13 @@ if (plugin == NULL) return NPERR_INVALID_INSTANCE_ERROR; + if (((NPEvent *)event)->type == ButtonPress && + ((XButtonEvent *)event)->button == Button3 && + is_adobe_flash() >= 10.1) { + /* XXX: work around "right click" hang with Flash plugin 10.1 and later */ + D(bug("NPP_HandleEvent instance=%p: Button3 pressed on SWF\n", instance)); + return true; + } 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 */ --Boundary-00=_EgBlNwKQrYpU/m8--