Blame SOURCES/dleyna-core-Make-the-task-processor-more-robust.patch

a470fa
From 48d5213ad10278a3e419b66e4bc3c678254a3c34 Mon Sep 17 00:00:00 2001
a470fa
From: Debarshi Ray <debarshir@freedesktop.org>
a470fa
Date: Fri, 4 Dec 2020 14:47:13 +0100
a470fa
Subject: [PATCH 1/2] Remove any pending task processing handlers when
a470fa
 destroying a queue
a470fa
a470fa
https://github.com/phako/dleyna-core/pull/2
a470fa
---
a470fa
 libdleyna/core/task-processor.c | 5 +++++
a470fa
 1 file changed, 5 insertions(+)
a470fa
a470fa
diff --git a/libdleyna/core/task-processor.c b/libdleyna/core/task-processor.c
a470fa
index f50dd569ed61..8065a205c061 100644
a470fa
--- a/libdleyna/core/task-processor.c
a470fa
+++ b/libdleyna/core/task-processor.c
a470fa
@@ -96,6 +96,11 @@ static void prv_free_cb(gpointer data)
a470fa
 
a470fa
 	DLEYNA_LOG_DEBUG("Enter");
a470fa
 
a470fa
+	if (task_queue->idle_id) {
a470fa
+		g_source_remove(task_queue->idle_id);
a470fa
+		task_queue->idle_id = 0;
a470fa
+	}
a470fa
+
a470fa
 	g_ptr_array_foreach(task_queue->tasks, prv_task_free_cb, task_queue);
a470fa
 	g_ptr_array_unref(task_queue->tasks);
a470fa
 
a470fa
-- 
a470fa
2.28.0
a470fa
a470fa
a470fa
From 00c959020de6bfdccace493703dfcdd45d74d479 Mon Sep 17 00:00:00 2001
a470fa
From: Debarshi Ray <debarshir@freedesktop.org>
a470fa
Date: Fri, 4 Dec 2020 20:24:20 +0100
a470fa
Subject: [PATCH 2/2] Remove queues only if dleyna_task_processor_t->on_quit_cb
a470fa
 is scheduled
a470fa
a470fa
See commit 1de3325c201dc0e1 for the original reason why all the queues
a470fa
need to be removed before dleyna_task_processor_t->on_quit_cb is run.
a470fa
However, if we remove them too early then there might still be tasks
a470fa
in flight that need to use them.
a470fa
a470fa
https://bugzilla.redhat.com/show_bug.cgi?id=1890618
a470fa
https://github.com/phako/dleyna-core/pull/2
a470fa
---
a470fa
 libdleyna/core/task-processor.c | 8 ++++----
a470fa
 1 file changed, 4 insertions(+), 4 deletions(-)
a470fa
a470fa
diff --git a/libdleyna/core/task-processor.c b/libdleyna/core/task-processor.c
a470fa
index 8065a205c061..14972303c307 100644
a470fa
--- a/libdleyna/core/task-processor.c
a470fa
+++ b/libdleyna/core/task-processor.c
a470fa
@@ -257,12 +257,12 @@ void dleyna_task_processor_set_quitting(dleyna_task_processor_t *processor)
a470fa
 	DLEYNA_LOG_DEBUG("Enter");
a470fa
 
a470fa
 	processor->quitting = TRUE;
a470fa
+	prv_cancel_all_queues(processor);
a470fa
 
a470fa
-	if (processor->running_tasks == 0)
a470fa
+	if (processor->running_tasks == 0) {
a470fa
 		g_idle_add(processor->on_quit_cb, NULL);
a470fa
-
a470fa
-	prv_cancel_all_queues(processor);
a470fa
-	g_hash_table_remove_all(processor->task_queues);
a470fa
+		g_hash_table_remove_all(processor->task_queues);
a470fa
+	}
a470fa
 
a470fa
 	DLEYNA_LOG_DEBUG("Exit");
a470fa
 }
a470fa
-- 
a470fa
2.28.0
a470fa