manager: avoid deep nesting

Use an early return rather than deep nesting to improve the
code legibility.

https://bugzilla.gnome.org/show_bug.cgi?id=764623
This commit is contained in:
Georges Basile Stavracas Neto
2016-10-03 14:10:35 -03:00
parent 7d3cd7f727
commit 3d3dddf815
+15 -19
View File
@@ -340,13 +340,11 @@ on_client_connected (GObject *source_object,
GAsyncResult *result, GAsyncResult *result,
gpointer user_data) gpointer user_data)
{ {
GcalManagerUnit *unit;
GcalManager *manager; GcalManager *manager;
ECalClient *client; ECalClient *client;
GError *error;
ESource *source; ESource *source;
GError *error;
GcalManagerUnit *unit;
manager = GCAL_MANAGER (user_data); manager = GCAL_MANAGER (user_data);
source = e_client_get_source (E_CLIENT (source_object)); source = e_client_get_source (E_CLIENT (source_object));
@@ -357,8 +355,20 @@ on_client_connected (GObject *source_object,
error = NULL; error = NULL;
client = E_CAL_CLIENT (e_cal_client_connect_finish (result, &error)); client = E_CAL_CLIENT (e_cal_client_connect_finish (result, &error));
if (error == NULL)
if (error)
{ {
remove_source (GCAL_MANAGER (user_data), source);
g_warning ("%s: Failed to open/connect '%s': %s",
G_STRFUNC,
e_source_get_display_name (source),
error->message);
g_object_unref (source);
g_error_free (error);
return;
}
unit = g_new0 (GcalManagerUnit, 1); unit = g_new0 (GcalManagerUnit, 1);
unit->connected = TRUE; unit->connected = TRUE;
unit->client = g_object_ref (client); unit->client = g_object_ref (client);
@@ -395,20 +405,6 @@ on_client_connected (GObject *source_object,
g_signal_emit (GCAL_MANAGER (user_data), signals[SOURCE_ADDED], 0, source, unit->enabled); g_signal_emit (GCAL_MANAGER (user_data), signals[SOURCE_ADDED], 0, source, unit->enabled);
g_clear_object (&client); g_clear_object (&client);
}
else
{
/* in any other case, remove it*/
remove_source (GCAL_MANAGER (user_data), source);
g_warning ("%s: Failed to open/connect '%s': %s",
G_STRFUNC,
e_source_get_display_name (source),
error->message);
g_object_unref (source);
g_error_free (error);
return;
}
} }
static void static void