From: Masaaki A. <mas...@gm...> - 2012-02-04 23:34:43
|
青柳です。 > で、Ruby/GStreamerはどうしているのかというと、Rubyのものじゃ > ないスレッドからシグナルが飛んできたらRubyのスレッドでイベン > トを処理して、元のシグナルを受け取ったスレッドにもどしてやる、 > ということをしています。 > rbgutil_start_callback_dispatch_thread()というのを呼ぶとこれ > が動き出すようになります。 なるほど。rbgutil_start_callback_dispatch_threadでコールバック処理用のスレッドを動かした上で、 G_PROTECT_CALLBACKでコールバック処理を依頼すると理解して、そのようにしたら一応 動くことが確認できました。 ただ、自分の作っているアプリでは、デッドロックに入ったような状態になることがあるようで、 まだ若干怪しいです。 それと、gstreamerでは確かにrbgutil_start_callback_dispatch_threadを使用しているのですが、 G_PROTECT_CALLBACKを使っておらず、rbgutil_start_callback_dispatch_threadを無効に しても動くようなので、この仕組みを使ってない気もするのですが、何か勘違いしてますでしょうか? >> ちなみに、このバインディングはGTK向けであることと、メンテ(特にリファレンス)を手伝って欲しいなぁ >> と思っているので、もしまともに動くようになったらRuby-GNOME2プロジェクトに入れて頂くことは >> 可能でしょうか? >> ライセンス的にはlibVLCの1.2からLGPLに変わったそうなので、問題ないと思います。 >> (このバインディングはlibVLC 2.0以降対応としています) > > あ、今の状態でいれちゃっていいですよ。 > リポジトリに入っていたほうが参照しやすいですし。 ありがとうございます! 早速入れちゃいました。 |