[gnome-calendar] application: Improve order of statup
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] application: Improve order of statup
- Date: Sun, 28 Jan 2018 14:40:57 +0000 (UTC)
commit f698981aa887c52f47c8232f821b814fdc3e75ab
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Sun Jan 28 12:39:13 2018 -0200
application: Improve order of statup
This commit makes sure that logging is set before
actually logging anything. It also sychronizes the
application startup with the manager startup.
src/gcal-application.c | 54 +++++++----
src/gcal-manager.c | 251 ++++++++++++++++++++++++-------------------------
src/gcal-manager.h | 2 +-
3 files changed, 158 insertions(+), 149 deletions(-)
---
diff --git a/src/gcal-application.c b/src/gcal-application.c
index bd2b1dd3..be8301b4 100644
--- a/src/gcal-application.c
+++ b/src/gcal-application.c
@@ -336,8 +336,12 @@ gcal_application_activate (GApplication *application)
static void
gcal_application_startup (GApplication *app)
{
+ GcalApplication *self;
+
GCAL_ENTRY;
+ self = GCAL_APPLICATION (app);
+
/* add actions */
g_action_map_add_action_entries (G_ACTION_MAP (app),
gcal_app_entries,
@@ -346,6 +350,20 @@ gcal_application_startup (GApplication *app)
G_APPLICATION_CLASS (gcal_application_parent_class)->startup (app);
+ self->colors_provider = gtk_css_provider_new ();
+ self->weather_service = gcal_weather_service_new ();
+
+ /* Time format */
+ self->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
+ g_signal_connect_swapped (self->desktop_settings,
+ "changed::clock-format",
+ G_CALLBACK (load_time_format),
+ self);
+ load_time_format (self);
+
+ /* Startup the manager */
+ gcal_manager_startup (self->manager);
+
/* We're assuming the application is called as a service only by the shell search system */
if ((g_application_get_flags (app) & G_APPLICATION_IS_SERVICE) != 0)
g_application_set_inactivity_timeout (app, 3 * 60 * 1000);
@@ -364,18 +382,17 @@ gcal_application_command_line (GApplication *app,
const gchar* uuid = NULL;
gsize length;
+ GCAL_ENTRY;
+
self = GCAL_APPLICATION (app);
options = g_application_command_line_get_options_dict (command_line);
if (g_variant_dict_contains (options, "quit"))
{
g_application_quit (app);
- return 0;
+ GCAL_RETURN (0);
}
- if (g_variant_dict_contains (options, "debug"))
- gcal_log_init ();
-
if (g_variant_dict_contains (options, "uuid"))
{
option = g_variant_dict_lookup_value (options, "uuid", G_VARIANT_TYPE_STRING);
@@ -407,13 +424,17 @@ gcal_application_command_line (GApplication *app,
g_application_activate (app);
- return 0;
+ GCAL_RETURN (0);
}
static gint
gcal_application_handle_local_options (GApplication *app,
GVariantDict *options)
{
+ /* Initialize logging before anything else */
+ if (g_variant_dict_contains (options, "debug"))
+ gcal_log_init ();
+
if (show_version)
{
g_print ("gnome-calendar: Version %s\n", PACKAGE_VERSION);
@@ -432,17 +453,19 @@ gcal_application_dbus_register (GApplication *application,
GcalApplication *self;
g_autofree gchar *search_provider_path = NULL;
+ GCAL_ENTRY;
+
self = GCAL_APPLICATION (application);
if (!G_APPLICATION_CLASS (gcal_application_parent_class)->dbus_register (application, connection,
object_path, error))
- return FALSE;
+ GCAL_RETURN (FALSE);
search_provider_path = g_strconcat (object_path, "/SearchProvider", NULL);
if (!gcal_shell_search_provider_dbus_export (self->search_provider, connection, search_provider_path,
error))
- return FALSE;
+ GCAL_RETURN (FALSE);
- return TRUE;
+ GCAL_RETURN (TRUE);
}
static void
@@ -453,12 +476,16 @@ gcal_application_dbus_unregister (GApplication *application,
GcalApplication *self;
g_autofree gchar *search_provider_path = NULL;
+ GCAL_ENTRY;
+
self = GCAL_APPLICATION (application);
search_provider_path = g_strconcat (object_path, "/SearchProvider", NULL);
gcal_shell_search_provider_dbus_unexport (self->search_provider, connection, search_provider_path);
G_APPLICATION_CLASS (gcal_application_parent_class)->dbus_unregister (application, connection,
object_path);
+
+ GCAL_EXIT;
}
static void
@@ -506,22 +533,11 @@ gcal_application_init (GcalApplication *self)
{
g_application_add_main_option_entries (G_APPLICATION (self), gcal_application_goptions);
- self->colors_provider = gtk_css_provider_new ();
-
self->manager = gcal_manager_new ();
g_signal_connect_swapped (self->manager, "source-added", G_CALLBACK (process_sources), self);
g_signal_connect_swapped (self->manager, "source-changed", G_CALLBACK (process_sources), self);
- self->weather_service = gcal_weather_service_new ();
self->search_provider = gcal_shell_search_provider_new (self->manager);
-
- /* Time format */
- self->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
- g_signal_connect_swapped (self->desktop_settings,
- "changed::clock-format",
- G_CALLBACK (load_time_format),
- self);
- load_time_format (self);
}
static void
diff --git a/src/gcal-manager.c b/src/gcal-manager.c
index 631badae..67ec7b60 100644
--- a/src/gcal-manager.c
+++ b/src/gcal-manager.c
@@ -769,134 +769,6 @@ gcal_manager_client_ready_cb (GObject *source,
GCAL_EXIT;
}
-static void
-gcal_manager_constructed (GObject *object)
-{
- GcalManager *self;
-
- GList *sources, *l;
- GError *error = NULL;
- ESourceCredentialsProvider *credentials_provider;
-
- GCAL_ENTRY;
-
- G_OBJECT_CLASS (gcal_manager_parent_class)->constructed (object);
-
- self = GCAL_MANAGER (object);
- self->system_timezone = e_cal_util_get_system_timezone ();
-
- self->clients = g_hash_table_new_full ((GHashFunc) e_source_hash, (GEqualFunc) e_source_equal,
- g_object_unref, (GDestroyNotify) free_unit_data);
-
- /* load GOA client */
- goa_client_new (NULL, /* we won't really cancel it */
- (GAsyncReadyCallback) gcal_manager_client_ready_cb,
- object);
-
- /* reading sources and schedule its connecting */
- self->source_registry = e_source_registry_new_sync (NULL, &error);
-
- if (!self->source_registry)
- {
- g_warning ("Failed to access calendar configuration: %s", error->message);
- g_error_free (error);
- return;
- }
-
- g_object_bind_property (self->source_registry,
- "default-calendar",
- self,
- "default-calendar",
- G_BINDING_DEFAULT);
-
- self->credentials_prompter = e_credentials_prompter_new (self->source_registry);
-
- /* First disable credentials prompt for all but calendar sources... */
- sources = e_source_registry_list_sources (self->source_registry, NULL);
-
- for (l = sources; l != NULL; l = g_list_next (l))
- {
- ESource *source = E_SOURCE (l->data);
-
- /* Mark for skip also currently disabled sources */
- if (!e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR) &&
- !e_source_has_extension (source, E_SOURCE_EXTENSION_COLLECTION))
- {
- e_credentials_prompter_set_auto_prompt_disabled_for (self->credentials_prompter, source, TRUE);
- }
- else
- {
- e_source_get_last_credentials_required_arguments (source,
- NULL,
-
source_get_last_credentials_required_arguments_cb,
- object);
- }
- }
-
- g_list_free_full (sources, g_object_unref);
-
- credentials_provider = e_credentials_prompter_get_provider (self->credentials_prompter);
-
- /* ...then enable credentials prompt for credential source of the calendar sources,
- which can be a collection source. */
- sources = e_source_registry_list_sources (self->source_registry, E_SOURCE_EXTENSION_CALENDAR);
-
- for (l = sources; l != NULL; l = g_list_next (l))
- {
- ESource *source, *cred_source;
-
- source = l->data;
- cred_source = e_source_credentials_provider_ref_credentials_source (credentials_provider, source);
-
- if (cred_source && !e_source_equal (source, cred_source))
- {
- e_credentials_prompter_set_auto_prompt_disabled_for (self->credentials_prompter, cred_source,
FALSE);
-
- /* Only consider SSL errors */
- if (e_source_get_connection_status (cred_source) != E_SOURCE_CONNECTION_STATUS_SSL_FAILED)
- continue;
-
- e_source_get_last_credentials_required_arguments (cred_source,
- NULL,
-
source_get_last_credentials_required_arguments_cb,
- object);
- }
-
- g_clear_object (&cred_source);
- }
-
- g_list_free_full (sources, g_object_unref);
-
- /* The eds_credentials_prompter responses to REQUIRED and REJECTED reasons,
- the SSL_FAILED should be handled elsewhere. */
- g_signal_connect (self->source_registry, "credentials-required", G_CALLBACK
(source_credentials_required_cb), object);
-
- e_credentials_prompter_process_awaiting_credentials (self->credentials_prompter);
-
- g_signal_connect_swapped (self->source_registry, "source-added", G_CALLBACK (load_source), object);
- g_signal_connect_swapped (self->source_registry, "source-removed", G_CALLBACK (remove_source), object);
- g_signal_connect_swapped (self->source_registry, "source-changed", G_CALLBACK (source_changed), object);
-
- /* create data model */
- self->e_data_model = e_cal_data_model_new (submit_thread_job);
- self->search_data_model = e_cal_data_model_new (submit_thread_job);
-
- e_cal_data_model_set_expand_recurrences (self->e_data_model, TRUE);
- e_cal_data_model_set_timezone (self->e_data_model, self->system_timezone);
- e_cal_data_model_set_expand_recurrences (self->search_data_model, TRUE);
- e_cal_data_model_set_timezone (self->search_data_model, self->system_timezone);
-
- sources = e_source_registry_list_enabled (self->source_registry, E_SOURCE_EXTENSION_CALENDAR);
- self->sources_at_launch = g_list_length (sources);
-
- for (l = sources; l != NULL; l = l->next)
- load_source (GCAL_MANAGER (object), l->data);
-
- g_list_free (sources);
-
- GCAL_EXIT;
-}
-
static void
gcal_manager_finalize (GObject *object)
{
@@ -996,7 +868,6 @@ gcal_manager_class_init (GcalManagerClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = gcal_manager_finalize;
- object_class->constructed = gcal_manager_constructed;
object_class->set_property = gcal_manager_set_property;
object_class->get_property = gcal_manager_get_property;
@@ -1095,6 +966,7 @@ gcal_manager_init (GcalManager *self)
{
self->clock = gcal_clock_new ();
self->settings = g_settings_new ("org.gnome.calendar");
+ self->system_timezone = e_cal_util_get_system_timezone ();
}
/* Public API */
@@ -2070,3 +1942,124 @@ gcal_manager_get_goa_client (GcalManager *self)
GCAL_RETURN (self->goa_client);
}
+
+void
+gcal_manager_startup (GcalManager *self)
+{
+ GList *sources, *l;
+ GError *error = NULL;
+ ESourceCredentialsProvider *credentials_provider;
+
+ GCAL_ENTRY;
+
+ self->clients = g_hash_table_new_full ((GHashFunc) e_source_hash, (GEqualFunc) e_source_equal,
+ g_object_unref, (GDestroyNotify) free_unit_data);
+
+ /* load GOA client */
+ goa_client_new (NULL, /* we won't really cancel it */
+ (GAsyncReadyCallback) gcal_manager_client_ready_cb,
+ self);
+
+ /* reading sources and schedule its connecting */
+ self->source_registry = e_source_registry_new_sync (NULL, &error);
+
+ if (!self->source_registry)
+ {
+ g_warning ("Failed to access calendar configuration: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ g_object_bind_property (self->source_registry,
+ "default-calendar",
+ self,
+ "default-calendar",
+ G_BINDING_DEFAULT);
+
+ self->credentials_prompter = e_credentials_prompter_new (self->source_registry);
+
+ /* First disable credentials prompt for all but calendar sources... */
+ sources = e_source_registry_list_sources (self->source_registry, NULL);
+
+ for (l = sources; l != NULL; l = g_list_next (l))
+ {
+ ESource *source = E_SOURCE (l->data);
+
+ /* Mark for skip also currently disabled sources */
+ if (!e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR) &&
+ !e_source_has_extension (source, E_SOURCE_EXTENSION_COLLECTION))
+ {
+ e_credentials_prompter_set_auto_prompt_disabled_for (self->credentials_prompter, source, TRUE);
+ }
+ else
+ {
+ e_source_get_last_credentials_required_arguments (source,
+ NULL,
+
source_get_last_credentials_required_arguments_cb,
+ self);
+ }
+ }
+
+ g_list_free_full (sources, g_object_unref);
+
+ credentials_provider = e_credentials_prompter_get_provider (self->credentials_prompter);
+
+ /* ...then enable credentials prompt for credential source of the calendar sources,
+ which can be a collection source. */
+ sources = e_source_registry_list_sources (self->source_registry, E_SOURCE_EXTENSION_CALENDAR);
+
+ for (l = sources; l != NULL; l = g_list_next (l))
+ {
+ ESource *source, *cred_source;
+
+ source = l->data;
+ cred_source = e_source_credentials_provider_ref_credentials_source (credentials_provider, source);
+
+ if (cred_source && !e_source_equal (source, cred_source))
+ {
+ e_credentials_prompter_set_auto_prompt_disabled_for (self->credentials_prompter, cred_source,
FALSE);
+
+ /* Only consider SSL errors */
+ if (e_source_get_connection_status (cred_source) != E_SOURCE_CONNECTION_STATUS_SSL_FAILED)
+ continue;
+
+ e_source_get_last_credentials_required_arguments (cred_source,
+ NULL,
+
source_get_last_credentials_required_arguments_cb,
+ self);
+ }
+
+ g_clear_object (&cred_source);
+ }
+
+ g_list_free_full (sources, g_object_unref);
+
+ /* The eds_credentials_prompter responses to REQUIRED and REJECTED reasons,
+ the SSL_FAILED should be handled elsewhere. */
+ g_signal_connect (self->source_registry, "credentials-required", G_CALLBACK
(source_credentials_required_cb), self);
+
+ e_credentials_prompter_process_awaiting_credentials (self->credentials_prompter);
+
+ g_signal_connect_swapped (self->source_registry, "source-added", G_CALLBACK (load_source), self);
+ g_signal_connect_swapped (self->source_registry, "source-removed", G_CALLBACK (remove_source), self);
+ g_signal_connect_swapped (self->source_registry, "source-changed", G_CALLBACK (source_changed), self);
+
+ /* create data model */
+ self->e_data_model = e_cal_data_model_new (submit_thread_job);
+ self->search_data_model = e_cal_data_model_new (submit_thread_job);
+
+ e_cal_data_model_set_expand_recurrences (self->e_data_model, TRUE);
+ e_cal_data_model_set_timezone (self->e_data_model, self->system_timezone);
+ e_cal_data_model_set_expand_recurrences (self->search_data_model, TRUE);
+ e_cal_data_model_set_timezone (self->search_data_model, self->system_timezone);
+
+ sources = e_source_registry_list_enabled (self->source_registry, E_SOURCE_EXTENSION_CALENDAR);
+ self->sources_at_launch = g_list_length (sources);
+
+ for (l = sources; l != NULL; l = l->next)
+ load_source (self, l->data);
+
+ g_list_free (sources);
+
+ GCAL_EXIT;
+}
diff --git a/src/gcal-manager.h b/src/gcal-manager.h
index 6ac9717f..56f44555 100644
--- a/src/gcal-manager.h
+++ b/src/gcal-manager.h
@@ -133,7 +133,7 @@ gboolean gcal_manager_shell_search_done (GcalManager
GList* gcal_manager_get_shell_search_events (GcalManager *self);
-
+void gcal_manager_startup (GcalManager *self);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]