]> sigrok.org Git - pulseview.git/blobdiff - pv/data/signalbase.cpp
Session: Fix issue #67 by improving error handling
[pulseview.git] / pv / data / signalbase.cpp
index 46ed87834a455681dbf179f9a7005a6d0be8a435..97f705084e91fc654c85ab7ce07cbfec64a3df50 100644 (file)
@@ -124,6 +124,7 @@ SignalBase::SignalBase(shared_ptr<sigrok::Channel> channel, ChannelType channel_
        conversion_type_(NoConversion),
        min_value_(0),
        max_value_(0),
+       index_(0),
        error_message_("")
 {
        if (channel_) {
@@ -318,15 +319,22 @@ shared_ptr<data::Logic> SignalBase::logic_data() const
        if (!data_)
                return nullptr;
 
-       shared_ptr<Logic> result = dynamic_pointer_cast<Logic>(data_);
+       shared_ptr<Logic> result;
 
        if (((conversion_type_ == A2LConversionByThreshold) ||
                (conversion_type_ == A2LConversionBySchmittTrigger)))
                result = dynamic_pointer_cast<Logic>(converted_data_);
+       else
+               result = dynamic_pointer_cast<Logic>(data_);
 
        return result;
 }
 
+shared_ptr<pv::data::SignalData> SignalBase::data() const
+{
+       return data_;
+}
+
 bool SignalBase::segment_is_complete(uint32_t segment_id) const
 {
        bool result = true;
@@ -582,7 +590,12 @@ void SignalBase::restore_settings(QSettings &settings)
                QVariant value = settings.value("color");
 
                // Workaround for Qt QColor serialization bug on OSX
-               if ((QMetaType::Type)(value.type()) == QMetaType::QColor)
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+               bool is_qcolor = (QMetaType::Type)(value.typeId()) == QMetaType::QColor;
+#else
+               bool is_qcolor = (QMetaType::Type)(value.type()) == QMetaType::QColor;
+#endif
+               if (is_qcolor)
                        set_color(value.value<QColor>());
                else
                        set_color(QColor::fromRgba(value.value<uint32_t>()));
@@ -715,6 +728,8 @@ void SignalBase::convert_single_segment_range(shared_ptr<AnalogSegment> asegment
                delete[] lsamples;
                delete[] asamples;
        }
+
+       samples_added(lsegment->segment_id(), start_sample, end_sample);
 }
 
 void SignalBase::convert_single_segment(shared_ptr<AnalogSegment> asegment,