projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SigSession: Added signals_mutex(), and made signals() give a reference
[pulseview.git]
/
pv
/
view
/
decodetrace.cpp
diff --git
a/pv/view/decodetrace.cpp
b/pv/view/decodetrace.cpp
index 899de3b238743f320d638c87308719f9f961ddc7..138ba0a14263fc92e0ce09cb74232f227d0b0c22 100644
(file)
--- a/
pv/view/decodetrace.cpp
+++ b/
pv/view/decodetrace.cpp
@@
-22,6
+22,8
@@
extern "C" {
#include <libsigrokdecode/libsigrokdecode.h>
}
#include <libsigrokdecode/libsigrokdecode.h>
}
+#include <mutex>
+
#include <extdef.h>
#include <tuple>
#include <extdef.h>
#include <tuple>
@@
-53,10
+55,12
@@
extern "C" {
using std::dynamic_pointer_cast;
using std::list;
using std::dynamic_pointer_cast;
using std::list;
+using std::lock_guard;
using std::make_pair;
using std::max;
using std::map;
using std::min;
using std::make_pair;
using std::max;
using std::map;
using std::min;
+using std::mutex;
using std::pair;
using std::shared_ptr;
using std::tie;
using std::pair;
using std::shared_ptr;
using std::tie;
@@
-692,7
+696,8
@@
QComboBox* DecodeTrace::create_channel_selector(
{
assert(dec);
{
assert(dec);
- const vector< shared_ptr<Signal> > sigs = _session.get_signals();
+ lock_guard<mutex> lock(_session.signals_mutex());
+ const vector< shared_ptr<Signal> > &sigs(_session.signals());
assert(_decoder_stack);
const auto channel_iter = dec->channels().find(pdch);
assert(_decoder_stack);
const auto channel_iter = dec->channels().find(pdch);
@@
-725,7
+730,9
@@
void DecodeTrace::commit_decoder_channels(shared_ptr<data::decode::Decoder> &dec
assert(dec);
map<const srd_channel*, shared_ptr<LogicSignal> > channel_map;
assert(dec);
map<const srd_channel*, shared_ptr<LogicSignal> > channel_map;
- const vector< shared_ptr<Signal> > sigs = _session.get_signals();
+
+ lock_guard<mutex> lock(_session.signals_mutex());
+ const vector< shared_ptr<Signal> > &sigs(_session.signals());
for (const ChannelSelector &s : _channel_selectors)
{
for (const ChannelSelector &s : _channel_selectors)
{