0

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()たが、同じように動作しました。

問題は、私が渡せなかったいくつかの設定にあると思いますが、GMainLoopGoogleでもドキュメントでも何も見つかりませんでした...

4

1 に答える 1