X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Fsegment.cpp;h=483d97b13304b337801066ad84a0ae5dcdb57e62;hb=5e6967cb2bcacbfb9e5b627becb6752621949998;hp=f635fc387a59dc4156273ca0dd4d88602ca35a27;hpb=26a883ede0bcf68d087eda5dd2082890d36c7aef;p=pulseview.git diff --git a/pv/data/segment.cpp b/pv/data/segment.cpp index f635fc3..483d97b 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_);