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:
commit
a0762a3bfc
@ -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
|
|
||||||
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:37a0d0d4f6c8515e70e34f1e7e1f457f4c7736f35ba0f18c4b4bca0a17db7de0
|
|
||||||
size 4073908
|
|
3
evolution-data-server-3.8.0.tar.xz
Normal file
3
evolution-data-server-3.8.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:fff7dca02abc52caa62ddbd93a9135c15da3f21c36c25774f3399fb7a6c1d41e
|
||||||
|
size 3898836
|
@ -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
|
||||||
|
|
||||||
|
@ -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}
|
||||||
|
Loading…
Reference in New Issue
Block a user