]> sigrok.org Git - pulseview.git/blobdiff - pv/sigsession.cpp
Added decoder options binding for double values
[pulseview.git] / pv / sigsession.cpp
index 92118b4816711f32d06b314c56e211b327ff7e25..b93ecc85952ecc4053169782bd666bdd06cd968f 100644 (file)
@@ -493,6 +493,12 @@ void SigSession::feed_in_meta(const sr_dev_inst *sdi,
        signals_changed();
 }
 
+void SigSession::feed_in_frame_begin()
+{
+       if (_cur_logic_snapshot || !_cur_analog_snapshots.empty())
+               frame_began();
+}
+
 void SigSession::feed_in_logic(const sr_datafeed_logic &logic)
 {
        lock_guard<mutex> lock(_data_mutex);
@@ -512,6 +518,12 @@ void SigSession::feed_in_logic(const sr_datafeed_logic &logic)
                _cur_logic_snapshot = shared_ptr<data::LogicSnapshot>(
                        new data::LogicSnapshot(logic, _dev_inst->get_sample_limit()));
                _logic_data->push_snapshot(_cur_logic_snapshot);
+
+               // @todo Putting this here means that only listeners querying
+               // for logic will be notified. Currently the only user of
+               // frame_began is DecoderStack, but in future we need to signal
+               // this after both analog and logic sweeps have begun.
+               frame_began();
        }
        else
        {
@@ -519,7 +531,7 @@ void SigSession::feed_in_logic(const sr_datafeed_logic &logic)
                _cur_logic_snapshot->append_payload(logic);
        }
 
-       data_updated();
+       data_received();
 }
 
 void SigSession::feed_in_analog(const sr_datafeed_analog &analog)
@@ -580,7 +592,7 @@ void SigSession::feed_in_analog(const sr_datafeed_analog &analog)
                set_capture_state(Running);
        }
 
-       data_updated();
+       data_received();
 }
 
 void SigSession::data_feed_in(const struct sr_dev_inst *sdi,
@@ -600,6 +612,10 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi,
                        *(const sr_datafeed_meta*)packet->payload);
                break;
 
+       case SR_DF_FRAME_BEGIN:
+               feed_in_frame_begin();
+               break;
+
        case SR_DF_LOGIC:
                assert(packet->payload);
                feed_in_logic(*(const sr_datafeed_logic*)packet->payload);
@@ -617,7 +633,7 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi,
                        _cur_logic_snapshot.reset();
                        _cur_analog_snapshots.clear();
                }
-               data_updated();
+               frame_ended();
                break;
        }
        }