Comment puis-je mettre à jour les messages d'état dans Firefox à partir de n'importe quel fil?

StackOverflow https://stackoverflow.com/questions/1037346

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!

Était-ce utile?

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
scroll top