不能在NPAPI插件中使用POCO计时器
Cannot use POCO Timer in NPAPI plugin
我已经实现了一个在Firefox中工作的NPAPI插件。接下来,我尝试添加一个接受来自 JavaScript 端的函数作为回调的方法。
最初,我尝试在同一方法中立即调用此回调方法,该方法在JavaScript端完全没有执行任何操作。
然后,我尝试使用 Poco::Util::Timer 和 TimerTask 实现一个计时器。当尝试在代码中以任何方式实例化 Timer 或 TimerTask 时,Firefox 将不再加载插件。在about:plugins中,没有插件的痕迹。
据我所知,没有办法弄清楚为什么插件没有加载,也没有找到任何关于实现 NPAPI 插件时允许和不允许的内容的参考。
任何指针都将是最有帮助的。如果需要,我可以发布代码。
您需要了解的有关 NPAPI 插件的主要内容是,您无法通过备用线程以任何方式与浏览器交互。
不过,我会先回到你的第一个测试,因为如果你立即调用传入的 NPObject(使用 InvokeDefault),应该会起作用。
我的猜测是,使用计时器,您可能在不同的线程上运行,或者试图篡夺插件线程中的消息循环,这两者都会导致您出现问题。 你看过《火息》吗?FireBreath 1可能会为您提供所需的一切,而无需了解NPAPI的所有实现细节。
相关文章:
- Linux的Cpp上的计时器
- 提升 ASIO 无法识别计时器对象
- 提升 asio 并发计时器取消问题与链
- 使用单体计时器的pthread_cond_timedwait有时会比预期晚超时
- 窗口中的微秒计时器
- 计时器是否从另一个线程启动?
- 如何在 c++ 中创建计时器
- C++回调计时器实现
- 在计时器或主线程外部的命令上销毁/替换线程
- 如何制作每秒从 30 乘 1 倒计时的计时器?
- 保留计时器集合(对象与指针)的最佳方法
- 在网络套接字计时器滴答后增加asio短读错误
- 是否可以仅使用标准 c++/c++11 实现不带"sleep"的计时器?
- 在没有NtSetTimerResolution的Windows上提高计时器分辨率(高分辨率)
- 计时器坏了或者其他什么的
- 功能计时器阻止主功能继续
- IO服务重新启动后,Boost最后期限计时器持续触发
- boost asio计时器是否会在"取消"时阻塞
- Poco 计时器,具有来自同一类的回调
- 不能在NPAPI插件中使用POCO计时器