[frogr] Don't perform after-upload operations on idle.
- From: Mario Sanchez Prada <msanchez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [frogr] Don't perform after-upload operations on idle.
- Date: Fri, 2 Nov 2012 08:49:38 +0000 (UTC)
commit d43349c914a2ff7722f4173528cba4a68bbe0f59
Author: Mario Sanchez Prada <msanchez gnome org>
Date: Wed Oct 31 17:49:05 2012 +0100
Don't perform after-upload operations on idle.
Those operations work now in paralell and are already asynchronous,
so there's no point on running them when idle.
src/frogr-controller.c | 203 +++++++++++++++++++++--------------------------
1 files changed, 91 insertions(+), 112 deletions(-)
---
diff --git a/src/frogr-controller.c b/src/frogr-controller.c
index 1552c03..78f3f49 100644
--- a/src/frogr-controller.c
+++ b/src/frogr-controller.c
@@ -168,21 +168,21 @@ static void _finish_upload_pictures_process (FrogrController *self, UploadPictur
static void _set_license_cb (GObject *object, GAsyncResult *res, gpointer data);
-static void _set_location_cb (GObject *object, GAsyncResult *res, gpointer data);
+static void _set_license_for_picture (FrogrController *self, UploadOnePictureData *uop_data);
-static gboolean _set_location_on_idle (gpointer data);
+static void _set_location_cb (GObject *object, GAsyncResult *res, gpointer data);
-static gboolean _create_set_or_add_picture_on_idle (gpointer data);
+static void _set_location_for_picture (FrogrController *self, UploadOnePictureData *uop_data);
-static gboolean _create_set_or_add_picture (FrogrController *self, gpointer data);
+static gboolean _add_picture_to_sets_or_create (FrogrController *self, UploadOnePictureData *uop_data);
static void _create_photoset_cb (GObject *object, GAsyncResult *res, gpointer data);
static void _add_to_photoset_cb (GObject *object, GAsyncResult *res, gpointer data);
-static void _add_to_group_cb (GObject *object, GAsyncResult *res, gpointer data);
+static void _add_picture_to_groups (FrogrController *self, UploadOnePictureData *uop_data);
-static gboolean _add_picture_to_groups_on_idle (gpointer data);
+static void _add_to_group_cb (GObject *object, GAsyncResult *res, gpointer data);
static void _notify_adding_to_group (FrogrController *self, FrogrPicture *picture, FrogrGroup *group);
@@ -738,55 +738,30 @@ _upload_picture_cb (GObject *object, GAsyncResult *res, gpointer data)
for a picture or to add the picture to sets or groups */
if (!error)
{
- GSList *photosets = NULL;
- GSList *groups = NULL;
- FspLicense license = FSP_LICENSE_NONE;
-
- license = frogr_picture_get_license (picture);
- photosets = frogr_picture_get_photosets (picture);
- groups = frogr_picture_get_groups (picture);
-
/* Set license if needed */
- if (license != FSP_LICENSE_NONE)
+ if (frogr_picture_get_license (picture) != FSP_LICENSE_NONE)
{
- gchar *debug_msg = NULL;
-
- priv->setting_license = TRUE;
- fsp_session_set_license (session,
- frogr_picture_get_id (picture),
- license,
- priv->last_cancellable,
- _set_license_cb,
- uop_data);
-
- debug_msg = g_strdup_printf ("Setting license %d for picture %sâ",
- frogr_picture_get_license (picture),
- frogr_picture_get_title (picture));
- DEBUG ("%s", debug_msg);
- g_free (debug_msg);
+ _set_license_for_picture (controller, uop_data);
}
if (frogr_picture_send_location (picture)
&& frogr_picture_get_location (picture) != NULL)
{
- priv->setting_location = TRUE;
- gdk_threads_add_timeout (DEFAULT_TIMEOUT, _set_location_on_idle, uop_data);
+ _set_location_for_picture (controller, uop_data);
}
/* Add picture to set if needed (and maybe create a new one) */
- if (g_slist_length (photosets) > 0)
+ if (g_slist_length (frogr_picture_get_photosets (picture)) > 0)
{
- priv->adding_to_set = TRUE;
- uop_data->photosets = photosets;
- gdk_threads_add_timeout (DEFAULT_TIMEOUT, _create_set_or_add_picture_on_idle, uop_data);
+ uop_data->photosets = frogr_picture_get_photosets (picture);
+ _add_picture_to_sets_or_create (controller, uop_data);
}
/* Add picture to groups if needed */
- if (g_slist_length (groups) > 0)
+ if (g_slist_length (frogr_picture_get_groups (picture)) > 0)
{
- priv->adding_to_group = TRUE;
- uop_data->groups = groups;
- gdk_threads_add_timeout (DEFAULT_TIMEOUT, _add_picture_to_groups_on_idle, uop_data);
+ uop_data->groups = frogr_picture_get_groups (picture);
+ _add_picture_to_groups (controller, uop_data);
}
}
@@ -858,6 +833,32 @@ _set_license_cb (GObject *object, GAsyncResult *res, gpointer data)
}
static void
+_set_license_for_picture (FrogrController *self, UploadOnePictureData *uop_data)
+{
+ FrogrControllerPrivate *priv = NULL;
+ FrogrPicture *picture = NULL;
+ gchar *debug_msg = NULL;
+
+ priv = FROGR_CONTROLLER_GET_PRIVATE (self);
+ priv->setting_license = TRUE;
+ picture = uop_data->picture;
+
+ _enable_cancellable (self, FALSE);
+ fsp_session_set_license (priv->session,
+ frogr_picture_get_id (picture),
+ frogr_picture_get_license (picture),
+ NULL,
+ _set_license_cb,
+ uop_data);
+
+ debug_msg = g_strdup_printf ("Setting license %d for picture %sâ",
+ frogr_picture_get_license (picture),
+ frogr_picture_get_title (picture));
+ DEBUG ("%s", debug_msg);
+ g_free (debug_msg);
+}
+
+static void
_set_location_cb (GObject *object, GAsyncResult *res, gpointer data)
{
FspSession *session = NULL;
@@ -882,31 +883,29 @@ _set_location_cb (GObject *object, GAsyncResult *res, gpointer data)
priv->setting_location = FALSE;
}
-static gboolean
-_set_location_on_idle (gpointer data)
+static void
+_set_location_for_picture (FrogrController *self, UploadOnePictureData *uop_data)
{
- UploadOnePictureData *uop_data = NULL;
- FrogrController *controller = NULL;
FrogrControllerPrivate *priv = NULL;
FrogrPicture *picture = NULL;
FrogrLocation *location = NULL;
FspDataLocation *data_location = NULL;
gchar *debug_msg = NULL;
- uop_data = (UploadOnePictureData*) data;
- controller = uop_data->controller;
-
picture = uop_data->picture;
location = frogr_picture_get_location (picture);
data_location = FSP_DATA_LOCATION (fsp_data_new (FSP_LOCATION));
data_location->latitude = frogr_location_get_latitude (location);
data_location->longitude = frogr_location_get_longitude (location);
- priv = FROGR_CONTROLLER_GET_PRIVATE (controller);
+ priv = FROGR_CONTROLLER_GET_PRIVATE (self);
+ priv->setting_location = TRUE;
+
+ _enable_cancellable (self, FALSE);
fsp_session_set_location (priv->session,
frogr_picture_get_id (picture),
data_location,
- priv->last_cancellable,
+ NULL,
_set_location_cb,
uop_data);
@@ -919,41 +918,29 @@ _set_location_on_idle (gpointer data)
g_free (debug_msg);
fsp_data_free (FSP_DATA (data_location));
-
- return FALSE;
}
static gboolean
-_create_set_or_add_picture_on_idle (gpointer data)
-{
- UploadOnePictureData *uop_data = NULL;
- uop_data = (UploadOnePictureData*) data;
- _create_set_or_add_picture (uop_data->controller, uop_data);
- return FALSE;
-}
-
-static gboolean
-_create_set_or_add_picture (FrogrController *self, gpointer data)
+_add_picture_to_sets_or_create (FrogrController *self, UploadOnePictureData *uop_data)
{
FrogrControllerPrivate *priv = NULL;
- UploadOnePictureData *uop_data = NULL;
FrogrPicture *picture = NULL;
FrogrPhotoSet *set = NULL;
const gchar *id = NULL;
GSList *photosets = NULL;
- uop_data = (UploadOnePictureData*) data;
photosets = uop_data->photosets;
- priv = FROGR_CONTROLLER_GET_PRIVATE (self);
if (g_slist_length (photosets) == 0)
- {
- priv->adding_to_set = FALSE;
- return FALSE;
- }
+ return FALSE;
- picture = uop_data->picture;
set = FROGR_PHOTOSET (photosets->data);
id = frogr_photoset_get_id (set);
+
+ priv = FROGR_CONTROLLER_GET_PRIVATE (self);
+ priv->adding_to_set = TRUE;
+
+ picture = uop_data->picture;
+ _enable_cancellable (self, FALSE);
if (id != NULL)
{
gchar *debug_msg = NULL;
@@ -962,7 +949,7 @@ _create_set_or_add_picture (FrogrController *self, gpointer data)
fsp_session_add_to_photoset (priv->session,
frogr_picture_get_id (picture),
frogr_photoset_get_id (set),
- priv->last_cancellable,
+ NULL,
_add_to_photoset_cb,
uop_data);
@@ -981,7 +968,7 @@ _create_set_or_add_picture (FrogrController *self, gpointer data)
frogr_photoset_get_title (set),
frogr_photoset_get_description (set),
frogr_picture_get_id (picture),
- priv->last_cancellable,
+ NULL,
_create_photoset_cb,
uop_data);
@@ -1029,7 +1016,7 @@ _create_photoset_cb (GObject *object, GAsyncResult *res, gpointer data)
/* When adding pictures to photosets, we only stop if the process
was not explicitly cancelled by the user */
if (!error || error->code != FSP_ERROR_CANCELLED)
- keep_going = _create_set_or_add_picture (controller, uop_data);
+ keep_going = _add_picture_to_sets_or_create (controller, uop_data);
if (error && error->code != FSP_ERROR_CANCELLED)
{
@@ -1077,7 +1064,7 @@ _add_to_photoset_cb (GObject *object, GAsyncResult *res, gpointer data)
/* When adding pictures to photosets, we only stop if the process
was not explicitly cancelled by the user */
if (!error || error->code != FSP_ERROR_CANCELLED)
- keep_going = _create_set_or_add_picture (controller, uop_data);
+ keep_going = _add_picture_to_sets_or_create (controller, uop_data);
if (error && error->code != FSP_ERROR_CANCELLED)
{
@@ -1098,6 +1085,36 @@ _add_to_photoset_cb (GObject *object, GAsyncResult *res, gpointer data)
}
static void
+_add_picture_to_groups (FrogrController *self, UploadOnePictureData *uop_data)
+{
+ FrogrControllerPrivate *priv = NULL;
+ FrogrPicture *picture = NULL;
+ FrogrGroup *group = NULL;
+ GSList *groups = NULL;
+
+ /* Add pictures to groups, if any */
+ groups = uop_data->groups;
+ if (g_slist_length (groups) == 0)
+ return;
+
+ group = FROGR_GROUP (uop_data->groups->data);
+
+ priv = FROGR_CONTROLLER_GET_PRIVATE (self);
+ priv->adding_to_group = TRUE;
+ picture = uop_data->picture;
+
+ _enable_cancellable (self, FALSE);
+ fsp_session_add_to_group (priv->session,
+ frogr_picture_get_id (picture),
+ frogr_group_get_id (group),
+ NULL,
+ _add_to_group_cb,
+ uop_data);
+
+ _notify_adding_to_group (self, picture, group);
+}
+
+static void
_add_to_group_cb (GObject *object, GAsyncResult *res, gpointer data)
{
FspSession *session = NULL;
@@ -1163,44 +1180,6 @@ _add_to_group_cb (GObject *object, GAsyncResult *res, gpointer data)
priv->adding_to_group = FALSE;
}
-static gboolean
-_add_picture_to_groups_on_idle (gpointer data)
-{
- UploadOnePictureData *uop_data = NULL;
- FrogrController *controller = NULL;
- FrogrControllerPrivate *priv = NULL;
- FspSession *session = NULL;
- FrogrPicture *picture = NULL;
- FrogrGroup *group = NULL;
- GSList *groups = NULL;
-
- uop_data = (UploadOnePictureData*) data;
- controller = uop_data->controller;
- priv = FROGR_CONTROLLER_GET_PRIVATE (controller);
-
- /* Add pictures to groups, if any */
- groups = uop_data->groups;
- if (g_slist_length (groups) == 0)
- {
- priv->adding_to_group = FALSE;
- return FALSE;
- }
-
- group = FROGR_GROUP (groups->data);
-
- picture = uop_data->picture;
- _notify_adding_to_group (controller, picture, group);
-
- session = priv->session;
- fsp_session_add_to_group (session,
- frogr_picture_get_id (picture),
- frogr_group_get_id (group),
- priv->last_cancellable,
- _add_to_group_cb,
- uop_data);
- return FALSE;
-}
-
static void
_notify_adding_to_group (FrogrController *self,
FrogrPicture *picture,
@@ -2199,7 +2178,7 @@ frogr_controller_set_active_account (FrogrController *self,
{
priv->fetching_token_replacement = TRUE;
_enable_cancellable (self, FALSE);
- fsp_session_exchange_token (priv->session, priv->last_cancellable, _exchange_token_cb, self);
+ fsp_session_exchange_token (priv->session, NULL, _exchange_token_cb, self);
gdk_threads_add_timeout (DEFAULT_TIMEOUT, (GSourceFunc) _show_progress_on_idle, GINT_TO_POINTER (FETCHING_TOKEN_REPLACEMENT));
/* Make sure we show proper feedback if connection is too slow */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]