【发布时间】:2011-09-13 12:30:29
【问题描述】:
我在 Safari 中工作,在 OSX 之上,使用核心图形,我有一个运行两个线程(主线程和渲染计时器线程)的插件。渲染计时器线程调用“NPN_InvalidateRect”,而主插件线程处理相应的事件并重绘自己。然而,这似乎在 32 位和 64 位 safari 中的工作方式不同:
- 64 位(可可事件模型):需要 NPN_InvalidateRect + NPN_ForceRedraw = 正确重绘
- 32 位(如果支持可可,否则为碳):NPN_InvalidateRect = 正确重绘 但是,同时执行 NPN_InvalidateRect + NPN_ForceRedraw(如 64 位大小写)会导致图像闪烁。
问题:
有没有更好的方法来强制插件呈现自身,同时坚持原生 NPAPI、核心图形和对 carbon&cocoa 事件模型的支持。
如果不是,我如何在运行时检测浏览器是作为 32 位还是 64 位应用程序运行,以便我可以选择调用哪些 NPN 函数。
谢谢,
(交叉发布到firebreath,我将在两个地方发布回复)
【问题讨论】:
标签: cocoa plugins safari npapi