* Mon Jun 27 18:33:00 JST 2002 Naoyuki Sawa
今回も「アプリケーションを実行するたびに画面の濃度が変わってしまう」問題についてです。
昨日、トップページでサンプルソースをご紹介しました通り、一応の解決方法が見つかりました。
解決方法の話に入る前に、すこし前回の補足を行います。
前回使った濃度バラつき問題再現プログラムに、いくつか修正を加えました。
修正点は次のとおりです:
・ディザを多く含む絵の方が濃度のバラつきがわかりやすい、と書きましたが、
どうやらそれよりも黒ベタの絵の方が濃度のバラつきがわかりやすいようです。
というわけで、黒ベタ&左上に操作説明、という画面に変更しました。
・アプリケーションを終了→再実行しなくても、濃度のバラつきを再現できるようにしました。
−これまで「アプリケーションを実行するたびに」濃度のバラつきが発生する、と書いてきましたが、
正確には「pceLCDSetOrientation() APIを呼び出すたびに」濃度のバラつきが発生しているのです。
pceLCDSetOrientation()は、内部でLCDCのリセット処理を行っています。
どうやらこのリセット処理が上手く行っておらず、濃度のバラつきを引き起こしているようです。
−pceLCDSetOrientation()が原因なのに、なぜアプリケーション実行のたびに濃度が変わるのでしょうか?
ほとんどのアプリケーションは、pceLCDSetOrientation()なんか使っていないはずですよね。
その理由は、アプリケーション開始直前に、カーネル内部でpceLCDSetOrientation(0)が呼ばれるからです。
前のアプリケーションが画面回転したまま終了した場合、次のアプリケーションも回転したままに
なってしまったりするのを防ぐためだと思います。
アプリケーションの終了→再実行をしなくても、pceLCDSetOrientation()を呼べば濃度バラつきが再現できます。
Aボタンを押すと、pceLCDSetOrientation()を呼ぶようにしてみました。
以上二点を修正した問題再現プログラムのソースはこちら