]> sigrok.org Git - pulseview.git/blobdiff - pv/data/signalbase.cpp
Fix #1629 by not reallocating DecodeSegments
[pulseview.git] / pv / data / signalbase.cpp
index 104243b11db8a168ef24d1e9ed021f4c949958d7..578d908f8d52a036b4e5c9f4a553a34865264bb3 100644 (file)
@@ -123,7 +123,8 @@ SignalBase::SignalBase(shared_ptr<sigrok::Channel> channel, ChannelType channel_
        group_(nullptr),
        conversion_type_(NoConversion),
        min_value_(0),
-       max_value_(0)
+       max_value_(0),
+       error_message_("")
 {
        if (channel_) {
                internal_name_ = QString::fromStdString(channel_->name());
@@ -258,6 +259,11 @@ QColor SignalBase::bgcolor() const
        return bgcolor_;
 }
 
+QString SignalBase::get_error_message() const
+{
+       return error_message_;
+}
+
 void SignalBase::set_data(shared_ptr<pv::data::SignalData> data)
 {
        if (data_) {
@@ -298,11 +304,17 @@ void SignalBase::clear_sample_data()
 
 shared_ptr<data::Analog> SignalBase::analog_data() const
 {
+       if (!data_)
+               return nullptr;
+
        return dynamic_pointer_cast<Analog>(data_);
 }
 
 shared_ptr<data::Logic> SignalBase::logic_data() const
 {
+       if (!data_)
+               return nullptr;
+
        shared_ptr<Logic> result = dynamic_pointer_cast<Logic>(data_);
 
        if (((conversion_type_ == A2LConversionByThreshold) ||
@@ -824,6 +836,15 @@ void SignalBase::start_conversion(bool delayed_start)
        conversion_thread_ = std::thread(&SignalBase::conversion_thread_proc, this);
 }
 
+void SignalBase::set_error_message(QString msg)
+{
+       error_message_ = msg;
+       // TODO Emulate noquote()
+       qDebug().nospace() << name() << ": " << msg;
+
+       error_message_changed(msg);
+}
+
 void SignalBase::stop_conversion()
 {
        // Stop conversion so we can restart it from the beginning