Message ID | 20190222031413.20250-4-peterx@redhat.com |
---|---|
State | New |
Headers | show |
Series | iothread: create gcontext unconditionally | expand |
On Fri, Feb 22, 2019 at 4:14 AM Peter Xu <peterx@redhat.com> wrote: > > Since we've have the gcontext always there, create the main loop > altogether. The iothread_run() is even cleaner. > > Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > iothread.c | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/iothread.c b/iothread.c > index 6fa87876e0..9abdbace66 100644 > --- a/iothread.c > +++ b/iothread.c > @@ -66,17 +66,8 @@ static void *iothread_run(void *opaque) > * changed in previous aio_poll() > */ > if (iothread->running && atomic_read(&iothread->run_gcontext)) { > - GMainLoop *loop; > - > g_main_context_push_thread_default(iothread->worker_context); > - iothread->main_loop = > - g_main_loop_new(iothread->worker_context, TRUE); > - loop = iothread->main_loop; > - > g_main_loop_run(iothread->main_loop); > - iothread->main_loop = NULL; > - g_main_loop_unref(loop); > - > g_main_context_pop_thread_default(iothread->worker_context); > } > } > @@ -141,6 +132,8 @@ static void iothread_instance_finalize(Object *obj) > if (iothread->worker_context) { > g_main_context_unref(iothread->worker_context); > iothread->worker_context = NULL; > + g_main_loop_unref(iothread->main_loop); > + iothread->main_loop = NULL; > } > qemu_sem_destroy(&iothread->init_done_sem); > } > @@ -153,6 +146,7 @@ static void iothread_init_gcontext(IOThread *iothread) > source = aio_get_g_source(iothread_get_aio_context(iothread)); > g_source_attach(source, iothread->worker_context); > g_source_unref(source); > + iothread->main_loop = g_main_loop_new(iothread->worker_context, TRUE); > } > > static void iothread_complete(UserCreatable *obj, Error **errp) > -- > 2.17.1 >
diff --git a/iothread.c b/iothread.c index 6fa87876e0..9abdbace66 100644 --- a/iothread.c +++ b/iothread.c @@ -66,17 +66,8 @@ static void *iothread_run(void *opaque) * changed in previous aio_poll() */ if (iothread->running && atomic_read(&iothread->run_gcontext)) { - GMainLoop *loop; - g_main_context_push_thread_default(iothread->worker_context); - iothread->main_loop = - g_main_loop_new(iothread->worker_context, TRUE); - loop = iothread->main_loop; - g_main_loop_run(iothread->main_loop); - iothread->main_loop = NULL; - g_main_loop_unref(loop); - g_main_context_pop_thread_default(iothread->worker_context); } } @@ -141,6 +132,8 @@ static void iothread_instance_finalize(Object *obj) if (iothread->worker_context) { g_main_context_unref(iothread->worker_context); iothread->worker_context = NULL; + g_main_loop_unref(iothread->main_loop); + iothread->main_loop = NULL; } qemu_sem_destroy(&iothread->init_done_sem); } @@ -153,6 +146,7 @@ static void iothread_init_gcontext(IOThread *iothread) source = aio_get_g_source(iothread_get_aio_context(iothread)); g_source_attach(source, iothread->worker_context); g_source_unref(source); + iothread->main_loop = g_main_loop_new(iothread->worker_context, TRUE); } static void iothread_complete(UserCreatable *obj, Error **errp)
Since we've have the gcontext always there, create the main loop altogether. The iothread_run() is even cleaner. Signed-off-by: Peter Xu <peterx@redhat.com> --- iothread.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-)