Glib - Какой самый простой способ выполнить GCallback напрямую?

Что я сейчас делаю:

/* FIXME: Actually I just want to call that callback ... no idea how that can be done without using a signal */
/* So I just used some random unused signal for it */
gulong handler_id = g_signal_connect_swapped (window, "direction-changed", (GCallback) mycallback, window);
g_signal_emit_by_name (window,"direction-changed");
g_signal_handler_disconnect (window, handler_id);

Работает хорошо, но безобразно.

Я знаю, что каким-то образом можно вызвать мой обратный вызов с помощью g_closure_invoke() каким-то образом, хотя до сих пор я не получал это работать.

Если это имеет значение, обратный вызов будет заполнен функцией, которая выглядит следующим образом:

static void myCallbackMethod (GtkWindow *window);

Всего 1 ответ


GCallback - это просто указатель на функцию определенного типа. Вы можете вызвать функцию напрямую, как и любой другой вызов функции C.

mycallback (window);

Есть идеи?

10000