我在OSX上使用核心图形在safari中工作,我有一个插件运行两个线程(主线程和渲染计时器线程)。呈现计时器线程在主插件线程处理相应事件并重绘本身时调用“NPN_InvalidateRect”。然而,这似乎在Safari不同的方式工作32位与狩猎64位:Safari浏览器下的NPAPI自我渲染插件(32位与64位)
- 64位(可可事件模型):需要NPN_InvalidateRect + NPN_ForceRedraw =正确重绘
- 32位(可可如果支持,否则碳): NPN_InvalidateRect =正确重绘 但是,同时执行NPN_InvalidateRect + NPN_ForceRedraw(如64位大小写)会导致闪烁的图像。
问题:
有没有更好的办法来迫使一插件来表现自己,同时坚持原生NPAPI,核芯显卡,支持碳&可可事件模型。
如果没有,我该如何检测,在运行时,如果浏览器运行为32与64位应用程序,所以我可以选择哪些NPN函数的调用。
感谢,
(交叉张贴到firebreath,我将张贴在这两个地方的反应)
另外,为什么你从另一个线程“渲染”?你知道你只能回应某种抽签事件,对吗?在这种情况下,它总是在主线上。一种选择是设置一个定时器,在主线程上以特定频率调用NPN_InvalidateRect;该方法由FireBreath支持(您对于是否使用它并不清楚)是否使用PluginWindowMac类的AutoInvalidate函数。 – taxilian