]> sigrok.org Git - pulseview.git/blobdiff - pv/data/segment.hpp
Session: Fix issue #67 by improving error handling
[pulseview.git] / pv / data / segment.hpp
index 8465949c3a13e444846b9596e2aa413592092f5c..f4601d0444c0a9bab0aa88dd9efe3e1996dde9e4 100644 (file)
 
 #include "pv/util.hpp"
 
+#include <atomic>
+#include <memory>
 #include <mutex>
 #include <thread>
-#include <vector>
+#include <deque>
 
 #include <QObject>
 
+using std::atomic;
 using std::recursive_mutex;
-using std::vector;
+using std::deque;
 
 namespace SegmentTest {
 struct SmallSize8Single;
@@ -81,9 +84,13 @@ public:
 
        void free_unused_memory();
 
+Q_SIGNALS:
+       void completed();
+
 protected:
        void append_single_sample(void *data);
        void append_samples(void *data, uint64_t samples);
+       const uint8_t* get_raw_sample(uint64_t sample_num) const;
        void get_raw_samples(uint64_t start, uint64_t count, uint8_t *dest) const;
 
        SegmentDataIterator* begin_sample_iteration(uint64_t start);
@@ -94,10 +101,10 @@ protected:
 
        uint32_t segment_id_;
        mutable recursive_mutex mutex_;
-       vector<uint8_t*> data_chunks_;
+       deque<uint8_t*> data_chunks_;
        uint8_t* current_chunk_;
        uint64_t used_samples_, unused_samples_;
-       uint64_t sample_count_;
+       atomic<uint64_t> sample_count_;
        pv::util::Timestamp start_time_;
        double samplerate_;
        uint64_t chunk_size_;