aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodrigo Moya <rodrigo@ximian.com>2002-06-26 18:45:15 +0800
committerRodrigo Moya <rodrigo@src.gnome.org>2002-06-26 18:45:15 +0800
commit65117fc884fdc8772306d97b076807b0ab3998e2 (patch)
tree2c17a810dd8805e2035aa4290d1517beb45617dd
parent1d97d419925319e43848ea4c151455b8c1ae77e3 (diff)
downloadgsoc2013-evolution-65117fc884fdc8772306d97b076807b0ab3998e2.tar
gsoc2013-evolution-65117fc884fdc8772306d97b076807b0ab3998e2.tar.gz
gsoc2013-evolution-65117fc884fdc8772306d97b076807b0ab3998e2.tar.bz2
gsoc2013-evolution-65117fc884fdc8772306d97b076807b0ab3998e2.tar.lz
gsoc2013-evolution-65117fc884fdc8772306d97b076807b0ab3998e2.tar.xz
gsoc2013-evolution-65117fc884fdc8772306d97b076807b0ab3998e2.tar.zst
gsoc2013-evolution-65117fc884fdc8772306d97b076807b0ab3998e2.zip
Fixes #25410
2002-06-25 Rodrigo Moya <rodrigo@ximian.com> Fixes #25410 * gui/alarm-notify.c (AlarmNotify_removeCalendar): do proper cleanup on removal of clients. (alarm_notify_add_calendar): ditto. svn path=/trunk/; revision=17287
-rw-r--r--calendar/ChangeLog8
-rw-r--r--calendar/gui/alarm-notify/alarm-notify.c8
2 files changed, 16 insertions, 0 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 576ef9774f..f3a70554a4 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,11 @@
+2002-06-25 Rodrigo Moya <rodrigo@ximian.com>
+
+ Fixes #25410
+
+ * gui/alarm-notify.c (AlarmNotify_removeCalendar): do proper
+ cleanup on removal of clients.
+ (alarm_notify_add_calendar): ditto.
+
2002-06-25 JP Rosevear <jpr@ximian.com>
* gui/itip-utils.c (comp_compliant): plug leak and actually use
diff --git a/calendar/gui/alarm-notify/alarm-notify.c b/calendar/gui/alarm-notify/alarm-notify.c
index 991a10647f..a2b3d1ae9d 100644
--- a/calendar/gui/alarm-notify/alarm-notify.c
+++ b/calendar/gui/alarm-notify/alarm-notify.c
@@ -329,6 +329,10 @@ AlarmNotify_removeCalendar (PortableServer_Servant servant,
g_hash_table_remove (priv->uri_client_hash, str_uri);
g_free (orig_str);
+ gtk_signal_disconnect_by_data (GTK_OBJECT (lc->client), lc);
+ if (lc->timeout_id != -1)
+ g_source_remove (lc->timeout_id);
+ alarm_queue_remove_client (lc->client);
gtk_object_unref (GTK_OBJECT (lc->client));
e_uri_free (lc->uri);
g_free (lc);
@@ -425,6 +429,9 @@ alarm_notify_add_calendar (AlarmNotify *an, const char *str_uri, gboolean load_a
}
if (g_hash_table_lookup_extended (priv->uri_client_hash, str_uri, &s, &lc)) {
+ g_hash_table_remove (priv->uri_client_hash, str_uri);
+
+ gtk_signal_disconnect_by_data (GTK_OBJECT (lc->client), lc);
if (lc->timeout_id != -1)
g_source_remove (lc->timeout_id);
alarm_queue_remove_client (lc->client);
@@ -450,6 +457,7 @@ alarm_notify_add_calendar (AlarmNotify *an, const char *str_uri, gboolean load_a
lc->client = client;
lc->uri = uri;
lc->refcount = 1;
+ lc->timeout_id = -1;
g_hash_table_insert (priv->uri_client_hash,
g_strdup (str_uri), lc);
} else {