ヨーキョクデイ

いろいろ雑食

Firefox 2 における canvas 要素の putImageData のバグ

canvas 要素で画像にフィルタを適用したい の回で作ったサンプルは Firefox 3 系で動かしながら作ったもので、Firefox 2 系では ctx.putImageData() を使っても再描画されないバグがあるらしいことにその後で気づいた。試してみると、タブを切り替えたり、ウィンドウサイズを変えたり、ドラッグしてその辺を選択したりすることで強制的に再描画をかければいいということがわかったが、対処策として、ctx.putImageData() する前か後に ctx.fill() とかしてみるとよさそうなこともわかった。
気になるのでちょいとぐぐってみたら Bug 364885 – Calling ctx.putImageData() doesn't redraw というバグがあったのだが、これは trunk では修正されているものの、MOZILLA_1_8_BRANCH ではノータッチなのであって、それゆえにこんなことになっているのだが、この Taken 大先生によるパッチをそのブランチに当ててビルドしたらそりゃもういい感じよ。これは Fx2 系では一生直らないバグなのかしら。
ところで、nsCanvasRenderingContext2D.cpp はひととおり読んでみる価値がありそうだ。