#include <mutex>
#include <unordered_set>
+#include <boost/thread/locks.hpp>
+
#include <QApplication>
#include <QEvent>
#include <QFontMetrics>
set< shared_ptr<SignalData> > View::get_visible_data() const
{
- 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());
// Make a set of all the visible data objects
set< shared_ptr<SignalData> > visible_data;
void View::restack_all_trace_tree_items()
{
// Make a list of owners that is sorted from deepest first
- const auto owners = list_row_item_owners();
+ const vector<shared_ptr<TraceTreeItem>> items(
+ list_by_type<TraceTreeItem>());
+ set< TraceTreeItemOwner* > owners;
+ for (const auto &r : items)
+ owners.insert(r->owner());
vector< TraceTreeItemOwner* > sorted_owners(owners.begin(), owners.end());
sort(sorted_owners.begin(), sorted_owners.end(),
[](const TraceTreeItemOwner* a, const TraceTreeItemOwner *b) {
o->restack_items();
// Animate the items to their destination
- const vector< shared_ptr<TraceTreeItem> > items(
- list_by_type<TraceTreeItem>());
for (const auto &i : items)
i->animate_to_layout_v_offset();
}
{
// Check whether we know the sample rate and hence can use time as the unit
if (time_unit_ == util::TimeUnit::Samples) {
- 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());
// Check all signals but...
for (const shared_ptr<Signal> signal : sigs) {
const set<shared_ptr<Trace>> prev_traces(
prev_trace_list.begin(), prev_trace_list.end());
- 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());
set< shared_ptr<Trace> > traces(sigs.begin(), sigs.end());
void View::on_hover_point_changed()
{
- for (shared_ptr<TraceTreeItem> r : *this)
+ const vector<shared_ptr<TraceTreeItem>> trace_tree_items(
+ list_by_type<TraceTreeItem>());
+ for (shared_ptr<TraceTreeItem> r : trace_tree_items)
r->hover_point_changed();
}