« いろいろと直接リストを見られるように | メイン | レイヤーモードの注意点 »

2007年10月07日

吉里吉里 ムービー拡張日誌2:: VMR の落ちる問題への対処

    

吉里吉里本体が DirectDraw を使っていたり、Vista で動かしていたりすると、オーバーレイがうまく動かないようだ。
うまく動かないと言うのは、見れなくなるというわけではなく、ハードウェアオーバーレイが使われていないと言う事のよう。
そして、拡大が汚い。

と言う事で、VMR-9 ( mixer モード ) の重要性が増してきたんだけども、VMR モードではムービー再生中にウィンドウとフルスクリーンを何度も切り替えると落ちるという問題があった。
まあ、そんなことする人はいないと思うけど、それでも落ちるというのは問題と言う事で調査。

原因はどうやら IDirect3DDevice9::Reset の前に IDirect3DDevice9::TestCooperativeLevel をコールしてリセット可能な場合のみ IDirect3DDevice9::Reset をコールするようになっていないケースがあることのよう。
つまり、IDirect3DDevice9::Reset をいきなり呼んでいるからっぽい。
でも、IDirect3DDevice9::Reset をいきなり呼んだら常に落ちるというわけではなく、時々落ちるみたい。
毎回落ちればわかりやすいんだけど、そうではないようだ。
と言う事で、必ず IDirect3DDevice9::TestCooperativeLevel でチェックしてリセット可なら IDirect3DDevice9::Reset をコール。そうでないなら、Direct3DDevice を破棄して作り直すように ( Direct3DDevice の再生成は前からやってた )。
これでわかっている問題はすべて直したはず。
まあ、Direct3D や VMR-9 を使っているので、ハードウェア依存の問題は何かしらあるかもしれないけど、それは仕方ない。
発覚して直せそうなら直す。

それと、クリックが吉里吉里側に伝わっていなかったようだ。
これは、DrainWindow へメッセージを流して終わりと言う事で、そうした。
後、KAGでmode="mixer"がなかったので追加。

以上、対応を行ったものをコミットした。
これで、以前よりも mixer モード が安定した。
でも、誰も何も言わなかったて事は、mixer モードほとんど使われていなかったんだろうなぁ。



投稿者 Takenori : 2007年10月07日 15:26




comments powered by Disqus
Total : Today : Yesterday : なかのひと