・vlc-1.0.1 のファイルセレクタ
手元の環境では GCC/Glibc2 も更新したので、テストのつもりで glibc2 の新しいバージョンを必要とする vlc-1.0.1 をビルドしてみた。
ところが 0.9 系は問題なく動いているのに、1.0.1 だと日本語のファイル名を持つファイルを選択しようとすると
[0x814d4d0] main interface debug: thread (interface) created at priority 0 (interface/interface.c:151) (<unknown>:20758): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text() (<unknown>:20758): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text() (<unknown>:20758): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text() .... (<unknown>:20758): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text() (<unknown>:20758): Gdk-CRITICAL **: gdk_x11_atom_to_xatom_for_display: assertion `atom != GDK_NONE' failed [0x8098b08] main playlist debug: adding item `???????????????????????????礦?????????.flv' ( /share/AV/FLV/???????????????????????????礦?????????.flv ) [0x8098b08] main playlist debug: rebuilding array of current - root プレイリスト [0x8098b08] main playlist debug: rebuild done - 1 items, index -1 [0x8098b08] main playlist debug: processing request item ???????????????????????????礦?????????.f lv node null skip 0 [0x8098b08] main playlist debug: resyncing on ???????????????????????????礦?????????.flv [0x8098b08] main playlist debug: ???????????????????????????礦?????????.flv is at 0
みたいなデバッグ出力が出て、画面にもエラーメッセージウィンドウが開く。
症状的に、euc-jp locale なファイル名を、内部処理用の UTF-8 なファイル名に変換するあたりのエラーっぽいので、 src/text/filesyste.c の utf8_open() の前後にデバッグメッセージをバラまいて、しばらく追いかけてみたのだけど、 どうもファイルセレクタウィンドウから返ってくるファイル名のレベルで文字コードが壊れている気配。確かに、ファイルセレクタ ウィンドウも、右下の(多分)ファイル名の種類を指定するあたりのメニューの文字コードが壊れている。
0.9系だと問題ないので、両者を比較したり、もう少し手前のあたりにデバッグ用のメッセージをバラまいてだいぶ調べてみたのだけど、 どうもよく分からない。
イジっているマシンは開発用でGTKやpangoも新しいバージョンにしたGNOME環境なので、ライブラリの影響があるかも知れんと、もう一台の KDE環境のマシンでビルドし直してみると、あれ、日本語のファイル名のファイルも問題なく動く?
ありゃ、これは pango とかを更新すると Qt もビルドし直しなのかな、、と思いながらふと見ると、ファイルセレクタウィンドウのデザインが違う。
こっちが vlc-0.9 系とかでも見なれたセレクタなんだけど、あらためて文字バケしているセレクタを見ると、どうもこれは GTKな世界のファイルセレクタっぽい。
あれれ、、と思って KDE 環境でビルドしたバイナリを GNOME 環境に持ってきたり、XFce 環境に切り替えたりしてみたけど、 どうも GNOME 環境で発生する問題っぽい。
vlc の場合、GUI環境とかもモジュール化されていて動的に切り替えられるのだけど、どうもそのヘンがイタズラしているのか、 暴走しているのか、といった感じ。このあたり、起動時オプションとか環境変数で制御可能なのか調べてみなければ。。。
改めて見直せば、vlcはQtベースのはずなのに、エラーメッセージが Pango/Gdk だったりするのはおかしいのだけど、 UIそのものが変わっているとは思いもしなかった(苦笑 見ているものも見えてない、というのはあるんだなぁ。。