diff options
Diffstat (limited to 'archiver/bonobo-config-archiver.c')
-rw-r--r-- | archiver/bonobo-config-archiver.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/archiver/bonobo-config-archiver.c b/archiver/bonobo-config-archiver.c index a9a9a7f58..ae81c5fe9 100644 --- a/archiver/bonobo-config-archiver.c +++ b/archiver/bonobo-config-archiver.c @@ -500,13 +500,29 @@ bonobo_config_archiver_destroy (GtkObject *object) if (archiver_db->moniker != NULL) { bonobo_url_unregister ("BONOBO_CONF:ARCHIVER", archiver_db->moniker, &ev); g_free (archiver_db->moniker); + + if (BONOBO_EX (&ev)) { + g_critical ("Could not unregister the archiver URL"); + CORBA_exception_init (&ev); + } + } + + if (archiver_db->listener_id != 0) { + bonobo_event_source_client_remove_listener + (archiver_db->location, archiver_db->listener_id, &ev); + + if (BONOBO_EX (&ev)) + g_critical ("Could not remove the rollback data listener"); } CORBA_exception_free (&ev); - if (archiver_db->doc != NULL) + if (archiver_db->doc != NULL) { + delete_dir_data (archiver_db->dir, TRUE); + archiver_db->dir = NULL; xmlFreeDoc (archiver_db->doc); - + } + if (archiver_db->filename != NULL) g_free (archiver_db->filename); @@ -850,9 +866,12 @@ bonobo_config_archiver_new (Bonobo_Moniker parent, /* Listen for events pertaining to new rollback data */ if (date == NULL && location_id == NULL) - bonobo_event_source_client_add_listener + archiver_db->listener_id = + bonobo_event_source_client_add_listener (location, (BonoboListenerCallbackFn) new_rollback_cb, "ConfigArchiver/Location:newRollbackData", ev, archiver_db); + else + archiver_db->listener_id = 0; /* Prepare to return the database object */ |