0

我正在尝试创建一个 NPAPI 插件来收听 macbook 上的媒体密钥并将其传递给 javascript 以控制诸如潘多拉或 soundcloud 之类的东西。我正在使用 Spotify 的 SPMediaKeyTap 库,它只是包装了在单独线程上运行的 CGEventTap。

我的问题是我使用 npn_invoke 来回调 javascript。这正常工作,但是当它从 CGEventTap 回调触发时,它会使插件崩溃。我意识到这需要从插件线程运行,并且我尝试通过使用 [NSObject performSelectorOnMainThread] 和 [NSObject performSelector:onThread] 将其传递回主线程以及我存储在主线程中的线程插件线程创建方法。这两种解决方案在任何 npn 调用时仍然会崩溃。在处理导致状态对 NPN 浏览器交互调用无效的 CGEventTap 事件时,是否还有其他事情发生?

4

1 回答 1

0

不要试图通过像你一样保存线程来猜测线程模型;只需使用 performSelectorOnMainThread 调用 NPN 方法。我一直这样做,而且效果很好,所以我猜想你的跨线程编组方法的某些东西没有按照它需要的方式工作。

于 2012-01-10T16:14:41.097 回答