projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SigSession: Converted _signals_mutex into a boost::shared_mutex
[pulseview.git]
/
pv
/
view
/
decodetrace.cpp
diff --git
a/pv/view/decodetrace.cpp
b/pv/view/decodetrace.cpp
index 899de3b238743f320d638c87308719f9f961ddc7..1cb9ce7154a9c302f15e3ecb63637f109f84286a 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>
@@
-51,8
+53,11
@@
extern "C" {
#include <pv/widgets/decodergroupbox.h>
#include <pv/widgets/decodermenu.h>
#include <pv/widgets/decodergroupbox.h>
#include <pv/widgets/decodermenu.h>
+using boost::shared_lock;
+using boost::shared_mutex;
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::make_pair;
using std::max;
using std::map;
@@
-692,7
+697,8
@@
QComboBox* DecodeTrace::create_channel_selector(
{
assert(dec);
{
assert(dec);
- const vector< shared_ptr<Signal> > sigs = _session.get_signals();
+ shared_lock<shared_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
+731,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();
+
+ shared_lock<shared_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)
{