diff options
author | Jonathon Jongsma <jjongsma@redhat.com> | 2015-02-06 14:22:04 -0600 |
---|---|---|
committer | Fabiano FidĂȘncio <fidencio@redhat.com> | 2015-02-23 23:00:46 +0100 |
commit | 2dedc74c945cf8c07ba80e9086809c559ec1467a (patch) | |
tree | b19520ed454a1055a67bcbe8929c58ae8266831f | |
parent | c2556da161015a58cf82b17969e0beeaff287afe (diff) | |
download | spice-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.c | 8 | ||||
-rw-r--r-- | server/red-dispatcher.h | 2 | ||||
-rw-r--r-- | server/reds.c | 2 |
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) { |