最近はあまり聞かなくなりましたが、パソコンのトラブルで「アイコンの表示がおかしくなる」というトラブルが昔はよくありました。そんなときに定番になっていた解決法「アイコンキャッシュを削除する」、しかし今回は一筋縄ではいきませんでした。
先日の事なのですが、Google Chromeで適当にWebブラウジングをしている最中に妙な違和感に気づきました。
よく見てみるとタスクバーのChromeのアイコンに妙な黒い影が出ているではありませんか。
「え~。Chromeのアイコンって元々こんな感じだったかな・・・」なんて不安に思っていましたが、よく調べてみるとChromeだけではなく他のアプリケーションのアイコンも黒い影が付いている物がありました。さらには自作のアプリケーションのアイコンまで・・・。
どうやらセーフモードでは正常に表示されるっぽい
「アイコンが化けてるのかな・・・とりあえずアイコンキャッシュを消せば直るか・・・」と軽い気持ちでアイコンキャッシュを削除→セーフモードで再起動→黒い影消失→「ほれみろ! やっぱりキャッシュ消せば直ったじゃないか」と思ったのがそもそも勘違い。
なんと通常モードで再起動すると、例の黒い影が再び現れるのです。
さらに、よくよく見てみるとどうやらこの黒い影はアイコンデータに含まれるアルファチャンネルのデータっぽい。
本来なら指定されたアルファチャンネル値に従って半透明で描画されなければいけないところが、問答無用で真っ黒になってしまっている事に気づきました。
私は最近インストールしたアプリケーションがアイコン描画のAPIに悪さをしてるのではないかと疑い、ここ最近インストールしたアプリケーションをすべてアンインストールしてみましたがやはり症状は改善しません。
原因はビデオカードのドライバでした
「それにしても・・・セーフモードではアイコンがちゃんと描画されるのに通常モードで起動するとアイコンがおかしくなるのは気味が悪い・・・。
そもそも通常モードで読み込まれてセーフモードで読み込まれない物って・・・、ビデオカードのドライバとか、そういう重要な物だよな・・・。」
なんて考えていると、実は最近nVidiaのドライバをアップグレードしたことを思い出しました。
該当のバージョンは「266.58」。ひょっとしたらビデオカードのドライバが悪さをしているのかもしれない。
そう思って、アップグレードしたドライバを削除し、ビデオカードの付属のCDからドライバを入れ直してみたところ、あっさりと直りやがりました!!!
ビデオカードに付属のドライバのバージョンは「257.21」 どうやら新しいバージョンのビデオカードのドライバがアイコン描画関係に悪さをしていたようです。
しかしながら、あのときセーフモードで再起動をしていなければおそらくは気づかなかったでしょう。
ビデオカードのドライバが画面表示のアクセラレーションの肝を握っている事は前々から知っていましたが、まさかアイコン表示にまで影響を及ぼしているとは知りませんでした。なにしろ私はアイコンのビットマップをアルファチャンネルを考慮しつつそのまま転送していると思っていましたので。
それにしても、ドライバのどこをどういじくればこのようにアイコン表示においてアルファチャンネルが無視されるようなバグが出来るんでしょうか・・・。こういう部分はすでに枯れていてほぼメンテナンスなんてしないと思っていました。
というわけで、画面表示に妙な違和感を感じる場合にはビデオカードのドライバを古い物に戻してやると直る可能性もなきにしもあらずです。