Track sdis created by sr_session_load(), and free in sr_session_destroy().
This commit is contained in:
parent
c0e3ba4b79
commit
1de3ccede9
|
@ -535,6 +535,8 @@ SR_PRIV int sr_source_add_channel(GIOChannel *channel, int events, int timeout,
|
||||||
struct sr_session {
|
struct sr_session {
|
||||||
/** List of struct sr_dev_inst pointers. */
|
/** List of struct sr_dev_inst pointers. */
|
||||||
GSList *devs;
|
GSList *devs;
|
||||||
|
/** List of struct sr_dev_inst pointers owned by this session. */
|
||||||
|
GSList *owned_devs;
|
||||||
/** List of struct datafeed_callback pointers. */
|
/** List of struct datafeed_callback pointers. */
|
||||||
GSList *datafeed_callbacks;
|
GSList *datafeed_callbacks;
|
||||||
struct sr_trigger *trigger;
|
struct sr_trigger *trigger;
|
||||||
|
|
|
@ -113,6 +113,8 @@ SR_API int sr_session_destroy(struct sr_session *session)
|
||||||
if (session->trigger)
|
if (session->trigger)
|
||||||
sr_trigger_free(session->trigger);
|
sr_trigger_free(session->trigger);
|
||||||
|
|
||||||
|
g_slist_free_full(session->owned_devs, (GDestroyNotify)sr_dev_inst_free);
|
||||||
|
|
||||||
g_free(session);
|
g_free(session);
|
||||||
|
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
|
|
|
@ -179,6 +179,8 @@ SR_API int sr_session_load(const char *filename, struct sr_session **session)
|
||||||
}
|
}
|
||||||
sr_dev_open(sdi);
|
sr_dev_open(sdi);
|
||||||
sr_session_dev_add(*session, sdi);
|
sr_session_dev_add(*session, sdi);
|
||||||
|
(*session)->owned_devs = g_slist_append(
|
||||||
|
(*session)->owned_devs, sdi);
|
||||||
sdi->driver->config_set(SR_CONF_SESSIONFILE,
|
sdi->driver->config_set(SR_CONF_SESSIONFILE,
|
||||||
g_variant_new_string(filename), sdi, NULL);
|
g_variant_new_string(filename), sdi, NULL);
|
||||||
sdi->driver->config_set(SR_CONF_CAPTUREFILE,
|
sdi->driver->config_set(SR_CONF_CAPTUREFILE,
|
||||||
|
|
Loading…
Reference in New Issue