64class OutOfProcessPluginScanner final
66 public juce::KnownPluginList::CustomScanner
71 OutOfProcessPluginScanner (QObject * parent =
nullptr);
72 ~OutOfProcessPluginScanner ()
override;
74 bool findPluginTypesFor (
75 juce::AudioPluginFormat &format,
76 juce::OwnedArray<juce::PluginDescription> &result,
77 const juce::String &fileOrIdentifier)
override;
96 class SubprocessCoordinator final :
private juce::ChildProcessCoordinator
99 SubprocessCoordinator ();
100 ~SubprocessCoordinator ()
override;
112 std::unique_ptr<juce::XmlElement> xml;
117 using ChildProcessCoordinator::sendMessageToWorker;
120 void handleMessageFromWorker (
const juce::MemoryBlock &mb)
override;
122 void handleConnectionLost ()
override;
125 std::condition_variable condvar;
127 std::unique_ptr<juce::XmlElement> pluginDescription;
128 bool connectionLost =
false;
129 bool gotResult =
false;
131 JUCE_DECLARE_NON_MOVEABLE (SubprocessCoordinator)
132 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SubprocessCoordinator)
143 bool add_plugin_descriptions (
144 juce::AudioPluginFormat &format,
145 const juce::String &file_or_identifier,
146 juce::OwnedArray<juce::PluginDescription> &result);
148 std::unique_ptr<SubprocessCoordinator> coordinator_;
150 JUCE_DECLARE_NON_MOVEABLE (OutOfProcessPluginScanner)
151 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OutOfProcessPluginScanner)