X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Fdecoder_output%2Fview.cpp;h=1f712da9be8eaf1d24d2c880e7add0c81a52944e;hb=516d21289dafa7ce9b5352454a0eda31999c5efc;hp=171767e3236028d63b6f677c17608979b9889b63;hpb=a13d836f653a19a28b115edff84a5cc6ca55e2ef;p=pulseview.git diff --git a/pv/views/decoder_output/view.cpp b/pv/views/decoder_output/view.cpp index 171767e3..1f712da9 100644 --- a/pv/views/decoder_output/view.cpp +++ b/pv/views/decoder_output/view.cpp @@ -58,8 +58,7 @@ View::View(Session &session, bool is_main_view, QMainWindow *parent) : class_selector_(new QComboBox()), stacked_widget_(new QStackedWidget()), hex_view_(new QHexView()), - signal_(nullptr), - merged_data_(new QByteArray()) + signal_(nullptr) { QVBoxLayout *root_layout = new QVBoxLayout(this); root_layout->setContentsMargins(0, 0, 0, 0); @@ -94,8 +93,6 @@ View::View(Session &session, bool is_main_view, QMainWindow *parent) : decoder_selector_->setSizeAdjustPolicy(QComboBox::AdjustToContents); class_selector_->setSizeAdjustPolicy(QComboBox::AdjustToContents); - hex_view_->setData(merged_data_); - reset_view_state(); } @@ -192,23 +189,19 @@ void View::restore_settings(QSettings &settings) void View::update_data() { if (!signal_) { - merged_data_->clear(); + hex_view_->clear(); return; } if (signal_->get_binary_data_chunk_count(current_segment_, decoder_, bin_class_id_) == 0) { - merged_data_->clear(); + hex_view_->clear(); return; } - vector data; - signal_->get_binary_data_chunks_merged(current_segment_, decoder_, bin_class_id_, - 0, numeric_limits::max(), &data); - - merged_data_->resize(data.size()); - memcpy(merged_data_->data(), data.data(), data.size()); + const DecodeBinaryClass* bin_class = + signal_->get_binary_data_class(current_segment_, decoder_, bin_class_id_); - hex_view_->setData(merged_data_); + hex_view_->setData(bin_class); } void View::on_selected_decoder_changed(int index) @@ -230,10 +223,10 @@ void View::on_selected_decoder_changed(int index) if (signal_) { // Populate binary class selector - uint8_t bin_classes = decoder_->get_binary_class_count(); - for (uint8_t i = 0; i < bin_classes; i++) { + uint32_t bin_classes = decoder_->get_binary_class_count(); + for (uint32_t i = 0; i < bin_classes; i++) { const data::decode::DecodeBinaryClassInfo* class_info = decoder_->get_binary_class(i); - class_selector_->addItem(class_info->name, QVariant::fromValue(i)); + class_selector_->addItem(class_info->description, QVariant::fromValue(i)); } connect(signal_, SIGNAL(new_binary_data(unsigned int, void*, unsigned int)), @@ -245,7 +238,7 @@ void View::on_selected_decoder_changed(int index) void View::on_selected_class_changed(int index) { - bin_class_id_ = class_selector_->itemData(index).value(); + bin_class_id_ = class_selector_->itemData(index).value(); update_data(); } @@ -283,7 +276,8 @@ void View::on_signal_name_changed(const QString &name) void View::on_new_binary_data(unsigned int segment_id, void* decoder, unsigned int bin_class_id) { if ((segment_id == current_segment_) && (decoder == decoder_) && (bin_class_id == bin_class_id_)) - update_data(); + if (!delayed_view_updater_.isActive()) + delayed_view_updater_.start(); } void View::on_decoder_stacked(void* decoder) @@ -322,6 +316,11 @@ void View::on_decoder_removed(void* decoder) decoder_selector_->removeItem(index); } +void View::perform_delayed_view_update() +{ + update_data(); +} + } // namespace decoder_output } // namespace views