WebKitPluginHost молча закрывает мой 32-битный плагин в OS X 10.6

У меня есть специальный плагин OS X NPAPI, созданный как универсальный 32-битный пакет. Он отлично работает под OS x 10.6 в Firefox. Он также отлично работает в Safari, запущенном в 32-битном режиме.

Однако он молча терпит неудачу в Safari, запущенном в 64-битном режиме. 64-битный Safari запускает 32-битные плагины в отдельном процессе (WebKitPluginHost). Журнал плагина показывает, что хост запускает плагин, вызывает NP_Initialize, затем NP_GetEntryPoints, затем NPP_New, который успешно возвращает созданный экземпляр. Как правило, следующим вызываемым методом плагина будет NPP_SetWindow, однако хост никогда его не вызывает. Вместо этого он молча закрывается примерно через 10 секунд после запуска, без сообщений или чего-то еще. Мне удалось подключиться к хост-процессу с помощью GDB, но безуспешно, он просто отмечает, что процесс завершился нормально.

Я был бы очень признателен за любую подсказку, что я мог сделать неправильно в плагине, или URL-адрес плагина NPAPI с открытым исходным кодом, который, как известно, работает под WebKitPluginHost, или даже подсказку, что было бы лучшим способом отладки этой проблемы (построение отладки версия WebKit - это крайняя мера, я был там, и теперь мне нужно найти решение немного быстрее)


person Alexey Naidyonov    schedule 24.12.2009    source источник


Ответы (2)


Оказалось, что WebKitPluginHost явно требует от плагина установки NPPVpluginDrawingModel. Поскольку плагин был без окон, я никогда не удосужился сделать это, и все сработало нормально.

Минус шесть часов моей жизни за то, что я это раскопал :(

person Alexey Naidyonov    schedule 24.12.2009
comment
Добро пожаловать в клуб - по крайней мере, вам нужно всего 6 часов ;) - person Georg Fritzsche; 08.03.2010
comment
Причина этого, по-видимому, в том, что Safari не поддерживает ООП плагинов QD. Если вы не согласовываете модель в 32-битном плагине, по умолчанию используется QD. - person smorgan; 18.05.2010

Создание полной версии с 64-битным сегментом в двоичном файле кажется наиболее очевидным, что нужно сделать в первую очередь.

person Azeem.Butt    schedule 24.12.2009
comment
На самом деле это было невозможно из-за сторонней проприетарной библиотеки, извините, что не упомянул об этом. - person Alexey Naidyonov; 24.12.2009