RemoveListenerClosure ctx;
ctx.bus = controller->bus;
- ctx.listener = (DEControllerListener *) key_listener;
+ ctx.listener = (DEControllerListener *) spi_key_listener_clone (key_listener);
/* special case, copy keyset from existing controller list entry */
if (g_slist_length(key_listener->keys) == 0)
spi_re_entrant_list_foreach (&controller->key_listeners,
remove_listener_cb, &ctx);
+ spi_key_listener_clone_free ((DEControllerKeyListener *) ctx.listener);
}
void
SpiReference *ref = g_ptr_array_index (reg->apps, i);
while (!g_strcmp0 (old, ref->name))
{
- children_removed_listener (bus, i, old, ref->path);
- g_ptr_array_remove_index (reg->apps, i);
+ remove_application (reg, bus, i);
}
}