dbus_connection_setup_with_g_main()函数是一个用于在GDBus库中设置DBus连接的函数。GDBus是基于D-Bus协议的GObject库,用于在Linux系统上进行进程间通信。该函数的作用是将DBus连接与GMainContext(主循环上下文)关联起来,以便DBus事件可以与GMainLoop(主循环)一起处理。 GDBus是GLib库的一部分,GLib是一...
4.如果在非主线程调用异步函数或者接收事件,一定要有自己的GMainLoop和GMainContext,并用下列函数与DBusConnection关联。 dbus_connection_setup_with_g_main (connection, main_context); ~~the end~~
4.如果在非主线程调用异步函数或者接收事件,一定要有自己的GMainLoop和GMainContext,并用下列函数与DBusConnection关联。 dbus_connection_setup_with_g_main (connection, main_context); ~~the end~~
dbus_connection_setup_with_g_main(bus, NULL); // 将总线设为接收GLib事件循环 g_timeout_add(1000, (GSourceFunc)send_ding, bus); // 每隔1000ms调用一次send_ding()函数 // 将总线指针作为参数 g_main_loop_run(loop); // 启动事件循环 return 0; } static gboolean send_ding(DBusConnection *...
dbus_connection_setup_with_g_main(bus, NULL); // 将总线设为接收GLib事件循环 g_timeout_add(1000, (GSourceFunc)send_ding, bus); // 每隔1000ms调用一次send_ding()函数 // 将总线指针作为参数 g_main_loop_run(loop); // 启动事件循环 ...
为DBusConnection 指定GmainContext。否则所有事件都是在主线程中收到的,其它线程等不到它的事件就会出现死等。这个只能调用dbus-glib- lowlevel.h中的底层函数dbus_connection_setup_with_g_main,使用会麻烦一点。 ~~end~~
然后就是启动发送调用并释放发送相关的消息结构 -- dbus_connection_send_with_reply()。这个启动函数中带有一个句柄。我们马上会阻塞等待这个句柄给我们带回总线上回传的消息。当这个句柄回传消息之后,我们从消息结构中分离出参数。用dbus提供的函数提取参数的类型和参数 -- dbus_message_iter_init(); dbus_...
19. dbus_set_g_error (error, &derror); 20. dbus_error_free (&derror); 21. return NULL; 22. } 23. 24. /* does nothing if it's already been done */ 25. dbus_connection_setup_with_g_main (connection, main_context); 26. 27. return DBUS_G_CONNECTION_FROM_CONNECTION (connection...
然后就是启动发送调用并释放发送相关的消息结构 -- dbus_connection_send_with_reply()。这个启动函数中带有一个句柄。我们马上会阻塞等待这个句柄给我们带回总线上回传的消息。当这个句柄回传消息之后,我们从消息结构中分离出参数。用dbus提供的函数提取参数的类型和参数 -- dbus_message_iter_init(); dbus_...
bus) { g_warning("连接到D-Bus失败: %s", error.message); dbus_error_free(&error); return 1; } dbus_connection_setup_with_g_main(bus, NULL); g_timeout_add(1000, (GSourceFunc)send_ding, bus); g_main_loop_run(loop); return 0; } static gboolean send_ding(DBusConnection *bus) ...