X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsigsession.cpp;h=abe9b2dae0f7176f33c3d95726f6a5554f1a03de;hp=137998bdb57760a336ab558c7c9b9591c65a1503;hb=c19bccc8c0ce0f788f06258e3cec12c85517e026;hpb=2e2946fe1bbb043d1c0c8a824bc753db0920469d diff --git a/pv/sigsession.cpp b/pv/sigsession.cpp index 137998bd..abe9b2da 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: { @@ -189,6 +196,7 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi, *(sr_datafeed_logic*)packet->payload); } + data_updated(); break; }