sr: session: Close a device when it is removed from a session
A device is opened when it is added to a session, in the same fashion it should be closed again when it is removed from a session. Also remove all still attached devices from a session when the session is destroyed. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
615183ea16
commit
ed229aaa8f
11
session.c
11
session.c
|
@ -74,8 +74,7 @@ SR_API int sr_session_destroy(void)
|
||||||
return SR_ERR_BUG;
|
return SR_ERR_BUG;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_slist_free(session->devs);
|
sr_session_dev_remove_all();
|
||||||
session->devs = NULL;
|
|
||||||
|
|
||||||
/* TODO: Error checks needed? */
|
/* TODO: Error checks needed? */
|
||||||
|
|
||||||
|
@ -87,6 +86,12 @@ SR_API int sr_session_destroy(void)
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void sr_dev_close(struct sr_dev *dev)
|
||||||
|
{
|
||||||
|
if (dev->driver->dev_close)
|
||||||
|
dev->driver->dev_close(dev->driver_index);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove all the devices from the current session. TODO?
|
* Remove all the devices from the current session. TODO?
|
||||||
*
|
*
|
||||||
|
@ -102,7 +107,7 @@ SR_API int sr_session_dev_remove_all(void)
|
||||||
return SR_ERR_BUG;
|
return SR_ERR_BUG;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_slist_free(session->devs);
|
g_slist_free_full(session->devs, (GDestroyNotify)sr_dev_close);
|
||||||
session->devs = NULL;
|
session->devs = NULL;
|
||||||
|
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
|
|
Loading…
Reference in New Issue