Как я могу обновить сообщения о статусе в Firefox из любого потока? - PullRequest
0 голосов
/ 24 июня 2009

Я столкнулся с проблемой при обновлении сообщения о статусе в Firefox из кода плагина.

Как сказано в документации, вызов NPN_Status работает только при вызове из основного потока. Мое требование - обновить статус из любого потока в процессе Firefox.

Любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 24 июня 2009

Вы не можете обновить его из какого-либо потока, потому что это нарушит некоторые правила безопасности потока. Вы должны будете отправить свое обновление обратно в основной поток.

0 голосов
/ 22 декабря 2009

Как сказал sdwilsh, вы должны вызывать NPN_* -функции только из основного потока. NPN_PluginThreadAsyncCall был представлен только в Gecko 1.9 и поддерживается не во всех современных браузерах.

Обходные решения зависят от платформы:

  • в подклассе Windows окно, которое получает ваш плагин, отправляет / отправляет ему сообщения и вызывает вызов из процесса обработки окна
  • на Mac с какао вы можете использовать, например. performSelectorOnMainThread
  • на Mac с Carbon вы можете использовать вызов вызовов при нулевом событии
  • ... и т. Д.
...