Я пытаюсь понять, как работает 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);
}
Идентификатор клиента выглядит как недетерминированный мусор.
Почему я не могу отправить это значение с сигналом.
Может arg1также будет отправлено таким образом?Я тоже получаю за это мусор.