2006年02月12日
一時停止中は再生位置のスライダを動かせないバグ
Bansheeのパッチを一つ書いてみた。一時停止中は再生位置のスライダを動かせないというバグに対処するものだ。
再生位置のスライダは音楽の再生とともに少しずつ動いていくものだが、ユーザーが動かすこともできる。マウスでドラッグすると新しい位置から再生が始まる。つまり、スライダは音楽の再生状況によって更新されると同時にユーザーの操作によっても更新される。
GstreamerやHelixなどの再生エンジンは一時停止中であっても再生状況のデータを送り続けている。マウスでスライダを動かしている最中はupdateEnginePositionというフラグがfalseになっており、再生エンジンからの情報によってスライダが動くことはないのだが、マウスを離すとフラグがtrueになってしまうので、その瞬間に再生エンジンからの情報によってスライダが動いてしまい、ユーザーの操作が無効になってしまう。
私のパッチでは、一時停止中なら再生エンジンからの情報は無視するようにした。一時停止中は再生エンジンは一切情報を送らないようにするのが正しい修正かもしれないが、どこを修正すればいいのか分からなかった。
再生位置のスライダは音楽の再生とともに少しずつ動いていくものだが、ユーザーが動かすこともできる。マウスでドラッグすると新しい位置から再生が始まる。つまり、スライダは音楽の再生状況によって更新されると同時にユーザーの操作によっても更新される。
GstreamerやHelixなどの再生エンジンは一時停止中であっても再生状況のデータを送り続けている。マウスでスライダを動かしている最中はupdateEnginePositionというフラグがfalseになっており、再生エンジンからの情報によってスライダが動くことはないのだが、マウスを離すとフラグがtrueになってしまうので、その瞬間に再生エンジンからの情報によってスライダが動いてしまい、ユーザーの操作が無効になってしまう。
私のパッチでは、一時停止中なら再生エンジンからの情報は無視するようにした。一時停止中は再生エンジンは一切情報を送らないようにするのが正しい修正かもしれないが、どこを修正すればいいのか分からなかった。