using pv::util::TimeUnit;
using pv::util::Timestamp;
+using std::back_inserter;
+using std::copy_if;
using std::deque;
using std::dynamic_pointer_cast;
using std::inserter;
using std::lock_guard;
using std::max;
using std::make_pair;
+using std::make_shared;
using std::min;
using std::pair;
using std::set;
void View::signals_changed()
{
+ using sigrok::Channel;
+
vector< shared_ptr<TraceTreeItem> > new_top_level_items;
const auto device = session_.device();
shared_ptr<sigrok::Device> sr_dev = device->device();
assert(sr_dev);
+ const vector< shared_ptr<Channel> > channels(
+ sr_dev->channels());
+
// Make a list of traces that are being added, and a list of traces
// that are being removed
const vector<shared_ptr<Trace>> prev_trace_list = list_by_type<Trace>();
new_top_level_items.push_back(new_trace_group);
}
+ // Enqueue the remaining logic channels in a group
+ vector< shared_ptr<Channel> > logic_channels;
+ copy_if(channels.begin(), channels.end(), back_inserter(logic_channels),
+ [](const shared_ptr<Channel>& c) {
+ return c->type() == sigrok::ChannelType::LOGIC; });
+ const vector< shared_ptr<Trace> > non_grouped_logic_signals =
+ extract_new_traces_for_channels(logic_channels,
+ signal_map, add_traces);
+ const shared_ptr<TraceGroup> non_grouped_trace_group(
+ make_shared<TraceGroup>());
+ for (shared_ptr<Trace> trace : non_grouped_logic_signals)
+ non_grouped_trace_group->add_child_item(trace);
+ new_top_level_items.push_back(non_grouped_trace_group);
+
// Enqueue the remaining channels as free ungrouped traces
const vector< shared_ptr<Trace> > new_top_level_signals =
- extract_new_traces_for_channels(sr_dev->channels(),
+ extract_new_traces_for_channels(channels,
signal_map, add_traces);
new_top_level_items.insert(new_top_level_items.end(),
new_top_level_signals.begin(), new_top_level_signals.end());