From 6295bfad8d14f910b75aec0d01dbaad08449be79 Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Wed, 22 Feb 2023 11:40:53 +0800 Subject: [PATCH] fix: The label of decoder trace can't restore from file --- DSView/pv/sigsession.cpp | 8 ++++++++ DSView/pv/sigsession.h | 2 ++ DSView/pv/storesession.cpp | 16 +++++++++++++--- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/DSView/pv/sigsession.cpp b/DSView/pv/sigsession.cpp index c071b097..7e18ed49 100644 --- a/DSView/pv/sigsession.cpp +++ b/DSView/pv/sigsession.cpp @@ -2016,4 +2016,12 @@ namespace pv } } + void SigSession::set_decoder_row_label(int index, QString label) + { + auto trace = get_decoder_trace(index); + if (trace != NULL){ + trace->set_name(label); + } + } + } // namespace pv diff --git a/DSView/pv/sigsession.h b/DSView/pv/sigsession.h index 7b743403..5de326a9 100644 --- a/DSView/pv/sigsession.h +++ b/DSView/pv/sigsession.h @@ -388,6 +388,8 @@ public: void broadcast_msg(int msg); bool have_new_realtime_refresh(bool keep); + void set_decoder_row_label(int index, QString label); + private: void set_cur_samplelimits(uint64_t samplelimits); void set_cur_snap_samplerate(uint64_t samplerate); diff --git a/DSView/pv/storesession.cpp b/DSView/pv/storesession.cpp index 17908efa..316719f2 100644 --- a/DSView/pv/storesession.cpp +++ b/DSView/pv/storesession.cpp @@ -1031,9 +1031,10 @@ bool StoreSession::json_decoders(QJsonArray &array) QJsonArray stack_array; QJsonObject show_obj; const auto &stack = s->decoder(); - const auto &decoder = stack->stack(); + const auto &decoderList = stack->stack(); - for(auto dec : decoder) { + for(auto dec : decoderList) + { QJsonArray ch_array; const srd_decoder *const d = dec->decoder();; const bool have_probes = (d->channels || d->opt_channels) != 0; @@ -1090,6 +1091,7 @@ bool StoreSession::json_decoders(QJsonArray &array) show_obj[d->id] = QJsonValue::fromVariant(dec->shown()); } dec_obj["version"] = DEOCDER_CONFIG_VERSION; + dec_obj["label"] = QString(s->get_name().toUtf8().data()); dec_obj["stacked decoders"] = stack_array; auto rows = stack->get_rows_gshow(); @@ -1118,6 +1120,8 @@ bool StoreSession::load_decoders(dock::ProtocolDock *widget, QJsonArray &dec_arr dsv_info("%s", "StoreSession::load_decoders(), json object array is empty."); return false; } + + int dec_index = -1; for (const QJsonValue &dec_value : dec_array) { @@ -1154,7 +1158,13 @@ bool StoreSession::load_decoders(dock::ProtocolDock *widget, QJsonArray &dec_arr sub_decoders.clear(); continue; //protocol is not exists; - } + } + + dec_index++; + + if (dec_obj.contains("label")){ + _session->set_decoder_row_label(dec_index, dec_obj["label"].toString()); + } std::vector &aft_dsigs = _session->get_decode_signals();