[evolution-data-server] Remove EBackend::last-client-gone signal.



commit 96312ea1c0cccd3003a9657fb9f18345594ff447
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon Apr 16 10:03:10 2012 -0400

    Remove EBackend::last-client-gone signal.
    
    The signal is no longer needed due to the previous EDataFactory commit.
    
    I also removed a couple unused "last_client_gone" function pointers in
    EBookBackendClass and ECalBackendClass just to get rid of all traces of
    the signal (and since I'm on an ABI breaking spree anyway).
    
    The API breakage should be contained within E-D-S.  The ABI breakage
    will affect 3rd party extensions so the libedata-book and libedata-cal
    shared object names have been bumped for good measure.

 addressbook/libedata-book/e-book-backend.c         |   11 +-----
 addressbook/libedata-book/e-book-backend.h         |    1 -
 calendar/libedata-cal/e-cal-backend.c              |   30 ++++++-----------
 calendar/libedata-cal/e-cal-backend.h              |    3 --
 .../reference/libebackend/libebackend-sections.txt |    1 -
 libebackend/e-backend.c                            |   34 --------------------
 libebackend/e-backend.h                            |    4 --
 7 files changed, 13 insertions(+), 71 deletions(-)
---
diff --git a/addressbook/libedata-book/e-book-backend.c b/addressbook/libedata-book/e-book-backend.c
index 4787c6f..22c886a 100644
--- a/addressbook/libedata-book/e-book-backend.c
+++ b/addressbook/libedata-book/e-book-backend.c
@@ -776,22 +776,15 @@ e_book_backend_remove_client (EBookBackend *backend,
 	g_return_if_fail (E_IS_BOOK_BACKEND (backend));
 	g_return_if_fail (E_IS_DATA_BOOK (book));
 
-	/* up our backend's refcount here so that last_client_gone
-	 * doesn't end up unreffing us (while we're holding the
-	 * lock) */
+	/* Make sure the backend stays alive while holding the mutex. */
 	g_object_ref (backend);
 
 	/* Disconnect */
 	g_mutex_lock (backend->priv->clients_mutex);
 	backend->priv->clients = g_slist_remove (backend->priv->clients, book);
 
-	/* When all clients go away, notify the parent factory about it so that
-	 * it may decide whether to kill the backend or not.
-	 */
-	if (!backend->priv->clients) {
+	if (backend->priv->clients == NULL)
 		backend->priv->opening = FALSE;
-		e_backend_last_client_gone (E_BACKEND (backend));
-	}
 
 	g_mutex_unlock (backend->priv->clients_mutex);
 
diff --git a/addressbook/libedata-book/e-book-backend.h b/addressbook/libedata-book/e-book-backend.h
index 7973876..78d1aae 100644
--- a/addressbook/libedata-book/e-book-backend.h
+++ b/addressbook/libedata-book/e-book-backend.h
@@ -164,7 +164,6 @@ struct _EBookBackendClass {
 	void    (* notify_update)               (EBookBackend *backend, const EContact *contact);
 
 	/* Notification signals */
-	void	(* last_client_gone)		(EBookBackend *backend);
 	void	(* sync)			(EBookBackend *backend);
 };
 
diff --git a/calendar/libedata-cal/e-cal-backend.c b/calendar/libedata-cal/e-cal-backend.c
index d956ae3..441ce4e 100644
--- a/calendar/libedata-cal/e-cal-backend.c
+++ b/calendar/libedata-cal/e-cal-backend.c
@@ -580,33 +580,25 @@ e_cal_backend_remove_client_private (ECalBackend *backend,
                                      EDataCal *cal,
                                      gboolean weak_unref)
 {
-	ECalBackendPrivate *priv;
-
-	/* XXX this needs a bit more thinking wrt the mutex - we
-	 * should be holding it when we check to see if clients is
-	 * NULL */
-	g_return_if_fail (backend != NULL);
 	g_return_if_fail (E_IS_CAL_BACKEND (backend));
-	g_return_if_fail (cal != NULL);
 	g_return_if_fail (E_IS_DATA_CAL (cal));
 
-	priv = backend->priv;
-
 	if (weak_unref)
 		g_object_weak_unref (G_OBJECT (cal), cal_destroy_cb, backend);
 
+	/* Make sure the backend stays alive while holding the mutex. */
+	g_object_ref (backend);
+
 	/* Disconnect */
-	g_mutex_lock (priv->clients_mutex);
-	priv->clients = g_slist_remove (priv->clients, cal);
-	g_mutex_unlock (priv->clients_mutex);
+	g_mutex_lock (backend->priv->clients_mutex);
+	backend->priv->clients = g_slist_remove (backend->priv->clients, cal);
 
-	/* When all clients go away, notify the parent factory about it so that
-	 * it may decide whether to kill the backend or not.
-	 */
-	if (!priv->clients) {
-		priv->opening = FALSE;
-		e_backend_last_client_gone (E_BACKEND (backend));
-	}
+	if (backend->priv->clients == NULL)
+		backend->priv->opening = FALSE;
+
+	g_mutex_unlock (backend->priv->clients_mutex);
+
+	g_object_unref (backend);
 }
 
 /**
diff --git a/calendar/libedata-cal/e-cal-backend.h b/calendar/libedata-cal/e-cal-backend.h
index 20e99d0..542e614 100644
--- a/calendar/libedata-cal/e-cal-backend.h
+++ b/calendar/libedata-cal/e-cal-backend.h
@@ -173,9 +173,6 @@ struct _ECalBackendClass {
 	void	(* start_view)			(ECalBackend *backend, EDataCalView *view);
 	void	(* stop_view)			(ECalBackend *backend, EDataCalView *view);
 
-	/* Notification signals */
-	void	(* last_client_gone)		(ECalBackend *backend);
-
 	/* Internal methods for use only in the pcs */
 	icaltimezone *(* internal_get_timezone) (ECalBackend *backend, const gchar *tzid);
 };
diff --git a/docs/reference/libebackend/libebackend-sections.txt b/docs/reference/libebackend/libebackend-sections.txt
index bf5367f..e9fae05 100644
--- a/docs/reference/libebackend/libebackend-sections.txt
+++ b/docs/reference/libebackend/libebackend-sections.txt
@@ -5,7 +5,6 @@ EBackend
 e_backend_get_online
 e_backend_set_online
 e_backend_get_source
-e_backend_last_client_gone
 <SUBSECTION Standard>
 E_BACKEND
 E_IS_BACKEND
diff --git a/libebackend/e-backend.c b/libebackend/e-backend.c
index b28ce39..3d25f85 100644
--- a/libebackend/e-backend.c
+++ b/libebackend/e-backend.c
@@ -51,13 +51,6 @@ enum {
 	PROP_SOURCE
 };
 
-enum {
-	LAST_CLIENT_GONE,
-	LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
 G_DEFINE_ABSTRACT_TYPE (EBackend, e_backend, G_TYPE_OBJECT)
 
 static void
@@ -186,15 +179,6 @@ e_backend_class_init (EBackendClass *class)
 			G_PARAM_READWRITE |
 			G_PARAM_CONSTRUCT_ONLY |
 			G_PARAM_STATIC_STRINGS));
-
-	signals[LAST_CLIENT_GONE] = g_signal_new (
-		"last-client-gone",
-		G_OBJECT_CLASS_TYPE (object_class),
-		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET (EBackendClass, last_client_gone),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__VOID,
-		G_TYPE_NONE, 0);
 }
 
 static void
@@ -267,21 +251,3 @@ e_backend_get_source (EBackend *backend)
 	return backend->priv->source;
 }
 
-/**
- * e_backend_last_client_gone:
- * @backend: an #EBackend
- *
- * Emits the #EBackend::last-client-gone signal to indicate the last
- * client connection to @backend has been closed.  The @backend may be
- * finalized after a short period to reclaim resources if no new client
- * connections are established.
- *
- * Since: 3.4
- **/
-void
-e_backend_last_client_gone (EBackend *backend)
-{
-	g_return_if_fail (E_IS_BACKEND (backend));
-
-	g_signal_emit (backend, signals[LAST_CLIENT_GONE], 0);
-}
diff --git a/libebackend/e-backend.h b/libebackend/e-backend.h
index 2649aee..a806818 100644
--- a/libebackend/e-backend.h
+++ b/libebackend/e-backend.h
@@ -62,9 +62,6 @@ struct _EBackend {
 struct _EBackendClass {
 	GObjectClass parent_class;
 
-	/* Signals */
-	void		(*last_client_gone)	(EBackend *backend);
-
 	gpointer reserved[16];
 };
 
@@ -73,7 +70,6 @@ gboolean	e_backend_get_online		(EBackend *backend);
 void		e_backend_set_online		(EBackend *backend,
 						 gboolean online);
 ESource *	e_backend_get_source		(EBackend *backend);
-void		e_backend_last_client_gone	(EBackend *backend);
 
 G_END_DECLS
 



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