[Spice-devel] [PATCH spice-server 2/2] Remove iterator from list iteration macros
Uri Lublin
uril at redhat.com
Mon Aug 21 10:13:05 UTC 2017
On 08/21/2017 11:13 AM, Frediano Ziglio wrote:
> Avoid to have to declare iterator and pass as an argument.
>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
For all three patches:
Ack.
BTW, it seems to me that the nice __LINE__ trick below
does not work and all variables are named _iter___LINE__.
Uri.
> ---
> server/display-channel.c | 32 +++++++++++---------------------
> server/display-channel.h | 4 ++--
> server/main-channel.c | 18 ++++++------------
> server/red-channel.c | 24 ++++++++----------------
> server/red-channel.h | 4 ++--
> server/red-client.c | 19 +++++++------------
> server/red-common.h | 10 +++++-----
> server/red-worker.c | 6 ++----
> server/reds-private.h | 4 ++--
> server/reds.c | 45 +++++++++++++++------------------------------
> server/stream.c | 15 +++++----------
> 11 files changed, 65 insertions(+), 116 deletions(-)
>
> diff --git a/server/display-channel.c b/server/display-channel.c
> index 68ea3bad..924d219b 100644
> --- a/server/display-channel.c
> +++ b/server/display-channel.c
> @@ -256,7 +256,6 @@ void display_channel_surface_unref(DisplayChannel *display, uint32_t surface_id)
> RedSurface *surface = &display->priv->surfaces[surface_id];
> QXLInstance *qxl = common_graphics_channel_get_qxl(COMMON_GRAPHICS_CHANNEL(display));
> DisplayChannelClient *dcc;
> - GListIter iter;
>
> if (--surface->refs != 0) {
> return;
> @@ -278,7 +277,7 @@ void display_channel_surface_unref(DisplayChannel *display, uint32_t surface_id)
>
> region_destroy(&surface->draw_dirty_region);
> surface->context.canvas = NULL;
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> dcc_destroy_surface(dcc, surface_id);
> }
>
> @@ -296,7 +295,6 @@ static void streams_update_visible_region(DisplayChannel *display, Drawable *dra
> {
> Ring *ring;
> RingItem *item;
> - GListIter iter;
> DisplayChannelClient *dcc;
>
> if (!red_channel_is_connected(RED_CHANNEL(display))) {
> @@ -320,7 +318,7 @@ static void streams_update_visible_region(DisplayChannel *display, Drawable *dra
> continue;
> }
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> agent = dcc_get_stream_agent(dcc, display_channel_get_stream_id(display, stream));
>
> if (region_intersects(&agent->vis_region, &drawable->tree_item.base.rgn)) {
> @@ -335,10 +333,9 @@ static void streams_update_visible_region(DisplayChannel *display, Drawable *dra
> static void pipes_add_drawable(DisplayChannel *display, Drawable *drawable)
> {
> DisplayChannelClient *dcc;
> - GListIter iter;
>
> spice_warn_if_fail(drawable->pipes == NULL);
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> dcc_prepend_drawable(dcc, drawable);
> }
> }
> @@ -363,9 +360,8 @@ static void pipes_add_drawable_after(DisplayChannel *display,
> return;
> }
> if (num_other_linked != red_channel_get_n_clients(RED_CHANNEL(display))) {
> - GListIter iter;
> spice_debug("TODO: not O(n^2)");
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> int sent = 0;
> GList *l;
> for (l = pos_after->pipes; l != NULL; l = l->next) {
> @@ -546,7 +542,6 @@ static bool current_add_equal(DisplayChannel *display, DrawItem *item, TreeItem
>
> DisplayChannelClient *dcc;
> GList *dpi_item;
> - GListIter iter;
>
> other_drawable->refs++;
> current_remove_drawable(display, other_drawable);
> @@ -555,7 +550,7 @@ static bool current_add_equal(DisplayChannel *display, DrawItem *item, TreeItem
> * (or will receive) other_drawable */
> dpi_item = g_list_first(other_drawable->pipes);
> /* dpi contains a sublist of dcc's, ordered the same */
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> if (dpi_item && dcc == ((RedDrawablePipeItem *) dpi_item->data)->dcc) {
> dpi_item = dpi_item->next;
> } else {
> @@ -1481,24 +1476,22 @@ void display_channel_flush_all_surfaces(DisplayChannel *display)
>
> void display_channel_free_glz_drawables_to_free(DisplayChannel *display)
> {
> - GListIter iter;
> DisplayChannelClient *dcc;
>
> spice_return_if_fail(display);
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> image_encoders_free_glz_drawables_to_free(dcc_get_encoders(dcc));
> }
> }
>
> void display_channel_free_glz_drawables(DisplayChannel *display)
> {
> - GListIter iter;
> DisplayChannelClient *dcc;
>
> spice_return_if_fail(display);
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> image_encoders_free_glz_drawables(dcc_get_encoders(dcc));
> }
> }
> @@ -1537,11 +1530,10 @@ void display_channel_free_some(DisplayChannel *display)
> {
> int n = 0;
> DisplayChannelClient *dcc;
> - GListIter iter;
>
> spice_debug("#draw=%d, #glz_draw=%d", display->priv->drawable_count,
> display->priv->encoder_shared_data.glz_drawable_count);
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> ImageEncoders *encoders = dcc_get_encoders(dcc);
>
> // encoding using the dictionary is prevented since the following operations might
> @@ -1555,7 +1547,7 @@ void display_channel_free_some(DisplayChannel *display)
> free_one_drawable(display, TRUE);
> }
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> ImageEncoders *encoders = dcc_get_encoders(dcc);
>
> image_encoders_glz_encode_unlock(encoders);
> @@ -2028,10 +2020,9 @@ void display_channel_update(DisplayChannel *display,
> static void clear_surface_drawables_from_pipes(DisplayChannel *display, int surface_id,
> int wait_if_used)
> {
> - GListIter iter;
> DisplayChannelClient *dcc;
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> if (!dcc_clear_surface_drawables_from_pipe(dcc, surface_id, wait_if_used)) {
> red_channel_client_disconnect(RED_CHANNEL_CLIENT(dcc));
> }
> @@ -2095,9 +2086,8 @@ void display_channel_destroy_surfaces(DisplayChannel *display)
> static void send_create_surface(DisplayChannel *display, int surface_id, int image_ready)
> {
> DisplayChannelClient *dcc;
> - GListIter iter;
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> dcc_create_surface(dcc, surface_id);
> if (image_ready)
> dcc_push_surface_image(dcc, surface_id);
> diff --git a/server/display-channel.h b/server/display-channel.h
> index d15aad46..01e3621e 100644
> --- a/server/display-channel.h
> +++ b/server/display-channel.h
> @@ -179,9 +179,9 @@ typedef struct RedSurface {
> QXLReleaseInfoExt create, destroy;
> } RedSurface;
>
> -#define FOREACH_DCC(_channel, _iter, _data) \
> +#define FOREACH_DCC(_channel, _data) \
> GLIST_FOREACH((_channel ? red_channel_get_clients(RED_CHANNEL(_channel)) : NULL), \
> - _iter, DisplayChannelClient, _data)
> + DisplayChannelClient, _data)
>
> int display_channel_get_stream_id(DisplayChannel *display, Stream *stream);
> Stream *display_channel_get_nth_stream(DisplayChannel *display, gint i);
> diff --git a/server/main-channel.c b/server/main-channel.c
> index e9fef7c1..5aaba0ab 100644
> --- a/server/main-channel.c
> +++ b/server/main-channel.c
> @@ -62,10 +62,9 @@ static void main_channel_client_on_disconnect(RedChannelClient *rcc)
>
> RedClient *main_channel_get_client_by_link_id(MainChannel *main_chan, uint32_t connection_id)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> - FOREACH_CLIENT(main_chan, iter, rcc) {
> + FOREACH_CLIENT(main_chan, rcc) {
> MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
> if (main_channel_client_get_connection_id(mcc) == connection_id) {
> return red_channel_client_get_client(rcc);
> @@ -99,9 +98,8 @@ void main_channel_push_mouse_mode(MainChannel *main_chan, int current_mode,
>
> void main_channel_push_agent_connected(MainChannel *main_chan)
> {
> - GListIter iter;
> RedChannelClient *rcc;
> - FOREACH_CLIENT(RED_CHANNEL(main_chan), iter, rcc) {
> + FOREACH_CLIENT(RED_CHANNEL(main_chan), rcc) {
> if (red_channel_client_test_remote_cap(rcc,
> SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS)) {
> red_channel_client_pipe_add_type(rcc,
> @@ -325,10 +323,9 @@ main_channel_class_init(MainChannelClass *klass)
>
> static int main_channel_connect_semi_seamless(MainChannel *main_channel)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> - FOREACH_CLIENT(main_channel, iter, rcc) {
> + FOREACH_CLIENT(main_channel, rcc) {
> MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
> if (main_channel_client_connect_semi_seamless(mcc))
> main_channel->num_clients_mig_wait++;
> @@ -338,12 +335,11 @@ static int main_channel_connect_semi_seamless(MainChannel *main_channel)
>
> static int main_channel_connect_seamless(MainChannel *main_channel)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> spice_assert(red_channel_get_n_clients(RED_CHANNEL(main_channel)) == 1);
>
> - FOREACH_CLIENT(main_channel, iter, rcc) {
> + FOREACH_CLIENT(main_channel, rcc) {
> MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
> main_channel_client_connect_seamless(mcc);
> main_channel->num_clients_mig_wait++;
> @@ -382,10 +378,9 @@ int main_channel_migrate_connect(MainChannel *main_channel, RedsMigSpice *mig_ta
>
> void main_channel_migrate_cancel_wait(MainChannel *main_chan)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> - FOREACH_CLIENT(main_chan, iter, rcc) {
> + FOREACH_CLIENT(main_chan, rcc) {
> MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
> main_channel_client_migrate_cancel_wait(mcc);
> }
> @@ -394,7 +389,6 @@ void main_channel_migrate_cancel_wait(MainChannel *main_chan)
>
> int main_channel_migrate_src_complete(MainChannel *main_chan, int success)
> {
> - GListIter iter;
> int semi_seamless_count = 0;
> RedChannelClient *rcc;
>
> @@ -405,7 +399,7 @@ int main_channel_migrate_src_complete(MainChannel *main_chan, int success)
> return 0;
> }
>
> - FOREACH_CLIENT(main_chan, iter, rcc) {
> + FOREACH_CLIENT(main_chan, rcc) {
> MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
> if (main_channel_client_migrate_src_complete(mcc, success))
> semi_seamless_count++;
> diff --git a/server/red-channel.c b/server/red-channel.c
> index 9bd98234..9559547c 100644
> --- a/server/red-channel.c
> +++ b/server/red-channel.c
> @@ -316,10 +316,9 @@ void red_channel_add_client(RedChannel *channel, RedChannelClient *rcc)
>
> bool red_channel_test_remote_cap(RedChannel *channel, uint32_t cap)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> - FOREACH_CLIENT(channel, iter, rcc) {
> + FOREACH_CLIENT(channel, rcc) {
> if (!red_channel_client_test_remote_cap(rcc, cap)) {
> return FALSE;
> }
> @@ -511,13 +510,12 @@ guint red_channel_get_n_clients(RedChannel *channel)
>
> bool red_channel_all_blocked(RedChannel *channel)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> if (!channel || !channel->priv->clients) {
> return FALSE;
> }
> - FOREACH_CLIENT(channel, iter, rcc) {
> + FOREACH_CLIENT(channel, rcc) {
> if (!red_channel_client_is_blocked(rcc)) {
> return FALSE;
> }
> @@ -528,10 +526,9 @@ bool red_channel_all_blocked(RedChannel *channel)
> /* return TRUE if any of the connected clients to this channel are blocked */
> static bool red_channel_any_blocked(RedChannel *channel)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> - FOREACH_CLIENT(channel, iter, rcc) {
> + FOREACH_CLIENT(channel, rcc) {
> if (red_channel_client_is_blocked(rcc)) {
> return TRUE;
> }
> @@ -541,10 +538,9 @@ static bool red_channel_any_blocked(RedChannel *channel)
>
> static bool red_channel_no_item_being_sent(RedChannel *channel)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> - FOREACH_CLIENT(channel, iter, rcc) {
> + FOREACH_CLIENT(channel, rcc) {
> if (!red_channel_client_no_item_being_sent(rcc)) {
> return FALSE;
> }
> @@ -578,7 +574,6 @@ static int red_channel_pipes_create_batch(RedChannel *channel,
> new_pipe_item_t creator, void *data,
> rcc_item_t pipe_add)
> {
> - GListIter iter;
> RedChannelClient *rcc;
> RedPipeItem *item;
> int num = 0, n = 0;
> @@ -586,7 +581,7 @@ static int red_channel_pipes_create_batch(RedChannel *channel,
> spice_assert(creator != NULL);
> spice_assert(pipe_add != NULL);
>
> - FOREACH_CLIENT(channel, iter, rcc) {
> + FOREACH_CLIENT(channel, rcc) {
> item = (*creator)(rcc, data, num++);
> if (item) {
> (*pipe_add)(rcc, item);
> @@ -615,11 +610,10 @@ void red_channel_pipes_new_add(RedChannel *channel, new_pipe_item_t creator, voi
>
> uint32_t red_channel_max_pipe_size(RedChannel *channel)
> {
> - GListIter iter;
> RedChannelClient *rcc;
> uint32_t pipe_size = 0;
>
> - FOREACH_CLIENT(channel, iter, rcc) {
> + FOREACH_CLIENT(channel, rcc) {
> uint32_t new_size;
> new_size = red_channel_client_get_pipe_size(rcc);
> pipe_size = MAX(pipe_size, new_size);
> @@ -629,11 +623,10 @@ uint32_t red_channel_max_pipe_size(RedChannel *channel)
>
> uint32_t red_channel_min_pipe_size(RedChannel *channel)
> {
> - GListIter iter;
> RedChannelClient *rcc;
> uint32_t pipe_size = ~0;
>
> - FOREACH_CLIENT(channel, iter, rcc) {
> + FOREACH_CLIENT(channel, rcc) {
> uint32_t new_size;
> new_size = red_channel_client_get_pipe_size(rcc);
> pipe_size = MIN(pipe_size, new_size);
> @@ -643,11 +636,10 @@ uint32_t red_channel_min_pipe_size(RedChannel *channel)
>
> uint32_t red_channel_sum_pipes_size(RedChannel *channel)
> {
> - GListIter iter;
> RedChannelClient *rcc;
> uint32_t sum = 0;
>
> - FOREACH_CLIENT(channel, iter, rcc) {
> + FOREACH_CLIENT(channel, rcc) {
> sum += red_channel_client_get_pipe_size(rcc);
> }
> return sum;
> diff --git a/server/red-channel.h b/server/red-channel.h
> index a9088a7d..e65eea1e 100644
> --- a/server/red-channel.h
> +++ b/server/red-channel.h
> @@ -122,9 +122,9 @@ struct RedChannelClass
> channel_handle_migrate_data_get_serial_proc handle_migrate_data_get_serial;
> };
>
> -#define FOREACH_CLIENT(_channel, _iter, _data) \
> +#define FOREACH_CLIENT(_channel, _data) \
> GLIST_FOREACH((_channel ? red_channel_get_clients(RED_CHANNEL(_channel)) : NULL), \
> - _iter, RedChannelClient, _data)
> + RedChannelClient, _data)
>
> /* Red Channel interface */
>
> diff --git a/server/red-client.c b/server/red-client.c
> index b783b84c..666903e3 100644
> --- a/server/red-client.c
> +++ b/server/red-client.c
> @@ -23,8 +23,8 @@
> #include "red-client.h"
> #include "reds.h"
>
> -#define FOREACH_CHANNEL_CLIENT(_client, _iter, _data) \
> - GLIST_FOREACH((_client ? (_client)->channels : NULL), _iter, RedChannelClient, _data)
> +#define FOREACH_CHANNEL_CLIENT(_client, _data) \
> + GLIST_FOREACH((_client ? (_client)->channels : NULL), RedChannelClient, _data)
>
> struct RedClient {
> GObject parent;
> @@ -155,7 +155,6 @@ RedClient *red_client_new(RedsState *reds, int migrated)
>
> void red_client_set_migration_seamless(RedClient *client) // dest
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> spice_assert(client->during_target_migrate);
> @@ -163,7 +162,7 @@ void red_client_set_migration_seamless(RedClient *client) // dest
> client->seamless_migrate = TRUE;
> /* update channel clients that got connected before the migration
> * type was set. red_client_add_channel will handle newer channel clients */
> - FOREACH_CHANNEL_CLIENT(client, iter, rcc) {
> + FOREACH_CHANNEL_CLIENT(client, rcc) {
> if (red_channel_client_set_migration_seamless(rcc)) {
> client->num_migrated_channels++;
> }
> @@ -173,7 +172,6 @@ void red_client_set_migration_seamless(RedClient *client) // dest
>
> void red_client_migrate(RedClient *client)
> {
> - GListIter iter;
> RedChannelClient *rcc;
> RedChannel *channel;
>
> @@ -184,7 +182,7 @@ void red_client_migrate(RedClient *client)
> " this might be a BUG",
> client->thread_id, pthread_self());
> }
> - FOREACH_CHANNEL_CLIENT(client, iter, rcc) {
> + FOREACH_CHANNEL_CLIENT(client, rcc) {
> if (red_channel_client_is_connected(rcc)) {
> channel = red_channel_client_get_channel(rcc);
> red_channel_migrate_client(channel, rcc);
> @@ -194,7 +192,6 @@ void red_client_migrate(RedClient *client)
>
> void red_client_destroy(RedClient *client)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> spice_printerr("destroy client %p with #channels=%d", client, g_list_length(client->channels));
> @@ -205,7 +202,7 @@ void red_client_destroy(RedClient *client)
> client->thread_id,
> pthread_self());
> }
> - FOREACH_CHANNEL_CLIENT(client, iter, rcc) {
> + FOREACH_CHANNEL_CLIENT(client, rcc) {
> RedChannel *channel;
> // some channels may be in other threads, so disconnection
> // is not synchronous.
> @@ -228,11 +225,10 @@ void red_client_destroy(RedClient *client)
> /* client->lock should be locked */
> static RedChannelClient *red_client_get_channel(RedClient *client, int type, int id)
> {
> - GListIter iter;
> RedChannelClient *rcc;
> RedChannelClient *ret = NULL;
>
> - FOREACH_CHANNEL_CLIENT(client, iter, rcc) {
> + FOREACH_CHANNEL_CLIENT(client, rcc) {
> int channel_type, channel_id;
> RedChannel *channel;
>
> @@ -292,7 +288,6 @@ void red_client_set_main(RedClient *client, MainChannelClient *mcc)
>
> void red_client_semi_seamless_migrate_complete(RedClient *client)
> {
> - GListIter iter;
> RedChannelClient *rcc;
>
> pthread_mutex_lock(&client->lock);
> @@ -302,7 +297,7 @@ void red_client_semi_seamless_migrate_complete(RedClient *client)
> return;
> }
> client->during_target_migrate = FALSE;
> - FOREACH_CHANNEL_CLIENT(client, iter, rcc) {
> + FOREACH_CHANNEL_CLIENT(client, rcc) {
> red_channel_client_semi_seamless_migration_complete(rcc);
> }
> pthread_mutex_unlock(&client->lock);
> diff --git a/server/red-common.h b/server/red-common.h
> index cb459b05..f1cc9cd3 100644
> --- a/server/red-common.h
> +++ b/server/red-common.h
> @@ -81,16 +81,16 @@ typedef struct GListIter {
> } GListIter;
>
> #define GLIST_FOREACH_GENERIC(_list, _iter, _type, _data, _dir) \
> - for (_iter.link = _list; \
> + for (GListIter _iter = { .link = _list }; \
> (_data = (_type *) (_iter.link ? _iter.link->data : NULL), \
> _iter.next = (_iter.link ? _iter.link->_dir : NULL), \
> _iter.link) != NULL; \
> _iter.link = _iter.next)
>
> -#define GLIST_FOREACH(_list, _iter, _type, _data) \
> - GLIST_FOREACH_GENERIC(_list, _iter, _type, _data, next)
> +#define GLIST_FOREACH(_list, _type, _data) \
> + GLIST_FOREACH_GENERIC(_list, _iter_ ## __LINE__, _type, _data, next)
>
> -#define GLIST_FOREACH_REVERSED(_list, _iter, _type, _data) \
> - GLIST_FOREACH_GENERIC(_list, _iter, _type, _data, prev)
> +#define GLIST_FOREACH_REVERSED(_list, _type, _data) \
> + GLIST_FOREACH_GENERIC(_list, _iter_ ## __LINE__, _type, _data, prev)
>
> #endif /* RED_COMMON_H_ */
> diff --git a/server/red-worker.c b/server/red-worker.c
> index f747e128..36a29074 100644
> --- a/server/red-worker.c
> +++ b/server/red-worker.c
> @@ -380,7 +380,6 @@ static void guest_set_client_capabilities(RedWorker *worker)
> {
> int i;
> RedChannelClient *rcc;
> - GListIter iter;
> uint8_t caps[SPICE_CAPABILITIES_SIZE] = { 0 };
> int caps_available[] = {
> SPICE_DISPLAY_CAP_SIZED_STREAM,
> @@ -413,7 +412,7 @@ static void guest_set_client_capabilities(RedWorker *worker)
> for (i = 0 ; i < SPICE_N_ELEMENTS(caps_available); ++i) {
> SET_CAP(caps, caps_available[i]);
> }
> - FOREACH_CLIENT(worker->display_channel, iter, rcc) {
> + FOREACH_CLIENT(worker->display_channel, rcc) {
> for (i = 0 ; i < SPICE_N_ELEMENTS(caps_available); ++i) {
> if (!red_channel_client_test_remote_cap(rcc, caps_available[i]))
> CLEAR_CAP(caps, caps_available[i]);
> @@ -489,9 +488,8 @@ static void handle_dev_destroy_surfaces(void *opaque, void *payload)
> static void red_worker_push_monitors_config(RedWorker *worker)
> {
> DisplayChannelClient *dcc;
> - GListIter iter;
>
> - FOREACH_DCC(worker->display_channel, iter, dcc) {
> + FOREACH_DCC(worker->display_channel, dcc) {
> dcc_push_monitors_config(dcc);
> }
> }
> diff --git a/server/reds-private.h b/server/reds-private.h
> index 26b7435a..c4ab3d1c 100644
> --- a/server/reds-private.h
> +++ b/server/reds-private.h
> @@ -134,7 +134,7 @@ struct RedsState {
> RedRecord *record;
> };
>
> -#define FOREACH_QXL_INSTANCE(_reds, _iter, _qxl) \
> - GLIST_FOREACH(_reds->qxl_instances, _iter, QXLInstance, _qxl)
> +#define FOREACH_QXL_INSTANCE(_reds, _qxl) \
> + GLIST_FOREACH(_reds->qxl_instances, QXLInstance, _qxl)
>
> #endif /* REDS_PRIVATE_H_ */
> diff --git a/server/reds.c b/server/reds.c
> index 8abfbda5..33f038c7 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -400,10 +400,9 @@ void reds_unregister_channel(RedsState *reds, RedChannel *channel)
>
> RedChannel *reds_find_channel(RedsState *reds, uint32_t type, uint32_t id)
> {
> - GListIter it;
> RedChannel *channel;
>
> - GLIST_FOREACH(reds->channels, it, RedChannel, channel) {
> + GLIST_FOREACH(reds->channels, RedChannel, channel) {
> uint32_t this_type, this_id;
> g_object_get(channel, "channel-type", &this_type, "id", &this_id, NULL);
> if (this_type == type && this_id == id) {
> @@ -574,11 +573,10 @@ void reds_client_disconnect(RedsState *reds, RedClient *client)
> // reds_client_disconnect
> static void reds_disconnect(RedsState *reds)
> {
> - GListIter iter;
> RedClient *client;
>
> spice_debug("trace");
> - GLIST_FOREACH(reds->clients, iter, RedClient, client) {
> + GLIST_FOREACH(reds->clients, RedClient, client) {
> reds_client_disconnect(reds, client);
> }
> reds_mig_cleanup(reds);
> @@ -605,7 +603,6 @@ int reds_get_mouse_mode(RedsState *reds)
>
> static void reds_set_mouse_mode(RedsState *reds, uint32_t mode)
> {
> - GListIter it;
> QXLInstance *qxl;
>
> if (reds->mouse_mode == mode) {
> @@ -613,7 +610,7 @@ static void reds_set_mouse_mode(RedsState *reds, uint32_t mode)
> }
> reds->mouse_mode = mode;
>
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> red_qxl_set_mouse_mode(qxl, mode);
> }
>
> @@ -957,11 +954,10 @@ static bool channel_supports_multiple_clients(RedChannel *channel)
>
> static void reds_fill_channels(RedsState *reds, SpiceMsgChannels *channels_info)
> {
> - GListIter it;
> RedChannel *channel;
> int used_channels = 0;
>
> - GLIST_FOREACH(reds->channels, it, RedChannel, channel) {
> + GLIST_FOREACH(reds->channels, RedChannel, channel) {
> uint32_t type, id;
> if (g_list_length(reds->clients) > 1 &&
> !channel_supports_multiple_clients(channel)) {
> @@ -1689,20 +1685,18 @@ static void reds_mig_target_client_free(RedsState *reds, RedsMigTargetClient *mi
>
> static void reds_mig_target_client_disconnect_all(RedsState *reds)
> {
> - GListIter it;
> RedsMigTargetClient *mig_client;
>
> - GLIST_FOREACH(reds->mig_target_clients, it, RedsMigTargetClient, mig_client) {
> + GLIST_FOREACH(reds->mig_target_clients, RedsMigTargetClient, mig_client) {
> reds_client_disconnect(reds, mig_client->client);
> }
> }
>
> static bool reds_find_client(RedsState *reds, RedClient *client)
> {
> - GListIter iter;
> RedClient *list_client;
>
> - GLIST_FOREACH(reds->clients, iter, RedClient, list_client) {
> + GLIST_FOREACH(reds->clients, RedClient, list_client) {
> if (list_client == client) {
> return TRUE;
> }
> @@ -2964,13 +2958,12 @@ static void reds_mig_started(RedsState *reds)
>
> static void reds_mig_fill_wait_disconnect(RedsState *reds)
> {
> - GListIter iter;
> RedClient *client;
>
> spice_assert(reds->clients != NULL);
> /* tracking the clients, in order to ignore disconnection
> * of clients that got connected to the src after migration completion.*/
> - GLIST_FOREACH(reds->clients, iter, RedClient, client) {
> + GLIST_FOREACH(reds->clients, RedClient, client) {
> reds->mig_wait_disconnect_clients = g_list_append(reds->mig_wait_disconnect_clients, client);
> }
> reds->mig_wait_connect = FALSE;
> @@ -4355,11 +4348,10 @@ void reds_update_client_mouse_allowed(RedsState *reds)
> int num_active_workers = g_list_length(reds->qxl_instances);
>
> if (num_active_workers > 0) {
> - GListIter it;
> QXLInstance *qxl;
>
> allow_now = TRUE;
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> if (red_qxl_get_primary_active(qxl)) {
> allow_now = red_qxl_get_allow_client_mouse(qxl, &x_res, &y_res);
> break;
> @@ -4380,14 +4372,13 @@ void reds_update_client_mouse_allowed(RedsState *reds)
>
> static gboolean reds_use_client_monitors_config(RedsState *reds)
> {
> - GListIter it;
> QXLInstance *qxl;
>
> if (reds->qxl_instances == NULL) {
> return FALSE;
> }
>
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> if (!red_qxl_use_client_monitors_config(qxl))
> return FALSE;
> }
> @@ -4396,10 +4387,9 @@ static gboolean reds_use_client_monitors_config(RedsState *reds)
>
> static void reds_client_monitors_config(RedsState *reds, VDAgentMonitorsConfig *monitors_config)
> {
> - GListIter it;
> QXLInstance *qxl;
>
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> if (!red_qxl_client_monitors_config(qxl, monitors_config)) {
> /* this is a normal condition, some qemu devices might not implement it */
> spice_debug("QXLInterface::client_monitors_config failed\n");
> @@ -4422,10 +4412,9 @@ static int calc_compression_level(RedsState *reds)
> void reds_on_ic_change(RedsState *reds)
> {
> int compression_level = calc_compression_level(reds);
> - GListIter it;
> QXLInstance *qxl;
>
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> red_qxl_set_compression_level(qxl, compression_level);
> red_qxl_on_ic_change(qxl, spice_server_get_image_compression(reds));
> }
> @@ -4434,10 +4423,9 @@ void reds_on_ic_change(RedsState *reds)
> void reds_on_sv_change(RedsState *reds)
> {
> int compression_level = calc_compression_level(reds);
> - GListIter it;
> QXLInstance *qxl;
>
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> red_qxl_set_compression_level(qxl, compression_level);
> red_qxl_on_sv_change(qxl, reds_get_streaming_video(reds));
> }
> @@ -4445,30 +4433,27 @@ void reds_on_sv_change(RedsState *reds)
>
> void reds_on_vc_change(RedsState *reds)
> {
> - GListIter it;
> QXLInstance *qxl;
>
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> red_qxl_on_vc_change(qxl, reds_get_video_codecs(reds));
> }
> }
>
> void reds_on_vm_stop(RedsState *reds)
> {
> - GListIter it;
> QXLInstance *qxl;
>
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> red_qxl_stop(qxl);
> }
> }
>
> void reds_on_vm_start(RedsState *reds)
> {
> - GListIter it;
> QXLInstance *qxl;
>
> - FOREACH_QXL_INSTANCE(reds, it, qxl) {
> + FOREACH_QXL_INSTANCE(reds, qxl) {
> red_qxl_start(qxl);
> }
> }
> diff --git a/server/stream.c b/server/stream.c
> index ff2676cf..f74a1385 100644
> --- a/server/stream.c
> +++ b/server/stream.c
> @@ -98,13 +98,12 @@ static RedPipeItem *stream_destroy_item_new(StreamAgent *agent)
> void stream_stop(DisplayChannel *display, Stream *stream)
> {
> DisplayChannelClient *dcc;
> - GListIter iter;
>
> spice_return_if_fail(ring_item_is_linked(&stream->link));
> spice_return_if_fail(!stream->current);
>
> spice_debug("stream %d", display_channel_get_stream_id(display, stream));
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> StreamAgent *stream_agent;
>
> stream_agent = dcc_get_stream_agent(dcc, display_channel_get_stream_id(display, stream));
> @@ -281,7 +280,6 @@ static bool is_next_stream_frame(DisplayChannel *display,
> static void attach_stream(DisplayChannel *display, Drawable *drawable, Stream *stream)
> {
> DisplayChannelClient *dcc;
> - GListIter iter;
>
> spice_assert(drawable && stream);
> spice_assert(!drawable->stream && !stream->current);
> @@ -300,7 +298,7 @@ static void attach_stream(DisplayChannel *display, Drawable *drawable, Stream *s
> stream->num_input_frames++;
> }
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> StreamAgent *agent;
> QRegion clip_in_draw_dest;
>
> @@ -381,7 +379,6 @@ static Stream *display_channel_stream_try_new(DisplayChannel *display)
> static void display_channel_create_stream(DisplayChannel *display, Drawable *drawable)
> {
> DisplayChannelClient *dcc;
> - GListIter iter;
> Stream *stream;
> SpiceRect* src_rect;
>
> @@ -418,7 +415,7 @@ static void display_channel_create_stream(DisplayChannel *display, Drawable *dra
> stream->input_fps_start_time = drawable->creation_time;
> display->priv->streams_size_total += stream->width * stream->height;
> display->priv->stream_count++;
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> dcc_create_stream(dcc, stream);
> }
> spice_debug("stream %d %dx%d (%d, %d) (%d, %d) %u fps",
> @@ -856,10 +853,9 @@ clear_vis_region:
> static void detach_stream_gracefully(DisplayChannel *display, Stream *stream,
> Drawable *update_area_limit)
> {
> - GListIter iter;
> DisplayChannelClient *dcc;
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> dcc_detach_stream_gracefully(dcc, stream, update_area_limit);
> }
> if (stream->current) {
> @@ -881,7 +877,6 @@ void stream_detach_behind(DisplayChannel *display, QRegion *region, Drawable *dr
> {
> Ring *ring = &display->priv->streams;
> RingItem *item = ring_get_head(ring);
> - GListIter iter;
> DisplayChannelClient *dcc;
> bool is_connected = red_channel_is_connected(RED_CHANNEL(display));
>
> @@ -890,7 +885,7 @@ void stream_detach_behind(DisplayChannel *display, QRegion *region, Drawable *dr
> int detach = 0;
> item = ring_next(ring, item);
>
> - FOREACH_DCC(display, iter, dcc) {
> + FOREACH_DCC(display, dcc) {
> StreamAgent *agent = dcc_get_stream_agent(dcc, display_channel_get_stream_id(display, stream));
>
> if (region_intersects(&agent->vis_region, region)) {
>
More information about the Spice-devel
mailing list