как добавить обработку событий Xorg в g_main_loop

У меня есть легкое приложение , которое ловит Xorg и dbus События. Для этого я инициализировал цикл dbus и запустил g_main_loop, но я не знаю, как добавить обработку событий Xorg естественным образом:

GMainLoop * mainloop = NULL;
mainloop = g_main_loop_new(NULL,FALSE);
dbus_g_thread_init ();
dbus_init();
// <<<<<<<<<<<<<<<<<<<<<<<<<
//1 way using timeout 
//g_timeout_add(100, kbdd_default_iter, mainloop);
//2nd way using pthread
//GThread * t = g_thread_create(kbdd_default_loop, NULL, FALSE, NULL);
//>>>>>>>>>>>>>>>>>>>>>>>>>>>
g_main_loop_run(mainloop);

по умолчанию я проверяю, есть ли ожидающие X-события и обрабатываю их .

Оба способа кажутся плохими, во-первых, потому что у меня есть ненужные вызовы для проверки события, а во-вторых, потому что я создаю дополнительный поток и должен делать дополнительные блокировки.

P.S. Я знаю, что могу использовать gtk lib, но я не хочу зависеть от какого-либо инструментария.

5
задан qnikst 14 January 2012 в 11:47
поделиться