[libsoup/carlosgc/session-queue-source: 5/5] session: do not kick the queue if there isn't any async item
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup/carlosgc/session-queue-source: 5/5] session: do not kick the queue if there isn't any async item
- Date: Fri, 14 Oct 2022 09:01:14 +0000 (UTC)
commit c8f39edef3de63c7626f18cf414d7b5448fc8d50
Author: Carlos Garcia Campos <cgarcia igalia com>
Date: Fri Oct 14 10:59:59 2022 +0200
session: do not kick the queue if there isn't any async item
libsoup/soup-session.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
---
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index 2ecd83ca..7d03b30c 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -87,6 +87,7 @@ typedef struct {
GMutex queue_sources_mutex;
GHashTable *queue_sources;
GCancellable *queue_sources_cancellable;
+ gint num_async_items;
guint in_async_run_queue;
gboolean needs_queue_sort;
@@ -1343,6 +1344,9 @@ soup_session_append_queue_item (SoupSession *session,
soup_session_add_queue_source_for_item (session, item);
+ if (async)
+ g_atomic_int_inc (&priv->num_async_items);
+
if (!soup_message_query_flags (msg, SOUP_MESSAGE_NO_REDIRECT)) {
soup_message_add_header_handler (
msg, "got_body", "Location",
@@ -1431,6 +1435,9 @@ soup_session_unqueue_item (SoupSession *session,
soup_session_remove_queue_source_for_item (session, item);
+ if (item->async)
+ g_atomic_int_dec_and_test (&priv->num_async_items);
+
/* g_signal_handlers_disconnect_by_func doesn't work if you
* have a metamarshal, meaning it doesn't work with
* soup_message_add_header_handler()
@@ -1920,7 +1927,7 @@ soup_session_kick_queue (SoupSession *session)
SoupSessionPrivate *priv = soup_session_get_instance_private (session);
g_mutex_lock (&priv->queue_sources_mutex);
- if (priv->queue_sources)
+ if (priv->queue_sources && g_atomic_int_get (&priv->num_async_items) > 0)
g_hash_table_foreach (priv->queue_sources, (GHFunc)kick_queue_source, NULL);
g_mutex_unlock (&priv->queue_sources_mutex);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]