projects
/
pulseview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f9ebf30
)
Fix #1201 by letting more accurate matches replace previous ones
author
Soeren Apel
<soeren@apelpie.net>
Sun, 27 May 2018 08:00:42 +0000
(10:00 +0200)
committer
Soeren Apel
<soeren@apelpie.net>
Sun, 27 May 2018 08:00:42 +0000
(10:00 +0200)
pv/data/decodesignal.cpp
patch
|
blob
|
history
diff --git
a/pv/data/decodesignal.cpp
b/pv/data/decodesignal.cpp
index fbbdd793952d4ffd578532944ae4cab9c66ecfe5..baef9ce191ddeebd7ea2a480e0e4957b19a5d460 100644
(file)
--- a/
pv/data/decodesignal.cpp
+++ b/
pv/data/decodesignal.cpp
@@
-279,19
+279,33
@@
void DecodeSignal::auto_assign_signals(const shared_ptr<Decoder> dec)
if (ch.assigned_signal)
continue;
if (ch.assigned_signal)
continue;
+ const QString ch_name = ch.name.toLower();
+
+ shared_ptr<data::SignalBase> match;
for (shared_ptr<data::SignalBase> s : session_.signalbases()) {
if (!s->enabled())
continue;
for (shared_ptr<data::SignalBase> s : session_.signalbases()) {
if (!s->enabled())
continue;
- const QString ch_name = ch.name.toLower();
const QString s_name = s->name().toLower();
if (s->logic_data() &&
((ch_name.contains(s_name)) || (s_name.contains(ch_name)))) {
const QString s_name = s->name().toLower();
if (s->logic_data() &&
((ch_name.contains(s_name)) || (s_name.contains(ch_name)))) {
- ch.assigned_signal = s.get();
- new_assignment = true;
+ if (!match)
+ match = s;
+ else {
+ // Only replace an existing match if it matches more characters
+ int old_unmatched = ch_name.length() - match->name().length();
+ int new_unmatched = ch_name.length() - s->name().length();
+ if (abs(new_unmatched) < abs(old_unmatched))
+ match = s;
+ }
}
}
}
}
+
+ if (match) {
+ ch.assigned_signal = match.get();
+ new_assignment = true;
+ }
}
if (new_assignment) {
}
if (new_assignment) {