X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Flogicsnapshot.cpp;h=797a00bc54789f2cd4de2f7067448cf98aec0b96;hp=a1beafb9c4e4e3e3c50a111077e62fd3c2d261d5;hb=c2d4e9df36b9c19c691ff6fcb57066fd84a652e3;hpb=8cb717055ce13a6d6568ff384b3cd3932c41d1b0 diff --git a/pv/data/logicsnapshot.cpp b/pv/data/logicsnapshot.cpp index a1beafb9..797a00bc 100644 --- a/pv/data/logicsnapshot.cpp +++ b/pv/data/logicsnapshot.cpp @@ -27,6 +27,7 @@ #include +#include "config.h" #include "logicsnapshot.h" using boost::lock_guard; @@ -64,6 +65,9 @@ LogicSnapshot::~LogicSnapshot() uint64_t LogicSnapshot::unpack_sample(const uint8_t *ptr) const { +#ifdef HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS + return *(uint64_t*)ptr; +#else uint64_t value = 0; switch(_unit_size) { default: @@ -94,10 +98,14 @@ uint64_t LogicSnapshot::unpack_sample(const uint8_t *ptr) const break; } return value; +#endif } void LogicSnapshot::pack_sample(uint8_t *ptr, uint64_t value) { +#ifdef HAVE_UNALIGNED_LITTLE_ENDIAN_ACCESS + *(uint64_t*)ptr = value; +#else switch(_unit_size) { default: ptr[7] = value >> 56; @@ -126,6 +134,7 @@ void LogicSnapshot::pack_sample(uint8_t *ptr, uint64_t value) case 0: break; } +#endif } void LogicSnapshot::append_payload( @@ -155,7 +164,7 @@ void LogicSnapshot::get_samples(uint8_t *const data, lock_guard lock(_mutex); const size_t size = (end_sample - start_sample) * _unit_size; - memcpy(data, (const uint8_t*)_data + start_sample, size); + memcpy(data, (const uint8_t*)_data + start_sample * _unit_size, size); } void LogicSnapshot::reallocate_mipmap_level(MipMapLevel &m)