diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2015-10-23 10:34:24 +0100 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2015-10-26 09:12:55 +0000 |
commit | f7b48981e37eec27327a010296008ffa6c727d68 (patch) | |
tree | 241abc7b1adcac812bf7c6ae27454a6705808eda /server/red_dispatcher.c | |
parent | 579d65454c1e8fac872460b897d8ac3a66259c00 (diff) | |
download | spice-f7b48981e37eec27327a010296008ffa6c727d68.tar.gz spice-f7b48981e37eec27327a010296008ffa6c727d68.tar.xz spice-f7b48981e37eec27327a010296008ffa6c727d68.zip |
worker: remove need for WorkerInitData
Move code around to declare and place it where it fits better.
Acked-by: Frediano Ziglio <fziglio@redhat.com>
Diffstat (limited to 'server/red_dispatcher.c')
-rw-r--r-- | server/red_dispatcher.c | 75 |
1 files changed, 5 insertions, 70 deletions
diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c index 1ad13b85..43f061d9 100644 --- a/server/red_dispatcher.c +++ b/server/red_dispatcher.c @@ -68,11 +68,6 @@ struct RedDispatcher { unsigned int max_monitors; }; -extern uint32_t streaming_video; -extern SpiceImageCompression image_compression; -extern spice_wan_compression_t jpeg_state; -extern spice_wan_compression_t zlib_glz_state; - static RedDispatcher *dispatchers = NULL; static int red_dispatcher_check_qxl_version(RedDispatcher *rd, int major, int minor) @@ -204,46 +199,6 @@ static void red_dispatcher_cursor_migrate(RedChannelClient *rcc) &payload); } -typedef struct RendererInfo { - int id; - const char *name; -} RendererInfo; - -static RendererInfo renderers_info[] = { - {RED_RENDERER_SW, "sw"}, -#ifdef USE_OPENGL - {RED_RENDERER_OGL_PBUF, "oglpbuf"}, - {RED_RENDERER_OGL_PIXMAP, "oglpixmap"}, -#endif - {RED_RENDERER_INVALID, NULL}, -}; - -static uint32_t renderers[RED_RENDERER_LAST]; -static uint32_t num_renderers = 0; - -static RendererInfo *find_renderer(const char *name) -{ - RendererInfo *inf = renderers_info; - while (inf->name) { - if (strcmp(name, inf->name) == 0) { - return inf; - } - inf++; - } - return NULL; -} - -int red_dispatcher_add_renderer(const char *name) -{ - RendererInfo *inf; - - if (num_renderers == RED_RENDERER_LAST || !(inf = find_renderer(name))) { - return FALSE; - } - renderers[num_renderers++] = inf->id; - return TRUE; -} - int red_dispatcher_qxl_count(void) { return num_active_workers; @@ -1073,12 +1028,11 @@ static RedChannel *red_dispatcher_cursor_channel_create(RedDispatcher *dispatche void red_dispatcher_init(QXLInstance *qxl) { RedDispatcher *red_dispatcher; - WorkerInitData init_data; - QXLDevInitInfo init_info; RedChannel *display_channel; RedChannel *cursor_channel; ClientCbs client_cbs = { NULL, }; + spice_return_if_fail(qxl != NULL); spice_return_if_fail(qxl->st->dispatcher == NULL); static gsize initialized = FALSE; @@ -1092,22 +1046,11 @@ void red_dispatcher_init(QXLInstance *qxl) } red_dispatcher = spice_new0(RedDispatcher, 1); + red_dispatcher->qxl = qxl; ring_init(&red_dispatcher->async_commands); spice_debug("red_dispatcher->async_commands.next %p", red_dispatcher->async_commands.next); dispatcher_init(&red_dispatcher->dispatcher, RED_WORKER_MESSAGE_COUNT, NULL); - init_data.qxl = red_dispatcher->qxl = qxl; - init_data.id = qxl->id; - init_data.red_dispatcher = red_dispatcher; - init_data.pending = &red_dispatcher->pending; - init_data.num_renderers = num_renderers; - memcpy(init_data.renderers, renderers, sizeof(init_data.renderers)); - pthread_mutex_init(&red_dispatcher->async_lock, NULL); - init_data.image_compression = image_compression; - init_data.jpeg_state = jpeg_state; - init_data.zlib_glz_state = zlib_glz_state; - init_data.streaming_video = streaming_video; - red_dispatcher->base.major_version = SPICE_INTERFACE_QXL_MAJOR; red_dispatcher->base.minor_version = SPICE_INTERFACE_QXL_MINOR; red_dispatcher->base.wakeup = qxl_worker_wakeup; @@ -1129,20 +1072,12 @@ void red_dispatcher_init(QXLInstance *qxl) red_dispatcher->max_monitors = UINT_MAX; - qxl->st->qif->get_init_info(qxl, &init_info); - - init_data.memslot_id_bits = init_info.memslot_id_bits; - init_data.memslot_gen_bits = init_info.memslot_gen_bits; - init_data.num_memslots = init_info.num_memslots; - init_data.num_memslots_groups = init_info.num_memslots_groups; - init_data.internal_groupslot_id = init_info.internal_groupslot_id; - init_data.n_surfaces = init_info.n_surfaces; + // TODO: reference and free + RedWorker *worker = red_worker_new(qxl, red_dispatcher); + red_worker_run(worker); num_active_workers = 1; - // 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) { |