{
connect(&session_, SIGNAL(capture_state_changed(int)),
this, SLOT(on_capture_state_changed(int)));
-
- set_name(tr("Empty decoder signal"));
}
DecodeSignal::~DecodeSignal()
void DecodeSignal::stack_decoder(const srd_decoder *decoder)
{
assert(decoder);
- stack_.push_back(make_shared<decode::Decoder>(decoder));
+ const shared_ptr<Decoder> dec = make_shared<decode::Decoder>(decoder);
+
+ stack_.push_back(dec);
// Set name if this decoder is the first in the list
if (stack_.size() == 1)
// 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();
}
return channels_;
}
-void DecodeSignal::auto_assign_signals()
+void DecodeSignal::auto_assign_signals(const shared_ptr<Decoder> 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;
// Include the newly created decode channels in the channel lists
update_channel_list();
+ commit_decoder_channels();
break;
}
}
settings.endGroup();
+ channels_updated();
}
// Restore channel mapping
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);