]> sigrok.org Git - pulseview.git/commitdiff
LogicSignal: Put all trigger matches into a single trigger stage.
authorTilman Sauerbeck <redacted>
Mon, 23 Nov 2015 18:07:59 +0000 (19:07 +0100)
committerTilman Sauerbeck <redacted>
Mon, 23 Nov 2015 18:11:23 +0000 (19:11 +0100)
Previously each trigger match was assigned its own trigger stage,
which is problematic because devices may not support more than one
stage.

Ideally we would want the user to decide which matches go into
which stages, but that's a long way off and this change makes
things work just a little bit better for more devices.

Fixes bug #683.

pv/view/logicsignal.cpp

index 717360b852fa65b9aedf5a513f578d47a45e1e40..c23f09226cd9bfaa2cbaf3d362eca7065ad69088 100644 (file)
@@ -447,8 +447,15 @@ void LogicSignal::modify_trigger()
                }
        }
 
-       if (trigger_match_)
-               new_trigger->add_stage()->add_match(channel_, trigger_match_);
+       if (trigger_match_) {
+               // Until we can let the user decide how to group trigger matches
+               // into stages, put all of the matches into a single stage --
+               // most devices only support a single trigger stage.
+               if (new_trigger->stages().empty())
+                       new_trigger->add_stage();
+
+               new_trigger->stages().back()->add_match(channel_, trigger_match_);
+       }
 
        session_.session()->set_trigger(
                new_trigger->stages().empty() ? nullptr : new_trigger);