diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-09-02 18:56:41 +0200 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2015-10-22 17:06:44 +0100 |
commit | bba1bf180afee1e8c1e3b5b3c64a5df1861743ec (patch) | |
tree | 20c24d443f7a5e3f187701a383a354e8d539936b /server/red_dispatcher.c | |
parent | 15da68dbded450a4d31692aaa78d5fa3b5d0c6c8 (diff) | |
download | spice-bba1bf180afee1e8c1e3b5b3c64a5df1861743ec.tar.gz spice-bba1bf180afee1e8c1e3b5b3c64a5df1861743ec.tar.xz spice-bba1bf180afee1e8c1e3b5b3c64a5df1861743ec.zip |
server: remove worker thread creation from dispatcher
Acked-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
Diffstat (limited to 'server/red_dispatcher.c')
-rw-r--r-- | server/red_dispatcher.c | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c index 7ad860c3..0bc853d8 100644 --- a/server/red_dispatcher.c +++ b/server/red_dispatcher.c @@ -56,7 +56,6 @@ struct RedDispatcher { QXLWorker base; QXLInstance *qxl; Dispatcher dispatcher; - pthread_t worker_thread; uint32_t pending; int primary_active; int x_res; @@ -1064,14 +1063,10 @@ static RedChannel *red_dispatcher_cursor_channel_create(RedDispatcher *dispatche void red_dispatcher_init(QXLInstance *qxl) { RedDispatcher *red_dispatcher; - RedWorkerMessage message; WorkerInitData init_data; QXLDevInitInfo init_info; - int r; RedChannel *display_channel; RedChannel *cursor_channel; - sigset_t thread_sig_mask; - sigset_t curr_sig_mask; ClientCbs client_cbs = { NULL, }; spice_return_if_fail(qxl->st->dispatcher == NULL); @@ -1135,19 +1130,9 @@ void red_dispatcher_init(QXLInstance *qxl) num_active_workers = 1; - sigfillset(&thread_sig_mask); - sigdelset(&thread_sig_mask, SIGILL); - sigdelset(&thread_sig_mask, SIGFPE); - sigdelset(&thread_sig_mask, SIGSEGV); - pthread_sigmask(SIG_SETMASK, &thread_sig_mask, &curr_sig_mask); - if ((r = pthread_create(&red_dispatcher->worker_thread, NULL, red_worker_main, &init_data))) { - spice_error("create thread failed %d", r); - } - pthread_sigmask(SIG_SETMASK, &curr_sig_mask, NULL); - - read_message(red_dispatcher->dispatcher.send_fd, &message); - spice_assert(message == RED_WORKER_MESSAGE_READY); - + // TODO: reference and free + RedWorker *worker = red_worker_new(&init_data); + red_worker_run(worker); display_channel = red_dispatcher_display_channel_create(red_dispatcher); if (display_channel) { |