]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decoderstack.h
Replaced boost::thread/mutex etc. with std equivalents
[pulseview.git] / pv / data / decoderstack.h
index 9c960e589972c1dd9492da78984992660ca79b86..ab700ae0404bfd85129f761ed3886f413c03100b 100644 (file)
 
 #include "signaldata.h"
 
+#include <atomic>
+#include <condition_variable>
 #include <list>
+#include <map>
+#include <memory>
+#include <thread>
 
 #include <boost/optional.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/thread.hpp>
 
 #include <QObject>
 #include <QString>
@@ -37,7 +40,7 @@
 
 struct srd_decoder;
 struct srd_decoder_annotation_row;
-struct srd_probe;
+struct srd_channel;
 struct srd_proto_data;
 struct srd_session;
 
@@ -72,6 +75,7 @@ private:
        static const double DecodeMargin;
        static const double DecodeThreshold;
        static const int64_t DecodeChunkLength;
+       static const unsigned int DecodeNotifyPeriod;
 
 public:
        DecoderStack(pv::SigSession &_session,
@@ -79,8 +83,8 @@ public:
 
        virtual ~DecoderStack();
 
-       const std::list< boost::shared_ptr<decode::Decoder> >& stack() const;
-       void push(boost::shared_ptr<decode::Decoder> decoder);
+       const std::list< std::shared_ptr<decode::Decoder> >& stack() const;
+       void push(std::shared_ptr<decode::Decoder> decoder);
        void remove(int index);
 
        int64_t samples_decoded() const;
@@ -133,18 +137,18 @@ private:
         * @todo A proper solution should be implemented to allow multiple
         * decode operations.
         */
-       static boost::mutex _global_decode_mutex;
+       static std::mutex _global_decode_mutex;
 
-       std::list< boost::shared_ptr<decode::Decoder> > _stack;
+       std::list< std::shared_ptr<decode::Decoder> > _stack;
 
-       boost::shared_ptr<pv::data::LogicSnapshot> _snapshot;
+       std::shared_ptr<pv::data::LogicSnapshot> _snapshot;
 
-       mutable boost::mutex _input_mutex;
-       mutable boost::condition_variable _input_cond;
+       mutable std::mutex _input_mutex;
+       mutable std::condition_variable _input_cond;
        int64_t _sample_count;
        bool _frame_complete;
 
-       mutable boost::mutex _output_mutex;
+       mutable std::mutex _output_mutex;
        int64_t _samples_decoded;
 
        std::map<const decode::Row, decode::RowData> _rows;
@@ -153,7 +157,8 @@ private:
 
        QString _error_message;
 
-       boost::thread _decode_thread;
+       std::thread _decode_thread;
+       std::atomic<bool> _interrupt;
 
        friend class DecoderStackTest::TwoDecoderStack;
 };