diff options
author | Bradford Hovinen <hovinen@ximian.com> | 2001-09-28 14:17:25 +0000 |
---|---|---|
committer | Bradford Hovinen (Gdict maintainer) <hovinen@src.gnome.org> | 2001-09-28 14:17:25 +0000 |
commit | 99d03c73dd011eb4d268a6b1001f1e1fdcc8b4d9 (patch) | |
tree | 5ac6e5984a511f3f967d2417adb3284cd5f8d8a3 /archiver | |
parent | a850f20fa78cd7b7ee61e9dd0ef0f510118bf360 (diff) | |
download | gnome-control-center-99d03c73dd011eb4d268a6b1001f1e1fdcc8b4d9.tar.gz |
Store the listener id in the archiver_db structure
2001-09-28 Bradford Hovinen <hovinen@ximian.com>
* bonobo-config-archiver.c (bonobo_config_archiver_new): Store the
listener id in the archiver_db structure
(bonobo_config_archiver_destroy): Remove the event source
listener; destroy the XML cache
Diffstat (limited to 'archiver')
-rw-r--r-- | archiver/ChangeLog | 7 | ||||
-rw-r--r-- | archiver/bonobo-config-archiver.c | 25 | ||||
-rw-r--r-- | archiver/bonobo-config-archiver.h | 26 |
3 files changed, 43 insertions, 15 deletions
diff --git a/archiver/ChangeLog b/archiver/ChangeLog index 01d775dde..aeb78a173 100644 --- a/archiver/ChangeLog +++ b/archiver/ChangeLog @@ -1,3 +1,10 @@ +2001-09-28 Bradford Hovinen <hovinen@ximian.com> + + * bonobo-config-archiver.c (bonobo_config_archiver_new): Store the + listener id in the archiver_db structure + (bonobo_config_archiver_destroy): Remove the event source + listener; destroy the XML cache + 2001-09-22 Bradford Hovinen <hovinen@ximian.com> * bonobo-config-archiver.c (notify_listeners): Abort if the object 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 */ diff --git a/archiver/bonobo-config-archiver.h b/archiver/bonobo-config-archiver.h index eec1ebf61..ec25c58de 100644 --- a/archiver/bonobo-config-archiver.h +++ b/archiver/bonobo-config-archiver.h @@ -50,21 +50,23 @@ typedef struct { typedef struct _BonoboConfigArchiver BonoboConfigArchiver; struct _BonoboConfigArchiver { - BonoboConfigDatabase base; + BonoboConfigDatabase base; - char *filename; - FILE *fp; - xmlDocPtr doc; - DirData *dir; - guint time_id; + char *filename; + FILE *fp; + xmlDocPtr doc; + DirData *dir; + guint time_id; - ConfigArchiver_Archive archive; - ConfigArchiver_Location location; - gchar *backend_id; - gchar *moniker; + ConfigArchiver_Archive archive; + ConfigArchiver_Location location; + gchar *backend_id; + gchar *moniker; - BonoboEventSource *es; - BonoboPropertyBag *pb; + BonoboEventSource *es; + BonoboPropertyBag *pb; + + Bonobo_EventSource_ListenerId listener_id; }; typedef struct { |