X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fsession.cpp;h=e42f730a4dc4d2900b6ee4e12f541f0c134ec0ee;hb=121307b3c50d981638cbe1e33ba5410bb2b11dd1;hp=6e517363cb99be05636108f80677736daa3e2e76;hpb=2db6e8741d9c085fffec090217b5d5d6ce5bbf78;p=pulseview.git diff --git a/pv/session.cpp b/pv/session.cpp index 6e517363..e42f730a 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -761,7 +761,7 @@ void Session::register_view(shared_ptr view) update_signals(); // Add all other signals - unordered_set< shared_ptr > view_signalbases = view->signalbases(); + vector< shared_ptr > view_signalbases = view->signalbases(); for (const shared_ptr& signalbase : signalbases_) { const int sb_exists = count_if( @@ -791,8 +791,9 @@ void Session::register_view(shared_ptr view) void Session::deregister_view(shared_ptr view) { - - std::remove_if(views_.begin(), views_.end(), [&](shared_ptr v) { return v == view; }); + views_.erase(std::remove_if(views_.begin(), views_.end(), + [&](shared_ptr v) { return v == view; }), + views_.end()); if (views_.empty()) { main_view_.reset(); @@ -852,7 +853,7 @@ vector Session::get_triggers(uint32_t segment_id) const return result; } -const unordered_set< shared_ptr > Session::signalbases() const +const vector< shared_ptr > Session::signalbases() const { return signalbases_; } @@ -877,7 +878,7 @@ shared_ptr Session::add_decode_signal() // Create the decode signal signal = make_shared(*this); - signalbases_.insert(signal); + signalbases_.push_back(signal); // Add the decode signal to all views for (shared_ptr& view : views_) @@ -894,7 +895,9 @@ shared_ptr Session::add_decode_signal() void Session::remove_decode_signal(shared_ptr signal) { - signalbases_.erase(signal); + signalbases_.erase(std::remove_if(signalbases_.begin(), signalbases_.end(), + [&](shared_ptr s) { return s == signal; }), + signalbases_.end()); for (shared_ptr& view : views_) view->remove_decode_signal(signal); @@ -978,7 +981,7 @@ void Session::update_signals() qobject_cast(viewbase.get()); if (trace_view) { - unordered_set< shared_ptr > prev_sigs(trace_view->signals()); + vector< shared_ptr > prev_sigs(trace_view->signals()); trace_view->clear_signals(); for (auto channel : sr_dev->channels()) { @@ -1009,7 +1012,7 @@ void Session::update_signals() if (!signalbase) { signalbase = make_shared(channel, data::SignalBase::LogicChannel); - signalbases_.insert(signalbase); + signalbases_.push_back(signalbase); all_signal_data_.insert(logic_data_); signalbase->set_data(logic_data_); @@ -1026,7 +1029,7 @@ void Session::update_signals() if (!signalbase) { signalbase = make_shared(channel, data::SignalBase::AnalogChannel); - signalbases_.insert(signalbase); + signalbases_.push_back(signalbase); shared_ptr data(new data::Analog()); all_signal_data_.insert(data);