[libsoup] Use GLib API for atomic reference counting



commit 4ae215b4895e6611176d1089fcac0a7d69423220
Author: Patrick Griffis <pgriffis igalia com>
Date:   Sat Nov 14 12:13:30 2020 -0600

    Use GLib API for atomic reference counting

 libsoup/server/soup-message-body.c | 8 ++++----
 libsoup/soup-message-headers.c     | 9 +++++----
 libsoup/soup-socket-properties.c   | 7 ++++---
 libsoup/soup-socket-properties.h   | 2 +-
 4 files changed, 14 insertions(+), 12 deletions(-)
---
diff --git a/libsoup/server/soup-message-body.c b/libsoup/server/soup-message-body.c
index 321f4075..d31121ef 100644
--- a/libsoup/server/soup-message-body.c
+++ b/libsoup/server/soup-message-body.c
@@ -62,7 +62,7 @@ typedef struct {
        GBytes *flattened;
        gboolean accumulate;
        goffset base_offset;
-       int ref_count;
+       gatomicrefcount ref_count;
 } SoupMessageBodyPrivate;
 
 /**
@@ -80,7 +80,7 @@ soup_message_body_new (void)
 
        priv = g_slice_new0 (SoupMessageBodyPrivate);
        priv->accumulate = TRUE;
-       priv->ref_count = 1;
+       g_atomic_ref_count_init (&priv->ref_count);
 
        return (SoupMessageBody *)priv;
 }
@@ -402,7 +402,7 @@ soup_message_body_copy (SoupMessageBody *body)
 {
        SoupMessageBodyPrivate *priv = (SoupMessageBodyPrivate *)body;
 
-       g_atomic_int_inc (&priv->ref_count);
+       g_atomic_ref_count_inc (&priv->ref_count);
        return body;
 }
 
@@ -418,7 +418,7 @@ soup_message_body_free (SoupMessageBody *body)
 {
        SoupMessageBodyPrivate *priv = (SoupMessageBodyPrivate *)body;
 
-       if (!g_atomic_int_dec_and_test (&priv->ref_count))
+       if (!g_atomic_ref_count_dec (&priv->ref_count))
                return;
 
        soup_message_body_truncate (body);
diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
index c84d7504..588f03a0 100644
--- a/libsoup/soup-message-headers.c
+++ b/libsoup/soup-message-headers.c
@@ -59,7 +59,7 @@ struct _SoupMessageHeaders {
        SoupExpectation expectations;
        char *content_type;
 
-       int ref_count;
+       gatomicrefcount ref_count;
 };
 
 /**
@@ -82,7 +82,8 @@ soup_message_headers_new (SoupMessageHeadersType type)
        hdrs->array = g_array_sized_new (TRUE, FALSE, sizeof (SoupHeader), 5);
        hdrs->type = type;
        hdrs->encoding = -1;
-       hdrs->ref_count = 1;
+
+        g_atomic_ref_count_init (&hdrs->ref_count);
 
        return hdrs;
 }
@@ -90,7 +91,7 @@ soup_message_headers_new (SoupMessageHeadersType type)
 static SoupMessageHeaders *
 soup_message_headers_copy (SoupMessageHeaders *hdrs)
 {
-       g_atomic_int_inc (&hdrs->ref_count);
+       g_atomic_ref_count_inc (&hdrs->ref_count);
        return hdrs;
 }
 
@@ -103,7 +104,7 @@ soup_message_headers_copy (SoupMessageHeaders *hdrs)
 void
 soup_message_headers_free (SoupMessageHeaders *hdrs)
 {
-       if (!g_atomic_int_dec_and_test (&hdrs->ref_count))
+       if (!g_atomic_ref_count_dec (&hdrs->ref_count))
                return;
 
        soup_message_headers_clear (hdrs);
diff --git a/libsoup/soup-socket-properties.c b/libsoup/soup-socket-properties.c
index 622d69d4..5ceecd76 100644
--- a/libsoup/soup-socket-properties.c
+++ b/libsoup/soup-socket-properties.c
@@ -21,7 +21,8 @@ soup_socket_properties_new (GProxyResolver     *proxy_resolver,
        SoupSocketProperties *props;
 
        props = g_slice_new (SoupSocketProperties);
-       props->ref_count = 1;
+
+        g_atomic_ref_count_init (&props->ref_count);
 
        props->proxy_resolver = proxy_resolver ? g_object_ref (proxy_resolver) : NULL;
        props->local_addr = local_addr ? g_object_ref (local_addr) : NULL;
@@ -38,14 +39,14 @@ soup_socket_properties_new (GProxyResolver     *proxy_resolver,
 SoupSocketProperties *
 soup_socket_properties_ref (SoupSocketProperties *props)
 {
-       g_atomic_int_inc (&props->ref_count);
+       g_atomic_ref_count_inc (&props->ref_count);
        return props;
 }
 
 void
 soup_socket_properties_unref (SoupSocketProperties *props)
 {
-       if (!g_atomic_int_dec_and_test (&props->ref_count))
+       if (!g_atomic_ref_count_dec (&props->ref_count))
                return;
 
        g_clear_object (&props->proxy_resolver);
diff --git a/libsoup/soup-socket-properties.h b/libsoup/soup-socket-properties.h
index 68b26f7f..8f77a43d 100644
--- a/libsoup/soup-socket-properties.h
+++ b/libsoup/soup-socket-properties.h
@@ -19,7 +19,7 @@ typedef struct {
        guint idle_timeout;
 
        /*< private >*/
-       guint ref_count;
+       gatomicrefcount ref_count;
 } SoupSocketProperties;
 
 GType soup_socket_properties_get_type (void);


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