Gegl
出力をレンダリングし、ウィンドウGLib
を作成し、イベントループを作成するために使用しています。私が苦労している問題は、g_main_loop_run()
関数が返されないことです (つまり、アプリケーションウィンドウを閉じる (または Alt+F4 を押す) と、その後のコードにまったく到達しません)。
私が作った最小限の例:
#include <gegl.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
gegl_init(&argc, &argv);
GeglNode *gegl = gegl_node_new();
GeglNode *text = gegl_node_new_child(gegl,
"operation", "gegl:text",
"size", 100.0,
"color", gegl_color_new ("rgb(1.0,1.0,1.0)"),
"string", "Hello",
NULL);
GeglNode *display = gegl_node_new_child(gegl,
"operation", "gegl:display",
NULL);
gegl_node_link(text, display);
gegl_node_process(display);
GMainLoop *loop = g_main_loop_new(NULL, 0);
printf("before\n");
g_main_loop_run(loop);
// the code from here on never executes
printf("after\n");
g_main_loop_unref(loop);
g_object_unref(gegl);
gegl_exit();
return 0;
}
and onという行のコードprintf("after\n");
は実行されません。私が観察したもう 1 つのことはg_timeout_add_seconds()
、 を呼び出すコールバックを使用および設定したときにg_main_loop_quit
、 がg_main_loop_run
正しく返され、プログラムが期待どおりに続行されたことです。も使用しようとしましgtk_main()
たが、同じように動作しました。
問題は、私が渡せなかったいくつかの設定にあると思いますが、GMainLoop
Googleでもドキュメントでも何も見つかりませんでした...