X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fstoresession.cpp;h=ef1c6aad2d245317988066b65c3299033d89ebca;hb=be9e7b4bb29b6594ec2b64442748ab135b684bf8;hp=484f1ff60f2547cad7924f10c9e1dd202958e7a4;hpb=9d92941e3e8f6a35e6d30df4ba5c896b997047d6;p=pulseview.git diff --git a/pv/storesession.cpp b/pv/storesession.cpp index 484f1ff6..ef1c6aad 100644 --- a/pv/storesession.cpp +++ b/pv/storesession.cpp @@ -29,6 +29,9 @@ #include +using boost::shared_lock; +using boost::shared_mutex; + using std::deque; using std::dynamic_pointer_cast; using std::lock_guard; @@ -79,8 +82,9 @@ bool StoreSession::start() { set< shared_ptr > data_set = _session.get_data(); - const vector< shared_ptr > sigs = - _session.get_signals(); + + shared_lock lock(_session.signals_mutex()); + const vector< shared_ptr > &sigs(_session.signals()); // Check we have logic data if (data_set.empty() || sigs.empty()) { @@ -116,9 +120,9 @@ bool StoreSession::start() // Begin storing try { - auto context = _session._sr_session->context(); + auto context = _session.session()->context(); auto output_format = context->output_formats()["srzip"]; - auto device = _session.get_device(); + auto device = _session.device(); _output = output_format->create_output(device, {{"filename", Glib::Variant::create(_file_name)}}); @@ -182,7 +186,7 @@ void StoreSession::store_proc(shared_ptr snapshot) size_t length = end_sample - start_sample; try { - auto context = _session._sr_session->context(); + auto context = _session.session()->context(); auto logic = context->create_logic_packet(data, length, unit_size); _output->receive(logic); } catch (Error error) {