[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