X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fsegment.cpp;h=483d97b13304b337801066ad84a0ae5dcdb57e62;hp=f635fc387a59dc4156273ca0dd4d88602ca35a27;hb=5e6967cb2bcacbfb9e5b627becb6752621949998;hpb=332c6dd8ebbbd24a5efdf3761f94a48deb9d721a diff --git a/pv/data/segment.cpp b/pv/data/segment.cpp index f635fc38..483d97b1 100644 --- a/pv/data/segment.cpp +++ b/pv/data/segment.cpp @@ -88,6 +88,21 @@ unsigned int Segment::unit_size() const return unit_size_; } +void Segment::free_unused_memory() +{ + lock_guard lock(mutex_); + + // No more data will come in, so re-create the last chunk accordingly + uint8_t* resized_chunk = new uint8_t[used_samples_ * unit_size_]; + memcpy(resized_chunk, current_chunk_, used_samples_ * unit_size_); + + delete[] current_chunk_; + current_chunk_ = resized_chunk; + + data_chunks_.pop_back(); + data_chunks_.push_back(resized_chunk); +} + void Segment::append_single_sample(void *data) { lock_guard lock(mutex_);