То, что я сейчас делаю:
/* 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);