LINUX.ORG.RU

Пространный вопрос по архитектуре плагинов для броузеров.


0

0

Пространный вопрос по архитектуре плагинов для броузеров.

Если у кого-нибудь найдётся время написать на простом детском языке, как плагин флеш-плеера (macromedia flash), например, выводит картинку на веб-страницу?
Ну вот у нас есть движок броузера, который формирует большую картинку, которая есть страница. Как завязан выход флеш-плеера и этого движка обычно? Флеш плеер формирует очередной кадр, кладёт в заранее обозначенное место и дёргает за специально отведённую нитку движок? Как-то так? Движок зырит в место и вставляет эту картинку себе в то место, где как-бы сидит флеш-ролик?


Если честно я не совсем в теме, тоесть я точно не знаю как это делается... но что-то мне подсказывает, что флеш ролик как бы отрисовывается поверх изображения... просто браузер, чисто теоретически, на практике бывает совсем иначе, должен оставить под этим роликом пустое место...

мне кажется это очень похоже на то как можно заставить mplayer рисовать картинку на каком-то окне, передав ему id окна... так и тут... вся страница - окно... запускается отдельный процесс флеш-плеера, ему передаётся id "окна", и координаты, где надо рисовать... ну он и рисует себе... а браузер просто при рендеринге оставляет путое пространство на "окне"(странице) заданного размера в заданном месте.

вообще будет тоже интересно услышать, как это делается на самом деле :)

Cy6erBr4in ★★★
()
Ответ на: комментарий от Cy6erBr4in

Используется NPAPI, курить в ту сторону. На сайте мозиллы хорошее описание. Браузер передаёт хэндл окна, а плагин уже сам в него рисует.

krum
()
Ответ на: комментарий от Cy6erBr4in

> Это не тоже самое что я сказал?

Не отдельный процесс. Плагин работает в адресном пространстве браузера.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

у оперы, похоже, отдельный :)

~$ ps ax | grep opera
 7805 ?        Ssl    9:33 /usr/lib/opera/9.50-20080422.6/opera
 8396 ?        S      0:00 /usr/lib/opera/9.50-20080422.6/operaplugincleaner 7805
 8730 ?        SNl  164:40 /usr/lib/opera/9.50-20080422.6/operapluginwrapper 101 114 /usr/lib/mozilla/plugins/flashplugin-alternative.so
 9200 ?        SN     2:22 /usr/lib/opera/9.50-20080422.6/operapluginwrapper 77 81 /usr/lib/mozilla/plugins/flashplugin-alternative.so

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Это костыль в виде nspluginviewer:) Тот же флешёвый плагин работает в том же адресном пространстве.

krum
()
Ответ на: комментарий от no-dashi

Ну да, наверное всё же не процесс... скорее поток :)

Cy6erBr4in ★★★
()
Ответ на: комментарий от no-dashi

В Qt 4.5 обещают в отдельном процессе. В konqueror будет, ЕМНИП. Где-то на блогах троллей было у Зака Рассина, он писал тестовый браузер на QtWebkit, думал, как вытащить в отдельный процесс.

В Опере, если бы так сделали, наконец-то флеш перестал бы 100% CPU отъедать на куче страниц (100+)с непорезанной рекламой.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.