[evolution-data-server] Use g_weak_ref_init/_clear() on structure-allocated GWeakRef-s



commit 685c5cd9fd4388963d6c63a224a801e3c1cdf6e8
Author: Milan Crha <mcrha redhat com>
Date:   Fri Jun 6 16:05:26 2014 +0200

    Use g_weak_ref_init/_clear() on structure-allocated GWeakRef-s
    
    Probably not related to bug 698342 that much, but I was told that
    the right thing to do is to use g_weak_ref_init/_clear() on
    structure-allocated GWeakRef-s, the same way it is done for GMutex
    and other structures.

 .../backends/google/e-gdata-oauth2-authorizer.c    |    2 ++
 addressbook/libebook/e-book-client-cursor.c        |    6 +++---
 addressbook/libebook/e-book-client-view.c          |   14 ++++++++------
 addressbook/libebook/e-book-client.c               |    8 ++++----
 addressbook/libedata-book/e-data-book.c            |    2 ++
 calendar/libecal/e-cal-client-view.c               |   14 ++++++++------
 calendar/libecal/e-cal-client.c                    |   12 ++++++------
 calendar/libedata-cal/e-cal-backend-store.c        |    2 ++
 calendar/libedata-cal/e-cal-backend.c              |    4 ++--
 calendar/libedata-cal/e-data-cal.c                 |    2 ++
 camel/camel-folder.c                               |    8 ++++----
 camel/camel-service.c                              |    7 +++++--
 camel/camel-session.c                              |    4 ++--
 camel/camel-store.c                                |   12 ++++++------
 camel/camel-subscribable.c                         |    6 +++---
 camel/providers/imapx/camel-imapx-command.c        |    4 ++--
 camel/providers/imapx/camel-imapx-conn-manager.c   |    2 ++
 camel/providers/imapx/camel-imapx-folder.c         |    9 +++++++--
 camel/providers/imapx/camel-imapx-search.c         |   16 ++++++++++++++++
 camel/providers/imapx/camel-imapx-server.c         |   16 ++++++++++++++--
 libebackend/e-authentication-mediator.c            |    4 ++--
 libebackend/e-collection-backend.c                 |    3 +++
 libebackend/e-server-side-source.c                 |    4 ++++
 libedataserver/e-data-server-util.c                |    4 ++--
 libedataserver/e-source-extension.c                |   15 +++++++++++++++
 libedataserver/e-source-registry.c                 |   12 ++++++------
 modules/yahoo-backend/module-yahoo-backend.c       |   15 +++++++++++++++
 27 files changed, 147 insertions(+), 60 deletions(-)
---
diff --git a/addressbook/backends/google/e-gdata-oauth2-authorizer.c 
b/addressbook/backends/google/e-gdata-oauth2-authorizer.c
index 247ae9c..51f4c53 100644
--- a/addressbook/backends/google/e-gdata-oauth2-authorizer.c
+++ b/addressbook/backends/google/e-gdata-oauth2-authorizer.c
@@ -135,6 +135,7 @@ gdata_oauth2_authorizer_finalize (GObject *object)
        g_free (priv->access_token);
 
        g_hash_table_destroy (priv->authorization_domains);
+       g_weak_ref_clear (&priv->source);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_gdata_oauth2_authorizer_parent_class)->
@@ -302,6 +303,7 @@ e_gdata_oauth2_authorizer_init (EGDataOAuth2Authorizer *authorizer)
 
        authorizer->priv = E_GDATA_OAUTH2_AUTHORIZER_GET_PRIVATE (authorizer);
        authorizer->priv->authorization_domains = authorization_domains;
+       g_weak_ref_init (&authorizer->priv->source, NULL);
 }
 
 EGDataOAuth2Authorizer *
diff --git a/addressbook/libebook/e-book-client-cursor.c b/addressbook/libebook/e-book-client-cursor.c
index f025374..1a6c6a6 100644
--- a/addressbook/libebook/e-book-client-cursor.c
+++ b/addressbook/libebook/e-book-client-cursor.c
@@ -1567,7 +1567,7 @@ notification_new_string (EBookClientCursor *cursor,
        Notification *notification = g_slice_new0 (Notification);
 
        notification->type = type;
-       g_weak_ref_set (&notification->cursor, cursor);
+       g_weak_ref_init (&notification->cursor, cursor);
 
        g_value_init (&notification->value, G_TYPE_STRING);
        g_value_set_string (&notification->value, value);
@@ -1583,7 +1583,7 @@ notification_new_int (EBookClientCursor *cursor,
        Notification *notification = g_slice_new0 (Notification);
 
        notification->type = type;
-       g_weak_ref_set (&notification->cursor, cursor);
+       g_weak_ref_init (&notification->cursor, cursor);
 
        g_value_init (&notification->value, G_TYPE_INT);
        g_value_set_int (&notification->value, value);
@@ -1595,7 +1595,7 @@ static void
 notification_free (Notification *notification)
 {
        if (notification) {
-               g_weak_ref_set (&notification->cursor, NULL);
+               g_weak_ref_clear (&notification->cursor);
                g_value_unset (&notification->value);
                g_slice_free (Notification, notification);
        }
diff --git a/addressbook/libebook/e-book-client-view.c b/addressbook/libebook/e-book-client-view.c
index 867e9ab..43083f0 100644
--- a/addressbook/libebook/e-book-client-view.c
+++ b/addressbook/libebook/e-book-client-view.c
@@ -116,7 +116,7 @@ typedef struct {
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->client_view, NULL);
+       g_weak_ref_clear (&signal_closure->client_view);
 
        g_slist_free_full (
                signal_closure->object_list,
@@ -271,7 +271,7 @@ book_client_view_emit_objects_added (EBookClientView *client_view,
        SignalClosure *signal_closure;
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->client_view, client_view);
+       g_weak_ref_init (&signal_closure->client_view, client_view);
        signal_closure->object_list = object_list;  /* takes ownership */
 
        main_context = book_client_view_ref_main_context (client_view);
@@ -297,7 +297,7 @@ book_client_view_emit_objects_modified (EBookClientView *client_view,
        SignalClosure *signal_closure;
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->client_view, client_view);
+       g_weak_ref_init (&signal_closure->client_view, client_view);
        signal_closure->object_list = object_list;  /* takes ownership */
 
        main_context = book_client_view_ref_main_context (client_view);
@@ -562,7 +562,7 @@ book_client_view_objects_removed_cb (EGdbusBookView *object,
                        list = g_slist_prepend (list, g_strdup (ids[ii]));
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client_view, client_view);
+               g_weak_ref_init (&signal_closure->client_view, client_view);
                signal_closure->string_list = g_slist_reverse (list);
 
                main_context = book_client_view_ref_main_context (client_view);
@@ -603,7 +603,7 @@ book_client_view_progress_cb (EGdbusBookView *object,
                }
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client_view, client_view);
+               g_weak_ref_init (&signal_closure->client_view, client_view);
                signal_closure->message = g_strdup (message);
                signal_closure->percent = percent;
 
@@ -644,7 +644,7 @@ book_client_view_complete_cb (EGdbusBookView *object,
                }
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client_view, client_view);
+               g_weak_ref_init (&signal_closure->client_view, client_view);
                e_gdbus_templates_decode_error (
                        in_error_strv, &signal_closure->error);
 
@@ -863,6 +863,7 @@ book_client_view_finalize (GObject *object)
        g_free (priv->object_path);
 
        g_mutex_clear (&priv->main_context_lock);
+       g_weak_ref_clear (&priv->client);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_book_client_view_parent_class)->finalize (object);
@@ -1059,6 +1060,7 @@ e_book_client_view_init (EBookClientView *client_view)
        client_view->priv = E_BOOK_CLIENT_VIEW_GET_PRIVATE (client_view);
 
        g_mutex_init (&client_view->priv->main_context_lock);
+       g_weak_ref_init (&client_view->priv->client, NULL);
 }
 
 /**
diff --git a/addressbook/libebook/e-book-client.c b/addressbook/libebook/e-book-client.c
index ec6e36d..c962284 100644
--- a/addressbook/libebook/e-book-client.c
+++ b/addressbook/libebook/e-book-client.c
@@ -163,7 +163,7 @@ async_context_free (AsyncContext *async_context)
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->client, NULL);
+       g_weak_ref_clear (&signal_closure->client);
 
        g_free (signal_closure->property_name);
        g_free (signal_closure->property_value);
@@ -503,7 +503,7 @@ book_client_dbus_proxy_error_cb (EDBusAddressBook *dbus_proxy,
                SignalClosure *signal_closure;
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client, client);
+               g_weak_ref_init (&signal_closure->client, client);
                signal_closure->error_message = g_strdup (error_message);
 
                main_context = e_client_ref_main_context (client);
@@ -594,7 +594,7 @@ book_client_dbus_proxy_notify_cb (EDBusAddressBook *dbus_proxy,
                SignalClosure *signal_closure;
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client, client);
+               g_weak_ref_init (&signal_closure->client, client);
                signal_closure->property_name = g_strdup (backend_prop_name);
 
                /* The 'locale' is not an EClient property, so just transport
@@ -636,7 +636,7 @@ book_client_name_vanished_cb (GDBusConnection *connection,
                SignalClosure *signal_closure;
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client, client);
+               g_weak_ref_init (&signal_closure->client, client);
 
                main_context = e_client_ref_main_context (client);
 
diff --git a/addressbook/libedata-book/e-data-book.c b/addressbook/libedata-book/e-data-book.c
index 502f025..4c8e986 100644
--- a/addressbook/libedata-book/e-data-book.c
+++ b/addressbook/libedata-book/e-data-book.c
@@ -1796,6 +1796,7 @@ data_book_finalize (GObject *object)
        g_free (priv->object_path);
 
        g_mutex_clear (&priv->sender_lock);
+       g_weak_ref_clear (&priv->backend);
        g_hash_table_destroy (priv->sender_table);
 
        if (priv->dbus_interface) {
@@ -1996,6 +1997,7 @@ e_data_book_init (EDataBook *data_book)
        data_book->priv->dbus_interface = dbus_interface;
 
        g_mutex_init (&data_book->priv->sender_lock);
+       g_weak_ref_init (&data_book->priv->backend, NULL);
 
        data_book->priv->sender_table = g_hash_table_new_full (
                (GHashFunc) g_str_hash,
diff --git a/calendar/libecal/e-cal-client-view.c b/calendar/libecal/e-cal-client-view.c
index 86a109f..69fe2d6 100644
--- a/calendar/libecal/e-cal-client-view.c
+++ b/calendar/libecal/e-cal-client-view.c
@@ -106,7 +106,7 @@ G_DEFINE_TYPE_WITH_CODE (
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->client_view, NULL);
+       g_weak_ref_clear (&signal_closure->client_view);
 
        g_slist_free_full (
                signal_closure->component_list,
@@ -321,7 +321,7 @@ cal_client_view_objects_added_cb (EGdbusCalView *dbus_proxy,
                }
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client_view, client_view);
+               g_weak_ref_init (&signal_closure->client_view, client_view);
                signal_closure->component_list = build_object_list (objects);
 
                main_context = cal_client_view_ref_main_context (client_view);
@@ -361,7 +361,7 @@ cal_client_view_objects_modified_cb (EGdbusCalView *dbus_proxy,
                }
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client_view, client_view);
+               g_weak_ref_init (&signal_closure->client_view, client_view);
                signal_closure->component_list = build_object_list (objects);
 
                main_context = cal_client_view_ref_main_context (client_view);
@@ -401,7 +401,7 @@ cal_client_view_objects_removed_cb (EGdbusCalView *dbus_proxy,
                }
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client_view, client_view);
+               g_weak_ref_init (&signal_closure->client_view, client_view);
                signal_closure->component_id_list = build_id_list (uids);
 
                main_context = cal_client_view_ref_main_context (client_view);
@@ -442,7 +442,7 @@ cal_client_view_progress_cb (EGdbusCalView *dbus_proxy,
                }
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client_view, client_view);
+               g_weak_ref_init (&signal_closure->client_view, client_view);
                signal_closure->message = g_strdup (message);
                signal_closure->percent = percent;
 
@@ -483,7 +483,7 @@ cal_client_view_complete_cb (EGdbusCalView *dbus_proxy,
                }
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client_view, client_view);
+               g_weak_ref_init (&signal_closure->client_view, client_view);
                e_gdbus_templates_decode_error (
                        arg_error, &signal_closure->error);
 
@@ -676,6 +676,7 @@ cal_client_view_finalize (GObject *object)
        g_free (priv->object_path);
 
        g_mutex_clear (&priv->main_context_lock);
+       g_weak_ref_clear (&priv->client);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_cal_client_view_parent_class)->finalize (object);
@@ -882,6 +883,7 @@ e_cal_client_view_init (ECalClientView *client_view)
        client_view->priv = E_CAL_CLIENT_VIEW_GET_PRIVATE (client_view);
 
        g_mutex_init (&client_view->priv->main_context_lock);
+       g_weak_ref_init (&client_view->priv->client, NULL);
 }
 
 /**
diff --git a/calendar/libecal/e-cal-client.c b/calendar/libecal/e-cal-client.c
index 39335ce..bb0d921 100644
--- a/calendar/libecal/e-cal-client.c
+++ b/calendar/libecal/e-cal-client.c
@@ -186,7 +186,7 @@ async_context_free (AsyncContext *async_context)
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->client, NULL);
+       g_weak_ref_clear (&signal_closure->client);
 
        g_free (signal_closure->property_name);
        g_free (signal_closure->error_message);
@@ -553,7 +553,7 @@ cal_client_dbus_proxy_error_cb (EDBusCalendar *dbus_proxy,
                SignalClosure *signal_closure;
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client, client);
+               g_weak_ref_init (&signal_closure->client, client);
                signal_closure->error_message = g_strdup (error_message);
 
                main_context = e_client_ref_main_context (client);
@@ -644,7 +644,7 @@ cal_client_dbus_proxy_notify_cb (EDBusCalendar *dbus_proxy,
                SignalClosure *signal_closure;
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client, client);
+               g_weak_ref_init (&signal_closure->client, client);
                signal_closure->property_name = g_strdup (backend_prop_name);
 
                main_context = e_client_ref_main_context (client);
@@ -674,7 +674,7 @@ cal_client_dbus_proxy_free_busy_data_cb (EDBusCalendar *dbus_proxy,
        SignalClosure *signal_closure;
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->client, client);
+       g_weak_ref_init (&signal_closure->client, client);
        signal_closure->free_busy_data = g_strdupv (free_busy_data);
 
        main_context = e_client_ref_main_context (client);
@@ -706,7 +706,7 @@ cal_client_name_vanished_cb (GDBusConnection *connection,
                SignalClosure *signal_closure;
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client, client);
+               g_weak_ref_init (&signal_closure->client, client);
 
                main_context = e_client_ref_main_context (client);
 
@@ -1264,7 +1264,7 @@ cal_client_add_cached_timezone (ETimezoneCache *cache,
                 * internally cached icaltimezone alive for the
                 * duration of the idle callback. */
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->client, cache);
+               g_weak_ref_init (&signal_closure->client, cache);
                signal_closure->cached_zone = cached_zone;
 
                main_context = e_client_ref_main_context (E_CLIENT (cache));
diff --git a/calendar/libedata-cal/e-cal-backend-store.c b/calendar/libedata-cal/e-cal-backend-store.c
index 630deca..a895960 100644
--- a/calendar/libedata-cal/e-cal-backend-store.c
+++ b/calendar/libedata-cal/e-cal-backend-store.c
@@ -587,6 +587,7 @@ cal_backend_store_finalize (GObject *object)
        g_free (priv->key_file_name);
 
        g_mutex_clear (&priv->save_timeout_lock);
+       g_weak_ref_clear (&priv->timezone_cache);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_cal_backend_store_parent_class)->finalize (object);
@@ -1048,6 +1049,7 @@ e_cal_backend_store_init (ECalBackendStore *store)
        store->priv->comp_uid_hash = comp_uid_hash;
        g_rw_lock_init (&store->priv->lock);
        g_mutex_init (&store->priv->save_timeout_lock);
+       g_weak_ref_init (&store->priv->timezone_cache, NULL);
 }
 
 /**
diff --git a/calendar/libedata-cal/e-cal-backend.c b/calendar/libedata-cal/e-cal-backend.c
index c85e620..d71f207 100644
--- a/calendar/libedata-cal/e-cal-backend.c
+++ b/calendar/libedata-cal/e-cal-backend.c
@@ -182,7 +182,7 @@ dispatch_node_free (DispatchNode *dispatch_node)
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->backend, NULL);
+       g_weak_ref_clear (&signal_closure->backend);
 
        /* The icaltimezone is cached in ECalBackend's internal
         * "zone_cache" hash table and must not be freed here. */
@@ -797,7 +797,7 @@ cal_backend_add_cached_timezone (ETimezoneCache *cache,
                 * internally cached icaltimezone alive for the
                 * duration of the idle callback. */
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->backend, cache);
+               g_weak_ref_init (&signal_closure->backend, cache);
                signal_closure->cached_zone = cached_zone;
 
                main_context = e_backend_ref_main_context (E_BACKEND (cache));
diff --git a/calendar/libedata-cal/e-data-cal.c b/calendar/libedata-cal/e-data-cal.c
index 2de4323..3d34c3c 100644
--- a/calendar/libedata-cal/e-data-cal.c
+++ b/calendar/libedata-cal/e-data-cal.c
@@ -2410,6 +2410,7 @@ data_cal_finalize (GObject *object)
        g_free (priv->object_path);
 
        g_mutex_clear (&priv->sender_lock);
+       g_weak_ref_clear (&priv->backend);
        g_hash_table_destroy (priv->sender_table);
 
        if (priv->dbus_interface) {
@@ -2574,6 +2575,7 @@ e_data_cal_init (EDataCal *data_cal)
        data_cal->priv->dbus_interface = dbus_interface;
 
        g_mutex_init (&data_cal->priv->sender_lock);
+       g_weak_ref_init (&data_cal->priv->backend, NULL);
 
        data_cal->priv->sender_table = g_hash_table_new_full (
                (GHashFunc) g_str_hash,
diff --git a/camel/camel-folder.c b/camel/camel-folder.c
index 1280340..39270be 100644
--- a/camel/camel-folder.c
+++ b/camel/camel-folder.c
@@ -159,7 +159,7 @@ async_context_free (AsyncContext *async_context)
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->folder, NULL);
+       g_weak_ref_clear (&signal_closure->folder);
 
        g_free (signal_closure->folder_name);
 
@@ -2263,7 +2263,7 @@ camel_folder_delete (CamelFolder *folder)
        session = camel_service_ref_session (service);
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->folder, folder);
+       g_weak_ref_init (&signal_closure->folder, folder);
 
        /* Prioritize ahead of GTK+ redraws. */
        camel_session_idle_add (
@@ -2316,7 +2316,7 @@ camel_folder_rename (CamelFolder *folder,
        session = camel_service_ref_session (service);
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->folder, folder);
+       g_weak_ref_init (&signal_closure->folder, folder);
        signal_closure->folder_name = old_name;  /* transfer ownership */
 
        /* Prioritize ahead of GTK+ redraws. */
@@ -2380,7 +2380,7 @@ camel_folder_changed (CamelFolder *folder,
                folder->priv->pending_changes = pending_changes;
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->folder, folder);
+               g_weak_ref_init (&signal_closure->folder, folder);
 
                camel_session_idle_add (
                        session, G_PRIORITY_LOW,
diff --git a/camel/camel-service.c b/camel/camel-service.c
index 7e18212..dfa0d3e 100644
--- a/camel/camel-service.c
+++ b/camel/camel-service.c
@@ -258,7 +258,7 @@ connection_op_complete_pending (ConnectionOp *op,
 static void
 dispatch_data_free (DispatchData *dispatch_data)
 {
-       g_weak_ref_set (&dispatch_data->service, NULL);
+       g_weak_ref_clear (&dispatch_data->service);
 
        g_slice_free (DispatchData, dispatch_data);
 }
@@ -869,6 +869,8 @@ service_finalize (GObject *object)
        g_hash_table_destroy (priv->task_table);
        g_mutex_clear (&priv->task_table_lock);
 
+       g_weak_ref_clear (&priv->session);
+
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (camel_service_parent_class)->finalize (object);
 }
@@ -1089,6 +1091,7 @@ camel_service_init (CamelService *service)
 
        g_mutex_init (&service->priv->property_lock);
        g_mutex_init (&service->priv->connection_lock);
+       g_weak_ref_init (&service->priv->session, NULL);
        service->priv->status = CAMEL_SERVICE_DISCONNECTED;
 
        service->priv->proxy_resolver = g_proxy_resolver_get_default ();
@@ -1711,7 +1714,7 @@ camel_service_queue_task (CamelService *service,
        return_on_cancel = g_task_get_return_on_cancel (task);
 
        dispatch_data = g_slice_new0 (DispatchData);
-       g_weak_ref_set (&dispatch_data->service, service);
+       g_weak_ref_init (&dispatch_data->service, service);
        dispatch_data->return_on_cancel = return_on_cancel;
        dispatch_data->task_func = task_func;
 
diff --git a/camel/camel-session.c b/camel/camel-session.c
index 3f41299..907caee 100644
--- a/camel/camel-session.c
+++ b/camel/camel-session.c
@@ -137,7 +137,7 @@ async_context_free (AsyncContext *async_context)
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->session, NULL);
+       g_weak_ref_clear (&signal_closure->session);
 
        if (signal_closure->service != NULL)
                g_object_unref (signal_closure->service);
@@ -1198,7 +1198,7 @@ camel_session_user_alert (CamelSession *session,
        g_return_if_fail (message != NULL);
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->session, session);
+       g_weak_ref_init (&signal_closure->session, session);
        signal_closure->service = g_object_ref (service);
        signal_closure->alert_type = type;
        signal_closure->alert_message = g_strdup (message);
diff --git a/camel/camel-store.c b/camel/camel-store.c
index f493a6b..52fed56 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -103,7 +103,7 @@ async_context_free (AsyncContext *async_context)
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->store, NULL);
+       g_weak_ref_clear (&signal_closure->store);
 
        if (signal_closure->folder != NULL)
                g_object_unref (signal_closure->folder);
@@ -681,7 +681,7 @@ camel_store_folder_created (CamelStore *store,
        session = camel_service_ref_session (CAMEL_SERVICE (store));
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->store, store);
+       g_weak_ref_init (&signal_closure->store, store);
        signal_closure->folder_info = camel_folder_info_clone (folder_info);
 
        /* Prioritize ahead of GTK+ redraws. */
@@ -719,7 +719,7 @@ camel_store_folder_deleted (CamelStore *store,
        session = camel_service_ref_session (CAMEL_SERVICE (store));
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->store, store);
+       g_weak_ref_init (&signal_closure->store, store);
        signal_closure->folder_info = camel_folder_info_clone (folder_info);
 
        /* Prioritize ahead of GTK+ redraws. */
@@ -757,7 +757,7 @@ camel_store_folder_opened (CamelStore *store,
        session = camel_service_ref_session (CAMEL_SERVICE (store));
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->store, store);
+       g_weak_ref_init (&signal_closure->store, store);
        signal_closure->folder = g_object_ref (folder);
 
        /* Prioritize ahead of GTK+ redraws. */
@@ -798,7 +798,7 @@ camel_store_folder_renamed (CamelStore *store,
        session = camel_service_ref_session (CAMEL_SERVICE (store));
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->store, store);
+       g_weak_ref_init (&signal_closure->store, store);
        signal_closure->folder_info = camel_folder_info_clone (folder_info);
        signal_closure->folder_name = g_strdup (old_name);
 
@@ -844,7 +844,7 @@ camel_store_folder_info_stale (CamelStore *store)
                SignalClosure *signal_closure;
 
                signal_closure = g_slice_new0 (SignalClosure);
-               g_weak_ref_set (&signal_closure->store, store);
+               g_weak_ref_init (&signal_closure->store, store);
 
                camel_session_idle_add (
                        session, G_PRIORITY_LOW,
diff --git a/camel/camel-subscribable.c b/camel/camel-subscribable.c
index ba7026d..25940d2 100644
--- a/camel/camel-subscribable.c
+++ b/camel/camel-subscribable.c
@@ -58,7 +58,7 @@ async_context_free (AsyncContext *async_context)
 static void
 signal_closure_free (SignalClosure *signal_closure)
 {
-       g_weak_ref_set (&signal_closure->subscribable, NULL);
+       g_weak_ref_clear (&signal_closure->subscribable);
 
        if (signal_closure->folder_info != NULL)
                camel_folder_info_free (signal_closure->folder_info);
@@ -565,7 +565,7 @@ camel_subscribable_folder_subscribed (CamelSubscribable *subscribable,
        session = camel_service_ref_session (service);
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->subscribable, subscribable);
+       g_weak_ref_init (&signal_closure->subscribable, subscribable);
        signal_closure->folder_info = camel_folder_info_clone (folder_info);
 
        /* Prioritize ahead of GTK+ redraws. */
@@ -605,7 +605,7 @@ camel_subscribable_folder_unsubscribed (CamelSubscribable *subscribable,
        session = camel_service_ref_session (service);
 
        signal_closure = g_slice_new0 (SignalClosure);
-       g_weak_ref_set (&signal_closure->subscribable, subscribable);
+       g_weak_ref_init (&signal_closure->subscribable, subscribable);
        signal_closure->folder_info = camel_folder_info_clone (folder_info);
 
        /* Prioritize ahead of GTK+ redraws. */
diff --git a/camel/providers/imapx/camel-imapx-command.c b/camel/providers/imapx/camel-imapx-command.c
index df86fe2..4442355 100644
--- a/camel/providers/imapx/camel-imapx-command.c
+++ b/camel/providers/imapx/camel-imapx-command.c
@@ -74,7 +74,7 @@ camel_imapx_command_new (CamelIMAPXServer *is,
        /* Initialize private bits. */
        real_ic->ref_count = 1;
        real_ic->buffer = g_string_sized_new (512);
-       g_weak_ref_set (&real_ic->mailbox, mailbox);
+       g_weak_ref_init (&real_ic->mailbox, mailbox);
        g_cond_init (&real_ic->done_sync_cond);
        g_mutex_init (&real_ic->done_sync_mutex);
 
@@ -146,7 +146,7 @@ camel_imapx_command_unref (CamelIMAPXCommand *ic)
 
                g_string_free (real_ic->buffer, TRUE);
 
-               g_weak_ref_set (&real_ic->mailbox, NULL);
+               g_weak_ref_clear (&real_ic->mailbox);
 
                g_clear_error (&real_ic->error);
 
diff --git a/camel/providers/imapx/camel-imapx-conn-manager.c 
b/camel/providers/imapx/camel-imapx-conn-manager.c
index 788a11d..b6298d0 100644
--- a/camel/providers/imapx/camel-imapx-conn-manager.c
+++ b/camel/providers/imapx/camel-imapx-conn-manager.c
@@ -409,6 +409,7 @@ imapx_conn_manager_finalize (GObject *object)
        priv = CAMEL_IMAPX_CONN_MANAGER_GET_PRIVATE (object);
 
        g_rw_lock_clear (&priv->rw_lock);
+       g_weak_ref_clear (&priv->store);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (camel_imapx_conn_manager_parent_class)->finalize (object);
@@ -446,6 +447,7 @@ camel_imapx_conn_manager_init (CamelIMAPXConnManager *con_man)
        con_man->priv = CAMEL_IMAPX_CONN_MANAGER_GET_PRIVATE (con_man);
 
        g_rw_lock_init (&con_man->priv->rw_lock);
+       g_weak_ref_init (&con_man->priv->store, NULL);
 }
 
 static void
diff --git a/camel/providers/imapx/camel-imapx-folder.c b/camel/providers/imapx/camel-imapx-folder.c
index 3f156f1..296226a 100644
--- a/camel/providers/imapx/camel-imapx-folder.c
+++ b/camel/providers/imapx/camel-imapx-folder.c
@@ -216,6 +216,8 @@ imapx_folder_finalize (GObject *object)
        g_hash_table_destroy (folder->priv->move_to_real_junk_uids);
        g_hash_table_destroy (folder->priv->move_to_real_trash_uids);
 
+       g_weak_ref_clear (&folder->priv->mailbox);
+
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (camel_imapx_folder_parent_class)->finalize (object);
 }
@@ -1411,6 +1413,11 @@ camel_imapx_folder_init (CamelIMAPXFolder *imapx_folder)
        g_mutex_init (&imapx_folder->priv->move_to_hash_table_lock);
        imapx_folder->priv->move_to_real_junk_uids = move_to_real_junk_uids;
        imapx_folder->priv->move_to_real_trash_uids = move_to_real_trash_uids;
+
+       g_mutex_init (&imapx_folder->search_lock);
+       g_mutex_init (&imapx_folder->stream_lock);
+
+       g_weak_ref_init (&imapx_folder->priv->mailbox, NULL);
 }
 
 CamelFolder *
@@ -1487,8 +1494,6 @@ camel_imapx_folder_new (CamelStore *store,
        camel_object_state_read (CAMEL_OBJECT (folder));
 
        imapx_folder->search = camel_imapx_search_new (CAMEL_IMAPX_STORE (store));
-       g_mutex_init (&imapx_folder->search_lock);
-       g_mutex_init (&imapx_folder->stream_lock);
 
        if (filter_all)
                folder->folder_flags |= CAMEL_FOLDER_FILTER_RECENT;
diff --git a/camel/providers/imapx/camel-imapx-search.c b/camel/providers/imapx/camel-imapx-search.c
index af59e4f..5af9052 100644
--- a/camel/providers/imapx/camel-imapx-search.c
+++ b/camel/providers/imapx/camel-imapx-search.c
@@ -92,6 +92,19 @@ imapx_search_dispose (GObject *object)
        G_OBJECT_CLASS (camel_imapx_search_parent_class)->dispose (object);
 }
 
+static void
+imapx_search_finalize (GObject *object)
+{
+       CamelIMAPXSearchPrivate *priv;
+
+       priv = CAMEL_IMAPX_SEARCH_GET_PRIVATE (object);
+
+       g_weak_ref_clear (&priv->imapx_store);
+
+       /* Chain up to parent's finalize() method. */
+       G_OBJECT_CLASS (camel_imapx_search_parent_class)->finalize (object);
+}
+
 static CamelSExpResult *
 imapx_search_result_match_all (CamelSExp *sexp,
                                CamelFolderSearch *search)
@@ -585,6 +598,7 @@ camel_imapx_search_class_init (CamelIMAPXSearchClass *class)
        object_class->set_property = imapx_search_set_property;
        object_class->get_property = imapx_search_get_property;
        object_class->dispose = imapx_search_dispose;
+       object_class->finalize = imapx_search_finalize;
 
        search_class = CAMEL_FOLDER_SEARCH_CLASS (class);
        search_class->match_all = imapx_search_match_all;
@@ -609,6 +623,8 @@ camel_imapx_search_init (CamelIMAPXSearch *search)
 {
        search->priv = CAMEL_IMAPX_SEARCH_GET_PRIVATE (search);
        search->priv->local_data_search = NULL;
+
+       g_weak_ref_init (&search->priv->imapx_store, NULL);
 }
 
 /**
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 25b52af..b2522f2 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -561,7 +561,7 @@ imapx_weak_ref_new (gpointer object)
         *     proves useful elsewhere.  Based on e_weak_ref_new(). */
 
        weak_ref = g_slice_new0 (GWeakRef);
-       g_weak_ref_set (weak_ref, object);
+       g_weak_ref_init (weak_ref, object);
 
        return weak_ref;
 }
@@ -574,7 +574,7 @@ imapx_weak_ref_free (GWeakRef *weak_ref)
        /* XXX Might want to expose this in Camel's public API if it
         *     proves useful elsewhere.  Based on e_weak_ref_free(). */
 
-       g_weak_ref_set (weak_ref, NULL);
+       g_weak_ref_clear (weak_ref);
        g_slice_free (GWeakRef, weak_ref);
 }
 
@@ -7762,6 +7762,12 @@ imapx_server_finalize (GObject *object)
        g_mutex_clear (&is->priv->shutdown_error_lock);
        g_clear_error (&is->priv->shutdown_error);
 
+       g_weak_ref_clear (&is->priv->store);
+       g_weak_ref_clear (&is->priv->parser_cancellable);
+       g_weak_ref_clear (&is->priv->select_mailbox);
+       g_weak_ref_clear (&is->priv->select_closing);
+       g_weak_ref_clear (&is->priv->select_pending);
+
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (camel_imapx_server_parent_class)->finalize (object);
 }
@@ -7888,6 +7894,12 @@ camel_imapx_server_init (CamelIMAPXServer *is)
        g_mutex_init (&is->priv->jobs_prop_lock);
        g_mutex_init (&is->priv->shutdown_error_lock);
 
+       g_weak_ref_init (&is->priv->store, NULL);
+       g_weak_ref_init (&is->priv->parser_cancellable, NULL);
+       g_weak_ref_init (&is->priv->select_mailbox, NULL);
+       g_weak_ref_init (&is->priv->select_closing, NULL);
+       g_weak_ref_init (&is->priv->select_pending, NULL);
+
        is->priv->jobs_prop_folder_paths = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
        is->priv->jobs_prop_command_count = 0;
        is->priv->jobs_prop_expensive_command_count = 0;
diff --git a/libebackend/e-authentication-mediator.c b/libebackend/e-authentication-mediator.c
index dc1879e..7e375a0 100644
--- a/libebackend/e-authentication-mediator.c
+++ b/libebackend/e-authentication-mediator.c
@@ -140,7 +140,7 @@ thread_closure_new (EAuthenticationMediator *mediator)
 
        closure = g_slice_new0 (ThreadClosure);
        closure->ref_count = 1;
-       g_weak_ref_set (&closure->mediator, mediator);
+       g_weak_ref_init (&closure->mediator, mediator);
        closure->main_context = g_main_context_new ();
        /* It's important to pass 'is_running=FALSE' here because
         * we wait for the main loop to start running as a way of
@@ -170,7 +170,7 @@ thread_closure_unref (ThreadClosure *closure)
        g_return_if_fail (closure->ref_count > 0);
 
        if (g_atomic_int_dec_and_test (&closure->ref_count)) {
-               g_weak_ref_set (&closure->mediator, NULL);
+               g_weak_ref_clear (&closure->mediator);
                g_main_context_unref (closure->main_context);
                g_main_loop_unref (closure->main_loop);
                g_cond_clear (&closure->main_loop_cond);
diff --git a/libebackend/e-collection-backend.c b/libebackend/e-collection-backend.c
index 656faff..76cc359 100644
--- a/libebackend/e-collection-backend.c
+++ b/libebackend/e-collection-backend.c
@@ -660,6 +660,8 @@ collection_backend_finalize (GObject *object)
        g_hash_table_destroy (priv->unclaimed_resources);
        g_mutex_clear (&priv->unclaimed_resources_lock);
 
+       g_weak_ref_clear (&priv->server);
+
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_collection_backend_parent_class)->finalize (object);
 }
@@ -1098,6 +1100,7 @@ e_collection_backend_init (ECollectionBackend *backend)
        g_mutex_init (&backend->priv->property_lock);
        backend->priv->unclaimed_resources = unclaimed_resources;
        g_mutex_init (&backend->priv->unclaimed_resources_lock);
+       g_weak_ref_init (&backend->priv->server, NULL);
 }
 
 /**
diff --git a/libebackend/e-server-side-source.c b/libebackend/e-server-side-source.c
index dfa20dc..e191f4c 100644
--- a/libebackend/e-server-side-source.c
+++ b/libebackend/e-server-side-source.c
@@ -705,6 +705,8 @@ server_side_source_finalize (GObject *object)
        g_free (priv->file_contents);
        g_free (priv->write_directory);
 
+       g_weak_ref_clear (&priv->oauth2_support);
+
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_server_side_source_parent_class)->finalize (object);
 }
@@ -1346,6 +1348,8 @@ e_server_side_source_init (EServerSideSource *source)
        source->priv->write_directory = g_strdup (user_dir);
 
        source->priv->auth_session_type = E_TYPE_AUTHENTICATION_SESSION;
+
+       g_weak_ref_init (&source->priv->oauth2_support, NULL);
 }
 
 /**
diff --git a/libedataserver/e-data-server-util.c b/libedataserver/e-data-server-util.c
index 36e80ff..dcd1a63 100644
--- a/libedataserver/e-data-server-util.c
+++ b/libedataserver/e-data-server-util.c
@@ -1133,7 +1133,7 @@ e_weak_ref_new (gpointer object)
        GWeakRef *weak_ref;
 
        weak_ref = g_slice_new0 (GWeakRef);
-       g_weak_ref_set (weak_ref, object);
+       g_weak_ref_init (weak_ref, object);
 
        return weak_ref;
 }
@@ -1151,7 +1151,7 @@ e_weak_ref_free (GWeakRef *weak_ref)
 {
        g_return_if_fail (weak_ref != NULL);
 
-       g_weak_ref_set (weak_ref, NULL);
+       g_weak_ref_clear (weak_ref);
        g_slice_free (GWeakRef, weak_ref);
 }
 
diff --git a/libedataserver/e-source-extension.c b/libedataserver/e-source-extension.c
index ab8d9da..d84fe6f 100644
--- a/libedataserver/e-source-extension.c
+++ b/libedataserver/e-source-extension.c
@@ -105,6 +105,19 @@ source_extension_dispose (GObject *object)
 }
 
 static void
+source_extension_finalize (GObject *object)
+{
+       ESourceExtensionPrivate *priv;
+
+       priv = E_SOURCE_EXTENSION_GET_PRIVATE (object);
+
+       g_weak_ref_clear (&priv->source);
+
+       /* Chain up to parent's finalize() method. */
+       G_OBJECT_CLASS (e_source_extension_parent_class)->finalize (object);
+}
+
+static void
 source_extension_notify (GObject *object,
                          GParamSpec *pspec)
 {
@@ -132,6 +145,7 @@ e_source_extension_class_init (ESourceExtensionClass *class)
        object_class->set_property = source_extension_set_property;
        object_class->get_property = source_extension_get_property;
        object_class->dispose = source_extension_dispose;
+       object_class->finalize = source_extension_finalize;
        object_class->notify = source_extension_notify;
 
        g_object_class_install_property (
@@ -151,6 +165,7 @@ static void
 e_source_extension_init (ESourceExtension *extension)
 {
        extension->priv = E_SOURCE_EXTENSION_GET_PRIVATE (extension);
+       g_weak_ref_init (&extension->priv->source, NULL);
 }
 
 /**
diff --git a/libedataserver/e-source-registry.c b/libedataserver/e-source-registry.c
index 9efa128..bf3023c 100644
--- a/libedataserver/e-source-registry.c
+++ b/libedataserver/e-source-registry.c
@@ -269,7 +269,7 @@ create_context_free (CreateContext *create_context)
 static void
 source_closure_free (SourceClosure *closure)
 {
-       g_weak_ref_set (&closure->registry, NULL);
+       g_weak_ref_clear (&closure->registry);
        g_object_unref (closure->source);
 
        g_slice_free (SourceClosure, closure);
@@ -632,7 +632,7 @@ source_registry_source_changed_cb (ESource *source,
        SourceClosure *closure;
 
        closure = g_slice_new0 (SourceClosure);
-       g_weak_ref_set (&closure->registry, registry);
+       g_weak_ref_init (&closure->registry, registry);
        closure->source = g_object_ref (source);
 
        idle_source = g_idle_source_new ();
@@ -653,7 +653,7 @@ source_registry_source_notify_enabled_cb (ESource *source,
        SourceClosure *closure;
 
        closure = g_slice_new0 (SourceClosure);
-       g_weak_ref_set (&closure->registry, registry);
+       g_weak_ref_init (&closure->registry, registry);
        closure->source = g_object_ref (source);
 
        idle_source = g_idle_source_new ();
@@ -790,7 +790,7 @@ source_registry_object_added_by_owner (ESourceRegistry *registry,
        /* Schedule a callback on the ESourceRegistry's GMainContext. */
 
        closure = g_slice_new0 (SourceClosure);
-       g_weak_ref_set (&closure->registry, registry);
+       g_weak_ref_init (&closure->registry, registry);
        closure->source = g_object_ref (source);
 
        idle_source = g_idle_source_new ();
@@ -903,7 +903,7 @@ source_registry_object_removed_by_owner (ESourceRegistry *registry,
        /* Schedule a callback on the ESourceRegistry's GMainContext. */
 
        closure = g_slice_new0 (SourceClosure);
-       g_weak_ref_set (&closure->registry, registry);
+       g_weak_ref_init (&closure->registry, registry);
        closure->source = g_object_ref (source);
 
        idle_source = g_idle_source_new ();
@@ -974,7 +974,7 @@ source_registry_name_appeared (ESourceRegistry *registry)
                        continue;
 
                closure = g_slice_new0 (SourceClosure);
-               g_weak_ref_set (&closure->registry, registry);
+               g_weak_ref_init (&closure->registry, registry);
                closure->source = g_object_ref (source);
 
                idle_source = g_idle_source_new ();
diff --git a/modules/yahoo-backend/module-yahoo-backend.c b/modules/yahoo-backend/module-yahoo-backend.c
index 5bd3aa4..22ff7fb 100644
--- a/modules/yahoo-backend/module-yahoo-backend.c
+++ b/modules/yahoo-backend/module-yahoo-backend.c
@@ -337,10 +337,24 @@ yahoo_backend_child_added (ECollectionBackend *backend,
 }
 
 static void
+yahoo_backend_finalize (GObject *object)
+{
+       EYahooBackend *backend = E_YAHOO_BACKEND (object);
+
+       g_weak_ref_clear (&backend->mail_identity_source);
+
+       G_OBJECT_CLASS (e_yahoo_backend_parent_class)->finalize (object);
+}
+
+static void
 e_yahoo_backend_class_init (EYahooBackendClass *class)
 {
+       GObjectClass *object_class;
        ECollectionBackendClass *backend_class;
 
+       object_class = G_OBJECT_CLASS (class);
+       object_class->finalize = yahoo_backend_finalize;
+
        backend_class = E_COLLECTION_BACKEND_CLASS (class);
        backend_class->populate = yahoo_backend_populate;
        backend_class->dup_resource_id = yahoo_backend_dup_resource_id;
@@ -355,6 +369,7 @@ e_yahoo_backend_class_finalize (EYahooBackendClass *class)
 static void
 e_yahoo_backend_init (EYahooBackend *backend)
 {
+       g_weak_ref_init (&backend->mail_identity_source, NULL);
 }
 
 static void



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