2
0
forked from Ivasoft/DSView

decode task save stop anddestory

This commit is contained in:
dreamsourcelabTAI
2021-11-08 19:56:35 +08:00
parent 1d3b8accfd
commit 0e4f0ae52e
28 changed files with 810 additions and 535 deletions

View File

@@ -36,6 +36,8 @@
int bExportOriginalData = 0; //able export all data
int session_loop_stop_flag = 0;
/**
* @file
*
@@ -403,12 +405,14 @@ SR_API int sr_session_run(void)
session->running = TRUE;
session_loop_stop_flag = 0;
sr_info("Running...");
/* Do we have real sources? */
if (session->num_sources == 1 && session->pollfds[0].fd == -1) {
/* Dummy source, freewheel over it. */
while (session->num_sources) {
while (session->num_sources && !session_loop_stop_flag) {
if (session->abort_session) {
session->sources[0].cb(-1, -1, session->sources[0].cb_data);
break;
@@ -418,8 +422,9 @@ SR_API int sr_session_run(void)
}
} else {
/* Real sources, use g_poll() main loop. */
while (session->num_sources)
sr_session_iteration(TRUE);
while (session->num_sources && !session_loop_stop_flag){
sr_session_iteration(TRUE);
}
}
g_mutex_lock(&session->stop_mutex);
@@ -484,9 +489,11 @@ SR_API int sr_session_stop(void)
return SR_ERR_BUG;
}
session_loop_stop_flag = 1; //set flag, the run loop will exit
g_mutex_lock(&session->stop_mutex);
if (session->running)
session->abort_session = TRUE;
session->abort_session = TRUE;
g_mutex_unlock(&session->stop_mutex);
return SR_OK;