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.
