Я пытаюсь создать и испустить сигнал GTK:
g_signal_new("child-finished",
G_TYPE_OBJECT,
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
NULL, // *** I think this is where I need to change it
G_TYPE_NONE, 0);
g_signal_connect(G_OBJECT(myWindow), "child-finished", G_CALLBACK(MyCallback), NULL);
Вот мой код, который излучает сигнал:
gtk_signal_emit_by_name(referenceToMyWindow, "child-finished");
А вот мой код, который обрабатывает сигнал:
void MyCallback(GtkWidget *w, GdkEvent *e)
{
// handler code here
}
Когда я запускаю код, я получаю следующую ошибку:
GLib-GObject-CRITICAL **: g _closure_
invoke: утверждение `closure-> marshal || завершение -> meta_marshal 'не удалось
Я знаю, что это связано с передачей маршаллера в функцию g_signal_new
, но я не знаю, что такое маршаллер, я не могу понять документацию и примеры в Интернете мало и далеко друг от друга. Как мне объявить и подключить свой собственный сигнал?