[Spice-devel] [PATCH 12/18] Remove use of global 'reds' within RedWorker
Frediano Ziglio
fziglio at redhat.com
Mon Feb 15 16:01:13 UTC 2016
From: Jonathon Jongsma <jjongsma at redhat.com>
Get the server variable from the RedDispatcher instead of using the
global variable
---
server/display-channel.c | 1 +
server/red-worker.c | 15 +++++++++++----
server/red-worker.h | 1 +
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/server/display-channel.c b/server/display-channel.c
index 82dbe03..aa84356 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -2030,6 +2030,7 @@ DisplayChannel* display_channel_new(RedWorker *worker, int migrate, int stream_v
static SpiceImageSurfacesOps image_surfaces_ops = {
image_surfaces_get,
};
+ RedsState *reds = red_worker_get_server(worker);
spice_info("create display channel");
display = (DisplayChannel *)red_worker_new_channel(
diff --git a/server/red-worker.c b/server/red-worker.c
index 76e8625..7f07b74 100644
--- a/server/red-worker.c
+++ b/server/red-worker.c
@@ -487,15 +487,16 @@ CommonWorkerChannel *red_worker_new_channel(RedWorker *worker, int size,
channel_cbs->alloc_recv_buf = common_alloc_recv_buf;
channel_cbs->release_recv_buf = common_release_recv_buf;
- channel = red_channel_create_parser(size, reds, &worker->core,
- channel_type, worker->qxl->id,
- TRUE /* handle_acks */,
+ channel = red_channel_create_parser(size, red_worker_get_server(worker),
+ &worker->core, channel_type,
+ worker->qxl->id, TRUE /* handle_acks */,
spice_get_client_channel_parser(channel_type, NULL),
handle_parsed,
channel_cbs,
migration_flags);
spice_return_val_if_fail(channel, NULL);
- red_channel_set_stat_node(channel, stat_add_node(reds, worker->stat, name, TRUE));
+ red_channel_set_stat_node(channel, stat_add_node(red_worker_get_server(worker),
+ worker->stat, name, TRUE));
common = (CommonWorkerChannel *)channel;
common->qxl = worker->qxl;
@@ -1476,6 +1477,7 @@ RedWorker* red_worker_new(QXLInstance *qxl, RedDispatcher *red_dispatcher)
RedWorker *worker;
Dispatcher *dispatcher;
const char *record_filename;
+ RedsState *reds = red_dispatcher_get_server(red_dispatcher);
qxl->st->qif->get_init_info(qxl, &init_info);
@@ -1600,3 +1602,8 @@ RedChannel* red_worker_get_display_channel(RedWorker *worker)
return RED_CHANNEL(worker->display_channel);
}
+
+RedsState* red_worker_get_server(RedWorker *worker)
+{
+ return red_dispatcher_get_server(worker->red_dispatcher);
+}
diff --git a/server/red-worker.h b/server/red-worker.h
index 8ef8287..f5f51bd 100644
--- a/server/red-worker.h
+++ b/server/red-worker.h
@@ -96,6 +96,7 @@ bool red_worker_run(RedWorker *worker);
QXLInstance* red_worker_get_qxl(RedWorker *worker);
RedChannel* red_worker_get_cursor_channel(RedWorker *worker);
RedChannel* red_worker_get_display_channel(RedWorker *worker);
+SpiceServer* red_worker_get_server(RedWorker *worker);
void red_drawable_unref(RedDrawable *red_drawable);
--
2.5.0
More information about the Spice-devel
mailing list