HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
audio_system.hpp
1// Copyright Take Vos 2020.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include "audio_system_delegate.hpp"
8#include "audio_device.hpp"
9#include "../unfair_recursive_mutex.hpp"
10#include "../weak_or_unique_ptr.hpp"
11#include <vector>
12#include <memory>
13
14namespace tt {
15class event_queue;
16
21public:
22 [[nodiscard]] static std::unique_ptr<audio_system>
23 make_unique(tt::event_queue const &event_queue, std::weak_ptr<audio_system_delegate> delegate) noexcept;
24
26 virtual ~audio_system();
27 audio_system(audio_system const &) = delete;
28 audio_system(audio_system &&) = delete;
29 audio_system &operator=(audio_system const &) = delete;
30 audio_system &operator=(audio_system &&) = delete;
31
32 virtual void init() noexcept;
33 virtual void deinit() noexcept;
34
40 [[nodiscard]] virtual std::vector<audio_device *> devices() noexcept = 0;
41
42protected:
43 tt::event_queue const &_event_queue;
44
45 std::weak_ptr<audio_system_delegate> _delegate;
46};
47
48} // namespace tt
STL namespace.
Definition audio_system.hpp:20
virtual std::vector< audio_device * > devices() noexcept=0
The devices that are part of the audio system.
Definition audio_system_delegate.hpp:12
Definition event_queue.hpp:40