diff options
Diffstat (limited to 'sync/src/pokysync_main.c')
-rw-r--r-- | sync/src/pokysync_main.c | 16 |
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 |