Accepting request 160753 from GNOME:Factory

Update to 3.8.0 (forwarded request 160734 from dimstar)

OBS-URL: https://build.opensuse.org/request/show/160753
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/evolution-data-server?expand=0&rev=115
This commit is contained in:
Stephan Kulow 2013-04-03 21:34:33 +00:00 committed by Git OBS Bridge
commit a0762a3bfc
11 changed files with 297 additions and 1268 deletions

View File

@ -1,8 +1,8 @@
libcamel-1_2-40 libcamel-1_2-43
libebackend-1_2-5 libebackend-1_2-6
libebook-1_2-14 libebook-1_2-14
libebook-contacts-1_2-0
libecal-1_2-15 libecal-1_2-15
libedata-book-1_2-15 libedata-book-1_2-17
libedata-cal-1_2-18 libedata-cal-1_2-20
libedataserver-1_2-17 libedataserver-1_2-17
libedataserverui-3_0-4

View File

@ -1,249 +0,0 @@
From 7c52fbd81093c1264e3d8aa6cdcf5c8bdc7b1772 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Fri, 25 Jan 2013 16:27:55 +0000
Subject: EGdbusTemplates: Address crash on operation cancel
In situations when a synchronous operation was cancelled, but the response
was already piled in main context the client could receive two replies, one
from the reply, the other from the cancelled operation, effectively accessing
invalid memory in the second response. This may address also other similar
situations caused by cancelled operations.
---
(limited to 'libedataserver/e-gdbus-templates.c')
diff --git a/libedataserver/e-gdbus-templates.c b/libedataserver/e-gdbus-templates.c
index 60306be..ef3e476 100644
--- a/libedataserver/e-gdbus-templates.c
+++ b/libedataserver/e-gdbus-templates.c
@@ -844,6 +844,7 @@ e_gdbus_complete_sync_method_uint (gpointer object,
typedef struct _AsyncOpData
{
+ gint ref_count;
EGdbusAsyncOpKeeper *proxy;
guint opid;
@@ -871,27 +872,37 @@ async_op_data_free (AsyncOpData *op_data)
g_return_if_fail (op_data != NULL);
+ pending_ops = e_gdbus_async_op_keeper_get_pending_ops (op_data->proxy);
+
if (op_data->cancel_idle_id) {
GError *error = NULL;
g_source_remove (op_data->cancel_idle_id);
op_data->cancel_idle_id = 0;
+ if (pending_ops)
+ g_hash_table_remove (pending_ops, GUINT_TO_POINTER (op_data->opid));
+
if (!e_gdbus_async_op_keeper_cancel_op_sync (op_data->proxy, op_data->opid, NULL, &error)) {
g_debug ("%s: Failed to cancel operation: %s\n", G_STRFUNC, error ? error->message : "Unknown error");
g_clear_error (&error);
}
+ } else if (pending_ops) {
+ g_hash_table_remove (pending_ops, GUINT_TO_POINTER (op_data->opid));
}
if (op_data->cancellable) {
- if (op_data->cancel_id)
+ if (op_data->cancel_id) {
g_cancellable_disconnect (op_data->cancellable, op_data->cancel_id);
+ op_data->cancel_id = 0;
+ }
g_object_unref (op_data->cancellable);
+ op_data->cancellable = NULL;
}
- pending_ops = e_gdbus_async_op_keeper_get_pending_ops (E_GDBUS_ASYNC_OP_KEEPER (op_data->proxy));
- if (pending_ops)
- g_hash_table_remove (pending_ops, GUINT_TO_POINTER (op_data->opid));
+ if (!g_atomic_int_dec_and_test (&op_data->ref_count))
+ return;
+
g_object_unref (op_data->proxy);
switch (op_data->result_type) {
@@ -919,6 +930,7 @@ async_op_complete (AsyncOpData *op_data,
g_return_if_fail (op_data != NULL);
+ g_atomic_int_inc (&op_data->ref_count);
simple = g_simple_async_result_new (G_OBJECT (op_data->proxy), op_data->async_callback, op_data->async_user_data, op_data->async_source_tag);
g_simple_async_result_set_op_res_gpointer (simple, op_data, (GDestroyNotify) async_op_data_free);
if (error)
@@ -932,13 +944,43 @@ async_op_complete (AsyncOpData *op_data,
g_object_unref (simple);
}
+typedef struct _CancelData
+{
+ EGdbusAsyncOpKeeper *proxy;
+ guint opid;
+ AsyncOpData *op_data;
+} CancelData;
+
+static void
+cancel_data_free (gpointer ptr)
+{
+ CancelData *cd = ptr;
+
+ if (!cd)
+ return;
+
+ g_object_unref (cd->proxy);
+ g_free (cd);
+}
+
static gboolean
e_gdbus_op_cancelled_idle_cb (gpointer user_data)
{
- AsyncOpData *op_data = user_data;
+ CancelData *cd = user_data;
+ AsyncOpData *op_data;
+ GHashTable *pending_ops;
GCancellable *cancellable;
GError *error = NULL;
+ g_return_val_if_fail (cd != NULL, FALSE);
+
+ pending_ops = e_gdbus_async_op_keeper_get_pending_ops (cd->proxy);
+ if (pending_ops && !g_hash_table_lookup (pending_ops, GUINT_TO_POINTER (cd->opid))) {
+ /* got served already */
+ return FALSE;
+ }
+
+ op_data = cd->op_data;
g_return_val_if_fail (op_data != NULL, FALSE);
cancellable = op_data->cancellable;
@@ -961,12 +1003,19 @@ static void
e_gdbus_op_cancelled_cb (GCancellable *cancellable,
AsyncOpData *op_data)
{
+ CancelData *cd;
+
g_return_if_fail (op_data != NULL);
g_return_if_fail (op_data->cancellable == cancellable);
+ cd = g_new0 (CancelData, 1);
+ cd->proxy = g_object_ref (op_data->proxy);
+ cd->opid = op_data->opid;
+ cd->op_data = op_data;
+
/* do this on idle, because this callback should be left
* as soon as possible, with no sync calls being done */
- op_data->cancel_idle_id = g_idle_add (e_gdbus_op_cancelled_idle_cb, op_data);
+ op_data->cancel_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, e_gdbus_op_cancelled_idle_cb, cd, cancel_data_free);
}
static void
@@ -1370,9 +1419,21 @@ e_gdbus_proxy_sync_ready_cb (GObject *proxy,
GAsyncResult *result,
gpointer user_data)
{
- SyncOpData *sync_data = user_data;
+ gint sync_opid = GPOINTER_TO_INT (user_data);
+ gchar *sync_opid_ident;
+ SyncOpData *sync_data;
+
+ sync_opid_ident = g_strdup_printf ("EGdbusTemplates-SyncOp-%d", sync_opid);
+ sync_data = g_object_get_data (proxy, sync_opid_ident);
+ g_free (sync_opid_ident);
+
+ if (!sync_data) {
+ /* already finished operation; it can happen when the operation is cancelled,
+ but the result is already waiting in an idle queue.
+ */
+ return;
+ }
- g_return_if_fail (sync_data != NULL);
g_return_if_fail (sync_data->flag != NULL);
switch (sync_data->out_type) {
@@ -1415,12 +1476,17 @@ e_gdbus_proxy_call_sync (GDBusProxy *proxy,
guint out_type,
gpointer out_value)
{
+ static volatile gint sync_op_counter = 0;
+ gint sync_opid;
+ gchar *sync_opid_ident;
SyncOpData sync_data = { 0 };
g_return_val_if_fail (proxy != NULL, FALSE);
g_return_val_if_fail (start_func != NULL, FALSE);
g_return_val_if_fail (finish_func != NULL, FALSE);
+ g_object_ref (proxy);
+
switch (out_type) {
case E_GDBUS_TYPE_VOID:
sync_data.finish_func.finish_void = finish_func;
@@ -1443,6 +1509,7 @@ e_gdbus_proxy_call_sync (GDBusProxy *proxy,
break;
default:
g_warning ("%s: Unknown 'out' E_GDBUS_TYPE %x", G_STRFUNC, out_type);
+ g_object_unref (proxy);
return FALSE;
}
@@ -1450,30 +1517,37 @@ e_gdbus_proxy_call_sync (GDBusProxy *proxy,
sync_data.error = error;
sync_data.out_type = out_type;
+ sync_opid = g_atomic_int_add (&sync_op_counter, 1);
+ sync_opid_ident = g_strdup_printf ("EGdbusTemplates-SyncOp-%d", sync_opid);
+ g_object_set_data (G_OBJECT (proxy), sync_opid_ident, &sync_data);
+
switch (in_type) {
case E_GDBUS_TYPE_VOID: {
EGdbusCallStartVoid start = start_func;
- start (proxy, cancellable, e_gdbus_proxy_sync_ready_cb, &sync_data);
+ start (proxy, cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid));
} break;
case E_GDBUS_TYPE_BOOLEAN: {
EGdbusCallStartBoolean start = start_func;
- start (proxy, * ((gboolean *) in_value), cancellable, e_gdbus_proxy_sync_ready_cb, &sync_data);
+ start (proxy, * ((gboolean *) in_value), cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid));
} break;
case E_GDBUS_TYPE_STRING: {
EGdbusCallStartString start = start_func;
- start (proxy, (const gchar *) in_value, cancellable, e_gdbus_proxy_sync_ready_cb, &sync_data);
+ start (proxy, (const gchar *) in_value, cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid));
} break;
case E_GDBUS_TYPE_STRV: {
EGdbusCallStartStrv start = start_func;
- start (proxy, (const gchar * const *) in_value, cancellable, e_gdbus_proxy_sync_ready_cb, &sync_data);
+ start (proxy, (const gchar * const *) in_value, cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid));
} break;
case E_GDBUS_TYPE_UINT: {
EGdbusCallStartUint start = start_func;
- start (proxy, * ((guint *) in_value), cancellable, e_gdbus_proxy_sync_ready_cb, &sync_data);
+ start (proxy, * ((guint *) in_value), cancellable, e_gdbus_proxy_sync_ready_cb, GINT_TO_POINTER (sync_opid));
} break;
default:
g_warning ("%s: Unknown 'in' E_GDBUS_TYPE %x", G_STRFUNC, in_type);
e_flag_free (sync_data.flag);
+ g_object_set_data (G_OBJECT (proxy), sync_opid_ident, NULL);
+ g_free (sync_opid_ident);
+ g_object_unref (proxy);
return FALSE;
}
@@ -1502,8 +1576,12 @@ e_gdbus_proxy_call_sync (GDBusProxy *proxy,
/* is called in a dedicated thread */
e_flag_wait (sync_data.flag);
}
+ g_object_set_data (G_OBJECT (proxy), sync_opid_ident, NULL);
e_flag_free (sync_data.flag);
+ g_free (sync_opid_ident);
+ g_object_unref (proxy);
+
return sync_data.finish_result;
}
--
cgit v0.9.0.2

View File

@ -1,29 +0,0 @@
From d92dc8b420cd599143649dca65bed55a035dd5b6 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Thu, 31 Jan 2013 16:33:07 +0000
Subject: Bug #689476 - Slow composer open (ENameSelector object leaks)
---
diff --git a/libedataserverui/e-name-selector.c b/libedataserverui/e-name-selector.c
index ddbb067..4badff3 100644
--- a/libedataserverui/e-name-selector.c
+++ b/libedataserverui/e-name-selector.c
@@ -331,6 +331,16 @@ name_selector_dispose (GObject *object)
g_array_set_size (priv->source_books, 0);
g_array_set_size (priv->sections, 0);
+ if (priv->dialog) {
+ gtk_widget_destroy (GTK_WIDGET (priv->dialog));
+ priv->dialog = NULL;
+ }
+
+ if (priv->model) {
+ g_object_unref (priv->model);
+ priv->model = NULL;
+ }
+
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_name_selector_parent_class)->dispose (object);
}
--
cgit v0.9.0.2

View File

@ -1,133 +0,0 @@
From a84d0269dcd3978232cf5dce77ae4a6d7f6107fd Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Tue, 22 Jan 2013 19:44:41 +0000
Subject: Bug #692278 - LDAP backend mutex deadlock on finalize
---
diff --git a/addressbook/backends/ldap/e-book-backend-ldap.c b/addressbook/backends/ldap/e-book-backend-ldap.c
index 0de07f2..1f346ac 100644
--- a/addressbook/backends/ldap/e-book-backend-ldap.c
+++ b/addressbook/backends/ldap/e-book-backend-ldap.c
@@ -214,7 +214,7 @@ struct _EBookBackendLDAPPrivate {
gboolean marked_for_offline;
/* our operations */
- GStaticRecMutex op_hash_mutex;
+ GStaticRecMutex op_hash_mutex; /* lock also eds_ldap_handler_lock before this lock */
GHashTable *id_to_op;
gint active_ops;
guint poll_timeout;
@@ -1147,6 +1147,7 @@ ldap_op_add (LDAPOp *op,
op->handler = handler;
op->dtor = dtor;
+ g_static_rec_mutex_lock (&eds_ldap_handler_lock);
g_static_rec_mutex_lock (&bl->priv->op_hash_mutex);
if (g_hash_table_lookup (bl->priv->id_to_op, &op->id)) {
g_warning ("conflicting ldap msgid's");
@@ -1161,6 +1162,7 @@ ldap_op_add (LDAPOp *op,
LDAP_POLL_INTERVAL,
(GSourceFunc) poll_ldap, bl);
g_static_rec_mutex_unlock (&bl->priv->op_hash_mutex);
+ g_static_rec_mutex_unlock (&eds_ldap_handler_lock);
}
static void
@@ -1169,6 +1171,7 @@ ldap_op_finished (LDAPOp *op)
EBookBackend *backend = op->backend;
EBookBackendLDAP *bl = E_BOOK_BACKEND_LDAP (backend);
+ g_static_rec_mutex_lock (&eds_ldap_handler_lock);
g_static_rec_mutex_lock (&bl->priv->op_hash_mutex);
g_hash_table_remove (bl->priv->id_to_op, &op->id);
@@ -1176,10 +1179,8 @@ ldap_op_finished (LDAPOp *op)
book_view_notify_status (bl, find_book_view (bl), "");
/* should handle errors here */
- g_static_rec_mutex_lock (&eds_ldap_handler_lock);
if (bl->priv->ldap)
ldap_abandon (bl->priv->ldap, op->id);
- g_static_rec_mutex_unlock (&eds_ldap_handler_lock);
if (op->dtor)
op->dtor (op);
@@ -1193,6 +1194,7 @@ ldap_op_finished (LDAPOp *op)
}
}
g_static_rec_mutex_unlock (&bl->priv->op_hash_mutex);
+ g_static_rec_mutex_unlock (&eds_ldap_handler_lock);
}
static void
@@ -1202,6 +1204,7 @@ ldap_op_change_id (LDAPOp *op,
EBookBackend *backend = op->backend;
EBookBackendLDAP *bl = E_BOOK_BACKEND_LDAP (backend);
+ g_static_rec_mutex_lock (&eds_ldap_handler_lock);
g_static_rec_mutex_lock (&bl->priv->op_hash_mutex);
g_hash_table_remove (bl->priv->id_to_op, &op->id);
@@ -1209,6 +1212,7 @@ ldap_op_change_id (LDAPOp *op,
g_hash_table_insert (bl->priv->id_to_op, &op->id, op);
g_static_rec_mutex_unlock (&bl->priv->op_hash_mutex);
+ g_static_rec_mutex_unlock (&eds_ldap_handler_lock);
}
static GError *
@@ -5226,10 +5230,11 @@ ldap_cancel_op (gpointer key,
LDAPOp *op = value;
/* ignore errors, its only best effort? */
- g_static_rec_mutex_lock (&eds_ldap_handler_lock);
+ /* lock is held by the caller */
+ /* g_static_rec_mutex_lock (&eds_ldap_handler_lock); */
if (bl->priv->ldap)
ldap_abandon (bl->priv->ldap, op->id);
- g_static_rec_mutex_unlock (&eds_ldap_handler_lock);
+ /* g_static_rec_mutex_unlock (&eds_ldap_handler_lock); */
}
static void
@@ -5237,9 +5242,11 @@ ldap_cancel_all_operations (EBookBackend *backend)
{
EBookBackendLDAP *bl = E_BOOK_BACKEND_LDAP (backend);
+ g_static_rec_mutex_lock (&eds_ldap_handler_lock);
g_static_rec_mutex_lock (&bl->priv->op_hash_mutex);
g_hash_table_foreach (bl->priv->id_to_op, ldap_cancel_op, bl);
g_static_rec_mutex_unlock (&bl->priv->op_hash_mutex);
+ g_static_rec_mutex_unlock (&eds_ldap_handler_lock);
}
static void
@@ -5533,10 +5540,11 @@ call_dtor (gint msgid,
bl = E_BOOK_BACKEND_LDAP (op->backend);
- g_static_rec_mutex_lock (&eds_ldap_handler_lock);
+ /* lock is held by the caller */
+ /* g_static_rec_mutex_lock (&eds_ldap_handler_lock); */
if (bl->priv->ldap)
ldap_abandon (bl->priv->ldap, op->id);
- g_static_rec_mutex_unlock (&eds_ldap_handler_lock);
+ /* g_static_rec_mutex_unlock (&eds_ldap_handler_lock); */
op->dtor (op);
@@ -5550,10 +5558,12 @@ e_book_backend_ldap_finalize (GObject *object)
priv = E_BOOK_BACKEND_LDAP_GET_PRIVATE (object);
+ g_static_rec_mutex_lock (&eds_ldap_handler_lock);
g_static_rec_mutex_lock (&priv->op_hash_mutex);
g_hash_table_foreach_remove (priv->id_to_op, (GHRFunc) call_dtor, NULL);
g_hash_table_destroy (priv->id_to_op);
g_static_rec_mutex_unlock (&priv->op_hash_mutex);
+ g_static_rec_mutex_unlock (&eds_ldap_handler_lock);
g_static_rec_mutex_free (&priv->op_hash_mutex);
/* Remove the timeout before unbinding to avoid a race. */
--
cgit v0.9.0.2

View File

@ -1,386 +0,0 @@
From 9e0e08e201f853239fe02b7e694d3e1eac770e47 Mon Sep 17 00:00:00 2001
From: Michel Dänzer <michel@daenzer.net>
Date: Fri, 08 Feb 2013 11:07:39 +0000
Subject: Bug #683867 - Schedule actions with higher idle priority
---
diff --git a/calendar/libecal/e-cal.c b/calendar/libecal/e-cal.c
index 3c43bed..b956550 100644
--- a/calendar/libecal/e-cal.c
+++ b/calendar/libecal/e-cal.c
@@ -1151,7 +1151,7 @@ async_report_idle (ECal *ecal,
data->ecal = g_object_ref (ecal);
data->error = error;
- g_idle_add (idle_async_error_reply_cb, data);
+ g_idle_add_full (G_PRIORITY_DEFAULT, idle_async_error_reply_cb, data, NULL);
}
/**
diff --git a/camel/camel-folder.c b/camel/camel-folder.c
index a262b02..9788c96 100644
--- a/camel/camel-folder.c
+++ b/camel/camel-folder.c
@@ -2782,7 +2782,7 @@ camel_folder_search_free (CamelFolder *folder,
* Marks @folder as deleted and performs any required cleanup.
*
* This also emits the #CamelFolder::deleted signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT_IDLE.
+ * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
**/
void
camel_folder_delete (CamelFolder *folder)
@@ -2823,7 +2823,7 @@ camel_folder_delete (CamelFolder *folder)
signal_data->folder = g_object_ref (folder);
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
folder_emit_deleted_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -2836,7 +2836,7 @@ camel_folder_delete (CamelFolder *folder)
* Marks @folder as renamed.
*
* This also emits the #CamelFolder::renamed signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT_IDLE.
+ * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
*
* NOTE: This is an internal function used by camel stores, no locking
* is performed on the folder.
@@ -2873,7 +2873,7 @@ camel_folder_rename (CamelFolder *folder,
signal_data->folder_name = old_name; /* transfer ownership */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
folder_emit_renamed_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
diff --git a/camel/camel-imapx-server.c b/camel/camel-imapx-server.c
index 75b73f6..2708f16 100644
--- a/camel/camel-imapx-server.c
+++ b/camel/camel-imapx-server.c
@@ -6284,7 +6284,7 @@ imapx_server_dispose (GObject *object)
if (server->parser_thread) {
if (server->parser_thread == g_thread_self ())
- g_idle_add (&join_helper, server->parser_thread);
+ g_idle_add_full (G_PRIORITY_HIGH, &join_helper, server->parser_thread, NULL);
else
g_thread_join (server->parser_thread);
server->parser_thread = NULL;
diff --git a/camel/camel-service.c b/camel/camel-service.c
index 316b688..6fed559 100644
--- a/camel/camel-service.c
+++ b/camel/camel-service.c
@@ -409,7 +409,7 @@ service_queue_notify_connection_status (CamelService *service)
session = camel_service_get_session (service);
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
service_notify_connection_status_cb,
g_object_ref (service),
(GDestroyNotify) g_object_unref);
diff --git a/camel/camel-session.c b/camel/camel-session.c
index abcf34f..ba65eb8 100644
--- a/camel/camel-session.c
+++ b/camel/camel-session.c
@@ -53,7 +53,7 @@
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), CAMEL_TYPE_SESSION, CamelSessionPrivate))
-#define JOB_PRIORITY G_PRIORITY_LOW
+#define JOB_PRIORITY G_PRIORITY_DEFAULT
#define d(x)
diff --git a/camel/camel-store.c b/camel/camel-store.c
index b74126f..e80a304 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -1268,7 +1268,7 @@ camel_store_error_quark (void)
* @folder_info: information about the created folder
*
* Emits the #CamelStore::folder-created signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT_IDLE.
+ * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
*
* This function is only intended for Camel providers.
*
@@ -1291,7 +1291,7 @@ camel_store_folder_created (CamelStore *store,
signal_data->folder_info = camel_folder_info_clone (folder_info);
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
store_emit_folder_created_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -1302,7 +1302,7 @@ camel_store_folder_created (CamelStore *store,
* @folder_info: information about the deleted folder
*
* Emits the #CamelStore::folder-deleted signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT_IDLE.
+ * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
*
* This function is only intended for Camel providers.
*
@@ -1325,7 +1325,7 @@ camel_store_folder_deleted (CamelStore *store,
signal_data->folder_info = camel_folder_info_clone (folder_info);
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
store_emit_folder_deleted_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -1336,7 +1336,7 @@ camel_store_folder_deleted (CamelStore *store,
* @folder: the #CamelFolder that was opened
*
* Emits the #CamelStore::folder-opened signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT_IDLE.
+ * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
*
* This function is only intended for Camel providers.
*
@@ -1359,7 +1359,7 @@ camel_store_folder_opened (CamelStore *store,
signal_data->folder = g_object_ref (folder);
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
store_emit_folder_opened_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -1371,7 +1371,7 @@ camel_store_folder_opened (CamelStore *store,
* @folder_info: information about the renamed folder
*
* Emits the #CamelStore::folder-renamed signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT_IDLE.
+ * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
*
* This function is only intended for Camel providers.
*
@@ -1397,7 +1397,7 @@ camel_store_folder_renamed (CamelStore *store,
signal_data->folder_name = g_strdup (old_name);
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
store_emit_folder_renamed_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
diff --git a/camel/camel-subscribable.c b/camel/camel-subscribable.c
index ceb18d0..b73395e 100644
--- a/camel/camel-subscribable.c
+++ b/camel/camel-subscribable.c
@@ -611,7 +611,7 @@ camel_subscribable_unsubscribe_folder_finish (CamelSubscribable *subscribable,
* @folder_info: information about the subscribed folder
*
* Emits the #CamelSubscribable::folder-subscribed signal from an idle source
- * on the main loop. The idle source's priority is #G_PRIORITY_DEFAULT_IDLE.
+ * on the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
*
* This function is only intended for Camel providers.
*
@@ -636,7 +636,7 @@ camel_subscribable_folder_subscribed (CamelSubscribable *subscribable,
signal_data->folder_info = camel_folder_info_clone (folder_info);
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
subscribable_emit_folder_subscribed_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -647,7 +647,7 @@ camel_subscribable_folder_subscribed (CamelSubscribable *subscribable,
* @folder_info: information about the unsubscribed folder
*
* Emits the #CamelSubscribable::folder-unsubscribed signal from an idle source
- * on the main loop. The idle source's priority is #G_PRIORITY_DEFAULT_IDLE.
+ * on the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
*
* This function is only intended for Camel providers.
*
@@ -672,7 +672,7 @@ camel_subscribable_folder_unsubscribed (CamelSubscribable *subscribable,
signal_data->folder_info = camel_folder_info_clone (folder_info);
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT_IDLE,
+ session, G_PRIORITY_DEFAULT,
subscribable_emit_folder_unsubscribed_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
diff --git a/libedataserver/e-gdbus-templates.c b/libedataserver/e-gdbus-templates.c
index ef3e476..5d99703 100644
--- a/libedataserver/e-gdbus-templates.c
+++ b/libedataserver/e-gdbus-templates.c
@@ -1015,7 +1015,7 @@ e_gdbus_op_cancelled_cb (GCancellable *cancellable,
/* do this on idle, because this callback should be left
* as soon as possible, with no sync calls being done */
- op_data->cancel_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, e_gdbus_op_cancelled_idle_cb, cd, cancel_data_free);
+ op_data->cancel_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT, e_gdbus_op_cancelled_idle_cb, cd, cancel_data_free);
}
static void
--
cgit v0.9.0.2
From 03fcc5f17581b6b1b50a11bd46cc46ddb4289391 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Fri, 08 Feb 2013 16:34:48 +0000
Subject: Add comments around g_idle_add() changes
---
diff --git a/calendar/libecal/e-cal.c b/calendar/libecal/e-cal.c
index b956550..c54011a 100644
--- a/calendar/libecal/e-cal.c
+++ b/calendar/libecal/e-cal.c
@@ -1151,6 +1151,7 @@ async_report_idle (ECal *ecal,
data->ecal = g_object_ref (ecal);
data->error = error;
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE) */
g_idle_add_full (G_PRIORITY_DEFAULT, idle_async_error_reply_cb, data, NULL);
}
diff --git a/camel/camel-folder.c b/camel/camel-folder.c
index 9788c96..8c2a31c 100644
--- a/camel/camel-folder.c
+++ b/camel/camel-folder.c
@@ -2822,6 +2822,8 @@ camel_folder_delete (CamelFolder *folder)
signal_data = g_slice_new0 (SignalData);
signal_data->folder = g_object_ref (folder);
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
folder_emit_deleted_cb,
@@ -2872,6 +2874,8 @@ camel_folder_rename (CamelFolder *folder,
signal_data->folder = g_object_ref (folder);
signal_data->folder_name = old_name; /* transfer ownership */
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
folder_emit_renamed_cb,
diff --git a/camel/camel-imapx-server.c b/camel/camel-imapx-server.c
index 2708f16..1d16189 100644
--- a/camel/camel-imapx-server.c
+++ b/camel/camel-imapx-server.c
@@ -6284,6 +6284,7 @@ imapx_server_dispose (GObject *object)
if (server->parser_thread) {
if (server->parser_thread == g_thread_self ())
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE) */
g_idle_add_full (G_PRIORITY_HIGH, &join_helper, server->parser_thread, NULL);
else
g_thread_join (server->parser_thread);
diff --git a/camel/camel-service.c b/camel/camel-service.c
index 6fed559..e23cb31 100644
--- a/camel/camel-service.c
+++ b/camel/camel-service.c
@@ -408,6 +408,8 @@ service_queue_notify_connection_status (CamelService *service)
session = camel_service_get_session (service);
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
service_notify_connection_status_cb,
diff --git a/camel/camel-session.c b/camel/camel-session.c
index ba65eb8..48c39fb 100644
--- a/camel/camel-session.c
+++ b/camel/camel-session.c
@@ -53,6 +53,8 @@
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), CAMEL_TYPE_SESSION, CamelSessionPrivate))
+/* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
#define JOB_PRIORITY G_PRIORITY_DEFAULT
#define d(x)
diff --git a/camel/camel-store.c b/camel/camel-store.c
index e80a304..7015fd2 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -1290,6 +1290,8 @@ camel_store_folder_created (CamelStore *store,
signal_data->store = g_object_ref (store);
signal_data->folder_info = camel_folder_info_clone (folder_info);
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
store_emit_folder_created_cb,
@@ -1324,6 +1326,8 @@ camel_store_folder_deleted (CamelStore *store,
signal_data->store = g_object_ref (store);
signal_data->folder_info = camel_folder_info_clone (folder_info);
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
store_emit_folder_deleted_cb,
@@ -1358,6 +1362,8 @@ camel_store_folder_opened (CamelStore *store,
signal_data->store = g_object_ref (store);
signal_data->folder = g_object_ref (folder);
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
store_emit_folder_opened_cb,
@@ -1396,6 +1402,8 @@ camel_store_folder_renamed (CamelStore *store,
signal_data->folder_info = camel_folder_info_clone (folder_info);
signal_data->folder_name = g_strdup (old_name);
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
store_emit_folder_renamed_cb,
diff --git a/camel/camel-subscribable.c b/camel/camel-subscribable.c
index b73395e..470a4e0 100644
--- a/camel/camel-subscribable.c
+++ b/camel/camel-subscribable.c
@@ -635,6 +635,8 @@ camel_subscribable_folder_subscribed (CamelSubscribable *subscribable,
signal_data->subscribable = g_object_ref (subscribable);
signal_data->folder_info = camel_folder_info_clone (folder_info);
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
subscribable_emit_folder_subscribed_cb,
@@ -671,6 +673,8 @@ camel_subscribable_folder_unsubscribed (CamelSubscribable *subscribable,
signal_data->subscribable = g_object_ref (subscribable);
signal_data->folder_info = camel_folder_info_clone (folder_info);
+ /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
+ same as GAsyncResult, where this operation is quite similar to it anyway */
camel_session_idle_add (
session, G_PRIORITY_DEFAULT,
subscribable_emit_folder_unsubscribed_cb,
diff --git a/libedataserver/e-gdbus-templates.c b/libedataserver/e-gdbus-templates.c
index 5d99703..d741001 100644
--- a/libedataserver/e-gdbus-templates.c
+++ b/libedataserver/e-gdbus-templates.c
@@ -1014,7 +1014,9 @@ e_gdbus_op_cancelled_cb (GCancellable *cancellable,
cd->op_data = op_data;
/* do this on idle, because this callback should be left
- * as soon as possible, with no sync calls being done */
+ * as soon as possible, with no sync calls being done;
+ * also schedule with priority higher than gtk+ uses
+ * for animations (check docs for G_PRIORITY_HIGH_IDLE) */
op_data->cancel_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT, e_gdbus_op_cancelled_idle_cb, cd, cancel_data_free);
}
--
cgit v0.9.0.2

View File

@ -1,122 +0,0 @@
From 71257132e4673566a26d8a0f9cb2e066367444bb Mon Sep 17 00:00:00 2001
From: Matthew Barnes <mbarnes@redhat.com>
Date: Fri, 01 Feb 2013 12:42:14 +0000
Subject: store_synchronize_sync() cleanups.
(cherry picked from commit ad1b7cd145c5fa5443556c17ba6e9d701c531bb7)
---
diff --git a/camel/camel-store.c b/camel/camel-store.c
index 593b426..e5a1863 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -343,9 +343,8 @@ store_synchronize_sync (CamelStore *store,
GError **error)
{
GPtrArray *folders;
- CamelFolder *folder;
gboolean success = TRUE;
- gint i;
+ gint ii;
GError *local_error = NULL;
if (expunge) {
@@ -353,27 +352,32 @@ store_synchronize_sync (CamelStore *store,
CamelFolderInfo *root, *fi;
folders = g_ptr_array_new ();
- root = camel_store_get_folder_info_sync (store, NULL, CAMEL_STORE_FOLDER_INFO_RECURSIVE | CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL, NULL, NULL);
+ root = camel_store_get_folder_info_sync (
+ store, NULL,
+ CAMEL_STORE_FOLDER_INFO_RECURSIVE |
+ CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL,
+ NULL, NULL);
fi = root;
- while (fi) {
+ while (fi != NULL) {
CamelFolderInfo *next;
if ((fi->flags & CAMEL_FOLDER_NOSELECT) == 0) {
- CamelFolder *fldr;
+ CamelFolder *folder;
- fldr = camel_store_get_folder_sync (store, fi->full_name, 0, NULL, NULL);
- if (fldr)
- g_ptr_array_add (folders, fldr);
+ folder = camel_store_get_folder_sync (
+ store, fi->full_name, 0, NULL, NULL);
+ if (folder != NULL)
+ g_ptr_array_add (folders, folder);
}
/* pick the next */
next = fi->child;
- if (!next)
+ if (next == NULL)
next = fi->next;
- if (!next) {
+ if (next == NULL) {
next = fi->parent;
- while (next) {
- if (next->next) {
+ while (next != NULL) {
+ if (next->next != NULL) {
next = next->next;
break;
}
@@ -385,7 +389,7 @@ store_synchronize_sync (CamelStore *store,
fi = next;
}
- if (root)
+ if (root != NULL)
camel_store_free_folder_info_full (store, root);
} else {
/* sync only folders opened until now */
@@ -395,10 +399,10 @@ store_synchronize_sync (CamelStore *store,
/* We don't sync any vFolders, that is used to update certain
* vfolder queries mainly, and we're really only interested in
* storing/expunging the physical mails. */
- for (i = 0; i < folders->len; i++) {
- folder = folders->pdata[i];
- if (!CAMEL_IS_VEE_FOLDER (folder)
- && local_error == NULL) {
+ for (ii = 0; ii < folders->len; ii++) {
+ CamelFolder *folder = folders->pdata[ii];
+
+ if (!CAMEL_IS_VEE_FOLDER (folder) && local_error == NULL) {
camel_folder_synchronize_sync (
folder, expunge, cancellable, &local_error);
ignore_no_such_table_exception (&local_error);
--
cgit v0.9.0.2
From 3e7b237a6242a724830a412b95bbf8a80eb65d99 Mon Sep 17 00:00:00 2001
From: Matthew Barnes <mbarnes@redhat.com>
Date: Fri, 01 Feb 2013 12:45:56 +0000
Subject: store_synchronize_sync(): Only sync subscribed folders.
I recently added a Gmane (NNTP) account and have only a few newsgroup
subscriptions. Yet when I quit Evolution, Camel tries to synchronize
all 13,872 newsgroups which literally takes days to complete.
This adds a CAMEL_STORE_FOLDER_INFO_SUBSCRIBED flag to the request for
a folder info tree while synchronizing + expunging.
Note, CamelIMAPXStore will ignore the CAMEL_STORE_FOLDER_INFO_SUBSCRIBED
flag if its "use-subscriptions" setting is FALSE, which is what we want.
(cherry picked from commit 48b9d17d16be9f0ecb6066036cc83d08b3cca817)
---
diff --git a/camel/camel-store.c b/camel/camel-store.c
index e5a1863..b74126f 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -355,6 +355,7 @@ store_synchronize_sync (CamelStore *store,
root = camel_store_get_folder_info_sync (
store, NULL,
CAMEL_STORE_FOLDER_INFO_RECURSIVE |
+ CAMEL_STORE_FOLDER_INFO_SUBSCRIBED |
CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL,
NULL, NULL);
fi = root;
--
cgit v0.9.0.2

View File

@ -1,268 +0,0 @@
From 147c817dd31ddee0ee097aa58ac3489c4d918f64 Mon Sep 17 00:00:00 2001
From: Matthew Barnes <mbarnes@redhat.com>
Date: Fri, 08 Feb 2013 19:08:00 +0000
Subject: G_PRIORITY_HIGH_IDLE is sufficient to beat GTK+ redraws.
GTK+ uses (G_PRIORITY_HIGH_IDLE + 20) for redrawing operations, which is
actually a slightly lower priority than G_PRIORITY_HIGH_IDLE. Therefore
for our purpose, G_PRIORITY_HIGH_IDLE is sufficient.
(cherry picked from commit 820dcf6cfc43265c6376f15d983381c3087a5d20)
---
diff --git a/calendar/libecal/e-cal.c b/calendar/libecal/e-cal.c
index c54011a..fcb8e9e 100644
--- a/calendar/libecal/e-cal.c
+++ b/calendar/libecal/e-cal.c
@@ -1151,8 +1151,10 @@ async_report_idle (ECal *ecal,
data->ecal = g_object_ref (ecal);
data->error = error;
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE) */
- g_idle_add_full (G_PRIORITY_DEFAULT, idle_async_error_reply_cb, data, NULL);
+ /* Prioritize ahead of GTK+ redraws. */
+ g_idle_add_full (
+ G_PRIORITY_HIGH_IDLE,
+ idle_async_error_reply_cb, data, NULL);
}
/**
diff --git a/camel/camel-folder.c b/camel/camel-folder.c
index 8c2a31c..677f147 100644
--- a/camel/camel-folder.c
+++ b/camel/camel-folder.c
@@ -2782,7 +2782,7 @@ camel_folder_search_free (CamelFolder *folder,
* Marks @folder as deleted and performs any required cleanup.
*
* This also emits the #CamelFolder::deleted signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
+ * the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
**/
void
camel_folder_delete (CamelFolder *folder)
@@ -2822,10 +2822,9 @@ camel_folder_delete (CamelFolder *folder)
signal_data = g_slice_new0 (SignalData);
signal_data->folder = g_object_ref (folder);
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
folder_emit_deleted_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -2838,7 +2837,7 @@ camel_folder_delete (CamelFolder *folder)
* Marks @folder as renamed.
*
* This also emits the #CamelFolder::renamed signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
+ * the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
*
* NOTE: This is an internal function used by camel stores, no locking
* is performed on the folder.
@@ -2874,10 +2873,9 @@ camel_folder_rename (CamelFolder *folder,
signal_data->folder = g_object_ref (folder);
signal_data->folder_name = old_name; /* transfer ownership */
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
folder_emit_renamed_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
diff --git a/camel/camel-imapx-server.c b/camel/camel-imapx-server.c
index 1d16189..b522df1 100644
--- a/camel/camel-imapx-server.c
+++ b/camel/camel-imapx-server.c
@@ -6284,8 +6284,10 @@ imapx_server_dispose (GObject *object)
if (server->parser_thread) {
if (server->parser_thread == g_thread_self ())
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE) */
- g_idle_add_full (G_PRIORITY_HIGH, &join_helper, server->parser_thread, NULL);
+ /* Prioritize ahead of GTK+ redraws. */
+ g_idle_add_full (
+ G_PRIORITY_HIGH_IDLE,
+ &join_helper, server->parser_thread, NULL);
else
g_thread_join (server->parser_thread);
server->parser_thread = NULL;
diff --git a/camel/camel-service.c b/camel/camel-service.c
index e23cb31..1fa28dd 100644
--- a/camel/camel-service.c
+++ b/camel/camel-service.c
@@ -408,10 +408,9 @@ service_queue_notify_connection_status (CamelService *service)
session = camel_service_get_session (service);
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
service_notify_connection_status_cb,
g_object_ref (service),
(GDestroyNotify) g_object_unref);
diff --git a/camel/camel-session.c b/camel/camel-session.c
index 48c39fb..7feaeb5 100644
--- a/camel/camel-session.c
+++ b/camel/camel-session.c
@@ -53,9 +53,8 @@
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), CAMEL_TYPE_SESSION, CamelSessionPrivate))
-/* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
-#define JOB_PRIORITY G_PRIORITY_DEFAULT
+/* Prioritize ahead of GTK+ redraws. */
+#define JOB_PRIORITY G_PRIORITY_HIGH_IDLE
#define d(x)
diff --git a/camel/camel-store.c b/camel/camel-store.c
index 7015fd2..e03ed2c 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -1268,7 +1268,7 @@ camel_store_error_quark (void)
* @folder_info: information about the created folder
*
* Emits the #CamelStore::folder-created signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
+ * the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
*
* This function is only intended for Camel providers.
*
@@ -1290,10 +1290,9 @@ camel_store_folder_created (CamelStore *store,
signal_data->store = g_object_ref (store);
signal_data->folder_info = camel_folder_info_clone (folder_info);
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
store_emit_folder_created_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -1304,7 +1303,7 @@ camel_store_folder_created (CamelStore *store,
* @folder_info: information about the deleted folder
*
* Emits the #CamelStore::folder-deleted signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
+ * the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
*
* This function is only intended for Camel providers.
*
@@ -1326,10 +1325,9 @@ camel_store_folder_deleted (CamelStore *store,
signal_data->store = g_object_ref (store);
signal_data->folder_info = camel_folder_info_clone (folder_info);
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
store_emit_folder_deleted_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -1340,7 +1338,7 @@ camel_store_folder_deleted (CamelStore *store,
* @folder: the #CamelFolder that was opened
*
* Emits the #CamelStore::folder-opened signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
+ * the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
*
* This function is only intended for Camel providers.
*
@@ -1362,10 +1360,9 @@ camel_store_folder_opened (CamelStore *store,
signal_data->store = g_object_ref (store);
signal_data->folder = g_object_ref (folder);
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
store_emit_folder_opened_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -1377,7 +1374,7 @@ camel_store_folder_opened (CamelStore *store,
* @folder_info: information about the renamed folder
*
* Emits the #CamelStore::folder-renamed signal from an idle source on
- * the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
+ * the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
*
* This function is only intended for Camel providers.
*
@@ -1402,10 +1399,9 @@ camel_store_folder_renamed (CamelStore *store,
signal_data->folder_info = camel_folder_info_clone (folder_info);
signal_data->folder_name = g_strdup (old_name);
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
store_emit_folder_renamed_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
diff --git a/camel/camel-subscribable.c b/camel/camel-subscribable.c
index 470a4e0..ef14132 100644
--- a/camel/camel-subscribable.c
+++ b/camel/camel-subscribable.c
@@ -611,7 +611,7 @@ camel_subscribable_unsubscribe_folder_finish (CamelSubscribable *subscribable,
* @folder_info: information about the subscribed folder
*
* Emits the #CamelSubscribable::folder-subscribed signal from an idle source
- * on the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
+ * on the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
*
* This function is only intended for Camel providers.
*
@@ -635,10 +635,9 @@ camel_subscribable_folder_subscribed (CamelSubscribable *subscribable,
signal_data->subscribable = g_object_ref (subscribable);
signal_data->folder_info = camel_folder_info_clone (folder_info);
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
subscribable_emit_folder_subscribed_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
@@ -649,7 +648,7 @@ camel_subscribable_folder_subscribed (CamelSubscribable *subscribable,
* @folder_info: information about the unsubscribed folder
*
* Emits the #CamelSubscribable::folder-unsubscribed signal from an idle source
- * on the main loop. The idle source's priority is #G_PRIORITY_DEFAULT.
+ * on the main loop. The idle source's priority is #G_PRIORITY_HIGH_IDLE.
*
* This function is only intended for Camel providers.
*
@@ -673,10 +672,9 @@ camel_subscribable_folder_unsubscribed (CamelSubscribable *subscribable,
signal_data->subscribable = g_object_ref (subscribable);
signal_data->folder_info = camel_folder_info_clone (folder_info);
- /* schedule with priority higher than gtk+ uses for animations (check docs for G_PRIORITY_HIGH_IDLE),
- same as GAsyncResult, where this operation is quite similar to it anyway */
+ /* Prioritize ahead of GTK+ redraws. */
camel_session_idle_add (
- session, G_PRIORITY_DEFAULT,
+ session, G_PRIORITY_HIGH_IDLE,
subscribable_emit_folder_unsubscribed_cb,
signal_data, (GDestroyNotify) signal_data_free);
}
--
cgit v0.9.0.2

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:37a0d0d4f6c8515e70e34f1e7e1f457f4c7736f35ba0f18c4b4bca0a17db7de0
size 4073908

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fff7dca02abc52caa62ddbd93a9135c15da3f21c36c25774f3399fb7a6c1d41e
size 3898836

View File

@ -1,3 +1,242 @@
-------------------------------------------------------------------
Sun Mar 24 07:01:13 UTC 2013 - zaitor@opensuse.org
- Update to version 3.8.0:
+ Miscellaneous Changes: Clean testing work directory.
+ Updated translations.
-------------------------------------------------------------------
Sun Mar 17 13:24:15 UTC 2013 - dimstar@opensuse.org
- Update to version 3.7.92:
+ Test suite improvements.
+ EBookBackendSqliteDB improvements.
+ EBookClient introspection fixes.
+ Fix a memory leak around imapx_untagged_vanished().
+ Correct names for im_jabber_work variables.
+ Bugs fixed: bgo#215428, bgo#350323, bgo#352266, bgo#690433,
bgo#690552, bgo#695308, bgo#695539, bgo#695960.
+ Updated translations.
- Drop e-d-s-link-goa.patch: fixed upstream.
- Drop gnome-common BuildRequires and call to gnome-autogen.sh, as
we no longer carry patches touching the build system.
-------------------------------------------------------------------
Sun Mar 3 15:31:47 UTC 2013 - dimstar@opensuse.org
- Update to version 3.7.91:
+ Add VPN-awareness to calendar, contact, task and memo backends.
+ Support GOA's new IMAP/SMTP provider.
+ Added documentation for new Direct Read Access related apis.
+ Fixing pkg-config files for libebook & libedata-book.
+ source_write_sync: Fail gracefully when given a scratch source.
+ source_remove_sync: Fail gracefully when given a scratch
source.
+ e-test-server-utils: Add support for testing Direct Read Access
books.
+ Ported various EBookClient tests to additionally test Direct
Read Access variants.
+ Do not use SSL_V2_COMPATIBLE_HELLO by default.
+ Local Delivery not updated on start and missing Receiving
Options page.
+ EBookBackendSexp: Restore suffix search functionality.
+ e_source_registry_server_load_directory: Monitor failure is
non-fatal.
+ e_cal_client_modify_objects_sync: Fix infinite loop.
+ EBookQuery/EPhoneNumber: Enhanced documentation.
+ CamelSMIMEContext: Support IANA registered hash function names.
+ evolution-user-prompter: Add a --keep-running option.
+ Make the ESourceRegistryServer modules relocatable like
addressbook & calendar.
+ Make the Camel provider modules relocatable.
+ build: Support (and prefer) libboost_thread-mt.
+ CamelIMAPXServer: Improve thread-safety when selecting folders.
+ Bugs fixed: bgo#693101, bgo#693345, bgo#694152, bgo#694223,
bgo#694734.
+ Updated translations.
- Add e-d-s-link-goa.patch: Fix linking stage.
- Add gnome-common BuildRequires and call to gnome-autgen.sh, as
above patch touches the build system.
-------------------------------------------------------------------
Mon Feb 18 07:34:50 UTC 2013 - dimstar@opensuse.org
- Update to version 3.7.90:
+ Improved phone number support.
+ Direct access to local address books.
+ Make e_book_client_is_self() more efficient.
+ Add e_data_factory_ref_initable_backend().
+ Remove --with-dbus-call-timeout configure option.
+ Add CAMEL_MIME_FILTER_TOHTML_QUOTE_CITATION flag.
+ EBookClient: Use g_bus_watch_name_on_connection().
+ ECalClient: Use g_bus_watch_name_on_connection().
+ Add camel_service_ref_session().
+ Fix few memory leaks in evolution-source-registry.
+ Introduce e_backend_is_destination_reachable().
+ CalDAV: Try to search for event when not in local cache.
+ e_extensible_load_extensions: Allow for retries.
+ Bugs fixed: bgo#675287, bgo#683867, bgo#686528, bgo#693841.
+ Updated translations.
- Split new libebook-contacts-1_2-0 and
typelib-1_0-EBoobContacts-1_2 subpackages.
- Bump so_edata_book to 17, following upstream.
- Introduce new so_ebook_contacts defines for the new library.
- Update baselibs.conf.
-------------------------------------------------------------------
Sat Feb 16 20:01:27 UTC 2013 - dimstar@opensuse.org
- Update to version 3.7.5:
+ This release adds support for Ubuntu's Single-SignOn framework.
+ Generate address book and calendar GDBus classes with
gdbus-codegen and simplify the APIs to require only one round
trip per method.
+ Introduce e_book_client_connect() and e_cal_client_connect() as
one-step replacements for e_book/cal_client_new() +
e_client_open().
+ Built-in data sources are now packaged as a GResource rather
than installed data files for better reliability.
+ Add --disable-google configure option to make libgdata
dependency optional.
+ Unit test suite improvements.
+ GOA: Support the upcoming "imap_smtp" provider type.
+ Optional libphonenumber support for local address books.
+ EBookBackendSqliteDB: Added e_book_backend_new_contact[s]() API
+ EBookBackendFile: Don't overwrite UIDs on incomming/new
contacts.
+ CamelIMAPXStore: Configure folder flags on folder creation.
+ EBookBackendFile: Avoid lost data in contact modifications.
+ store_synchronize_sync(): Only synchronize subscribed folders.
+ Bugs fixed: bgo#651399, bgo#691126, bgo#692278.
+ Updated translations.
- Drop upstream fixed patches:
+ e-d-s-ldap-mutex-deadlock-fix.patch
+ e-d-s-address-crash-on-cancel.patch
+ e-d-s-store_synchronize_sync.patch
+ e-d-s-schedule-higher-idle-priority-actions.patch
+ e-d-s-use-G_PRIORITY_HIGH_IDLE.patch
-------------------------------------------------------------------
Sat Feb 16 19:04:09 UTC 2013 - dimstar@opensuse.org
- Update to version 3.7.4:
+ The legacy IMAP backend has been retired. Legacy IMAP accounts
will be converted to the newer "IMAP+" backend and their data
caches reset.
+ IMAPX:
- Support non-virtual Junk/Trash folders.
- Ask server to handle "body-contains" searches.
- Add automatic IMAP to IMAPX account migration.
+ ESourceRegistryServer: Add a "tweak-key-file" signal.
+ Add OAuth2Support D-Bus interface.
+ Merge ECalBackendFileStore into ECalBackendStore.
+ Add ETimezoneCache interface.
+ ECalBackend: Remove internal_get_timezone() method.
+ CamelMimeFilterPgp: Ignore right side white spaces.
+ Bugs fixed: bgo#665371, bgo#689124, bgo#690151, bgo#690158,
bgo#690177, bgo#691033, bgo#691466, bgo#691477.
+ Updated translations.
-------------------------------------------------------------------
Sat Feb 16 18:32:56 UTC 2013 - dimstar@opensuse.org
- Update to version 3.7.3:
+ libedataserverui has been removed from Evolution-Data-Server
and merged back into Evolution, since Evolution is its only
consumer nowadays.
+ The E-D-S unit test suite is functional again!
+ Added ESourceBackendSummarySetup extension
+ EBookBackendFile: Use the new ESourceBackendSummarySetup to
configure the summary
+ Use version-based GLib/GDK/GTK+ warnings.
+ Coverity scan cleanups.
+ Do not generate a ChangeLog file from 'git log'
+ Introduce evolution-user-prompter service
+ IMAPX: Support the QUOTA extension (RFC 2087).
+ Remove introspection of libecal.
+ Workaround file description leak from
e_source_registry_authenticate_sync()
+ Bugs fixed: bgo#202576, bgo#371469, bgo#512714, bgo#529743,
bgo#579315, bgo#671620, bgo#677378, bgo#680201, bgo#684175,
bgo#687670, bgo#688366, bgo#688479, bgo#688639, bgo#688660,
bgo#688795, bgo#688926.
+ Updated translations.
- Drop libedataserverui* subpackages: the library is merged into
evolution. As this is a shared library, we do not add Obsoletes.
- Drop typelib-1_0-ECalendar-1_2 subpackage: A great deal of the
calendar API exposes data structures from libical. libical is not
a GObject library, and is therefore not introspectable.
- Drop e-d-s-fix-slow-composer-open.patch: no longer applicable.
-------------------------------------------------------------------
Sat Feb 16 17:22:39 UTC 2013 - dimstar@opensuse.org
- Update to version 3.7.2.1:
+ Make address books work again.
+ EAuthenticationSession: Close prompt before storing password.
+ IMAPX error handling improvements.
+ Remove version number from ${privdatadir}.
+ Remove erroneous version number from ${privlibdir}.
+ Remove version number from ${privincludedir}.
+ Add AllowAuthPromptAll() method to SourceManager interface.
+ Reimplement EBook, ECal, et. al. using their EClient
counterparts.
+ Google: allow writing X-GOOGLE-SYSTEM-GROUP-IDS.
+ Local file backend modified to use sqlite db exclusively.
+ gnome-online-accounts: Add an EDataFactory extension.
+ Remove EBookBackendVCF.
+ Bugs fixed: bgo#640594, bgo#674454, bgo#686727, bgo#680497,
bgo#686719, bgo#685986, bgo#686924, bgo#687100, bgo#685034,
bgo#681962, bgo#685090, bgo#687776, bgo#669082, bgo#687642,
bgo#687694, bgo#687865, bgo#687634, bgo#688146.
+ Updated translations.
- Bump so_camel to 42 and so_edataserverui to 5, following
upstreams soname bumps (also in baselibs.conf).
-------------------------------------------------------------------
Sat Feb 16 16:18:23 UTC 2013 - dimstar@opensuse.org
- Update to version 3.7.1:
+ Remove e_data_book_view_ref/unref().
+ EBook: Reimplement "remove" functions.
+ EGdbusBook: Remove the remove() method.
+ Rename e_book_backend_start_book_view().
+ Rename e_book_backend_stop_book_view().
+ Rename e_book_backend_add_book_view().
+ Rename e_book_backend_remove_book_view().
+ Add e_book_backend_list_views().
+ Deprecate e_book_backend_foreach_view().
+ Remove e_data_book_register_gdbus_object().
+ Remove e_data_book_view_register_gdbus_object().
+ libedata-cal: Purge deprecated APIs.
+ ECal: Reimplement "remove" functions.
+ EGdbusCal: Remove the remove() method.
+ ECalBackend: Prefer GList over GSList.
+ Add e_cal_backend_list_views().
+ Deprecate e_cal_backend_foreach_view().
+ Remove e_data_cal_register_gdbus_object().
+ Remove e_data_cal_view_register_gdbus_object().
+ Don't migrate sources with empty attributes (Dan Vrátil)
+ EGDataGoaAuthorizer: Use GHmac to sign the OAuth parameters.
+ Drop oauth package requirement for GOA support.
+ EGDataGoaAuthorizer: Prototype OAuth 2.0 support.
+ online-accounts: Refresh mail account settings on startup.
+ Add e_book_backend_sexp_text().
+ Deprecate e_source_extension_get_source().
+ Silence libsecret unstable API warnings.
+ Rename 'online-accounts' module to 'gnome-online-accounts'.
+ Change camel_junk_filter_classify() signature.
+ evolution-source-viewer: Select next source after deleting.
+ Bugs fixed: bgo#201807, bgo#268618, bgo#310978, bgo#549819,
bgo#641825, bgo#679914, bgo#681314, bgo#684655, bgo#685713,
bgo#686421
+ Updated translations.
- Replace libgnome-keyring-devel with pkgconfig(libsecret-unstable)
following upstreams port to libsecret.
- Drop pkgconfig(oauth) BuildRequires: no longer needed.
- Bump so_camel to 41, so_edata_book to 16 and so_edata_cal to 19,
following upstreams soname bumps (also in baselibs.conf).
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Feb 15 12:41:30 UTC 2013 - dimstar@opensuse.org Fri Feb 15 12:41:30 UTC 2013 - dimstar@opensuse.org

View File

@ -21,37 +21,25 @@
# Shared Library soNUMs, to make it easier for updates # Shared Library soNUMs, to make it easier for updates
# When updating the sonums, do not forget to also update baselibs.conf # When updating the sonums, do not forget to also update baselibs.conf
%define so_camel 40 %define so_camel 43
%define so_ebackend 5 %define so_ebackend 6
%define so_ebook 14 %define so_ebook 14
%define so_ebook_contacts 0
%define so_ecal 15 %define so_ecal 15
%define so_edata_book 15 %define so_edata_book 17
%define so_edata_cal 18 %define so_edata_cal 20
%define so_edataserver 17 %define so_edataserver 17
%define so_edataserverui 4
Name: evolution-data-server Name: evolution-data-server
%define _evo_version 3.6 %define _evo_version 3.8
Version: 3.6.3 Version: 3.8.0
Release: 0 Release: 0
Summary: Evolution Data Server Summary: Evolution Data Server
License: LGPL-2.1+ License: LGPL-2.1+
Group: Development/Libraries/GNOME Group: Development/Libraries/GNOME
Url: http://www.gnome.org Url: http://www.gnome.org
Source0: http://download.gnome.org/sources/evolution-data-server/3.6/%{name}-%{version}.tar.xz Source0: http://download.gnome.org/sources/evolution-data-server/3.8/%{name}-%{version}.tar.xz
Source99: baselibs.conf Source99: baselibs.conf
# PATCH-FIX-UPSTREAM e-d-s-ldap-mutex-deadlock-fix.patch bgo#692278 badshah400@gmail.com -- Fix LDAP backend mutex deadlock on finalize; patch taken from upstream git
Patch0: e-d-s-ldap-mutex-deadlock-fix.patch
# PATCH-FIX-UPSTREAM e-d-s-address-crash-on-cancel.patch badshah400@gmail.com -- Fix invalid memory access during situations while cancelling some synchronous operations; patch taken from upstream git
Patch1: e-d-s-address-crash-on-cancel.patch
# PATCH-FIX-UPSTREAM e-d-s-fix-slow-composer-open.patch bgo#689476 badshah400@gmail.com -- Fix composer opening slowly because of leaks; patch taken from upstream git
Patch2: e-d-s-fix-slow-composer-open.patch
# PATCH-FIX-UPSTREAM e-d-s-store_synchronize_sync.patch badshah400@gmail.com -- Cleanups in store_synchronize_sync(); patch taken from upstream git
Patch3: e-d-s-store_synchronize_sync.patch
# PATCH-FIX-UPSTREAM e-d-s-schedule-higher-idle-priority-actions.patch bgo#683867 badshah400@gmail.com -- Schedule actions with higher idle priority; patch taken from upstream git
Patch4: e-d-s-schedule-higher-idle-priority-actions.patch
# PATCH-FIX-UPSTREAM e-d-s-use-G_PRIORITY_HIGH_IDLE.patch badshah400@gmail.com -- Use G_PRIORITY_HIGH_IDLE to beat gtk+ redraws; patch taken from upstream git
Patch5: e-d-s-use-G_PRIORITY_HIGH_IDLE.patch
BuildRequires: db-devel BuildRequires: db-devel
%if %USE_EVOLDAP %if %USE_EVOLDAP
BuildRequires: evoldap2-devel BuildRequires: evoldap2-devel
@ -66,11 +54,10 @@ BuildRequires: gtk-doc
BuildRequires: intltool BuildRequires: intltool
BuildRequires: krb5-devel BuildRequires: krb5-devel
BuildRequires: libgdata-devel BuildRequires: libgdata-devel
BuildRequires: libgnome-keyring-devel
BuildRequires: libgweather-devel >= 3.5.0 BuildRequires: libgweather-devel >= 3.5.0
BuildRequires: libical-devel >= 0.43 BuildRequires: libical-devel >= 0.43
BuildRequires: libidl-devel BuildRequires: libidl-devel
BuildRequires: libsoup-devel >= 2.38.1 BuildRequires: libsoup-devel >= 2.40.3
BuildRequires: mozilla-nss-devel BuildRequires: mozilla-nss-devel
BuildRequires: nss-shared-helper-devel BuildRequires: nss-shared-helper-devel
BuildRequires: python-devel BuildRequires: python-devel
@ -80,7 +67,7 @@ BuildRequires: vala
BuildRequires: pkgconfig(gcr-base-3) >= 3.4 BuildRequires: pkgconfig(gcr-base-3) >= 3.4
BuildRequires: pkgconfig(goa-1.0) >= 3.2 BuildRequires: pkgconfig(goa-1.0) >= 3.2
BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(oauth) BuildRequires: pkgconfig(libsecret-unstable) >= 0.5
%if %USE_EVOLDAP %if %USE_EVOLDAP
Requires: libevoldap-2_4-2 Requires: libevoldap-2_4-2
%endif %endif
@ -95,6 +82,8 @@ Obsoletes: evolution-data-server-64bit
%ifarch %ix86 ppc %ifarch %ix86 ppc
Obsoletes: evolution-data-server-32bit Obsoletes: evolution-data-server-32bit
%endif %endif
# typelib-1_0-ECalendar-1_2 was dropped with e-d-s 3.7.3 due to libical not being introspecatble.
Obsoletes: typelib-1_0-ECalendar-1_2 <= %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%glib2_gsettings_schema_requires %glib2_gsettings_schema_requires
@ -132,6 +121,16 @@ and calendar in the GNOME Desktop.
This package contains a shared system library to access address books. This package contains a shared system library to access address books.
%package -n libebook-contacts-1_2-%{so_ebook_contacts}
Summary: Evolution Data Server - Address Book Client Library
Group: System/Libraries
%description -n libebook-contacts-1_2-%{so_ebook_contacts}
Evolution Data Server provides a central location for your address book
and calendar in the GNOME Desktop.
This package contains a shared system library to access address books.
%package -n libecal-1_2-%{so_ecal} %package -n libecal-1_2-%{so_ecal}
Summary: Evolution Data Server - Calendar Client Library Summary: Evolution Data Server - Calendar Client Library
Group: System/Libraries Group: System/Libraries
@ -142,20 +141,6 @@ and calendar in the GNOME Desktop.
This package contains a shared system library to access calendars. This package contains a shared system library to access calendars.
%if %{?with_introspection}
%package -n typelib-1_0-ECalendar-1_2
Summary: Evolution Data Server - Calendar Client Library, Introspection bindings
Group: System/Libraries
%description -n typelib-1_0-ECalendar-1_2
Evolution Data Server provides a central location for your address book
and calendar in the GNOME Desktop.
This package provides the GObject Introspection bindings for the library
to access calendars.
%endif
%package -n libedata-book-1_2-%{so_edata_book} %package -n libedata-book-1_2-%{so_edata_book}
Summary: Evolution Data Server - Address Book Backend Library Summary: Evolution Data Server - Address Book Backend Library
Group: System/Libraries Group: System/Libraries
@ -176,6 +161,17 @@ Group: System/Libraries
Evolution Data Server provides a central location for your address book Evolution Data Server provides a central location for your address book
and calendar in the GNOME Desktop. and calendar in the GNOME Desktop.
This package provides the GObject Introspection bindings for the library
for address book backends.
%package -n typelib-1_0-EBookContacts-1_2
Summary: Evolution Data Server - Address Book Backend Library, Introspection bindings
Group: System/Libraries
%description -n typelib-1_0-EBookContacts-1_2
Evolution Data Server provides a central location for your address book
and calendar in the GNOME Desktop.
This package provides the GObject Introspection bindings for the library This package provides the GObject Introspection bindings for the library
for address book backends. for address book backends.
%endif %endif
@ -216,16 +212,6 @@ This package provides the GObject Introspection bindings for the
libedataserver library. libedataserver library.
%endif %endif
%package -n libedataserverui-3_0-%{so_edataserverui}
Summary: Evolution Data Server - Graphical Utilities Library
Group: System/Libraries
%description -n libedataserverui-3_0-%{so_edataserverui}
Evolution Data Server provides a central location for your address book
and calendar in the GNOME Desktop.
This package contains a shared system library.
%package devel %package devel
Summary: Evolution Data Server - Development Files Summary: Evolution Data Server - Development Files
Group: Development/Libraries/GNOME Group: Development/Libraries/GNOME
@ -233,14 +219,14 @@ Requires: evolution-data-server = %{?epoch:}%{version}
Requires: libcamel-1_2-%{so_camel} = %{version} Requires: libcamel-1_2-%{so_camel} = %{version}
Requires: libebackend-1_2-%{so_ebackend} = %{version} Requires: libebackend-1_2-%{so_ebackend} = %{version}
Requires: libebook-1_2-%{so_ebook} = %{version} Requires: libebook-1_2-%{so_ebook} = %{version}
Requires: libebook-contacts-1_2-%{so_ebook_contacts} = %{version}
Requires: libecal-1_2-%{so_ecal} = %{version} Requires: libecal-1_2-%{so_ecal} = %{version}
Requires: libedata-book-1_2-%{so_edata_book} = %{version} Requires: libedata-book-1_2-%{so_edata_book} = %{version}
Requires: libedata-cal-1_2-%{so_edata_cal} = %{version} Requires: libedata-cal-1_2-%{so_edata_cal} = %{version}
Requires: libedataserver-1_2-%{so_edataserver} = %{version} Requires: libedataserver-1_2-%{so_edataserver} = %{version}
Requires: libedataserverui-3_0-%{so_edataserverui} = %{version}
%if %{?with_introspection} %if %{?with_introspection}
Requires: typelib-1_0-EBook-1_2 = %{version} Requires: typelib-1_0-EBook-1_2 = %{version}
Requires: typelib-1_0-ECalendar-1_2 = %{version} Requires: typelib-1_0-EBookContacts-1_2 = %{version}
Requires: typelib-1_0-EDataServer-1_2 = %{version} Requires: typelib-1_0-EDataServer-1_2 = %{version}
%endif %endif
%if %USE_EVOLDAP %if %USE_EVOLDAP
@ -269,12 +255,6 @@ This package contains developer documentation.
%lang_package %lang_package
%prep %prep
%setup -q %setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
translation-update-upstream translation-update-upstream
%build %build
@ -291,6 +271,7 @@ translation-update-upstream
--enable-smime=yes \ --enable-smime=yes \
--enable-nntp=yes \ --enable-nntp=yes \
--disable-static \ --disable-static \
--disable-uoa \
%if %{?with_introspection} %if %{?with_introspection}
--enable-vala-bindings \ --enable-vala-bindings \
--enable-introspection --enable-introspection
@ -335,6 +316,10 @@ find %{buildroot} -name '*.la' -type f -delete -print
%postun -n libebook-1_2-%{so_ebook} -p /sbin/ldconfig %postun -n libebook-1_2-%{so_ebook} -p /sbin/ldconfig
%post -n libebook-contacts-1_2-%{so_ebook_contacts} -p /sbin/ldconfig
%postun -n libebook-contacts-1_2-%{so_ebook_contacts} -p /sbin/ldconfig
%post -n libecal-1_2-%{so_ecal} -p /sbin/ldconfig %post -n libecal-1_2-%{so_ecal} -p /sbin/ldconfig
%postun -n libecal-1_2-%{so_ecal} -p /sbin/ldconfig %postun -n libecal-1_2-%{so_ecal} -p /sbin/ldconfig
@ -351,15 +336,10 @@ find %{buildroot} -name '*.la' -type f -delete -print
%postun -n libedataserver-1_2-%{so_edataserver} -p /sbin/ldconfig %postun -n libedataserver-1_2-%{so_edataserver} -p /sbin/ldconfig
%post -n libedataserverui-3_0-%{so_edataserverui} -p /sbin/ldconfig
%postun -n libedataserverui-3_0-%{so_edataserverui} -p /sbin/ldconfig
%files %files
%defattr(-,root,root) %defattr(-,root,root)
%doc COPYING ChangeLog NEWS TODO %doc COPYING ChangeLog NEWS TODO
# ui/ subdir is used by libedataserverui %{_datadir}/evolution-data-server/
%{_datadir}/evolution-data-server-%{_evo_version}/
%{_datadir}/GConf/gsettings/evolution-data-server.convert %{_datadir}/GConf/gsettings/evolution-data-server.convert
%{_datadir}/GConf/gsettings/libedataserver.convert %{_datadir}/GConf/gsettings/libedataserver.convert
%{_datadir}/glib-2.0/schemas/org.gnome.Evolution.DefaultSources.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.Evolution.DefaultSources.gschema.xml
@ -387,17 +367,14 @@ find %{buildroot} -name '*.la' -type f -delete -print
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libebook-1.2.so.%{so_ebook}* %{_libdir}/libebook-1.2.so.%{so_ebook}*
%files -n libebook-contacts-1_2-%{so_ebook_contacts}
%defattr(-, root, root)
%{_libdir}/libebook-contacts-1.2.so.%{so_ebook_contacts}*
%files -n libecal-1_2-%{so_ecal} %files -n libecal-1_2-%{so_ecal}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libecal-1.2.so.%{so_ecal}* %{_libdir}/libecal-1.2.so.%{so_ecal}*
%if %{?with_introspection}
%files -n typelib-1_0-ECalendar-1_2
%defattr(-, root, root)
%{_libdir}/girepository-1.0/ECalendar-1.2.typelib
%endif
%files -n libedata-book-1_2-%{so_edata_book} %files -n libedata-book-1_2-%{so_edata_book}
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libedata-book-1.2.so.%{so_edata_book}* %{_libdir}/libedata-book-1.2.so.%{so_edata_book}*
@ -407,6 +384,10 @@ find %{buildroot} -name '*.la' -type f -delete -print
%files -n typelib-1_0-EBook-1_2 %files -n typelib-1_0-EBook-1_2
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/girepository-1.0/EBook-1.2.typelib %{_libdir}/girepository-1.0/EBook-1.2.typelib
%files -n typelib-1_0-EBookContacts-1_2
%defattr(-, root, root)
%{_libdir}/girepository-1.0/EBookContacts-1.2.typelib
%endif %endif
%files -n libedata-cal-1_2-%{so_edata_cal} %files -n libedata-cal-1_2-%{so_edata_cal}
@ -424,13 +405,9 @@ find %{buildroot} -name '*.la' -type f -delete -print
%{_libdir}/girepository-1.0/EDataServer-1.2.typelib %{_libdir}/girepository-1.0/EDataServer-1.2.typelib
%endif %endif
%files -n libedataserverui-3_0-%{so_edataserverui}
%defattr(-, root, root)
%{_libdir}/libedataserverui-3.0.so.%{so_edataserverui}*
%files devel %files devel
%defattr(-, root, root) %defattr(-, root, root)
%{_includedir}/evolution-data-server-%{_evo_version}/ %{_includedir}/evolution-data-server/
%{_libdir}/*.so %{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc %{_libdir}/pkgconfig/*.pc
%if %{?with_introspection} %if %{?with_introspection}