]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.cpp
ViewWidget: Added drag-handling support for non-TraceTreeItems
[pulseview.git] / pv / view / view.cpp
index 3eb04920ef8f364ac19bd299f0f51a4e81039177..d21b75ab3f432422977b77d1d79056cdec1dc547 100644 (file)
@@ -396,8 +396,7 @@ void View::set_scale_offset(double scale, const Timestamp& offset)
 
 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;
@@ -509,8 +508,10 @@ void View::update_viewport()
 void View::restack_all_trace_tree_items()
 {
        // Make a list of owners that is sorted from deepest first
+       const vector<shared_ptr<TraceTreeItem>> items(
+               list_by_type<TraceTreeItem>());
        set< TraceTreeItemOwner* > owners;
-       for (const auto &r : *this)
+       for (const auto &r : items)
                owners.insert(r->owner());
        vector< TraceTreeItemOwner* > sorted_owners(owners.begin(), owners.end());
        sort(sorted_owners.begin(), sorted_owners.end(),
@@ -522,8 +523,6 @@ void View::restack_all_trace_tree_items()
                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();
 }
@@ -745,8 +744,7 @@ void View::determine_time_unit()
 {
        // 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) {
@@ -885,8 +883,7 @@ void View::signals_changed()
        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());
 
@@ -1065,7 +1062,9 @@ void View::process_sticky_events()
 
 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();
 }