X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fsession.cpp;h=45c4e98790843dc67bef475a6be0594b265017b4;hb=453b6d63444bf7fb03242761653fd18e9cde7443;hp=22e0428d94abf26a5421c540377dc9e55c6ddccf;hpb=e7216ae0a66fe1563514cbd3f67f2e240d010315;p=pulseview.git diff --git a/pv/session.cpp b/pv/session.cpp index 22e0428d..45c4e987 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -18,6 +18,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include +#include + #ifdef ENABLE_DECODE #include #endif @@ -127,8 +130,11 @@ void Session::set_device(shared_ptr device) // Ensure we are not capturing before setting the device stop_capture(); + if (device_) + device_->close(); + device_ = std::move(device); - device_->create(); + device_->open(); device_->session()->add_datafeed_callback([=] (shared_ptr device, shared_ptr packet) { data_feed_in(device, packet); @@ -211,13 +217,9 @@ set< shared_ptr > Session::get_data() const return data; } -boost::shared_mutex& Session::signals_mutex() const -{ - return signals_mutex_; -} - -const unordered_set< shared_ptr >& Session::signals() const +const unordered_set< shared_ptr > Session::signals() const { + shared_lock lock(signals_mutex_); return signals_; }