X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecodesignal.cpp;h=daa52ed62d67231821f4fee2647fd506853d96a7;hb=78bf7ce5aaa1e02717973dc559c24973a313b541;hp=5acf9eec634380533a2cb1c0bfeceb767cec6f7b;hpb=8ebf8079b43ba0aebe9bc5d4d27049b4a91aa22d;p=pulseview.git diff --git a/pv/data/decodesignal.cpp b/pv/data/decodesignal.cpp index 5acf9eec..daa52ed6 100644 --- a/pv/data/decodesignal.cpp +++ b/pv/data/decodesignal.cpp @@ -62,8 +62,6 @@ DecodeSignal::DecodeSignal(pv::Session &session) : { connect(&session_, SIGNAL(capture_state_changed(int)), this, SLOT(on_capture_state_changed(int))); - - set_name(tr("Empty decoder signal")); } DecodeSignal::~DecodeSignal() @@ -79,7 +77,9 @@ const vector< shared_ptr >& DecodeSignal::decoder_stack() const void DecodeSignal::stack_decoder(const srd_decoder *decoder) { assert(decoder); - stack_.push_back(make_shared(decoder)); + const shared_ptr dec = make_shared(decoder); + + stack_.push_back(dec); // Set name if this decoder is the first in the list if (stack_.size() == 1) @@ -88,7 +88,7 @@ void DecodeSignal::stack_decoder(const srd_decoder *decoder) // Include the newly created decode channels in the channel lists update_channel_list(); - auto_assign_signals(); + auto_assign_signals(dec); commit_decoder_channels(); begin_decode(); } @@ -263,12 +263,16 @@ const vector DecodeSignal::get_channels() const return channels_; } -void DecodeSignal::auto_assign_signals() +void DecodeSignal::auto_assign_signals(const shared_ptr dec) { bool new_assignment = false; // Try to auto-select channels that don't have signals assigned yet for (data::DecodeChannel &ch : channels_) { + // If a decoder is given, auto-assign only its channels + if (dec && (ch.decoder_ != dec)) + continue; + if (ch.assigned_signal) continue; @@ -502,11 +506,13 @@ void DecodeSignal::restore_settings(QSettings &settings) // Include the newly created decode channels in the channel lists update_channel_list(); + commit_decoder_channels(); break; } } settings.endGroup(); + channels_updated(); } // Restore channel mapping @@ -924,7 +930,7 @@ void DecodeSignal::connect_input_notifiers() void DecodeSignal::annotation_callback(srd_proto_data *pdata, void *decode_signal) { assert(pdata); - assert(decoder); + assert(decode_signal); DecodeSignal *const ds = (DecodeSignal*)decode_signal; assert(ds);