static void impl_MateComponent_EventSource_removeListener (PortableServer_Servant servant, const MateComponent_Listener listener, CORBA_Environment *ev) { GSList *l, *next; MateComponentEventSourcePrivate *priv; priv = matecomponent_event_source_from_servant (servant)->priv; for (l = priv->listeners; l; l = next) { ListenerDesc *desc = l->data; next = l->next; if (CORBA_Object_is_equivalent (listener, desc->listener, ev)) { priv->listeners = g_slist_remove_link ( priv->listeners, l); g_slist_free_1 (l); desc_free (desc, ev); return; } } CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_MateComponent_EventSource_UnknownListener, NULL); }
static gboolean cspi_object_equal (gconstpointer a, gconstpointer b) { CORBA_Object objecta = (CORBA_Object) a; CORBA_Object objectb = (CORBA_Object) b; return CORBA_Object_is_equivalent (objecta, objectb, cspi_ev ()); }
static gboolean streams_equal_func (gconstpointer a, gconstpointer b) { const struct StreamCacheItem *c1 = a, *c2 = b; return CORBA_Object_is_equivalent (c1->stream, c2->stream, cspi_ev ()); }