#include <tuple>
#include <boost/functional/hash.hpp>
+#include <boost/thread/locks.hpp>
+#include <boost/thread/shared_mutex.hpp>
#include <QAction>
#include <QApplication>
assert(scale > 0);
const double pixels_offset =
- (view->offset() - decoder_stack_->start_time()) / scale;
+ ((view->offset() - decoder_stack_->start_time()) / scale).convert_to<double>();
double samplerate = decoder_stack_->samplerate();
const srd_decoder *const decoder = dec->decoder();
assert(decoder);
+ const bool decoder_deletable = index > 0;
+
pv::widgets::DecoderGroupBox *const group =
new pv::widgets::DecoderGroupBox(
- QString::fromUtf8(decoder->name));
+ QString::fromUtf8(decoder->name), nullptr, decoder_deletable);
group->set_decoder_visible(dec->shown());
- delete_mapper_.setMapping(group, index);
- connect(group, SIGNAL(delete_decoder()), &delete_mapper_, SLOT(map()));
+ if (decoder_deletable) {
+ delete_mapper_.setMapping(group, index);
+ connect(group, SIGNAL(delete_decoder()), &delete_mapper_, SLOT(map()));
+ }
show_hide_mapper_.setMapping(group, index);
connect(group, SIGNAL(show_hide_decoder()),
{
assert(dec);
- shared_lock<shared_mutex> lock(session_.signals_mutex());
- const auto &sigs(session_.signals());
+ const auto sigs(session_.signals());
vector< shared_ptr<Signal> > sig_list(sigs.begin(), sigs.end());
std::sort(sig_list.begin(), sig_list.end(),
map<const srd_channel*, shared_ptr<LogicSignal> > channel_map;
- shared_lock<shared_mutex> lock(session_.signals_mutex());
- const unordered_set< shared_ptr<Signal> > &sigs(session_.signals());
+ const unordered_set< shared_ptr<Signal> > sigs(session_.signals());
for (const ChannelSelector &s : channel_selectors_)
{