decoder: terminate .wait() and .decode(), join threads for v3 instances
authorGerhard Sittig <gerhard.sittig@gmx.net>
Sun, 5 Mar 2017 17:09:59 +0000 (18:09 +0100)
committerUwe Hermann <uwe@hermann-uwe.de>
Sun, 12 Mar 2017 13:59:28 +0000 (14:59 +0100)
commit04383ea876df72b7bd5c19854c30c81abdc0aa0c
tree560cdd0b49b9931fd8bc996db39561a5c231a68a
parent1ec8b3acd2ef4e857110e536b40377e6f645b89f
decoder: terminate .wait() and .decode(), join threads for v3 instances

Add support to terminate blocking .wait() and .decode() method calls of
v3 decoder instances. This terminates the decoder thread's main routine
and allows to release associated resources. Cope with requested as well
as unexpected termination of decode() calls. Add debug messages to
thread related code paths.

Make sure to unblock the main thread which feeds the decoder thread.
This unbreaks situations where decoders e.g. throw "need samplerate to
decode" exceptions.

Drain Python errors which might remain from the most recent .decode()
execution, to not affect other code paths. This avoids an issue where
the creation of a new decoder instance fails in the presence of errors
from a previous run.

This fixes bug #902.
instance.c
libsigrokdecode.h
type_decoder.c