WindowsでFireBreathを使用してプラグインを開発しています(今のところ)、OpenGLを使用してウェブカメラフィードを表示しています。ウィンドウプラグインを使用しており、別のスレッドから描画しています。コードは次の場所で表示できます。
ヘッダーファイル
ソースファイル
(onWindowResized の奇妙なコードは無視してください。これは、コミットに残っているいくつかのテストです。)
問題は、ブラウザー ウィンドウのサイズが変更されてプラグインの表示領域が変更されるか、拡張機能が何らかの理由でスクロール ボックスの表示領域の外にスクロールされるとすぐに、Chrome でプラグインがクラッシュすることです。Firefox はインストールしていませんが、Internet Explorer で動作しているので、NpApi のことだと思います。
プラグインの表示サイズが変更されるたびに、Chrome が新しい HDC をリリースして作成することが起こっていると思います。これにより、レンダリング コンテキストが無効になる可能性がありますが、プラグインでまだ使用されているため、クラッシュが発生します。
これが発生したときに NPP_SetWindow get が呼び出されることに気付きましたが、これらの呼び出しは NpapiPluginModule_NPP.cpp で無視されるため、このイベントにフックする方法はありません。
私は数時間Googleを使っていますが、何の助けも見つかりません. 誰もこれを経験したことがありますか?
自分のDCを処理できるプラグインウィンドウに自分の子ウィンドウを作成すればうまくいくと思います。私は失敗した簡単なテストをいくつか行いました。しかし、これはもう少し作業を加えるとうまくいくでしょうか?私が持っている別のアイデアは、何らかの方法で可視領域を追跡することですが、まだ調べていません。