2013-08-29 1 views
1

Я пишу плагин Safari NPAPI, используя CoreAnimationDrawingModel. Это позволяет создать высокопроизводительный CAOpenGLLayer и вернуть его в браузер (я использую это: https://wiki.mozilla.org/NPAPI:CoreAnimationDrawingModel).Как поддерживать сетчатку в плагине NPAPI на базе CALayer?

К сожалению, у меня возникли проблемы с поддержкой дисплеев Retina в этой настройке, потому что я не могу найти способ выяснить, размещен ли плагин на дисплее Retina. Без этой информации я не могу правильно установить свойство contentScale CALayer.

В собственных приложениях я бы разместил 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