我在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