From: Matthew Barnes Date: Sun, 7 Oct 2012 15:02:53 +0000 (-0400) Subject: Add e_book_backend_list_views(). X-Git-Tag: upstream/3.7.4~376 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=698ea69da9f95f75c7dcd493ed1acbc24e7a7f59;p=platform%2Fupstream%2Fevolution-data-server.git Add e_book_backend_list_views(). Alternative to e_book_backend_foreach_view(). --- diff --git a/addressbook/libedata-book/e-book-backend.c b/addressbook/libedata-book/e-book-backend.c index 28ec05e..e2e653f 100644 --- a/addressbook/libedata-book/e-book-backend.c +++ b/addressbook/libedata-book/e-book-backend.c @@ -824,6 +824,45 @@ e_book_backend_remove_client (EBookBackend *backend, } /** + * e_book_backend_list_views: + * @backend: an #EBookBackend + * + * Returns a list of #EDataBookView instances added with + * e_book_backend_add_view(). + * + * The views returned in the list are referenced for thread-safety. + * They must each be unreferenced with g_object_unref() when finished + * with them. Free the returned list itself with g_list_free(). + * + * An easy way to free the list properly in one step is as follows: + * + * |[ + * g_list_free_full (list, g_object_unref); + * ]| + * + * Returns: a list of book views + * + * Since: 3.8 + **/ +GList * +e_book_backend_list_views (EBookBackend *backend) +{ + GList *list; + + g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), NULL); + + g_mutex_lock (backend->priv->views_mutex); + + /* XXX Use g_list_copy_deep() once we require GLib >= 2.34. */ + list = g_list_copy (backend->priv->views); + g_list_foreach (list, (GFunc) g_object_ref, NULL); + + g_mutex_unlock (backend->priv->views_mutex); + + return list; +} + +/** * e_book_backend_foreach_view: * @backend: an #EBookBackend * @callback: callback to call diff --git a/addressbook/libedata-book/e-book-backend.h b/addressbook/libedata-book/e-book-backend.h index 32b4d0c..fcdafd9 100644 --- a/addressbook/libedata-book/e-book-backend.h +++ b/addressbook/libedata-book/e-book-backend.h @@ -305,6 +305,7 @@ void e_book_backend_add_view (EBookBackend *backend, EDataBookView *view); void e_book_backend_remove_view (EBookBackend *backend, EDataBookView *view); +GList * e_book_backend_list_views (EBookBackend *backend); void e_book_backend_foreach_view (EBookBackend *backend, gboolean (*callback) (EDataBookView *view, gpointer user_data), diff --git a/docs/reference/addressbook/libedata-book/libedata-book-sections.txt b/docs/reference/addressbook/libedata-book/libedata-book-sections.txt index e8c3507..8fa4904 100644 --- a/docs/reference/addressbook/libedata-book/libedata-book-sections.txt +++ b/docs/reference/addressbook/libedata-book/libedata-book-sections.txt @@ -35,6 +35,7 @@ e_book_backend_start_view e_book_backend_stop_view e_book_backend_add_view e_book_backend_remove_view +e_book_backend_list_views e_book_backend_foreach_view e_book_backend_notify_update e_book_backend_notify_remove