static void __uam_manager_cleanup_requests_from_sender(const char *name)
{
-// FUNC_ENTRY;
GSList *l;
ret_if(NULL == name);
/* App terminated, cleanup monitor list */
_uam_core_cleanup_monitor((char *)name);
-// FUNC_EXIT;
}
static void __uam_manager_name_owner_changed_cb(GDBusConnection *connection,
GVariant *parameters,
gpointer user_data)
{
- int count = 0;
+ int count = 1;
const char *name = NULL;
const char *old_owner = NULL;
const char *new_owner = NULL;
+ GSList *list;
g_variant_get(parameters, "(&s&s&s)", &name, &old_owner, &new_owner);
if ('\0' == *new_owner) {
+ /* Cleanup all pending request from this sender */
+ __uam_manager_cleanup_requests_from_sender(name);
+
g_mutex_lock(&uam_dbus_clients_mutex);
- count = g_slist_length(uam_dbus_clients);
+ list = __uam_list_find_client(name);
+ if (list) {
+ /* found bus name in our bus list */
+ __uamd_dbus_client_cleanup((gpointer)list->data);
+ uam_dbus_clients = g_slist_remove_link(uam_dbus_clients, list);
+ count = g_slist_length(uam_dbus_clients);
+ }
g_mutex_unlock(&uam_dbus_clients_mutex);
- if (0 == count) {
- /* Cleanup all pending request from this sender */
- __uam_manager_cleanup_requests_from_sender(name);
+ if (0 == count) {
UAM_ERR("Quit ua-manager");
g_main_loop_quit(main_loop);
}
-
- }}
+ }
+}
static void __uam_manager_name_acquired_cb(
GDBusConnection *connection, const gchar *name, gpointer user_data)