diff options
author | David Robillard <d@drobilla.net> | 2018-11-24 13:44:03 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-11-24 13:44:03 +0100 |
commit | a7d83f19b08eb4c6f79a82fe60c2b86db13f4420 (patch) | |
tree | d9b620bfba1e7462df4ddb3f6225cc5216c0ca81 /src/server/BufferFactory.hpp | |
parent | d63edc742cebd685f8a05936682210aa5c1e69a9 (diff) | |
download | ingen-a7d83f19b08eb4c6f79a82fe60c2b86db13f4420.tar.gz ingen-a7d83f19b08eb4c6f79a82fe60c2b86db13f4420.tar.bz2 ingen-a7d83f19b08eb4c6f79a82fe60c2b86db13f4420.zip |
Squashed 'waflib/' changes from 6e726eb1..5ea8f99f
5ea8f99f Improve test output spacing
0e23b29f Raise exception when test suite fails to ensure non-zero exit status
d6de073b Show run time of unit tests
5b655541 Add short configure option for ultra-strict flags
4687ba6d Use gtest-like test output
258903d9 Fix failure count in test group summaries
da07e738 Fix verbose tests with Python 3
git-subtree-dir: waflib
git-subtree-split: 5ea8f99f6e1246079c1fe6bb590c38a53aadd40d
Diffstat (limited to 'src/server/BufferFactory.hpp')
-rw-r--r-- | src/server/BufferFactory.hpp | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/src/server/BufferFactory.hpp b/src/server/BufferFactory.hpp deleted file mode 100644 index 8265fc98..00000000 --- a/src/server/BufferFactory.hpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - This file is part of Ingen. - Copyright 2007-2015 David Robillard <http://drobilla.net/> - - Ingen is free software: you can redistribute it and/or modify it under the - terms of the GNU Affero General Public License as published by the Free - Software Foundation, either version 3 of the License, or any later version. - - Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU Affero General Public License for details. - - You should have received a copy of the GNU Affero General Public License - along with Ingen. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef INGEN_ENGINE_BUFFERFACTORY_HPP -#define INGEN_ENGINE_BUFFERFACTORY_HPP - -#include <atomic> -#include <map> -#include <mutex> - -#include "ingen/Atom.hpp" -#include "ingen/Forge.hpp" -#include "ingen/URIs.hpp" -#include "ingen/ingen.h" -#include "ingen/types.hpp" -#include "raul/RingBuffer.hpp" - -#include "BufferRef.hpp" -#include "PortType.hpp" -#include "types.hpp" - -namespace Raul { class Maid; } - -namespace Ingen { - -class URIs; - -namespace Server { - -class Engine; - -class INGEN_API BufferFactory { -public: - BufferFactory(Engine& engine, URIs& uris); - ~BufferFactory(); - - static uint32_t audio_buffer_size(SampleCount nframes); - - uint32_t audio_buffer_size() const; - uint32_t default_size(LV2_URID type) const; - - /** Dynamically allocate a new Buffer. */ - BufferRef create(LV2_URID type, - LV2_URID value_type, - uint32_t capacity = 0); - - /** Get a new buffer, reusing if possible, allocating if otherwise. */ - BufferRef get_buffer(LV2_URID type, - LV2_URID value_type, - uint32_t capacity); - - /** Claim an existing buffer, never allocates, real-time safe. */ - BufferRef claim_buffer(LV2_URID type, - LV2_URID value_type, - uint32_t capacity); - - /** Return a reference to a shared silent buffer. */ - BufferRef silent_buffer(); - - void set_block_length(SampleCount block_length); - void set_seq_size(uint32_t seq_size) { _seq_size = seq_size; } - - Forge& forge(); - Raul::Maid& maid(); - - URIs& uris() { return _uris; } - Engine& engine() { return _engine; } - -private: - friend class Buffer; - void recycle(Buffer* buf); - - Buffer* try_get_buffer(LV2_URID type); - - inline std::atomic<Buffer*>& free_list(LV2_URID type) { - if (type == _uris.atom_Float) { - return _free_control; - } else if (type == _uris.atom_Sound) { - return _free_audio; - } else if (type == _uris.atom_Sequence) { - return _free_sequence; - } else { - return _free_object; - } - } - - void free_list(Buffer* head); - - std::atomic<Buffer*> _free_audio; - std::atomic<Buffer*> _free_control; - std::atomic<Buffer*> _free_sequence; - std::atomic<Buffer*> _free_object; - - std::mutex _mutex; - Engine& _engine; - URIs& _uris; - uint32_t _seq_size; - - BufferRef _silent_buffer; -}; - -} // namespace Server -} // namespace Ingen - -#endif // INGEN_ENGINE_BUFFERFACTORY_HPP |