X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fanalogsegment.cpp;h=579013097a713d3792da81aea0bebf09d45fb95e;hb=69e950969e45ddbf516069c28f72f5696c53af5d;hp=342612aae02e15954671d2044f3bdb337682cd09;hpb=65c92359634f672e5f472a5214719dabc7e20883;p=pulseview.git diff --git a/pv/data/analogsegment.cpp b/pv/data/analogsegment.cpp index 342612aa..57901309 100644 --- a/pv/data/analogsegment.cpp +++ b/pv/data/analogsegment.cpp @@ -89,11 +89,21 @@ void AnalogSegment::append_interleaved_samples(const float *data, append_payload_to_envelope_levels(); if (sample_count > 1) - owner_.notify_samples_added(this, prev_sample_count + 1, - prev_sample_count + 1 + sample_count); + owner_.notify_samples_added(shared_ptr(shared_from_this()), + prev_sample_count + 1, prev_sample_count + 1 + sample_count); else - owner_.notify_samples_added(this, prev_sample_count + 1, - prev_sample_count + 1); + owner_.notify_samples_added(shared_ptr(shared_from_this()), + prev_sample_count + 1, prev_sample_count + 1); +} + +float AnalogSegment::get_sample(int64_t sample_num) const +{ + assert(sample_num >= 0); + assert(sample_num <= (int64_t)sample_count_); + + lock_guard lock(mutex_); // Because of free_unused_memory() + + return *((const float*)get_raw_sample(sample_num)); } void AnalogSegment::get_samples(int64_t start_sample, int64_t end_sample,