projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix build on MinGW (boost thread related).
[pulseview.git]
/
pv
/
sigsession.cpp
diff --git
a/pv/sigsession.cpp
b/pv/sigsession.cpp
index 5a794417f2112754f6cf0cc566202b452b49c5d8..11c89e092572e61119a6f96bec53a8e1a30dc775 100644
(file)
--- a/
pv/sigsession.cpp
+++ b/
pv/sigsession.cpp
@@
-47,12
+47,16
@@
#include <libsigrok/libsigrok.hpp>
#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::dynamic_pointer_cast;
using std::function;
using std::lock_guard;
-using std::mutex;
using std::list;
using std::map;
using std::list;
using std::map;
+using std::mutex;
using std::set;
using std::shared_ptr;
using std::string;
using std::set;
using std::shared_ptr;
using std::string;
@@
-92,6
+96,16
@@
SigSession::~SigSession()
stop_capture();
}
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;
const shared_ptr<sigrok::Session>& SigSession::session() const
{
return _session;
@@
-219,7
+233,7
@@
void SigSession::stop_capture()
set< shared_ptr<data::SignalData> > SigSession::get_data() const
{
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);
set< shared_ptr<data::SignalData> > data;
for (const shared_ptr<view::Signal> sig : _signals) {
assert(sig);
@@
-229,9
+243,13
@@
set< shared_ptr<data::SignalData> > SigSession::get_data() const
return data;
}
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;
}
return _signals;
}
@@
-243,7
+261,7
@@
bool SigSession::add_decoder(srd_decoder *const dec)
try
{
try
{
- lock_guard<mutex> lock(_signals_mutex);
+ lock_guard<
boost::shared_
mutex> lock(_signals_mutex);
// Create the decoder
decoder_stack = shared_ptr<data::DecoderStack>(
// Create the decoder
decoder_stack = shared_ptr<data::DecoderStack>(
@@
-264,7
+282,7
@@
bool SigSession::add_decoder(srd_decoder *const dec)
dynamic_pointer_cast<view::LogicSignal>(s);
if (l && QString::fromUtf8(pdch->name).
toLower().contains(
dynamic_pointer_cast<view::LogicSignal>(s);
if (l && QString::fromUtf8(pdch->name).
toLower().contains(
- l->
get_
name().toLower()))
+ l->name().toLower()))
channels[pdch] = l;
}
channels[pdch] = l;
}
@@
-294,7
+312,7
@@
bool SigSession::add_decoder(srd_decoder *const dec)
vector< shared_ptr<view::DecodeTrace> > SigSession::get_decode_signals() const
{
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;
}
return _decode_traces;
}
@@
-348,7
+366,7
@@
void SigSession::update_signals(shared_ptr<Device> device)
// Make the Signals list
{
// Make the Signals list
{
-
lock_guard<
mutex> lock(_signals_mutex);
+
unique_lock<shared_
mutex> lock(_signals_mutex);
_signals.clear();
_signals.clear();
@@
-389,7
+407,7
@@
void SigSession::update_signals(shared_ptr<Device> device)
shared_ptr<view::Signal> SigSession::signal_from_channel(
shared_ptr<Channel> channel) const
{
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)
for (shared_ptr<view::Signal> sig : _signals) {
assert(sig);
if (sig->channel() == channel)