G_SIGNAL, используя несколько аргументов - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь понять, как работает 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);
}

Идентификатор клиента выглядит как недетерминированный мусор.

  1. Почему я не могу отправить это значение с сигналом.

  2. Может arg1также будет отправлено таким образом?Я тоже получаю за это мусор.

...