diff options
Diffstat (limited to 'sync/src/sync_group.c')
-rw-r--r-- | sync/src/sync_group.c | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/sync/src/sync_group.c b/sync/src/sync_group.c index db34e13..adf9d49 100644 --- a/sync/src/sync_group.c +++ b/sync/src/sync_group.c @@ -397,6 +397,10 @@ sync_group_get_osync_group (SyncGroup *group) static gboolean sync_group_started_idle (SyncGroup *group) { + gchar *name = sync_group_get_name (group); + g_debug ("Group '%s' emitting started signal", name); + g_free (name); + g_signal_emit (group, signals[STARTED], 0); return FALSE; @@ -407,6 +411,10 @@ sync_group_progress_idle (SyncGroup *group) { SyncGroupPrivate *priv = GROUP_PRIVATE (group); + gchar *name = sync_group_get_name (group); + g_debug ("Group '%s' emitting progress signal", name); + g_free (name); + g_mutex_lock (priv->mutex); g_signal_emit (group, signals[PROGRESS], 0, priv->changes / (gdouble)priv->max_changes); @@ -419,6 +427,10 @@ sync_group_progress_idle (SyncGroup *group) static gboolean sync_group_conflict_idle (SyncGroup *group) { + gchar *name = sync_group_get_name (group); + g_debug ("Group '%s' emitting conflict signal", name); + g_free (name); + g_signal_emit (group, signals[CONFLICT], 0); return FALSE; @@ -429,14 +441,20 @@ sync_group_free_engine (SyncGroup *group) { SyncGroupPrivate *priv = GROUP_PRIVATE (group); - osengine_finalize (priv->engine); - osengine_free (priv->engine); - priv->engine = NULL; + if (priv->engine) { + osengine_finalize (priv->engine); + osengine_free (priv->engine); + priv->engine = NULL; + } } static gboolean sync_group_finished_idle (SyncGroup *group) { + gchar *name = sync_group_get_name (group); + g_debug ("Group '%s' emitting finished signal", name); + g_free (name); + sync_group_free_engine (group); g_signal_emit (group, signals[FINISHED], 0); @@ -448,9 +466,13 @@ sync_group_failed_idle (SyncGroup *group) { SyncGroupPrivate *priv = GROUP_PRIVATE (group); + gchar *name = sync_group_get_name (group); + g_debug ("Group '%s' emitting failed signal", name); + g_free (name); + sync_group_free_engine (group); g_signal_emit (group, signals[FAILED], 0, priv->error ? - priv->error : ""); + priv->error : "Unknown error"); g_free (priv->error); priv->error = NULL; @@ -619,10 +641,12 @@ sync_enginestatus_cb (OSyncEngine *engine, OSyncEngineUpdate *status, break; #endif case ENG_SYNC_SUCCESSFULL: + g_debug ("Sync successful"); g_idle_add ((GSourceFunc) sync_group_finished_idle, group); break; case ENG_ERROR: + g_debug ("Error"); g_idle_add ((GSourceFunc) sync_group_failed_idle, group); break; @@ -761,6 +785,8 @@ sync_group_sync (SyncGroup *group, gboolean wait) g_debug ("Sync started"); } else { + g_debug ("Auto-sync waiting..."); + if (!osengine_wait_sync_end (priv->engine, &error)) { g_warning ("osengine_wait_sync_end unsuccessful: %s", osync_error_print (&error)); @@ -841,12 +867,17 @@ sync_group_resolve_conflict (SyncGroup *group, SyncGroupConflictRes res) priv->mapping = NULL; } -void +gboolean sync_group_abort (SyncGroup *group) { SyncGroupPrivate *priv = GROUP_PRIVATE (group); - if (priv->engine) osengine_abort (priv->engine); - else g_warning ("%s called, but no sync in progress", G_STRFUNC); + if (priv->engine) { + osengine_abort (priv->engine); + return TRUE; + } else { + g_warning ("%s called, but no sync in progress", G_STRFUNC); + return FALSE; + } } void sync_group_remove_item (SyncGroup *group, |