最近は不本意ながらMac上のMonoDevelopでmldspのコードを書いていることが多い。この環境でLinux環境がまだまだ実用的でなく(ACPIまわりにバグがあってkernelのfix待ちという状態なので、どんなdistroの最新カーネルでも無理なはず)、Silverlightアプリのレベルであれば十分にビルドもテストも出来るので(テストはSilverlight上で行われることになるけど、Moonlightはかなり出来が良いので、Linux環境に持っていって動かなかったことは1度しか無い)、それに甘んじているという状態だ。
これまで、そのMac環境でmldspを動かした時は、ちょっと困った問題があって、最初にファイルを選択した時は概ね動かない(けどたまに動く)という現象があった。Windows上では逆に概ね動く(けどたまに動かない)という状態だった。
さっきLinux環境に持っていったら、いろいろプレイヤまわりのコードをいじったせいか、演奏してくれなくなったので、プレイヤの状態管理まわりを整理しようと思っていろいろ改善を施した。基本的には非同期プレイヤは内部の同期プレイヤの状態をそのまま見ることにした。そうしたらなぜか上記の問題が一気に無くなって、プレイヤとしての安定性はかなり向上した。相変わらずUI上は停止命令を受けてもクリアされないが、演奏→停止→演奏などの操作もきちんと扱えるようになった。
コードが少なければ少ないほど、バグも減るという好例だ。
Leave a comment