Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> On Tue, 2016-07-05 at 15:07 +0200, Victor Toso wrote: > This is an intermediary step for the following patches to make the > changes more clear and easy to follow. > > In file_xfer_send_progress(), I've renamed the variable self to > xfer_task as this is not SpiceFileTransferTask function. > --- > src/channel-main.c | 50 ++++++++++++++++++++++++++++++-------------------- > 1 file changed, 30 insertions(+), 20 deletions(-) > > diff --git a/src/channel-main.c b/src/channel-main.c > index f02daee..529c36c 100644 > --- a/src/channel-main.c > +++ b/src/channel-main.c > @@ -1883,6 +1883,34 @@ static void file_xfer_close_cb(GObject *object, > g_object_unref(self); > } > > +static void file_xfer_send_progress(SpiceFileTransferTask *xfer_task) > +{ > + goffset read = 0; > + goffset total = 0; > + GHashTableIter iter; > + gpointer key, value; > + SpiceMainChannel *channel; > + > + g_return_if_fail(xfer_task != NULL); > + > + if (!xfer_task->progress_callback) > + return; > + > + channel = spice_file_transfer_task_get_channel(xfer_task); > + > + /* since the progress_callback does not have a parameter to indicate > + * which file the progress is associated with, report progress on all > + * current transfers */ > + g_hash_table_iter_init(&iter, channel->priv->file_xfer_tasks); > + while (g_hash_table_iter_next(&iter, &key, &value)) { > + SpiceFileTransferTask *t = (SpiceFileTransferTask *)value; > + read += t->read_bytes; > + total += t->file_size; > + } > + > + xfer_task->progress_callback(read, total, xfer_task- > >progress_callback_data); > +} > + > static void file_xfer_data_flushed_cb(GObject *source_object, > GAsyncResult *res, > gpointer user_data) > @@ -1897,6 +1925,8 @@ static void file_xfer_data_flushed_cb(GObject > *source_object, > return; > } > > + file_xfer_send_progress(self); > + > if (spice_util_get_debug()) { > const GTimeSpan interval = 20 * G_TIME_SPAN_SECOND; > gint64 now = g_get_monotonic_time(); > @@ -1910,26 +1940,6 @@ static void file_xfer_data_flushed_cb(GObject > *source_object, > } > } > > - if (self->progress_callback) { > - goffset read = 0; > - goffset total = 0; > - SpiceMainChannel *main_channel = self->channel; > - GHashTableIter iter; > - gpointer key, value; > - > - /* since the progress_callback does not have a parameter to indicate > - * which file the progress is associated with, report progress on all > - * current transfers */ > - g_hash_table_iter_init(&iter, main_channel->priv->file_xfer_tasks); > - while (g_hash_table_iter_next(&iter, &key, &value)) { > - SpiceFileTransferTask *t = (SpiceFileTransferTask *)value; > - read += t->read_bytes; > - total += t->file_size; > - } > - > - self->progress_callback(read, total, self->progress_callback_data); > - } > - > /* Read more data */ > spice_file_transfer_task_read_async(self, file_xfer_read_async_cb, NULL); > } _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel