2026年4月5日日曜日

PIXBeginEvent / PIXEndEvent

PIXを使い始めて少し経った頃、PIXBeginEventを見つけてライブラリのいろいろなところに組み込んだ。今でもその処理が残っているが、いつからかPIX側に反映されなくなった。


表示されなくなった原因


確か、マルチスレッド対応をやったころからだと思う。
突然表示されなくなり、いろいろ試したがダメでその当時は諦めた。
PIX自体もバージョンアップが頻繁にあり出来なくなったのかなと思ってた。

今描画エンジンを作り直してるんだけど、改めて調べなおしてみた。
原因はPIXのバージョンアップでも、機能がなくなったわけでもなく、当然自分のプログラムが原因だった。


マルチスレッド対応


わかってしまえば当然で簡単なことだったけど、なかなか気づけなかった。
マルチスレッド対応を行った際、コマンドリストを発行する処理をすべて別スレッド側に持っていき、パラメータを蓄積する仕組みを用意した。
PIXの関数を呼ぶタイミングは、このコマンドを蓄積するときに呼んでも早すぎで実際にコマンドリストに入れるタイミングで呼び出さないといけない。

それに気づいてコマンド蓄積にPIXのイベントも追加した。
このコマンドを実行するときにPIXBeginEvent / PIXEndEventを呼び出すようにしたところ、以前のようにPIX上でイベントの区切りが作れるようになった。



漢字も使えて、範囲に含まれたコマンドを折りたたんで表示ができる。
上図はすべて展開した状態。



グラフの方もイベント範囲がわかりやすく表示される。


0 件のコメント:

コメントを投稿