diff --git a/android/health.c b/android/health.c
index ee6c11b..f49110a 100644
--- a/android/health.c
+++ b/android/health.c
channel->mdl_conn = false;
}
-static void notify_channel(void *data, void *user_data)
-{
- struct health_channel *channel = data;
-
- send_channel_state_notify(channel, HAL_HEALTH_CHANNEL_DESTROYED, -1);
-}
-
static void mcap_mdl_deleted_cb(struct mcap_mdl *mdl, void *data)
{
- struct health_channel *channel = data;
- struct health_device *dev;
-
- if (!channel)
- return;
-
- dev = channel->dev;
+ struct health_channel *channel;
- DBG("device %p channel %p mdl %p", dev, channel, mdl);
info("health: MDL deleted");
- /* mdl == NULL means, delete all mdls */
- if (!mdl) {
- queue_foreach(dev->channels, notify_channel, NULL);
- queue_remove_all(dev->channels, NULL, NULL,
- free_health_channel);
+ channel = search_channel_by_mdl(mdl);
+ if (!channel)
return;
- }
+ DBG("channel %p mdl %p", channel, mdl);
destroy_channel(channel);
}
diff --git a/android/mcap-lib.c b/android/mcap-lib.c
index f208fac..1706d9f 100644
--- a/android/mcap-lib.c
+++ b/android/mcap-lib.c
struct mcap_mdl *mdl = elem;
gboolean notify = *(gboolean *) user_data;
- shutdown_mdl(mdl);
if (notify)
mdl->mcl->cb->mdl_deleted(mdl, mdl->mcl->cb->user_data);
+ shutdown_mdl(mdl);
mcap_mdl_unref(mdl);
}
req = cmd;
mdlid = ntohs(req->mdl);
if (mdlid == MCAP_ALL_MDLIDS) {
- notify = FALSE;
+ notify = TRUE;
g_slist_foreach(mcl->mdls, mcap_del_mdl, ¬ify);
g_slist_free(mcl->mdls);
mcl->mdls = NULL;
mcl->state = MCL_CONNECTED;
- /* NULL mdl means ALL_MDLS */
- mcl->cb->mdl_deleted(NULL, mcl->cb->user_data);
goto resp;
}