From 39424279efff02df3b77106c7ad6d903db535a99 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 3 Mar 2015 21:40:37 +0100 Subject: [PATCH] [DEV] add mitex of low level interface --- river/io/Manager.cpp | 6 ++++++ river/io/Manager.h | 3 +++ river/io/Node.h | 2 +- river/io/NodeAirTAudio.h | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/river/io/Manager.cpp b/river/io/Manager.cpp index 7de5b7c..47e1074 100644 --- a/river/io/Manager.cpp +++ b/river/io/Manager.cpp @@ -86,6 +86,7 @@ std11::shared_ptr river::io::Manager::getInstance() { } std11::shared_ptr river::io::Manager::getNode(const std::string& _name) { + std11::unique_lock lock(m_mutex); RIVER_WARNING("Get node : " << _name); // search in the standalone list : for (size_t iii=0; iii river::io::Manager::getNode(const std::string } std11::shared_ptr river::io::Manager::getVolumeGroup(const std::string& _name) { + std11::unique_lock lock(m_mutex); if (_name == "") { RIVER_ERROR("Try to create an audio group with no name ..."); return std11::shared_ptr(); @@ -181,6 +183,7 @@ std11::shared_ptr river::io::Manager::getVolumeGroup(const } bool river::io::Manager::setVolume(const std::string& _volumeName, float _valuedB) { + std11::unique_lock lock(m_mutex); std11::shared_ptr volume = getVolumeGroup(_volumeName); if (volume == nullptr) { RIVER_ERROR("Can not set volume ... : '" << _volumeName << "'"); @@ -202,6 +205,7 @@ bool river::io::Manager::setVolume(const std::string& _volumeName, float _valued } float river::io::Manager::getVolume(const std::string& _volumeName) { + std11::unique_lock lock(m_mutex); std11::shared_ptr volume = getVolumeGroup(_volumeName); if (volume == nullptr) { RIVER_ERROR("Can not get volume ... : '" << _volumeName << "'"); @@ -215,6 +219,7 @@ std::pair river::io::Manager::getVolumeRange(const std::string& _vo } void river::io::Manager::generateDot(const std::string& _filename) { + std11::unique_lock lock(m_mutex); etk::FSNode node(_filename); RIVER_INFO("Generate the DOT files: " << node); if (node.fileOpenWrite() == false) { @@ -235,6 +240,7 @@ void river::io::Manager::generateDot(const std::string& _filename) { } std11::shared_ptr river::io::Manager::getGroup(const std::string& _name) { + std11::unique_lock lock(m_mutex); std11::shared_ptr out; std::map >::iterator it = m_listGroup.find(_name); if (it == m_listGroup.end()) { diff --git a/river/io/Manager.h b/river/io/Manager.h index 8adf84b..dea73aa 100644 --- a/river/io/Manager.h +++ b/river/io/Manager.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -25,6 +26,8 @@ namespace river { namespace io { class Node; class Manager { + private: + mutable std11::recursive_mutex m_mutex; private: /** * @brief Constructor diff --git a/river/io/Node.h b/river/io/Node.h index 9965bac..9408abc 100644 --- a/river/io/Node.h +++ b/river/io/Node.h @@ -28,7 +28,7 @@ namespace river { class Manager; class Group; class Node : public std11::enable_shared_from_this { - friend river::io::Group; + friend class river::io::Group; protected: uint32_t m_uid; // uniqueNodeID protected: diff --git a/river/io/NodeAirTAudio.h b/river/io/NodeAirTAudio.h index 1344763..cbc29e2 100644 --- a/river/io/NodeAirTAudio.h +++ b/river/io/NodeAirTAudio.h @@ -16,7 +16,7 @@ namespace river { class Manager; class Group; class NodeAirTAudio : public Node { - friend river::io::Group; + friend class river::io::Group; protected: /** * @brief Constructor