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.
