[Telepathy-commits] [telepathy-salut/master] Enabled sending one last TransferredBytes signal when the transfer finishes.

Jonny Lamb jonny.lamb at collabora.co.uk
Fri Nov 21 03:46:16 PST 2008


20080804172253-8ed0e-94862977e2c8af6a22d91fd86e4c83fa8d2b8f6d.gz
---
 lib/gibber/gibber-oob-file-transfer.c |    5 +++++
 src/salut-file-channel.c              |    6 +++++-
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/lib/gibber/gibber-oob-file-transfer.c b/lib/gibber/gibber-oob-file-transfer.c
index 64a2e11..8cfd32a 100644
--- a/lib/gibber/gibber-oob-file-transfer.c
+++ b/lib/gibber/gibber-oob-file-transfer.c
@@ -277,6 +277,11 @@ http_client_finished_chunks_cb (SoupMessage *msg,
   if (gibber_file_transfer_send_stanza (GIBBER_FILE_TRANSFER (self), stanza,
         &error))
     {
+      /* Send one last TransferredBytes signal. This will definitely get
+       * through, even if it has been < 1s since the last emission, so that
+       * clients will show 100% for sure.
+       */
+      transferred_chunk (self, 0);
       g_signal_emit_by_name (self, "finished");
     }
   else
diff --git a/src/salut-file-channel.c b/src/salut-file-channel.c
index 0c25d81..d57a726 100644
--- a/src/salut-file-channel.c
+++ b/src/salut-file-channel.c
@@ -923,7 +923,11 @@ ft_transferred_chunk_cb (GibberFileTransfer *ft, guint64 count, SalutFileChannel
 
   g_get_current_time (&timeval);
 
-  if (timeval.tv_sec >= self->priv->last_transferred_bytes_emitted + 1)
+  /* Only emit the TransferredBytes signal if it has been one second since its
+   * last emission, OR if the transfer has finished.
+   */
+  if (timeval.tv_sec >= (self->priv->last_transferred_bytes_emitted + 1)
+      || self->priv->transferred_bytes == self->priv->size)
     {
       salut_svc_channel_type_file_emit_transferred_bytes_changed (iface,
           self->priv->transferred_bytes);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list