ONScripter(5)

ONScripter の avi 再生。

 AVIwrapper.cpp を参考に再生スキップを実装します。

 どうも子プロセスとして mplayer を起動すると、ゾンビとなってしまうようです。waitpid を呼び出せばいいのですが、そうすると、SDL のイベントが取得できなくなるのでスキップできません。

 https://qiita.com/Nobu12/items/7cb09cbac00790fd4293
を参考に、sigaction を使ってゾンビにならないようにしました。これで、再生をスキップできるようになりました。ただし、朱ではスクリプトでスキップ禁止にしているようです。

 SDL が window id を正しく返さないときがあります。問題は、コンパイラの最適化のレベルを変えると挙動が変わることです。

 仕方がないので、Xlib を使い、ウィンドウの一覧から、名前が ONScripter のウィンドウの window id を利用するようにしました。

 気になったので少し詰めてみました。

 SDL_SysWMinfo wmInfo に情報を取得しますが、これを static で宣言したところ、SDL で window id が取得できました。スタックが溢れた?

 automatic に宣言を戻し、ファイル名をコピーする変数のサイズを 1024 から 256 バイトに変更してみました。

 SDL が正しく window id を返しました。Xlib で window id を取得する処理は削除しました。

 こんなところかな?

ONScripter

Posted by sirius