summaryrefslogtreecommitdiffstats
path: root/sync/src
diff options
context:
space:
mode:
Diffstat (limited to 'sync/src')
-rw-r--r--sync/src/pokysync_main.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/sync/src/pokysync_main.c b/sync/src/pokysync_main.c
index 7a78511..880bf5c 100644
--- a/sync/src/pokysync_main.c
+++ b/sync/src/pokysync_main.c
@@ -208,6 +208,16 @@ pokysync_mappingstatus_cb (OSyncMappingUpdate *status, void *user_data)
}
}
+static gboolean
+pokysync_sync_finish_cb (gpointer data)
+{
+ OSyncEngine *engine = (OSyncEngine *)data;
+
+ g_debug ("Finalizing/freeing sync engine");
+ osengine_finalize (engine);
+ osengine_free (engine);
+}
+
static void
pokysync_enginestatus_cb (OSyncEngine *engine, OSyncEngineUpdate *status,
void *user_data)
@@ -258,9 +268,9 @@ pokysync_enginestatus_cb (OSyncEngine *engine, OSyncEngineUpdate *status,
break;
}
- g_debug ("Cleaning up engine.");
- osengine_finalize (engine);
- osengine_free (engine);
+ data->syncing = FALSE;
+ g_debug ("Setting idle function to clean up engine.");
+ g_idle_add (pokysync_sync_finish_cb, engine);
}
static void