G_SIGNAL使用多个参数

时间:2018-10-16 02:15:34

标签: c++ signals glib

在尝试添加多个参数时,我难以理解g_signalling的工作方式。据我了解,我使用g_signal_new指定了多少个参数。在以下情况下,我希望传入一个整数。

g_signal_new ("add-client", G_TYPE_OBJECT, G_SIGNAL_RUN_FIRST,0, NULL, 
NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);

我连接了信号。我还要在这里传递另一个参数:

g_signal_connect (pipeline, "add-client", G_CALLBACK (add_client), arg1);

...在其他地方发射信号。

gint client_id = 5; //as an example
g_signal_emit_by_name(pipeline, "add-client", 0, client_id);

...回调

static void add_client(guint client_id, gpointer arg1){
   g_print("Adding Client!\n");
   g_print("%d\n",client_id);
}

客户端ID是非确定性垃圾。

  1. 为什么我不能随信号一起发送该值。

  2. 也可以以这种方式发送arg1吗?我也为此受到了垃圾。

0 个答案:

没有答案