[evolution-data-server] Bug 723260 - Use a strong reference to client in EBook/CalClientView
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug 723260 - Use a strong reference to client in EBook/CalClientView
- Date: Wed, 8 Apr 2015 13:58:58 +0000 (UTC)
commit 57df21826b938d8cffeddb34c51038c0a2aa53ec
Author: Milan Crha <mcrha redhat com>
Date: Wed Apr 8 15:58:59 2015 +0200
Bug 723260 - Use a strong reference to client in EBook/CalClientView
addressbook/libebook/e-book-client-view.c | 18 +++++++++++-------
calendar/libecal/e-cal-client-view.c | 18 +++++++++++-------
2 files changed, 22 insertions(+), 14 deletions(-)
---
diff --git a/addressbook/libebook/e-book-client-view.c b/addressbook/libebook/e-book-client-view.c
index 10a5078..0393617 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);
}
/**
diff --git a/calendar/libecal/e-cal-client-view.c b/calendar/libecal/e-cal-client-view.c
index be18c4a..00ab084 100644
--- a/calendar/libecal/e-cal-client-view.c
+++ b/calendar/libecal/e-cal-client-view.c
@@ -49,7 +49,7 @@
typedef struct _SignalClosure SignalClosure;
struct _ECalClientViewPrivate {
- GWeakRef client;
+ ECalClient *client;
GDBusProxy *dbus_proxy;
GDBusConnection *connection;
gchar *object_path;
@@ -509,8 +509,9 @@ cal_client_view_set_client (ECalClientView *client_view,
ECalClient *client)
{
g_return_if_fail (E_IS_CAL_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
@@ -601,7 +602,7 @@ cal_client_view_dispose (GObject *object)
priv = E_CAL_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);
@@ -653,7 +654,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);
+ g_clear_object (&priv->client);
/* Chain up to parent's finalize() method. */
G_OBJECT_CLASS (e_cal_client_view_parent_class)->finalize (object);
@@ -672,7 +673,7 @@ cal_client_view_initable_init (GInitable *initable,
priv = E_CAL_CLIENT_VIEW_GET_PRIVATE (initable);
- cal_client = g_weak_ref_get (&priv->client);
+ cal_client = priv->client ? g_object_ref (priv->client) : NULL;
if (cal_client == NULL) {
g_set_error (
error, E_CLIENT_ERROR,
@@ -877,7 +878,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);
+ client_view->priv->client = NULL;
}
/**
@@ -898,7 +899,10 @@ e_cal_client_view_ref_client (ECalClientView *client_view)
{
g_return_val_if_fail (E_IS_CAL_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);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]