Fixes for data sizes greater than zero
authorJoel Holdsworth <joel@airwebreathe.org.uk>
Sat, 29 Sep 2012 09:09:50 +0000 (10:09 +0100)
committerJoel Holdsworth <joel@airwebreathe.org.uk>
Sat, 6 Oct 2012 12:56:26 +0000 (13:56 +0100)
datasnapshot.cpp
datasnapshot.h
logicdatasnapshot.cpp

index 80d9ba4318f53f83e8d89604d658870d677e4b69..df411f3d0abad62561bed96332907ce4c5f76348 100644 (file)
@@ -26,7 +26,7 @@
 
 DataSnapshot::DataSnapshot(int unit_size) :
        _data(NULL),
-       _data_length(0),
+       _sample_count(0),
        _unit_size(unit_size)
 {
        assert(_unit_size > 0);
@@ -39,12 +39,13 @@ DataSnapshot::~DataSnapshot()
 
 uint64_t DataSnapshot::get_sample_count()
 {
-       return _data_length / _unit_size;
+       return _sample_count;
 }
 
-void DataSnapshot::append_data(void *data, uint64_t length)
+void DataSnapshot::append_data(void *data, uint64_t samples)
 {
-       _data = realloc(_data, _data_length + length);
-       memcpy((uint8_t*)_data + _data_length, data, length);
-       _data_length += length;
+       _data = realloc(_data, (_sample_count + samples) * _unit_size);
+       memcpy((uint8_t*)_data + _sample_count * _unit_size,
+               data, samples * _unit_size);
+       _sample_count += samples;
 }
index f3bb3e2136475f3ba591306fb02b7d9704c24321..c768e112d5f39d0d274fd94f39695c2f772549e1 100644 (file)
@@ -32,10 +32,10 @@ public:
        uint64_t get_sample_count();
 
 protected:
-       void append_data(void *data, uint64_t length);
+       void append_data(void *data, uint64_t samples);
 
 protected:
        void *_data;
-       uint64_t _data_length;
+       uint64_t _sample_count;
        int _unit_size;
 };
index d01916a763be20e63962928870a15cf142c9032c..10744cf7d6eb40dcd148f79d348d0fde43214d08 100644 (file)
@@ -55,7 +55,6 @@ void LogicDataSnapshot::append_payload(
 {
        assert(_unit_size == logic.unitsize);
 
-       const uint64_t prev_length = _data_length;
        append_data(logic.data, logic.length);
 
        // Generate the first mip-map from the data
@@ -84,7 +83,7 @@ void LogicDataSnapshot::append_payload_to_mipmap()
 
        // Expand the data buffer to fit the new samples
        prev_length = m0.length;
-       m0.length = _data_length / MipMapScaleFactor;
+       m0.length = _sample_count / MipMapScaleFactor;
 
        // Break off if there are no new samples to compute
        if(m0.length == prev_length)
@@ -160,7 +159,7 @@ void LogicDataSnapshot::append_payload_to_mipmap()
 uint64_t LogicDataSnapshot::get_sample(uint64_t index) const
 {
        assert(_data);
-       assert(index >= 0 && index < _data_length);
+       assert(index >= 0 && index < _sample_count);
 
        return *(uint64_t*)((uint8_t*)_data + index * _unit_size);
 }