X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsession.cpp;h=42c581d420122fd126fc9e7fb7d51b11f3b34648;hp=97741ebf7b944a4c6507bd1a4e64c1d8128a5d5b;hb=5e6967cb2bcacbfb9e5b627becb6752621949998;hpb=332c6dd8ebbbd24a5efdf3761f94a48deb9d721a diff --git a/pv/session.cpp b/pv/session.cpp index 97741eb..42c581d 100644 --- a/pv/session.cpp +++ b/pv/session.cpp @@ -857,6 +857,9 @@ void Session::sample_thread_proc(function error_handler) assert(0); } + // Optimize memory usage + free_unused_memory(); + // We now have unsaved data unless we just "captured" from a file shared_ptr file_device = dynamic_pointer_cast(device_); @@ -868,6 +871,17 @@ void Session::sample_thread_proc(function error_handler) error_handler(tr("Out of memory, acquisition stopped.")); } +void Session::free_unused_memory() +{ + for (shared_ptr data : all_signal_data_) { + const vector< shared_ptr > segments = data->segments(); + + for (shared_ptr segment : segments) { + segment->free_unused_memory(); + } + } +} + void Session::feed_in_header() { cur_samplerate_ = device_->read_config(ConfigKey::SAMPLERATE);