+2003-07-07 Padraig O'Briain <padraig.obriain@sun.com>
+
+ * cspi/spi_event.c (AccessibleEvent_unref): Update code to free
+ resources allocated for AccessibleEvent. See cspi_event().
+
+ * cspi/spi_streamablecontent.c (cspi_streams_close_all): Set
+ static variable streams to NULL.
+
+ * cspi/bonobo/cspi-bonobo-listener.c (cspi_event):
+ Update so that AcessibleEvent_ref will work.
+
+ This fixes bug #116624.
+
2003-07-06 Jordi Mallach <jordi@sindominio.net>
* configure.in (ALL_LINGUAS): Added "ca" (Catalan).
{
GList *l;
CSpiEventListener *clistener = (CSpiEventListener *) listener;
- InternalEvent aevent;
+ InternalEvent *ievent;
+ AccessibleEvent *aevent;
Accessible *source = cspi_object_borrow (event->source);
- aevent.event.type = event->type;
- aevent.event.source = source;
- aevent.event.detail1 = event->detail1;
- aevent.event.detail2 = event->detail2;
- aevent.id = _e_id++;
- aevent.magic = SPI_INTERNAL_EVENT_MAGIC;
- aevent.ref_count = 0;
- aevent.data = &event->any_data;
+ ievent = g_new0(InternalEvent, 1);
+ ievent->event.type = g_strdup (event->type);
+ ievent->event.source = source;
+ ievent->event.detail1 = event->detail1;
+ ievent->event.detail2 = event->detail2;
+ ievent->id = _e_id++;
+ ievent->magic = SPI_INTERNAL_EVENT_MAGIC;
+ ievent->ref_count = 0;
+ ievent->data = &event->any_data;
+ aevent = (AccessibleEvent *)ievent;
+ Accessible_ref (source);
+ AccessibleEvent_ref (aevent);
/* FIXME: re-enterancy hazard on this list */
for (l = clistener->callbacks; l; l = l->next)
{
EventHandler *eh = l->data;
/* cast hides our private stuff from client handlers */
- eh->cb.event ((AccessibleEvent *) &aevent, eh->user_data);
+ eh->cb.event (aevent, eh->user_data);
}
+ AccessibleEvent_unref (aevent);
cspi_object_return (source);
}