X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fsession.cpp;h=e0096e9cd1245c3b233e65c6afc529b004ac9f91;hb=78b0af3ebcbeab50e1c1634af729c0a7f97fb435;hp=7bb9de8da443fccb6a19d523572d9472b7ef87a9;hpb=f3d66e52ed6b454ea7a0662d5e6367e230116a2b;p=pulseview.git diff --git a/pv/session.cpp b/pv/session.cpp index 7bb9de8..e0096e9 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -45,7 +45,7 @@ #include -#include +#include using boost::shared_lock; using boost::shared_mutex; @@ -60,6 +60,7 @@ using std::mutex; using std::set; using std::shared_ptr; using std::string; +using std::unordered_set; using std::vector; using sigrok::Analog; @@ -123,9 +124,12 @@ void Session::set_device(shared_ptr device) stop_capture(); // Are we setting a session device? - auto session_device = dynamic_pointer_cast(device); + const auto session_device = + dynamic_pointer_cast(device); + // Did we have a session device selected previously? - auto prev_session_device = dynamic_pointer_cast(device_); + const auto prev_session_device = + dynamic_pointer_cast(device_); if (device_) { session_->remove_datafeed_callbacks(); @@ -159,6 +163,7 @@ void Session::set_device(shared_ptr device) (shared_ptr device, shared_ptr packet) { data_feed_in(device, packet); }); + device_manager_.update_display_name(device); update_signals(device); } else device_ = nullptr; @@ -166,18 +171,11 @@ void Session::set_device(shared_ptr device) device_selected(); } -void Session::set_file(const string &name) +void Session::set_session_file(const string &name) { - session_ = device_manager_.context()->load_session(name); - device_ = session_->devices()[0]; - decode_traces_.clear(); - session_->add_datafeed_callback([=] - (shared_ptr device, shared_ptr packet) { - data_feed_in(device, packet); - }); - device_manager_.update_display_name(device_); - update_signals(device_); - device_selected(); + const shared_ptr session = + device_manager_.context()->load_session(name); + set_device(session->devices()[0]); } void Session::set_default_device() @@ -260,7 +258,7 @@ boost::shared_mutex& Session::signals_mutex() const return signals_mutex_; } -const vector< shared_ptr >& Session::signals() const +const unordered_set< shared_ptr >& Session::signals() const { return signals_; } @@ -408,7 +406,7 @@ void Session::update_signals(shared_ptr device) } assert(signal); - signals_.push_back(signal); + signals_.insert(signal); } }