[rhythmbox] shell: cancel outstanding transfers to or from deleted sources



commit fa5ca160f4118c13e672781ce56bac571376f62b
Author: Jonathan Matthew <jonathan d14n org>
Date:   Tue May 14 22:34:26 2013 +1000

    shell: cancel outstanding transfers to or from deleted sources

 shell/rb-shell.c                |    2 ++
 shell/rb-track-transfer-queue.c |   20 ++++++++++++++++++++
 shell/rb-track-transfer-queue.h |    2 ++
 3 files changed, 24 insertions(+), 0 deletions(-)
---
diff --git a/shell/rb-shell.c b/shell/rb-shell.c
index 790f03a..6048c79 100644
--- a/shell/rb-shell.c
+++ b/shell/rb-shell.c
@@ -2159,6 +2159,8 @@ rb_shell_display_page_deleted_cb (RBDisplayPage *page, RBShell *shell)
                        rb_shell_player_stop (shell->priv->player_shell);
                }
 
+               rb_track_transfer_queue_cancel_for_source (shell->priv->track_transfer_queue, source);
+
                shell->priv->sources = g_list_remove (shell->priv->sources, source);
        }
 
diff --git a/shell/rb-track-transfer-queue.c b/shell/rb-track-transfer-queue.c
index c6a089e..7d1c52e 100644
--- a/shell/rb-track-transfer-queue.c
+++ b/shell/rb-track-transfer-queue.c
@@ -599,6 +599,26 @@ rb_track_transfer_queue_find_batch_by_source (RBTrackTransferQueue *queue, RBSou
        return data.results;
 }
 
+/**
+ * rb_track_transfer_queue_cancel_for_source;
+ * @queue: the #RBTrackTransferQueue
+ * @source: the #RBSource to cancel transfers to/from
+ *
+ * Cancels all transfers to or from a specified source.
+ */
+void
+rb_track_transfer_queue_cancel_for_source (RBTrackTransferQueue *queue, RBSource *source)
+{
+       GList *batches;
+       GList *l;
+
+       batches = rb_track_transfer_queue_find_batch_by_source (queue, source);
+       for (l = batches; l != NULL; l = l->next) {
+               rb_track_transfer_queue_cancel_batch (queue, l->data);
+       }
+       g_list_free (batches);
+}
+
 static void
 rb_track_transfer_queue_init (RBTrackTransferQueue *queue)
 {
diff --git a/shell/rb-track-transfer-queue.h b/shell/rb-track-transfer-queue.h
index a588029..17b0d6a 100644
--- a/shell/rb-track-transfer-queue.h
+++ b/shell/rb-track-transfer-queue.h
@@ -72,6 +72,8 @@ void                  rb_track_transfer_queue_cancel_batch    (RBTrackTransferQueue *queue,
                                                                 RBTrackTransferBatch *batch);
 GList *                        rb_track_transfer_queue_find_batch_by_source (RBTrackTransferQueue *queue,
                                                                 RBSource *source);
+void                   rb_track_transfer_queue_cancel_for_source (RBTrackTransferQueue *queue,
+                                                                RBSource *source);
 
 G_END_DECLS
 


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