From 9437012ff13c3c10262aa55238ae87177eaed5b3 Mon Sep 17 00:00:00 2001 From: Ramon Felder Date: Tue, 6 Sep 2022 11:07:22 +0200 Subject: [PATCH 1/2] Assign generated signals a unique name When saving a session setup, the trace view refers to signals using their internal_name(). Without this change, internal_name() would return an empty string for all generated signals. This leads to name collisions in the session settings file. --- pv/data/signalbase.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pv/data/signalbase.cpp b/pv/data/signalbase.cpp index 5f95ec337..708189889 100644 --- a/pv/data/signalbase.cpp +++ b/pv/data/signalbase.cpp @@ -27,6 +27,7 @@ #include "signaldata.hpp" #include +#include #include #include @@ -130,6 +131,8 @@ SignalBase::SignalBase(shared_ptr channel, ChannelType channel_ if (channel_) { set_internal_name(QString::fromStdString(channel_->name())); set_index(channel_->index()); + } else { + set_internal_name(QUuid::createUuid().toString(QUuid::WithoutBraces)); } connect(&delayed_conversion_starter_, SIGNAL(timeout()), @@ -565,6 +568,8 @@ bool SignalBase::is_decode_signal() const void SignalBase::save_settings(QSettings &settings) const { settings.setValue("name", name()); + if (is_generated()) + settings.setValue("uuid", internal_name()); settings.setValue("enabled", enabled()); settings.setValue("color", color().rgba()); settings.setValue("conversion_type", (int)conversion_type_); @@ -583,6 +588,9 @@ void SignalBase::restore_settings(QSettings &settings) if (settings.contains("name")) set_name(settings.value("name").toString()); + if (is_generated() && settings.contains("uuid")) + set_internal_name(settings.value("uuid").toString()); + if (settings.contains("enabled")) set_enabled(settings.value("enabled").toBool()); From 5eca38734a4dd178d112b975205095dc3f285177 Mon Sep 17 00:00:00 2001 From: Ramon Felder Date: Fri, 9 Sep 2022 17:14:48 +0200 Subject: [PATCH 2/2] Make signal UUIDs compile with Qt5.7 The mingw cross compilation script in sigrok-utils freezes Qt at version 5.7 for Windows XP support. Qt5.7 does not support QUuid::WithoutBraces. Rationale for removing the braces: They are encoded using an escape sequence in the settings file. --- pv/data/signalbase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pv/data/signalbase.cpp b/pv/data/signalbase.cpp index 708189889..59e303f98 100644 --- a/pv/data/signalbase.cpp +++ b/pv/data/signalbase.cpp @@ -132,7 +132,7 @@ SignalBase::SignalBase(shared_ptr channel, ChannelType channel_ set_internal_name(QString::fromStdString(channel_->name())); set_index(channel_->index()); } else { - set_internal_name(QUuid::createUuid().toString(QUuid::WithoutBraces)); + set_internal_name(QUuid::createUuid().toString().remove('{').remove('}')); } connect(&delayed_conversion_starter_, SIGNAL(timeout()),