#include <libsigrok/libsigrok.hpp>
+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;
stop_capture();
}
+DeviceManager& SigSession::device_manager()
+{
+ return _device_manager;
+}
+
+const DeviceManager& SigSession::device_manager() const
+{
+ return _device_manager;
+}
+
const shared_ptr<sigrok::Session>& SigSession::session() const
{
return _session;
set< shared_ptr<data::SignalData> > SigSession::get_data() const
{
- lock_guard<mutex> lock(_signals_mutex);
+ shared_lock<shared_mutex> lock(_signals_mutex);
set< shared_ptr<data::SignalData> > data;
for (const shared_ptr<view::Signal> sig : _signals) {
assert(sig);
return data;
}
-vector< shared_ptr<view::Signal> > SigSession::get_signals() const
+boost::shared_mutex& SigSession::signals_mutex() const
+{
+ return _signals_mutex;
+}
+
+const vector< shared_ptr<view::Signal> >& SigSession::signals() const
{
- lock_guard<mutex> lock(_signals_mutex);
return _signals;
}
try
{
- lock_guard<mutex> lock(_signals_mutex);
+ lock_guard<boost::shared_mutex> lock(_signals_mutex);
// Create the decoder
decoder_stack = shared_ptr<data::DecoderStack>(
dynamic_pointer_cast<view::LogicSignal>(s);
if (l && QString::fromUtf8(pdch->name).
toLower().contains(
- l->get_name().toLower()))
+ l->name().toLower()))
channels[pdch] = l;
}
vector< shared_ptr<view::DecodeTrace> > SigSession::get_decode_signals() const
{
- lock_guard<mutex> lock(_signals_mutex);
+ shared_lock<shared_mutex> lock(_signals_mutex);
return _decode_traces;
}
// Make the Signals list
{
- lock_guard<mutex> lock(_signals_mutex);
+ unique_lock<shared_mutex> lock(_signals_mutex);
_signals.clear();
shared_ptr<view::Signal> SigSession::signal_from_channel(
shared_ptr<Channel> channel) const
{
- lock_guard<mutex> lock(_signals_mutex);
+ lock_guard<boost::shared_mutex> lock(_signals_mutex);
for (shared_ptr<view::Signal> sig : _signals) {
assert(sig);
if (sig->channel() == channel)