2013-08-29 78 views
1

我在寫一個使用CoreAnimationDrawingModel的Safari NPAPI插件。這使我可以創建高性能的CAOpenGLLayer並將其返回給瀏覽器(我使用的是:https://wiki.mozilla.org/NPAPI:CoreAnimationDrawingModel)。如何在基於CALayer的NPAPI插件中支持視網膜?

不幸的是,我在這個設置中支持Retina顯示器時遇到了問題,因爲我無法找到解決該插件是否託管在Retina顯示屏上的方法。沒有這些信息,我無法正確設置CALayer的contentScale屬性。

在原生應用程序中,我將CALayer託管在NSView中,並觀察viewDidChangeBackingProperties以獲取所需的解決方案信息。我不確定在NPAPI世界中是否有獲取圖層主機的方法?即使這是可能的,我也不得不爲這個決議進行輪詢,理想情況下我想註冊某種通知監聽器。我正在使用FireBreath(http://www.firebreath.org/)寫我的插件,並與那裏的開發者(Richard Bateman)談論IRC,但他們建議在這裏問(斯圖爾特摩根被提及是一個很好的人)。

回答

1

a spec將此信息傳遞給NPAPI插件。我並不完全確定實施狀況; Chrome並沒有實現它,Firefox源代碼的隨意檢查表明它確實如此,並且由於它是由Apple工程師撰寫的,所以Safari很可能會這樣做。

+0

謝謝,這當然有幫助。我會在下週初做詳細的測試。 該規範建議瀏覽器將不斷髮送更新通知(使用NPP_SetValue)。到目前爲止,我還沒有在我的測試中看到過這些,但是他們可能只會在_after_NPN_GetValue查詢時啓動。 –

+0

對於對此感興趣的其他人,我現在將相關支持代碼添加到FireBreath插件框架中,atm正在等待合併:https://github.com/firebreath/FireBreath/pull/119。至少在Safari 6.0.5中運行良好。 –

+0

這是我可以在Safari NPAPI插件中找到有關視網膜支持的唯一有用信息。我有一個Core Graphics插件,我無法找到如何使其與視網膜一起工作。有什麼想法嗎? – Samir