NPNInvoke - передача данных плагина обратно в браузер

Я перезваниваю объект в Javascript, используя NPAPI. Перед этим вызовом вызываемые мной функции приводят к правильному вызову функций в JavaScript, но в NPN_Invoke звонки.

Фрагмент кода:

sBrowserFuncs->releaseobject(object_temp);
object_temp = NPVARIANT_TO_OBJECT(args[0]);
sBrowserFuncs->retainobject(object_temp);

if (send_msg1(sBrowserFuncs, instance, msg_rcv, NPVARIANT_TO_OBJECT(args[0]), msg, name_id))

sendmsg1 порождает новый поток, и этот поток вызывает msg_rcv назад. Это нормально для порожденного потока, чтобы вызвать функцию основного потока, это причина ошибки.... ее призыв к NPN_Invoke называется

NPVariant from;

STRINGZ_TO_NPVARIANT(sdata->from, from);
NPIdentifier methodId = NPN_GetStringIdentifier("new_msg");
int res = NPN_Invoke(sdata->instance, object_temp, methodId, &from, 1, &result);

sdata->instance соответствует instanceobject_temp последний вызванный объект сохранен

Возвращает 0, а в успешном случае возвращает 1.

В таком случае NPN_Invoke генерирует 0,

1 ответ

Насколько я знаю, любой вызов NPN_* должен выполняться из потока плагинов. Ты можешь проверить NPN_PluginThreadAsyncCall, Таким образом, вы можете выполнять методы из другого потока, из основного потока / потока плагина и избежать неприятного сбоя:)

Другие вопросы по тегам