using std::list;
using std::map;
using std::mutex;
+using std::recursive_mutex;
using std::set;
using std::shared_ptr;
using std::string;
// Create data containers for the logic data segments
{
- lock_guard<mutex> data_lock(data_mutex_);
+ lock_guard<recursive_mutex> data_lock(data_mutex_);
if (logic_channel_count == 0) {
logic_data_.reset();
void Session::feed_in_logic(shared_ptr<Logic> logic)
{
- lock_guard<mutex> lock(data_mutex_);
+ lock_guard<recursive_mutex> lock(data_mutex_);
if (!logic_data_)
{
void Session::feed_in_analog(shared_ptr<Analog> analog)
{
- lock_guard<mutex> lock(data_mutex_);
+ lock_guard<recursive_mutex> lock(data_mutex_);
const vector<shared_ptr<Channel>> channels = analog->channels();
const unsigned int channel_count = channels.size();
case SR_DF_END:
{
{
- lock_guard<mutex> lock(data_mutex_);
+ lock_guard<recursive_mutex> lock(data_mutex_);
cur_logic_segment_.reset();
cur_analog_segments_.clear();
}
mutable boost::shared_mutex signals_mutex_;
std::unordered_set< std::shared_ptr<view::Signal> > signals_;
- mutable std::mutex data_mutex_;
+ mutable std::recursive_mutex data_mutex_;
std::shared_ptr<data::Logic> logic_data_;
uint64_t cur_samplerate_;
std::shared_ptr<data::LogicSegment> cur_logic_segment_;