X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsigsession.cpp;h=63a683df8eb7a5310907b95154891728a42481f4;hp=137998bdb57760a336ab558c7c9b9591c65a1503;hb=3868e5fa3081573891ff2ae5b9dd67eb4a6afa4b;hpb=2e2946fe1bbb043d1c0c8a824bc753db0920469d diff --git a/pv/sigsession.cpp b/pv/sigsession.cpp index 137998bd..63a683df 100644 --- a/pv/sigsession.cpp +++ b/pv/sigsession.cpp @@ -75,8 +75,9 @@ void SigSession::start_capture(struct sr_dev_inst *sdi, record_length, sample_rate)); } -vector< shared_ptr >& SigSession::get_signals() +vector< shared_ptr > SigSession::get_signals() { + lock_guard lock(_signals_mutex); return _signals; } @@ -131,7 +132,7 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi, switch (packet->type) { case SR_DF_HEADER: { - lock_guard lock(_data_mutex); + lock_guard lock(_signals_mutex); _signals.clear(); break; } @@ -139,17 +140,21 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi, case SR_DF_META_LOGIC: { assert(packet->payload); - - lock_guard lock(_data_mutex); - const sr_datafeed_meta_logic &meta_logic = *(sr_datafeed_meta_logic*)packet->payload; + { + lock_guard lock(_data_mutex); + // Create an empty LogiData for coming data snapshots _logic_data.reset(new LogicData(meta_logic)); assert(_logic_data); if(!_logic_data) break; + } + + { + lock_guard lock(_signals_mutex); // Add the signals for (int i = 0; i < meta_logic.num_probes; i++) @@ -167,8 +172,10 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi, } } + signals_changed(); break; } + } case SR_DF_LOGIC: {