X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Flogicdatasnapshot.cpp;h=b264980b3078271801a0ad808a737af6ffe859fb;hp=1799c2f418f14daf27670d9f06b4b8549442ac8a;hb=7d29656f1e4de945eee3a9ea5dbc0ef88c4a7e30;hpb=6ac96c2e0ef986da9c9ebea50906cb717aa382ba diff --git a/pv/logicdatasnapshot.cpp b/pv/logicdatasnapshot.cpp index 1799c2f4..b264980b 100644 --- a/pv/logicdatasnapshot.cpp +++ b/pv/logicdatasnapshot.cpp @@ -29,6 +29,7 @@ #include "logicdatasnapshot.h" +using namespace boost; using namespace std; namespace pv { @@ -43,12 +44,14 @@ LogicDataSnapshot::LogicDataSnapshot( DataSnapshot(logic.unitsize), _last_append_sample(0) { + lock_guard lock(_mutex); memset(_mip_map, 0, sizeof(_mip_map)); append_payload(logic); } LogicDataSnapshot::~LogicDataSnapshot() { + lock_guard lock(_mutex); BOOST_FOREACH(MipMapLevel &l, _mip_map) free(l.data); } @@ -58,6 +61,8 @@ void LogicDataSnapshot::append_payload( { assert(_unit_size == logic.unitsize); + lock_guard lock(_mutex); + append_data(logic.data, logic.length); // Generate the first mip-map from the data @@ -184,6 +189,8 @@ void LogicDataSnapshot::get_subsampled_edges( assert(sig_index >= 0); assert(sig_index < SR_MAX_NUM_PROBES); + lock_guard lock(_mutex); + const uint64_t block_length = (uint64_t)max(min_length, 1.0f); const unsigned int min_level = max((int)floorf(logf(min_length) / LogMipMapScaleFactor) - 1, 0);