Problem solved by paying attention to NPN_RetainObject and
NPN_ReleaseObject calls on Script objects...

Hope the airing of this topic will prove useful to someone somewhere!

J.

On Jan 15, 6:22 pm, juliancwl <[email protected]> wrote:
> I am developing an NPAPI plugin to process browser script.  Platform
> is a build of the 1.6 Android source on Ubuntu, target is the browser
> on the emulator supplied with the SDK.
>
> Some of the JavaScript functions are asynchronous, passing in success/
> failure callback functions as parameters. These are to be called back
> by us when an async process has completed.
>
> To achieve this we use the following code:
>
> browser->invokeDefault(NP context, NPObject* onSuccessCbObject,
> NPVARIANT args[] , int numargs, NPVARIANT * retVal);
>
> This works well when called in the main plugin thread - the script
> runs in the browser as expected.
>
> However we need to implement this as an asynchronous callback. Firstly
> we tried spawning a new pThread to run the above code - which
> invariably crashed the browser.
>
> So I tried using the NPN_PluginThreadAsyncCall function which seems to
> allow a worker thread to run a function in the main browser UI thread.
> This is called as follows:
>
> browser->pluginthreadasynccall(  void (*func)(void *) , void *
> userData)
>
> The function we pass to this API contains the call to invokeDefault as
> described above. When this is called the browser crashes immediately
> (signal 11).
>
> I am sure that all data passed to the function is valid, and the
> lifetime of objects passed between threads are protected by reference
> counting to ensure nothing is deleted prematurely. remove the call to
> invokeDefault from the thread function, and everything completes and
> cleans up as expected. But as soon as invokeDefault is called the
> program crashes straight away.
>
> Any ideas what might be going on?  Is there something else I should be
> doing, or a preferred way to implement callbacks to a browser.
>
> Many thanks - Julian.
-- 
You received this message because you are subscribed to the Google Groups 
"Android Discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/android-discuss?hl=en.


Reply via email to