[gnome-builder] transfer: handle resubmission of transfer gracefully
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] transfer: handle resubmission of transfer gracefully
- Date: Sat, 18 Feb 2017 23:04:53 +0000 (UTC)
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]