X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fsigsession.cpp;h=63a683df8eb7a5310907b95154891728a42481f4;hb=3868e5fa3081573891ff2ae5b9dd67eb4a6afa4b;hp=e8585c5f84db1465a8a482cbe6266eabc60e270f;hpb=69dd2b030f0bf289fe3132cf3c0f3725c578a916;p=pulseview.git diff --git a/pv/sigsession.cpp b/pv/sigsession.cpp index e8585c5..63a683d 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++) @@ -170,6 +175,7 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi, signals_changed(); break; } + } case SR_DF_LOGIC: {