kopia lustrzana https://github.com/jameshball/osci-render
Fix issues with singleton instance with plugins
rodzic
ed7f046beb
commit
dcfd9e1db2
|
@ -75,7 +75,7 @@ CommonPluginEditor::CommonPluginEditor(CommonAudioProcessor& p, juce::String app
|
|||
tooltipDropShadow.setOwner(&tooltipWindow);
|
||||
|
||||
#if SOSCI_FEATURES
|
||||
SharedTextureManager::getInstance()->initGL();
|
||||
sharedTextureManager.initGL();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -43,12 +43,28 @@ public:
|
|||
|
||||
juce::String appName;
|
||||
juce::String projectFileType;
|
||||
|
||||
#if SOSCI_FEATURES
|
||||
SharedTextureManager sharedTextureManager;
|
||||
#endif
|
||||
|
||||
VisualiserSettings visualiserSettings = VisualiserSettings(audioProcessor.visualiserParameters, 3);
|
||||
SettingsWindow visualiserSettingsWindow = SettingsWindow("Visualiser Settings", visualiserSettings);
|
||||
RecordingSettings recordingSettings = RecordingSettings(audioProcessor.recordingParameters);
|
||||
SettingsWindow recordingSettingsWindow = SettingsWindow("Recording Settings", recordingSettings);
|
||||
VisualiserComponent visualiser{audioProcessor.lastOpenedDirectory, applicationFolder.getChildFile(ffmpegFileName), audioProcessor.haltRecording, audioProcessor.threadManager, visualiserSettings, audioProcessor.recordingParameters, nullptr, appName == "sosci"};
|
||||
VisualiserComponent visualiser{
|
||||
audioProcessor.lastOpenedDirectory,
|
||||
#if SOSCI_FEATURES
|
||||
sharedTextureManager,
|
||||
#endif
|
||||
applicationFolder.getChildFile(ffmpegFileName),
|
||||
audioProcessor.haltRecording,
|
||||
audioProcessor.threadManager,
|
||||
visualiserSettings,
|
||||
audioProcessor.recordingParameters,
|
||||
nullptr,
|
||||
appName == "sosci"
|
||||
};
|
||||
|
||||
std::unique_ptr<juce::FileChooser> chooser;
|
||||
juce::MenuBarComponent menuBar;
|
||||
|
|
|
@ -15,7 +15,30 @@
|
|||
#include "TexturedFragmentShader.glsl"
|
||||
#include "TexturedVertexShader.glsl"
|
||||
|
||||
VisualiserComponent::VisualiserComponent(juce::File& lastOpenedDirectory, juce::File ffmpegFile, std::function<void()>& haltRecording, AudioBackgroundThreadManager& threadManager, VisualiserSettings& settings, RecordingParameters& recordingParameters, VisualiserComponent* parent, bool visualiserOnly) : lastOpenedDirectory(lastOpenedDirectory), ffmpegFile(ffmpegFile), haltRecording(haltRecording), settings(settings), recordingParameters(recordingParameters), threadManager(threadManager), visualiserOnly(visualiserOnly), AudioBackgroundThread("VisualiserComponent" + juce::String(parent != nullptr ? " Child" : ""), threadManager), parent(parent) {
|
||||
VisualiserComponent::VisualiserComponent(
|
||||
juce::File& lastOpenedDirectory,
|
||||
#if SOSCI_FEATURES
|
||||
SharedTextureManager& sharedTextureManager,
|
||||
#endif
|
||||
juce::File ffmpegFile,
|
||||
std::function<void()>& haltRecording,
|
||||
AudioBackgroundThreadManager& threadManager,
|
||||
VisualiserSettings& settings,
|
||||
RecordingParameters& recordingParameters,
|
||||
VisualiserComponent* parent,
|
||||
bool visualiserOnly
|
||||
) : lastOpenedDirectory(lastOpenedDirectory),
|
||||
ffmpegFile(ffmpegFile),
|
||||
#if SOSCI_FEATURES
|
||||
sharedTextureManager(sharedTextureManager),
|
||||
#endif
|
||||
haltRecording(haltRecording),
|
||||
settings(settings),
|
||||
recordingParameters(recordingParameters),
|
||||
threadManager(threadManager),
|
||||
visualiserOnly(visualiserOnly),
|
||||
AudioBackgroundThread("VisualiserComponent" + juce::String(parent != nullptr ? " Child" : ""), threadManager),
|
||||
parent(parent) {
|
||||
#if SOSCI_FEATURES
|
||||
addAndMakeVisible(ffmpegDownloader);
|
||||
|
||||
|
@ -416,7 +439,18 @@ void VisualiserComponent::popoutWindow() {
|
|||
}
|
||||
#endif
|
||||
setRecording(false);
|
||||
auto visualiser = new VisualiserComponent(lastOpenedDirectory, ffmpegFile, haltRecording, threadManager, settings, recordingParameters, this);
|
||||
auto visualiser = new VisualiserComponent(
|
||||
lastOpenedDirectory,
|
||||
#if SOSCI_FEATURES
|
||||
sharedTextureManager,
|
||||
#endif
|
||||
ffmpegFile,
|
||||
haltRecording,
|
||||
threadManager,
|
||||
settings,
|
||||
recordingParameters,
|
||||
this
|
||||
);
|
||||
visualiser->settings.setLookAndFeel(&getLookAndFeel());
|
||||
visualiser->openSettings = openSettings;
|
||||
visualiser->closeSettings = closeSettings;
|
||||
|
@ -453,7 +487,7 @@ void VisualiserComponent::childUpdated() {
|
|||
|
||||
#if SOSCI_FEATURES
|
||||
void VisualiserComponent::initialiseSharedTexture() {
|
||||
sharedTextureSender = SharedTextureManager::getInstance()->addSender("osci-render - " + juce::String(juce::Time::getCurrentTime().toMilliseconds()), renderTexture.width, renderTexture.height);
|
||||
sharedTextureSender = sharedTextureManager.addSender("osci-render - " + juce::String(juce::Time::getCurrentTime().toMilliseconds()), renderTexture.width, renderTexture.height);
|
||||
sharedTextureSender->initGL();
|
||||
sharedTextureSender->setSharedTextureId(renderTexture.id);
|
||||
sharedTextureSender->setDrawFunction([this] {
|
||||
|
@ -464,9 +498,7 @@ void VisualiserComponent::initialiseSharedTexture() {
|
|||
|
||||
void VisualiserComponent::closeSharedTexture() {
|
||||
if (sharedTextureSender != nullptr) {
|
||||
if (SharedTextureManager::getInstanceWithoutCreating() != nullptr) {
|
||||
SharedTextureManager::getInstance()->removeSender(sharedTextureSender);
|
||||
}
|
||||
sharedTextureManager.removeSender(sharedTextureSender);
|
||||
sharedTextureSender = nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,19 @@ struct Texture {
|
|||
class VisualiserWindow;
|
||||
class VisualiserComponent : public juce::Component, public AudioBackgroundThread, public juce::MouseListener, public juce::OpenGLRenderer, public juce::AsyncUpdater {
|
||||
public:
|
||||
VisualiserComponent(juce::File& lastOpenedDirectory, juce::File ffmpegFile, std::function<void()>& haltRecording, AudioBackgroundThreadManager& threadManager, VisualiserSettings& settings, RecordingParameters& recordingParameters, VisualiserComponent* parent = nullptr, bool visualiserOnly = false);
|
||||
VisualiserComponent(
|
||||
juce::File& lastOpenedDirectory,
|
||||
#if SOSCI_FEATURES
|
||||
SharedTextureManager& sharedTextureManager,
|
||||
#endif
|
||||
juce::File ffmpegFile,
|
||||
std::function<void()>& haltRecording,
|
||||
AudioBackgroundThreadManager& threadManager,
|
||||
VisualiserSettings& settings,
|
||||
RecordingParameters& recordingParameters,
|
||||
VisualiserComponent* parent = nullptr,
|
||||
bool visualiserOnly = false
|
||||
);
|
||||
~VisualiserComponent() override;
|
||||
|
||||
std::function<void()> openSettings;
|
||||
|
@ -78,6 +90,7 @@ private:
|
|||
|
||||
#if SOSCI_FEATURES
|
||||
SvgButton sharedTextureButton{ "sharedTexture", BinaryData::spout_svg, juce::Colours::white, juce::Colours::red };
|
||||
SharedTextureManager& sharedTextureManager;
|
||||
SharedTextureSender* sharedTextureSender = nullptr;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit ad3cfff406675ee680380b8f4b71bb0f9ffa7ea9
|
||||
Subproject commit f2faeeb981b5b1676c3aa349e60335922c966ae4
|
Ładowanie…
Reference in New Issue