Re: nsplugins patch (KDE4)
- Date: Tue, 29 Apr 2008 11:52:54 +0700
- From: Sergey Saukh <thelich@xxxxxxxxx>
- Subject: Re: nsplugins patch (KDE4)
In a message on Tuesday 29 April 2008 Sergey Saukh you wrote: > Hello, > > > > well... crash on exit problem is still not solved (nspluginviewer just > > > was silently exitting because of recursive calls in NSPluginInstance > > > destructor). Now when there is no recursive calls - it crashes again, > > > because of call to XtRemoveTimeOut from flashplayer library, when we > > > call _pluginFuncs.destroy in NSPluginInstance::destroy(). > > > > > > A wierd solution to this - is to set UserAgent to "firefox" for > > > nspluginviewer. This can be done in konq settings. > > > > Really strange. I remeber some developer has written about such a > > behavior. This is of course not the solution; the user does not have to > > change that. Can we hardcode that in the code, so it will work all the > > time (of course only for the flashplugin)? > > I've come to more wierd solution, while trying to hardcode UserAgent for > flashplugin. I don't know how to explain such behaviour, but I think this > is the way how flashplugin initializes itself. > When flashplugin executes "setWindow" (or "Initialize", I don't know for > sure) it calls NPN_UserAgent with NPP set to NULL. At this point I return > an empty string. Subsecuent calls to useragent are ok (NPP is set and > function returns string configured in browser, (default "... KHTML, > blablabla", for exapmple). This time crash-on-exit problem is totally > gone... > > Please, review the new patch and say what do you think about it. Ummm, it's perfectly clear now, that returning empty UserAgent string to flashplugin, when it executes "Initialize" is generally not a good idea, because it breaks any actions, which depend on browser actions (like open new url). But returning just "Gecko" instead do the trick. I think, that in "Initialize" phase, flashplugin checks in what environment it was run, i.e. if it was run from a browser and checks what type of browser is it. If there was no (or empty) UserAgent string, then it assumes that it was not launched from a browser window and disables any actions, which lead to opening urls, or whatever. If it receives string which contains "Gecko" (not "(like Gecko)" though - seems it doesn't like gecko in parenthesis) it assumes, that it runs in a native environment and doesn't make any calls to libXt upon destruction. If it receives any other UserAgent string, then it uses libXt (don't know why) and we end up with nspluginviewer crash, when "destroy" method of flashplugin tries to call "XtRemoveTimeout"... So I see two ways out from this mess: 1. Hardcode to return "Gecko" from g_NPN_UserAgent, when NPP structure is not set (indicates that it was called by flashplugin from "Initialize"). 2. Make Adobe programmers to fix this issue in flashplugin itself. -- Best regards, Sergey A Saukh
Attachment:
signature.asc
Description: This is a digitally signed message part.
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
- Follow-Ups:
- Re: nsplugins patch (KDE4)
- From: Urs Wolfer
- Re: nsplugins patch (KDE4)
- From: Sebastian Kuegler
- Re: nsplugins patch (KDE4)
- References:
- nsplugins patch (KDE4)
- From: Sergey Saukh
- Re: nsplugins patch (KDE4)
- From: Sergey Saukh
- nsplugins patch (KDE4)
- Prev by Date: Re: nsplugins patch (KDE4)
- Next by Date: Re: Crash during program clean-up
- Previous by thread: Re: nsplugins patch (KDE4)
- Next by thread: Re: nsplugins patch (KDE4)
- Index(es):