Get rid of global session.
This commit is contained in:
parent
102f123966
commit
3337e9a1c9
|
@ -27,8 +27,6 @@
|
||||||
#define LOG_PREFIX "backend"
|
#define LOG_PREFIX "backend"
|
||||||
/** @endcond */
|
/** @endcond */
|
||||||
|
|
||||||
extern struct sr_session *sr_current_session;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @mainpage libsigrok API
|
* @mainpage libsigrok API
|
||||||
*
|
*
|
||||||
|
@ -360,7 +358,6 @@ SR_API int sr_init(struct sr_context **ctx)
|
||||||
|
|
||||||
*ctx = context;
|
*ctx = context;
|
||||||
context = NULL;
|
context = NULL;
|
||||||
sr_current_session = NULL;
|
|
||||||
ret = SR_OK;
|
ret = SR_OK;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
|
@ -127,8 +127,6 @@ static struct sr_config_info sr_config_info_data[] = {
|
||||||
{0, 0, NULL, NULL, NULL},
|
{0, 0, NULL, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct sr_session *sr_current_session;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the list of supported hardware drivers.
|
* Return the list of supported hardware drivers.
|
||||||
*
|
*
|
||||||
|
|
33
session.c
33
session.c
|
@ -59,10 +59,6 @@ struct datafeed_callback {
|
||||||
void *cb_data;
|
void *cb_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* There can currently only be one session at a time. */
|
|
||||||
/* 'sr_current_session' is not static, it's used elsewhere (via 'extern'). */
|
|
||||||
struct sr_session *sr_current_session;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new session.
|
* Create a new session.
|
||||||
* Currently, there can be only one session at a time within the same process.
|
* Currently, there can be only one session at a time within the same process.
|
||||||
|
@ -72,21 +68,18 @@ struct sr_session *sr_current_session;
|
||||||
*
|
*
|
||||||
* @since 0.4.0
|
* @since 0.4.0
|
||||||
*/
|
*/
|
||||||
SR_API int sr_session_new(struct sr_session **session)
|
SR_API int sr_session_new(struct sr_session **new_session)
|
||||||
{
|
{
|
||||||
if (sr_current_session) {
|
struct sr_session *session;
|
||||||
sr_err("%s: session already exists", __func__);
|
|
||||||
return SR_ERR_BUG;
|
|
||||||
}
|
|
||||||
|
|
||||||
sr_current_session = g_malloc0(sizeof(struct sr_session));
|
session = g_malloc0(sizeof(struct sr_session));
|
||||||
|
|
||||||
sr_current_session->source_timeout = -1;
|
session->source_timeout = -1;
|
||||||
sr_current_session->running = FALSE;
|
session->running = FALSE;
|
||||||
sr_current_session->abort_session = FALSE;
|
session->abort_session = FALSE;
|
||||||
g_mutex_init(&sr_current_session->stop_mutex);
|
g_mutex_init(&session->stop_mutex);
|
||||||
|
|
||||||
*session = sr_current_session;
|
*new_session = session;
|
||||||
|
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
@ -114,9 +107,6 @@ SR_API int sr_session_destroy(struct sr_session *session)
|
||||||
|
|
||||||
g_free(session);
|
g_free(session);
|
||||||
|
|
||||||
if (session == sr_current_session)
|
|
||||||
sr_current_session = NULL;
|
|
||||||
|
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -342,9 +332,8 @@ SR_API int sr_session_trigger_set(struct sr_session *session, struct sr_trigger
|
||||||
* @retval SR_OK Success.
|
* @retval SR_OK Success.
|
||||||
* @retval SR_ERR Error occured.
|
* @retval SR_ERR Error occured.
|
||||||
*/
|
*/
|
||||||
static int sr_session_iteration(gboolean block)
|
static int sr_session_iteration(struct sr_session *session, gboolean block)
|
||||||
{
|
{
|
||||||
struct sr_session *session = sr_current_session;
|
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -501,7 +490,7 @@ SR_API int sr_session_run(struct sr_session *session)
|
||||||
} else {
|
} else {
|
||||||
/* Real sources, use g_poll() main loop. */
|
/* Real sources, use g_poll() main loop. */
|
||||||
while (session->num_sources)
|
while (session->num_sources)
|
||||||
sr_session_iteration(TRUE);
|
sr_session_iteration(session, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SR_OK;
|
return SR_OK;
|
||||||
|
@ -649,7 +638,7 @@ SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi,
|
||||||
return SR_ERR_ARG;
|
return SR_ERR_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (l = sr_current_session->datafeed_callbacks; l; l = l->next) {
|
for (l = sdi->session->datafeed_callbacks; l; l = l->next) {
|
||||||
if (sr_log_loglevel_get() >= SR_LOG_DBG)
|
if (sr_log_loglevel_get() >= SR_LOG_DBG)
|
||||||
datafeed_dump(packet);
|
datafeed_dump(packet);
|
||||||
cb_struct = l->data;
|
cb_struct = l->data;
|
||||||
|
|
Loading…
Reference in New Issue