diff options
Diffstat (limited to 'sync')
-rw-r--r-- | sync/ChangeLog | 6 | ||||
-rw-r--r-- | sync/src/pokysync_main.c | 16 |
2 files changed, 19 insertions, 3 deletions
diff --git a/sync/ChangeLog b/sync/ChangeLog index 5298e7e..2359e30 100644 --- a/sync/ChangeLog +++ b/sync/ChangeLog @@ -1,5 +1,11 @@ 2006-06-16 Chris Lord,,, <chris@openedhand.com> + * src/pokysync_main.c: (pokysync_mappingstatus_cb), + (pokysync_enginestatus_cb): + Finalize/free engine in an idle function, rather than in the callback + +2006-06-16 Chris Lord,,, <chris@openedhand.com> + * COPYING: * INSTALL: * Makefile.am: 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 |