Как подключить приложение X11 к Dbus - PullRequest
0 голосов
/ 17 сентября 2010

Как заставить приложение X11 прослушивать сигнал DBus.Для прослушивания сигнала Dbus должен запускаться gmainloop, а для приложения X11 цикл XEvent.Так есть ли элегантный способ сделать это?Или мне нужно запустить gmainloop в другом потоке.

С уважением, Левон

Ответы [ 2 ]

2 голосов
/ 19 сентября 2010

Если вы хотите заблокировать две или более вещи (скажем, 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
0 голосов
/ 17 сентября 2010

Разве вы не сможете получить дескриптор файла для цикла событий X?Затем вы сможете добавить его в mainloop gobject.

Из того, что я вижу, ConnectionNumber(xdpy) даст дескриптор файла, который вы затем сможете добавить в источник, который вы можете использовать с g_source_add_poll().

...