[libsoup/wip/http2-a: 6/7] Add soup_add_timeout_reffed()



commit eaa46acc264de3a63b2d529b56aeffc5fac042cb
Author: Dan Winship <danw gnome org>
Date:   Sun Dec 7 21:17:26 2014 +0100

    Add soup_add_timeout_reffed()

 libsoup/soup-misc-private.h |    4 ++++
 libsoup/soup-misc.c         |   17 ++++++++++++++---
 libsoup/soup-session.c      |    9 ++++-----
 3 files changed, 22 insertions(+), 8 deletions(-)
---
diff --git a/libsoup/soup-misc-private.h b/libsoup/soup-misc-private.h
index 7826533..3a6cf12 100644
--- a/libsoup/soup-misc-private.h
+++ b/libsoup/soup-misc-private.h
@@ -33,6 +33,10 @@ gboolean soup_uri_is_https (SoupURI *uri, char **aliases);
 GSource *soup_add_completion_reffed (GMainContext *async_context,
                                     GSourceFunc   function,
                                     gpointer      data);
+GSource *soup_add_timeout_reffed (GMainContext *async_context,
+                                 guint         interval,
+                                 GSourceFunc   function,
+                                 gpointer      data);
 
 guint soup_message_headers_get_ranges_internal (SoupMessageHeaders  *hdrs,
                                                goffset              total_length,
diff --git a/libsoup/soup-misc.c b/libsoup/soup-misc.c
index 325b587..747a5d4 100644
--- a/libsoup/soup-misc.c
+++ b/libsoup/soup-misc.c
@@ -153,6 +153,17 @@ soup_add_completion (GMainContext *async_context,
        return source;
 }
 
+GSource *
+soup_add_timeout_reffed (GMainContext *async_context,
+                        guint interval,
+                        GSourceFunc function, gpointer data)
+{
+       GSource *source = g_timeout_source_new (interval);
+       g_source_set_callback (source, function, data, NULL);
+       g_source_attach (source, async_context);
+       return source;
+}
+
 /**
  * soup_add_timeout: (skip)
  * @async_context: (allow-none): the #GMainContext to dispatch the I/O
@@ -172,9 +183,9 @@ soup_add_timeout (GMainContext *async_context,
                  guint interval,
                  GSourceFunc function, gpointer data)
 {
-       GSource *source = g_timeout_source_new (interval);
-       g_source_set_callback (source, function, data, NULL);
-       g_source_attach (source, async_context);
+       GSource *source;
+
+       source = soup_add_timeout_reffed (async_context, interval, function, data);
        g_source_unref (source);
        return source;
 }
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index ae9bb21..c97614d 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -1432,11 +1432,10 @@ drop_connection (SoupSession *session, SoupSessionHost *host, SoupConnection *co
                 */
                if (host->num_conns == 0) {
                        g_assert (host->keep_alive_src == NULL);
-                       host->keep_alive_src = soup_add_timeout (priv->async_context,
-                                                                HOST_KEEP_ALIVE,
-                                                                free_unused_host,
-                                                                host);
-                       host->keep_alive_src = g_source_ref (host->keep_alive_src);
+                       host->keep_alive_src = soup_add_timeout_reffed (priv->async_context,
+                                                                       HOST_KEEP_ALIVE,
+                                                                       free_unused_host,
+                                                                       host);
                }
 
                if (soup_connection_get_ssl_fallback (conn))


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