summaryrefslogtreecommitdiff
path: root/addressbook
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2015-04-08 15:58:59 +0200
committerMilan Crha <mcrha@redhat.com>2015-04-08 15:58:59 +0200
commit57df21826b938d8cffeddb34c51038c0a2aa53ec (patch)
tree329980ed7a6443d85bd43b9bc198418cf9a04367 /addressbook
parent2fdef2430e4cb0054c8997c6ab2c663925411a30 (diff)
downloadevolution-data-server-57df21826b938d8cffeddb34c51038c0a2aa53ec.tar.gz
Bug 723260 - Use a strong reference to client in EBook/CalClientView
Diffstat (limited to 'addressbook')
-rw-r--r--addressbook/libebook/e-book-client-view.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/addressbook/libebook/e-book-client-view.c b/addressbook/libebook/e-book-client-view.c
index 10a50786f..039361734 100644
--- a/addressbook/libebook/e-book-client-view.c
+++ b/addressbook/libebook/e-book-client-view.c
@@ -49,7 +49,7 @@
typedef struct _SignalClosure SignalClosure;
struct _EBookClientViewPrivate {
- GWeakRef client;
+ EBookClient *client;
GDBusProxy *dbus_proxy;
GDBusConnection *connection;
gchar *object_path;
@@ -672,8 +672,9 @@ book_client_view_set_client (EBookClientView *client_view,
EBookClient *client)
{
g_return_if_fail (E_IS_BOOK_CLIENT (client));
+ g_return_if_fail (client_view->priv->client == NULL);
- g_weak_ref_set (&client_view->priv->client, client);
+ client_view->priv->client = g_object_ref (client);
}
static void
@@ -783,7 +784,7 @@ book_client_view_dispose (GObject *object)
priv = E_BOOK_CLIENT_VIEW_GET_PRIVATE (object);
- g_weak_ref_set (&priv->client, NULL);
+ g_clear_object (&priv->client);
if (priv->connection != NULL) {
g_object_unref (priv->connection);
@@ -840,7 +841,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);
+ g_clear_object (&priv->client);
/* Chain up to parent's finalize() method. */
G_OBJECT_CLASS (e_book_client_view_parent_class)->finalize (object);
@@ -859,7 +860,7 @@ book_client_view_initable_init (GInitable *initable,
priv = E_BOOK_CLIENT_VIEW_GET_PRIVATE (initable);
- book_client = g_weak_ref_get (&priv->client);
+ book_client = priv->client ? g_object_ref (priv->client) : NULL;
if (book_client == NULL) {
g_set_error (
error, E_CLIENT_ERROR,
@@ -1054,7 +1055,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);
+ client_view->priv->client = NULL;
}
/**
@@ -1075,7 +1076,10 @@ e_book_client_view_ref_client (EBookClientView *client_view)
{
g_return_val_if_fail (E_IS_BOOK_CLIENT_VIEW (client_view), NULL);
- return g_weak_ref_get (&client_view->priv->client);
+ if (!client_view->priv->client)
+ return NULL;
+
+ return g_object_ref (client_view->priv->client);
}
/**