X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fstoresession.cpp;h=ef1c6aad2d245317988066b65c3299033d89ebca;hb=be9e7b4bb29b6594ec2b64442748ab135b684bf8;hp=741d18a660d73dc628e08eec6a7c151d521cebf6;hpb=7223eb629eb8eb3b03fa26b9f22770dd7f98c4d1;p=pulseview.git diff --git a/pv/storesession.cpp b/pv/storesession.cpp index 741d18a6..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()) { @@ -95,7 +99,6 @@ bool StoreSession::start() } // Get the logic data - //shared_ptr data; if (!(data = dynamic_pointer_cast(*data_set.begin()))) { _error = tr("PulseView currently only has support for " @@ -117,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)}}); @@ -183,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) {