[gnome-builder] transfer: handle resubmission of transfer gracefully



commit 3dbf5c9f76dd11e3abced90aa22299e9a4dd15b3
Author: Christian Hergert <chergert redhat com>
Date:   Sat Feb 18 15:04:43 2017 -0800

    transfer: handle resubmission of transfer gracefully
    
    If we get a transfer submitted a second time (imagine an "update" transfer)
    then we can skip some of our signal connections.

 libide/transfers/ide-transfer-manager.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/libide/transfers/ide-transfer-manager.c b/libide/transfers/ide-transfer-manager.c
index e818321..dc5af2f 100644
--- a/libide/transfers/ide-transfer-manager.c
+++ b/libide/transfers/ide-transfer-manager.c
@@ -416,6 +416,17 @@ ide_transfer_manager_queue (IdeTransferManager *self,
   g_return_if_fail (IDE_IS_TRANSFER_MANAGER (self));
   g_return_if_fail (IDE_IS_TRANSFER (transfer));
 
+  for (guint i = 0; i < self->transfers->len; i++)
+    {
+      IdeTransfer *ele = g_ptr_array_index (self->transfers, i);
+
+      if (ele == transfer)
+        {
+          transfer_set_active (transfer, FALSE);
+          goto already_inserted;
+        }
+    }
+
   g_signal_connect_object (transfer,
                            "notify::progress",
                            G_CALLBACK (ide_transfer_manager_notify_progress),
@@ -425,6 +436,8 @@ ide_transfer_manager_queue (IdeTransferManager *self,
   position = self->transfers->len;
   g_ptr_array_add (self->transfers, g_object_ref (transfer));
   g_list_model_items_changed (G_LIST_MODEL (self), position, 0, 1);
+
+already_inserted:
   ide_transfer_manager_pump (self);
 
   IDE_EXIT;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]