mutex DecoderStack::_global_decode_mutex;
-DecoderStack::DecoderStack(const srd_decoder *const dec) :
+DecoderStack::DecoderStack(pv::SigSession &session,
+ const srd_decoder *const dec) :
+ _session(session),
_samples_decoded(0)
{
_stack.push_back(shared_ptr<decode::Decoder>(
DecoderStack::~DecoderStack()
{
- _decode_thread.interrupt();
- _decode_thread.join();
+ if (_decode_thread.joinable()) {
+ _decode_thread.interrupt();
+ _decode_thread.join();
+ }
}
const std::list< boost::shared_ptr<decode::Decoder> >&
shared_ptr<pv::view::LogicSignal> logic_signal;
shared_ptr<pv::data::Logic> data;
- _decode_thread.interrupt();
- _decode_thread.join();
+ if (_decode_thread.joinable()) {
+ _decode_thread.interrupt();
+ _decode_thread.join();
+ }
clear();
// Create the decoders
BOOST_FOREACH(const shared_ptr<decode::Decoder> &dec, _stack)
{
- srd_decoder_inst *const di = dec->create_decoder_inst(session);
+ srd_decoder_inst *const di = dec->create_decoder_inst(session, unit_size);
if (!di)
{