Comment puis-je mettre à jour les messages d'état dans Firefox à partir de n'importe quel fil?
Question
J'ai rencontré un problème de mise à jour du message d'état sur Firefox à partir d'un code de plugin.
Comme le dit la documentation, appeler NPN_Status
ne fonctionne que lorsque vous y êtes appelé. du fil principal. Mon exigence est de mettre à jour le statut de n’importe quel fil du processus Firefox.
Toute aide serait appréciée!
La solution
Vous ne pouvez pas le mettre à jour depuis n'importe quel thread, car cela enfreindrait certaines des règles de sécurité des threads. Vous devrez rediriger votre mise à jour par proxy vers le fil principal.
Autres conseils
Comme le dit sdwilsh, vous devez appeler les fonctions
NPN _ *
uniquement à partir du thread principal. NPN_PluginThreadAsyncCall
n'a été introduit que dans Gecko 1.9 et n'est pas pris en charge par tous les navigateurs actuels.
Les solutions de contournement dépendent de la plate-forme:
- sous Windows, sous-classe la fenêtre que votre plug-in reçoit, postez / envoyez-lui des messages et appelez l'appel à partir du processus de traitement de la fenêtre
- sur Mac avec Cocoa, vous pouvez utiliser par exemple
performSelectorOnMainThread
- sur Mac avec Carbon, vous pouvez utiliser invoquer les appels de l'événement null
- ... etc.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow