On Wed, Nov 18, 2015 at 5:17 PM, Frediano Ziglio <fziglio@xxxxxxxxxx> wrote: > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxx> > > --- > server/display-channel.c | 31 +++++++++++++++++++++++++++++++ > server/display-channel.h | 1 + > server/red_worker.c | 31 ------------------------------- > 3 files changed, 32 insertions(+), 31 deletions(-) > > diff --git a/server/display-channel.c b/server/display-channel.c > index c671571..1702bd6 100644 > --- a/server/display-channel.c > +++ b/server/display-channel.c > @@ -807,3 +807,34 @@ int display_channel_add_drawable(DisplayChannel *display, Drawable *drawable) > > return ret; > } > + > +int display_channel_wait_for_migrate_data(DisplayChannel *display) > +{ > + uint64_t end_time = red_get_monotonic_time() + DISPLAY_CLIENT_MIGRATE_DATA_TIMEOUT; > + RedChannel *channel = &display->common.base; > + RedChannelClient *rcc; > + > + spice_debug(NULL); > + spice_assert(channel->clients_num == 1); > + > + rcc = SPICE_CONTAINEROF(ring_get_head(&channel->clients), RedChannelClient, channel_link); > + spice_assert(red_channel_client_waits_for_migrate_data(rcc)); > + > + for (;;) { > + red_channel_client_receive(rcc); > + if (!red_channel_client_is_connected(rcc)) { > + break; > + } > + > + if (!red_channel_client_waits_for_migrate_data(rcc)) { > + return TRUE; > + } > + if (red_get_monotonic_time() > end_time) { > + spice_warning("timeout"); > + red_channel_client_disconnect(rcc); > + break; > + } > + usleep(DISPLAY_CLIENT_RETRY_INTERVAL); > + } > + return FALSE; > +} > diff --git a/server/display-channel.h b/server/display-channel.h > index ae55114..5f5bc51 100644 > --- a/server/display-channel.h > +++ b/server/display-channel.h > @@ -267,6 +267,7 @@ int display_channel_add_drawable (DisplayCha > Drawable *drawable); > void display_channel_current_flush (DisplayChannel *display, > int surface_id); > +int display_channel_wait_for_migrate_data (DisplayChannel *display); > > static inline int is_equal_path(SpicePath *path1, SpicePath *path2) > { > diff --git a/server/red_worker.c b/server/red_worker.c > index a7baf0e..f7ba2d8 100644 > --- a/server/red_worker.c > +++ b/server/red_worker.c > @@ -6916,37 +6916,6 @@ static void handle_dev_stop(void *opaque, void *payload) > } > } > > -static int display_channel_wait_for_migrate_data(DisplayChannel *display) > -{ > - uint64_t end_time = red_get_monotonic_time() + DISPLAY_CLIENT_MIGRATE_DATA_TIMEOUT; > - RedChannel *channel = &display->common.base; > - RedChannelClient *rcc; > - > - spice_debug(NULL); > - spice_assert(channel->clients_num == 1); > - > - rcc = SPICE_CONTAINEROF(ring_get_head(&channel->clients), RedChannelClient, channel_link); > - spice_assert(red_channel_client_waits_for_migrate_data(rcc)); > - > - for (;;) { > - red_channel_client_receive(rcc); > - if (!red_channel_client_is_connected(rcc)) { > - break; > - } > - > - if (!red_channel_client_waits_for_migrate_data(rcc)) { > - return TRUE; > - } > - if (red_get_monotonic_time() > end_time) { > - spice_warning("timeout"); > - red_channel_client_disconnect(rcc); > - break; > - } > - usleep(DISPLAY_CLIENT_RETRY_INTERVAL); > - } > - return FALSE; > -} > - > static void handle_dev_start(void *opaque, void *payload) > { > RedWorker *worker = opaque; > -- > 2.4.3 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel Patch seems fine, ACK! -- Fabiano Fidêncio _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel