在NPAPI插件中不能使用POCO Timer

时间:2017-01-03 17:07:36

标签: c++ npapi poco-libraries

我已经实现了一个适用于Firefox的NPAPI插件。接下来,我尝试添加一个方法,该方法接受来自JavaScript端的函数作为回调。

最初我尝试使用相同的方法立即调用此回调方法,这在JavaScript方面完全没有。

然后我尝试使用Poco :: Util :: Timer和TimerTask实现一个计时器。当尝试在代码中以任何方式实例化Timer或TimerTask时,Firefox将不再加载插件。在about:plugins中没有插件的痕迹。

据我所知,没有办法弄清楚为什么插件没有被加载,也没有找到任何关于实现NPAPI插件时是什么和不允许的引用。

任何指针都会非常有用。如果需要,我可以发布代码。

1 个答案:

答案 0 :(得分:1)

您需要了解的有关NPAPI插件的主要事项是,您无法以任何方式与其他线程中的交互

我首先回到你的第一个测试,因为调用传入的NPObject(使用InvokeDefault)应该可以立即执行。

我的猜测是,你的计时器可能要么在另一个线程上运行,要么你试图篡改插件线程中的消息循环,这两个都会引起你的问题。你看过FireBreath吗? FireBreath 1可能会为您提供所需的一切,而无需了解NPAPI的所有实现细节。