summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathon Jongsma <jjongsma@redhat.com>2015-02-06 14:22:04 -0600
committerFabiano FidĂȘncio <fidencio@redhat.com>2015-02-23 23:00:46 +0100
commit2dedc74c945cf8c07ba80e9086809c559ec1467a (patch)
treeb19520ed454a1055a67bcbe8929c58ae8266831f
parentc2556da161015a58cf82b17969e0beeaff287afe (diff)
downloadspice-2dedc74c945cf8c07ba80e9086809c559ec1467a.tar.gz
spice-2dedc74c945cf8c07ba80e9086809c559ec1467a.tar.xz
spice-2dedc74c945cf8c07ba80e9086809c559ec1467a.zip
Store reference to RedsState in RedDispatcher
Remove use of global 'reds' variable from RedDispatcher functions. Instead store the owning RedsState variable inside the RedDispatcher struct and use that when necessary.
-rw-r--r--server/red-dispatcher.c8
-rw-r--r--server/red-dispatcher.h2
-rw-r--r--server/reds.c2
3 files changed, 7 insertions, 5 deletions
diff --git a/server/red-dispatcher.c b/server/red-dispatcher.c
index 43d6a2ff..20950758 100644
--- a/server/red-dispatcher.c
+++ b/server/red-dispatcher.c
@@ -60,6 +60,7 @@ struct RedDispatcher {
Ring async_commands;
pthread_mutex_t async_lock;
QXLDevSurfaceCreate surface_create;
+ RedsState *reds;
};
typedef struct RedWorkeState {
@@ -344,7 +345,7 @@ static void red_dispatcher_destroy_primary_surface_complete(RedDispatcher *dispa
dispatcher->use_hardware_cursor = FALSE;
dispatcher->primary_active = FALSE;
- reds_update_client_mouse_allowed(reds);
+ reds_update_client_mouse_allowed(dispatcher->reds);
}
static void
@@ -396,7 +397,7 @@ static void red_dispatcher_create_primary_surface_complete(RedDispatcher *dispat
dispatcher->use_hardware_cursor = surface->mouse_mode;
dispatcher->primary_active = TRUE;
- reds_update_client_mouse_allowed(reds);
+ reds_update_client_mouse_allowed(dispatcher->reds);
memset(&dispatcher->surface_create, 0, sizeof(QXLDevSurfaceCreate));
}
@@ -860,7 +861,7 @@ void red_dispatcher_async_complete(struct RedDispatcher *dispatcher,
free(async_command);
}
-RedDispatcher *red_dispatcher_new(QXLInstance *qxl, int compression_level)
+RedDispatcher *red_dispatcher_new(RedsState *reds, QXLInstance *qxl, int compression_level)
{
RedDispatcher *red_dispatcher;
RedChannel *channel;
@@ -877,6 +878,7 @@ RedDispatcher *red_dispatcher_new(QXLInstance *qxl, int compression_level)
}
red_dispatcher = spice_new0(RedDispatcher, 1);
+ red_dispatcher->reds = reds;
red_dispatcher->qxl = qxl;
ring_init(&red_dispatcher->async_commands);
spice_debug("red_dispatcher->async_commands.next %p", red_dispatcher->async_commands.next);
diff --git a/server/red-dispatcher.h b/server/red-dispatcher.h
index f594ee67..e4b29606 100644
--- a/server/red-dispatcher.h
+++ b/server/red-dispatcher.h
@@ -25,7 +25,7 @@ typedef struct RedChannelClient RedChannelClient;
typedef struct AsyncCommand AsyncCommand;
-RedDispatcher *red_dispatcher_new(QXLInstance *qxl, int compression_level);
+RedDispatcher *red_dispatcher_new(RedsState *reds, QXLInstance *qxl, int compression_level);
void red_dispatcher_set_mm_time(RedDispatcher *dispatcher, uint32_t);
void red_dispatcher_on_ic_change(RedDispatcher *dispatcher, spice_image_compression_t ic);
diff --git a/server/reds.c b/server/reds.c
index 1bc0a5fe..41283be5 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3093,7 +3093,7 @@ SPICE_GNUC_VISIBLE int spice_server_add_interface(SpiceServer *s,
qxl = SPICE_CONTAINEROF(sin, QXLInstance, base);
qxl->st = spice_new0(QXLState, 1);
qxl->st->qif = SPICE_CONTAINEROF(interface, QXLInterface, base);
- qxl->st->dispatcher = red_dispatcher_new(qxl, calc_compression_level(s));
+ qxl->st->dispatcher = red_dispatcher_new(s, qxl, calc_compression_level(s));
s->dispatchers = g_list_prepend(s->dispatchers, qxl->st->dispatcher);
} else if (strcmp(interface->type, SPICE_INTERFACE_TABLET) == 0) {