From 04112bc453137d869ad9954bdaf980f9d5f1bcbc Mon Sep 17 00:00:00 2001 From: Mike Gorse Date: Sun, 28 Aug 2011 21:32:45 -0500 Subject: [PATCH] Clean up device listeners from disconnected applications --- registryd/deviceeventcontroller.c | 3 ++- registryd/registry.c | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/registryd/deviceeventcontroller.c b/registryd/deviceeventcontroller.c index 677163f..ecaa872 100644 --- a/registryd/deviceeventcontroller.c +++ b/registryd/deviceeventcontroller.c @@ -2069,7 +2069,7 @@ spi_deregister_controller_key_listener (SpiDEController *controller, 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) @@ -2083,6 +2083,7 @@ spi_deregister_controller_key_listener (SpiDEController *controller, spi_re_entrant_list_foreach (&controller->key_listeners, remove_listener_cb, &ctx); + spi_key_listener_clone_free ((DEControllerKeyListener *) ctx.listener); } void diff --git a/registryd/registry.c b/registryd/registry.c index 5431b46..d2025a3 100644 --- a/registryd/registry.c +++ b/registryd/registry.c @@ -293,8 +293,7 @@ handle_disconnection (DBusConnection *bus, DBusMessage *message, void *user_data 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); } } -- 2.7.4