[gnome-todo] eds: Late notify new lists and other minor tweaks
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo] eds: Late notify new lists and other minor tweaks
- Date: Fri, 2 Feb 2018 14:45:03 +0000 (UTC)
commit 39fed850b6feedf3c1e74f444bc967c9feb1406c
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Fri Feb 2 12:36:40 2018 -0200
eds: Late notify new lists and other minor tweaks
This fix an important bottleneck in startup performance. It is
better to only notify about new lists ~after~ the tasks are
added.
The unrelated stuff, well, I was too lazy to split the commits.
plugins/eds/gtd-provider-eds.c | 63 ++++++++++++++++--------------------------
1 file changed, 24 insertions(+), 39 deletions(-)
---
diff --git a/plugins/eds/gtd-provider-eds.c b/plugins/eds/gtd-provider-eds.c
index 0f237c8..6e651f9 100644
--- a/plugins/eds/gtd-provider-eds.c
+++ b/plugins/eds/gtd-provider-eds.c
@@ -124,14 +124,17 @@ gtd_provider_eds_fill_task_list (GObject *client,
GAsyncResult *result,
gpointer user_data)
{
+ g_autoptr (GError) error = NULL;
+ GtdProviderEds *self;
GtdTaskList *list;
TaskData *data = user_data;
GSList *component_list;
- GError *error = NULL;
+ GSList *l;
g_return_if_fail (GTD_IS_PROVIDER_EDS (data->provider));
list = GTD_TASK_LIST (data->data);
+ self = data->provider;
e_cal_client_get_object_list_as_comps_finish (E_CAL_CLIENT (client),
result,
@@ -141,37 +144,32 @@ gtd_provider_eds_fill_task_list (GObject *client,
gtd_object_set_ready (GTD_OBJECT (data->data), TRUE);
g_free (data);
- if (!error)
- {
- GSList *l;
-
- for (l = component_list; l != NULL; l = l->next)
- {
- GtdTask *task;
-
- task = gtd_task_eds_new (l->data);
- gtd_task_set_list (task, list);
-
- gtd_task_list_save_task (list, task);
- }
-
- e_cal_client_free_ecalcomp_slist (component_list);
- }
- else
+ if (error)
{
- g_warning ("%s: %s: %s",
- G_STRFUNC,
- "Error fetching tasks from list",
- error->message);
+ g_warning ("Error fetching tasks from list: %s", error->message);
gtd_manager_emit_error_message (gtd_manager_get_default (),
_("Error fetching tasks from list"),
error->message,
NULL,
NULL);
- g_error_free (error);
return;
}
+
+ for (l = component_list; l != NULL; l = l->next)
+ {
+ GtdTask *task;
+
+ task = gtd_task_eds_new (l->data);
+ gtd_task_set_list (task, list);
+
+ gtd_task_list_save_task (list, task);
+ }
+
+ e_cal_client_free_ecalcomp_slist (component_list);
+
+ /* Emit LIST_ADDED signal */
+ g_signal_emit_by_name (self, "list-added", list);
}
static void
@@ -179,6 +177,7 @@ gtd_provider_eds_on_client_connected (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
{
+ g_autoptr (GError) error = NULL;
GtdProviderEdsPrivate *priv;
GtdProviderEds *self;
GtdTaskListEds *list;
@@ -187,29 +186,21 @@ gtd_provider_eds_on_client_connected (GObject *source_object,
ESource *default_source;
ESource *source;
ESource *parent;
- GError *error;
self = GTD_PROVIDER_EDS (user_data);
priv = gtd_provider_eds_get_instance_private (self);
- error = NULL;
source = e_client_get_source (E_CLIENT (source_object));
client = E_CAL_CLIENT (e_cal_client_connect_finish (result, &error));
if (error)
{
- g_debug ("%s: %s (%s): %s",
- G_STRFUNC,
- "Failed to connect to task list",
- e_source_get_uid (source),
- error->message);
+ g_debug ("Failed to connect to task list '%s': %s", e_source_get_uid (source), error->message);
gtd_manager_emit_error_message (gtd_manager_get_default (),
_("Failed to connect to task list"),
error->message,
NULL,
NULL);
-
- g_error_free (error);
return;
}
@@ -248,15 +239,9 @@ gtd_provider_eds_on_client_connected (GObject *source_object,
g_clear_object (&default_source);
- /* Emit LIST_ADDED signal */
- g_signal_emit_by_name (self, "list-added", list);
-
g_object_unref (parent);
- g_debug ("%s: %s (%s)",
- G_STRFUNC,
- "Task list source successfully connected",
- e_source_get_display_name (source));
+ g_debug ("Task list '%s' successfully connected", e_source_get_display_name (source));
}
typedef struct
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]