X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fstoresession.cpp;h=d5355cba3bbe03c71aeb2bf27a2bc654f72479bb;hb=e8d009288de28cb194bc7964f96677c2baf900c9;hp=dede6a064cb8eda309f7384e180059bdb6398fd8;hpb=e40b2f294066331dc04598f4b0dccac2bab7c295;p=pulseview.git diff --git a/pv/storesession.cpp b/pv/storesession.cpp index dede6a0..d5355cb 100644 --- a/pv/storesession.cpp +++ b/pv/storesession.cpp @@ -27,6 +27,8 @@ #include #include +#include + using std::deque; using std::dynamic_pointer_cast; using std::lock_guard; @@ -40,6 +42,8 @@ using std::string; using std::thread; using std::vector; +using sigrok::Error; + namespace pv { const size_t StoreSession::BlockSize = 1024 * 1024; @@ -110,26 +114,27 @@ bool StoreSession::start() const shared_ptr snapshot(snapshots.front()); assert(snapshot); - // Make a list of probes - char **const probes = new char*[sigs.size() + 1]; + // Make a list of channels + char **const channels = new char*[sigs.size() + 1]; for (size_t i = 0; i < sigs.size(); i++) { shared_ptr sig(sigs[i]); assert(sig); - probes[i] = strdup(sig->get_name().toUtf8().constData()); + channels[i] = strdup(sig->get_name().toUtf8().constData()); } - probes[sigs.size()] = NULL; + channels[sigs.size()] = NULL; // Begin storing - if (sr_session_save_init(_file_name.c_str(), - data->samplerate(), probes) != SR_OK) { + try { + SigSession::_sr_session->begin_save(_file_name); + } catch (Error error) { _error = tr("Error while saving."); return false; } - // Delete the probes array + // Delete the channels array for (size_t i = 0; i <= sigs.size(); i++) - free(probes[i]); - delete[] probes; + free(channels[i]); + delete[] channels; _thread = std::thread(&StoreSession::store_proc, this, snapshot); return true; @@ -179,9 +184,11 @@ void StoreSession::store_proc(shared_ptr snapshot) start_sample + samples_per_block, sample_count); snapshot->get_samples(data, start_sample, end_sample); - if(sr_session_append(_file_name.c_str(), data, unit_size, - end_sample - start_sample) != SR_OK) - { + size_t length = end_sample - start_sample; + + try { + SigSession::_sr_session->append(data, length, unit_size); + } catch (Error error) { _error = tr("Error while saving."); break; }