0

如何让 X11 应用程序监听 DBus 信号。应该启动监听 Dbus 信号的 gmainloop,并启动 X11 应用程序 XEvent 循环。那么有没有一种优雅的方法来做到这一点?还是我必须在另一个线程中运行 gmainloop。

问候,列文

4

2 回答 2

2

如果你想阻塞两个或更多的东西(比如 X 和 dbus),你需要一个主循环。您可以使用 GLib 的主循环或 libev 或其他库。

下面是两个在 GLib 的主循环中使用 Xlib 的例子:

  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 回答