summaryrefslogtreecommitdiff
path: root/archiver
diff options
context:
space:
mode:
authorBradford Hovinen <hovinen@ximian.com>2001-09-28 14:17:25 +0000
committerBradford Hovinen (Gdict maintainer) <hovinen@src.gnome.org>2001-09-28 14:17:25 +0000
commit99d03c73dd011eb4d268a6b1001f1e1fdcc8b4d9 (patch)
tree5ac6e5984a511f3f967d2417adb3284cd5f8d8a3 /archiver
parenta850f20fa78cd7b7ee61e9dd0ef0f510118bf360 (diff)
downloadgnome-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/ChangeLog7
-rw-r--r--archiver/bonobo-config-archiver.c25
-rw-r--r--archiver/bonobo-config-archiver.h26
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 {