X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fsigsession.cpp;h=11c89e092572e61119a6f96bec53a8e1a30dc775;hb=32218d3e708553b4508c3510d388aded58068381;hp=5a794417f2112754f6cf0cc566202b452b49c5d8;hpb=1f4caa772cd691da7578816bf3744496c9cde1cf;p=pulseview.git diff --git a/pv/sigsession.cpp b/pv/sigsession.cpp index 5a794417..11c89e09 100644 --- a/pv/sigsession.cpp +++ b/pv/sigsession.cpp @@ -47,12 +47,16 @@ #include +using boost::shared_lock; +using boost::shared_mutex; +using boost::unique_lock; + using std::dynamic_pointer_cast; using std::function; using std::lock_guard; -using std::mutex; using std::list; using std::map; +using std::mutex; using std::set; using std::shared_ptr; using std::string; @@ -92,6 +96,16 @@ SigSession::~SigSession() stop_capture(); } +DeviceManager& SigSession::device_manager() +{ + return _device_manager; +} + +const DeviceManager& SigSession::device_manager() const +{ + return _device_manager; +} + const shared_ptr& SigSession::session() const { return _session; @@ -219,7 +233,7 @@ void SigSession::stop_capture() set< shared_ptr > SigSession::get_data() const { - lock_guard lock(_signals_mutex); + shared_lock lock(_signals_mutex); set< shared_ptr > data; for (const shared_ptr sig : _signals) { assert(sig); @@ -229,9 +243,13 @@ set< shared_ptr > SigSession::get_data() const return data; } -vector< shared_ptr > SigSession::get_signals() const +boost::shared_mutex& SigSession::signals_mutex() const +{ + return _signals_mutex; +} + +const vector< shared_ptr >& SigSession::signals() const { - lock_guard lock(_signals_mutex); return _signals; } @@ -243,7 +261,7 @@ bool SigSession::add_decoder(srd_decoder *const dec) try { - lock_guard lock(_signals_mutex); + lock_guard lock(_signals_mutex); // Create the decoder decoder_stack = shared_ptr( @@ -264,7 +282,7 @@ bool SigSession::add_decoder(srd_decoder *const dec) dynamic_pointer_cast(s); if (l && QString::fromUtf8(pdch->name). toLower().contains( - l->get_name().toLower())) + l->name().toLower())) channels[pdch] = l; } @@ -294,7 +312,7 @@ bool SigSession::add_decoder(srd_decoder *const dec) vector< shared_ptr > SigSession::get_decode_signals() const { - lock_guard lock(_signals_mutex); + shared_lock lock(_signals_mutex); return _decode_traces; } @@ -348,7 +366,7 @@ void SigSession::update_signals(shared_ptr device) // Make the Signals list { - lock_guard lock(_signals_mutex); + unique_lock lock(_signals_mutex); _signals.clear(); @@ -389,7 +407,7 @@ void SigSession::update_signals(shared_ptr device) shared_ptr SigSession::signal_from_channel( shared_ptr channel) const { - lock_guard lock(_signals_mutex); + lock_guard lock(_signals_mutex); for (shared_ptr sig : _signals) { assert(sig); if (sig->channel() == channel)