X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=4130096830a80944c7ab8d27a583289ab3cfefb8;hp=22e0428d94abf26a5421c540377dc9e55c6ddccf;hb=475f4d08f3099a949dbac5f8b64cda36957ed103;hpb=e7216ae0a66fe1563514cbd3f67f2e240d010315 diff --git a/pv/session.cpp b/pv/session.cpp index 22e0428d..41300968 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_; } @@ -519,7 +521,7 @@ void Session::feed_in_analog(shared_ptr analog) const vector> channels = analog->channels(); const unsigned int channel_count = channels.size(); const size_t sample_count = analog->num_samples() / channel_count; - const float *data = analog->data_pointer(); + const float *data = static_cast(analog->data_pointer()); bool sweep_beginning = false; for (auto channel : channels)