From: Gerhard Sittig Date: Mon, 23 Apr 2018 18:42:54 +0000 (+0200) Subject: instance: return SRD_ERR_TERM_REQ when execution shall terminate X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commitdiff_plain;h=3f3c4614b551855d7cf56e83ec7fb883592050ab instance: return SRD_ERR_TERM_REQ when execution shall terminate The previous implementation internally noticed the "want terminate" request, and skipped decoder execution to faster get to the end of the input stream. But an OK return code was provided in that code path, and more input data was sent by applications (sometimes for many seconds or few minutes). Do return a new SRD_ERR_TERM_REQ error code, such that applications can tell failed execution from requested termination. --- diff --git a/instance.c b/instance.c index e470bd1..f8cd2c6 100644 --- a/instance.c +++ b/instance.c @@ -1266,6 +1266,8 @@ SRD_PRIV int srd_inst_decode(struct srd_decoder_inst *di, g_cond_wait(&di->handled_all_samples_cond, &di->data_mutex); g_mutex_unlock(&di->data_mutex); + if (di->want_wait_terminate) + return SRD_ERR_TERM_REQ; return SRD_OK; } diff --git a/libsigrokdecode.h b/libsigrokdecode.h index ee610c9..a26bce9 100644 --- a/libsigrokdecode.h +++ b/libsigrokdecode.h @@ -71,6 +71,7 @@ enum srd_error_code { SRD_ERR_BUG = -4, /**< Errors hinting at internal bugs */ SRD_ERR_PYTHON = -5, /**< Python C API error */ SRD_ERR_DECODERS_DIR = -6, /**< Protocol decoder path invalid */ + SRD_ERR_TERM_REQ = -7, /**< Termination requested */ /* * Note: When adding entries here, don't forget to also update the