Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
carla_discovery.h
1// SPDX-FileCopyrightText: © 2020-2021, 2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __PLUGINS_CARLA_DISCOVERY_H__
5#define __PLUGINS_CARLA_DISCOVERY_H__
6
7#include "zrythm-config.h"
8
9#include <filesystem>
10
11#if HAVE_CARLA
12
13# include "plugins/plugin_descriptor.h"
14# include "utils/types.h"
15
16# include "carla_wrapper.h"
17
18namespace zrythm::gui::old_dsp::plugins
19{
20
21class PluginDescriptor;
22class PluginManager;
23class CarlaDiscoveryStartThread;
24
30
31class ZCarlaDiscovery
32{
33public:
34 ZCarlaDiscovery (PluginManager &owner);
35
36 friend class CarlaDiscoveryStartThread;
37
38 void start (BinaryType btype, PluginProtocol protocol);
39
43 bool idle ();
44
48 static std::unique_ptr<PluginDescriptor>
49 create_au_descriptor_from_info (const CarlaCachedPluginInfo * info);
50
51 static std::unique_ptr<PluginDescriptor> descriptor_from_discovery_info (
52 const CarlaPluginDiscoveryInfo * info,
53 std::string_view sha1);
54
55private:
62 static fs::path get_discovery_path (PluginArchitecture arch);
63
67 std::vector<std::pair<CarlaPluginDiscoveryHandle, bool>> handles_;
68
69 std::mutex handles_mutex_;
70
71public:
75 PluginManager * owner_ = nullptr;
76};
77
78class CarlaDiscoveryStartThread : public QThread
79{
80 Q_OBJECT
81
82public:
83 CarlaDiscoveryStartThread (
84 BinaryType btype,
85 PluginProtocol protocol,
86 ZCarlaDiscovery &self);
87
88 friend class ZCarlaDiscovery;
89
90 void run () override;
91
92public:
93 BinaryType btype_;
94 PluginProtocol protocol_;
95 ZCarlaDiscovery &discovery_;
96};
97
98} // namespace zrythm::gui::old_dsp::plugins
99
103
104#endif // HAVE_CARLA
105#endif // __PLUGINS_CARLA_DISCOVERY_H__
The PluginManager is responsible for scanning and keeping track of available Plugin's.