LMMS
Loading...
Searching...
No Matches
juce_AudioPluginFormat.cpp
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
31
32std::unique_ptr<AudioPluginInstance> AudioPluginFormat::createInstanceFromDescription (const PluginDescription& desc,
33 double initialSampleRate,
34 int initialBufferSize)
35{
36 String errorMessage;
37 return createInstanceFromDescription (desc, initialSampleRate, initialBufferSize, errorMessage);
38}
39
40std::unique_ptr<AudioPluginInstance> AudioPluginFormat::createInstanceFromDescription (const PluginDescription& desc,
41 double initialSampleRate,
42 int initialBufferSize,
43 String& errorMessage)
44{
45 if (MessageManager::getInstance()->isThisTheMessageThread()
47 {
48 errorMessage = NEEDS_TRANS ("This plug-in cannot be instantiated synchronously");
49 return {};
50 }
51
52 WaitableEvent finishedSignal;
53 std::unique_ptr<AudioPluginInstance> instance;
54
55 auto callback = [&] (std::unique_ptr<AudioPluginInstance> p, const String& error)
56 {
57 errorMessage = error;
58 instance = std::move (p);
59 finishedSignal.signal();
60 };
61
62 if (! MessageManager::getInstance()->isThisTheMessageThread())
63 createPluginInstanceAsync (desc, initialSampleRate, initialBufferSize, std::move (callback));
64 else
65 createPluginInstance (desc, initialSampleRate, initialBufferSize, std::move (callback));
66
67 finishedSignal.wait();
68 return instance;
69}
70
83
85 double initialSampleRate, int initialBufferSize,
87{
88 jassert (callback != nullptr);
89 postMessage (new AsyncCreateMessage (description, initialSampleRate, initialBufferSize, std::move (callback)));
90}
91
93{
94 if (auto m = dynamic_cast<const AsyncCreateMessage*> (&message))
95 createPluginInstance (m->desc, m->sampleRate, m->bufferSize, std::move (m->callbackToUse));
96}
97
98} // namespace juce
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
~AudioPluginFormat() override
Definition juce_AudioPluginFormat.cpp:30
virtual bool requiresUnblockedMessageThreadDuringCreation(const PluginDescription &) const =0
virtual void createPluginInstance(const PluginDescription &, double initialSampleRate, int initialBufferSize, PluginCreationCallback)=0
std::unique_ptr< AudioPluginInstance > createInstanceFromDescription(const PluginDescription &, double initialSampleRate, int initialBufferSize)
Definition juce_AudioPluginFormat.cpp:32
void handleMessage(const Message &) override
Definition juce_AudioPluginFormat.cpp:92
void createPluginInstanceAsync(const PluginDescription &description, double initialSampleRate, int initialBufferSize, PluginCreationCallback)
Definition juce_AudioPluginFormat.cpp:84
AudioPluginFormat()
Definition juce_AudioPluginFormat.cpp:29
std::function< void(std::unique_ptr< AudioPluginInstance >, const String &)> PluginCreationCallback
Definition juce_AudioPluginFormat.h:77
Definition juce_Message.h:44
Message() noexcept
Definition juce_MessageListener.cpp:26
void postMessage(Message *message) const
Definition juce_MessageListener.cpp:46
static MessageManager * getInstance()
Definition juce_MessageManager.cpp:47
Definition juce_PluginDescription.h:43
Definition juce_String.h:53
Definition juce_WaitableEvent.h:36
bool wait(int timeOutMilliseconds=-1) const
Definition juce_WaitableEvent.cpp:31
void signal() const
Definition juce_WaitableEvent.cpp:57
unsigned * m
Definition inflate.c:1559
unsigned d
Definition inflate.c:940
#define NEEDS_TRANS(stringLiteral)
Definition juce_LocalisedStrings.h:218
#define jassert(expression)
Definition carla_juce.cpp:31
Definition juce_Uuid.h:141
Definition juce_AudioPluginFormat.cpp:72
PluginCreationCallback callbackToUse
Definition juce_AudioPluginFormat.cpp:81
int bufferSize
Definition juce_AudioPluginFormat.cpp:80
AsyncCreateMessage(const PluginDescription &d, double sr, int size, PluginCreationCallback call)
Definition juce_AudioPluginFormat.cpp:73
PluginDescription desc
Definition juce_AudioPluginFormat.cpp:78
double sampleRate
Definition juce_AudioPluginFormat.cpp:79
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
uch * p
Definition crypt.c:594
int error
Definition extract.c:1038
ulg size
Definition extract.c:2350