【问题标题】:How to attach X11 app to Dbus如何将 X11 应用程序附加到 Dbus
【发布时间】:2011-04-13 16:07:33
【问题描述】:

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

问候, 莱文

【问题讨论】:

    标签: x11 glib dbus xlib xserver


    【解决方案1】:

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

    这里有两个使用 Xlib 和 GLib 的主循环的例子:

    1. http://git.gnome.org/browse/gtk+/tree/gdk/x11/gdkeventsource.c
    2. http://git.gnome.org/browse/metacity/tree/src/core/eventqueue.c

    【讨论】:

      【解决方案2】:

      难道你不能为 X 事件循环获取文件描述符吗?然后你应该可以将它添加到 gobject 主循环中。

      据我所知,ConnectionNumber(xdpy) 将提供文件 描述符,然后您可以将其添加到源中,您可以将其与 g_source_add_poll().

      【讨论】:

      • 实际上在我的应用程序中使用 XEvent 看起来像这样。 while (True) { XEvent xev; if (get_xevent_timed(ui->xdpy, &xev, &tvt)) { switch (xev.type) { ... } } 那么您能否提供更多信息...关于如何执行此操作?
      猜你喜欢
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多