0

X11アプリケーションでDBusシグナルをリッスンする方法。Dbusシグナルをリッスンするためにgmainloopを起動する必要があり、X11アプリの場合はXEventループを起動する必要があります。それで、これを行うためのエレガントな方法はありますか?または、別のスレッドでgmainloopを実行する必要がありますか?

よろしく、リーヴォン

4

2 に答える 2

2

2 つ以上のもの (X と dbus など) をブロックする場合は、メイン ループが必要です。GLib のメイン ループ、libev、またはその他のライブラリを使用できます。

以下に、GLib のメイン ループで Xlib を使用する 2 つの例を示します。

  1. http://git.gnome.org/browse/gtk+/tree/gdk/x11/gdkeventsource.c
  2. http://git.gnome.org/browse/metacity/tree/src/core/eventqueue.c
于 2010-09-19T17:38:40.913 に答える
0

X イベント ループのファイル記述子を取得できるはずではありませんか? 次に、それを gobject メインループに追加できるはずです。

私が見る限り、ConnectionNumber(xdpy)はファイル記述子を提供し、それをソースに追加して、 で使用できます g_source_add_poll()

于 2010-09-17T10:56:04.867 に答える