This is useful in the following patches to count the number of replies to wait for. Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxx> --- server/red-channel.c | 21 +++++++++++++-------- server/red-channel.h | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/server/red-channel.c b/server/red-channel.c index fcbe868..ff1411f 100644 --- a/server/red-channel.c +++ b/server/red-channel.c @@ -2233,14 +2233,14 @@ int red_client_during_migrate_at_target(RedClient *client) typedef void (*rcc_item_t)(RedChannelClient *rcc, PipeItem *item); typedef int (*rcc_item_cond_t)(RedChannelClient *rcc, PipeItem *item); -static void red_channel_pipes_create_batch(RedChannel *channel, - new_pipe_item_t creator, void *data, - rcc_item_t callback) +static int red_channel_pipes_create_batch(RedChannel *channel, + new_pipe_item_t creator, void *data, + rcc_item_t callback) { RingItem *link, *next; RedChannelClient *rcc; PipeItem *item; - int num = 0; + int num = 0, n = 0; spice_assert(callback); @@ -2249,16 +2249,21 @@ static void red_channel_pipes_create_batch(RedChannel *channel, item = (*creator)(rcc, data, num++); if (item != NULL) { (*callback)(rcc, item); + n++; } } + + return n; } -void red_channel_pipes_new_add_push(RedChannel *channel, - new_pipe_item_t creator, void *data) +int red_channel_pipes_new_add_push(RedChannel *channel, + new_pipe_item_t creator, void *data) { - red_channel_pipes_create_batch(channel, creator, data, - red_channel_client_pipe_add); + int n = red_channel_pipes_create_batch(channel, creator, data, + red_channel_client_pipe_add); red_channel_push(channel); + + return n; } void red_channel_pipes_new_add(RedChannel *channel, new_pipe_item_t creator, void *data) diff --git a/server/red-channel.h b/server/red-channel.h index 609bce3..226de49 100644 --- a/server/red-channel.h +++ b/server/red-channel.h @@ -476,7 +476,7 @@ void red_channel_pipe_item_init(RedChannel *channel, PipeItem *item, int type); // helper to push a new item to all channels typedef PipeItem *(*new_pipe_item_t)(RedChannelClient *rcc, void *data, int num); -void red_channel_pipes_new_add_push(RedChannel *channel, new_pipe_item_t creator, void *data); +int red_channel_pipes_new_add_push(RedChannel *channel, new_pipe_item_t creator, void *data); void red_channel_pipes_new_add(RedChannel *channel, new_pipe_item_t creator, void *data); void red_channel_pipes_new_add_tail(RedChannel *channel, new_pipe_item_t creator, void *data); -- 2.5.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel