2009年4月28日火曜日

mozilla firefox plugin sdk まだ続く

 前回のサンプルコードを眺めていて、これじゃ、HTML上に複数インスタンスを置けないよなぁ?と、いう事で、複数インスタンスに対応してみる事に…。すると、描画がおかしい。いろいろと突っ込んでみて、わかった事。
  • 基本的な事ですが、wglMakeCurrent( hDC, hGLRC ) から wglMakeCurrent( NULL, NULL ) までがインスタンス毎に排他的に行われる必要がある。
  • Google Chrome が WM_PAINT メッセージをまともによこさない。WM_ERASEBKGND メッセージで代用しているのか?
  • Google Chrome は、WM_NULL メッセージをタイマーのように送信している。
  • Firefox のスクロールバーで移動後の再描画メカニズムがおかしい。WM_PAINT が呼ばれているようなのだが、その後にウィンドウ領域をクリアしているのか?領域計算がおかしくて WM_PAINT をよこさないケースがあるのか?原因が特定できないけど、描画されない場合がある。
 最初は、Google Chrome 行儀悪りーと思っていたが、WM_ERASEBKGND メッセージ時にも描画処理を行えば対処が可能な Google Chrome の方が御し易い。アニメーションしない Flash は、スクロール・バーでスクロールさせると白く抜ける現象を起こしたりしないのかなぁ?という疑問が…。

0 件のコメント: