흐름
- loop객체와 context객체를 만든다.
- context를 loop에 넣어서 만든 loop를 이용해서 g\_main\_loop\_run실행
코드
#include <glib.h>
#include <stdio.h>
static gboolean on\_idle(gpointer user\_data)
{
//App \*app = (App\*)user\_data;
printf("on\_idle called\\n");
//return TRUE;
GMainLoop\* loop = (GMainLoop\*)user\_data;
g\_main\_loop\_quit(loop);
// TRUE를 리턴하면 반복
return FALSE;
}
int main(int argc, char\* argv\[\])
{
GMainLoop\* loop = NULL;
GMainContext\* context = NULL;
// create a context
context = g\_main\_context\_new();
printf("create a context\\n");
GSource\* idle\_src = g\_idle\_source\_new();
int idle\_id = g\_source\_attach(idle\_src, context);
// create a main loop
loop = g\_main\_loop\_new(context, FALSE);
printf("create main loop\\n");
g\_source\_set\_callback(idle\_src, on\_idle, loop, NULL);
printf("set idle callback\\n");
g\_main\_loop\_run(loop);
printf("loop run\\n");
g\_main\_loop\_unref(loop);
return 0;
}
빌드 명령어
g++ -o mainloop\_test mainloop\_test.cpp \`pkg-config --cflags --libs glib-2.0\`
참고자료