Skip to content

Commit cb39519

Browse files
committed
Load all plugins on startup
1 parent f32bdf7 commit cb39519

9 files changed

Lines changed: 757 additions & 833 deletions

File tree

0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

Builds/VisualStudio2013/open-ephys.vcxproj

Lines changed: 711 additions & 713 deletions
Large diffs are not rendered by default.

Builds/VisualStudio2013/open-ephys.vcxproj.filters

Lines changed: 2 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
1+
<?xml version="1.0" encoding="utf-8"?>
32
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
43
<ItemGroup>
54
<Filter Include="open-ephys">
@@ -697,12 +696,6 @@
697696
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_linux_Midi.cpp">
698697
<Filter>Juce Modules\juce_audio_devices\native</Filter>
699698
</ClCompile>
700-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_AudioCDBurner.mm">
701-
<Filter>Juce Modules\juce_audio_devices\native</Filter>
702-
</ClCompile>
703-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_AudioCDReader.mm">
704-
<Filter>Juce Modules\juce_audio_devices\native</Filter>
705-
</ClCompile>
706699
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_devices\native\juce_mac_CoreAudio.cpp">
707700
<Filter>Juce Modules\juce_audio_devices\native</Filter>
708701
</ClCompile>
@@ -799,9 +792,6 @@
799792
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format\juce_AudioPluginFormatManager.cpp">
800793
<Filter>Juce Modules\juce_audio_processors\format</Filter>
801794
</ClCompile>
802-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_AudioUnitPluginFormat.mm">
803-
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>
804-
</ClCompile>
805795
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_audio_processors\format_types\juce_LADSPAPluginFormat.cpp">
806796
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>
807797
</ClCompile>
@@ -1042,21 +1032,6 @@
10421032
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_linux_Threads.cpp">
10431033
<Filter>Juce Modules\juce_core\native</Filter>
10441034
</ClCompile>
1045-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_Files.mm">
1046-
<Filter>Juce Modules\juce_core\native</Filter>
1047-
</ClCompile>
1048-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_Network.mm">
1049-
<Filter>Juce Modules\juce_core\native</Filter>
1050-
</ClCompile>
1051-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_Strings.mm">
1052-
<Filter>Juce Modules\juce_core\native</Filter>
1053-
</ClCompile>
1054-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_SystemStats.mm">
1055-
<Filter>Juce Modules\juce_core\native</Filter>
1056-
</ClCompile>
1057-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_mac_Threads.mm">
1058-
<Filter>Juce Modules\juce_core\native</Filter>
1059-
</ClCompile>
10601035
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_core\native\juce_posix_NamedPipe.cpp">
10611036
<Filter>Juce Modules\juce_core\native</Filter>
10621037
</ClCompile>
@@ -1144,15 +1119,9 @@
11441119
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_android_Messaging.cpp">
11451120
<Filter>Juce Modules\juce_events\native</Filter>
11461121
</ClCompile>
1147-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_ios_MessageManager.mm">
1148-
<Filter>Juce Modules\juce_events\native</Filter>
1149-
</ClCompile>
11501122
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_linux_Messaging.cpp">
11511123
<Filter>Juce Modules\juce_events\native</Filter>
11521124
</ClCompile>
1153-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_mac_MessageManager.mm">
1154-
<Filter>Juce Modules\juce_events\native</Filter>
1155-
</ClCompile>
11561125
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_events\native\juce_win32_Messaging.cpp">
11571126
<Filter>Juce Modules\juce_events\native</Filter>
11581127
</ClCompile>
@@ -1258,12 +1227,6 @@
12581227
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_linux_Fonts.cpp">
12591228
<Filter>Juce Modules\juce_graphics\native</Filter>
12601229
</ClCompile>
1261-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_mac_CoreGraphicsContext.mm">
1262-
<Filter>Juce Modules\juce_graphics\native</Filter>
1263-
</ClCompile>
1264-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_mac_Fonts.mm">
1265-
<Filter>Juce Modules\juce_graphics\native</Filter>
1266-
</ClCompile>
12671230
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_graphics\native\juce_win32_Direct2DGraphicsContext.cpp">
12681231
<Filter>Juce Modules\juce_graphics\native</Filter>
12691232
</ClCompile>
@@ -1618,12 +1581,6 @@
16181581
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_android_Windowing.cpp">
16191582
<Filter>Juce Modules\juce_gui_basics\native</Filter>
16201583
</ClCompile>
1621-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_ios_UIViewComponentPeer.mm">
1622-
<Filter>Juce Modules\juce_gui_basics\native</Filter>
1623-
</ClCompile>
1624-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_ios_Windowing.mm">
1625-
<Filter>Juce Modules\juce_gui_basics\native</Filter>
1626-
</ClCompile>
16271584
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_linux_Clipboard.cpp">
16281585
<Filter>Juce Modules\juce_gui_basics\native</Filter>
16291586
</ClCompile>
@@ -1633,21 +1590,6 @@
16331590
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_linux_Windowing.cpp">
16341591
<Filter>Juce Modules\juce_gui_basics\native</Filter>
16351592
</ClCompile>
1636-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_FileChooser.mm">
1637-
<Filter>Juce Modules\juce_gui_basics\native</Filter>
1638-
</ClCompile>
1639-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_MainMenu.mm">
1640-
<Filter>Juce Modules\juce_gui_basics\native</Filter>
1641-
</ClCompile>
1642-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_MouseCursor.mm">
1643-
<Filter>Juce Modules\juce_gui_basics\native</Filter>
1644-
</ClCompile>
1645-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_NSViewComponentPeer.mm">
1646-
<Filter>Juce Modules\juce_gui_basics\native</Filter>
1647-
</ClCompile>
1648-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_mac_Windowing.mm">
1649-
<Filter>Juce Modules\juce_gui_basics\native</Filter>
1650-
</ClCompile>
16511593
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_basics\native\juce_win32_DragAndDrop.cpp">
16521594
<Filter>Juce Modules\juce_gui_basics\native</Filter>
16531595
</ClCompile>
@@ -1705,27 +1647,15 @@
17051647
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_android_WebBrowserComponent.cpp">
17061648
<Filter>Juce Modules\juce_gui_extra\native</Filter>
17071649
</ClCompile>
1708-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_ios_UIViewComponent.mm">
1709-
<Filter>Juce Modules\juce_gui_extra\native</Filter>
1710-
</ClCompile>
17111650
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_linux_SystemTrayIcon.cpp">
17121651
<Filter>Juce Modules\juce_gui_extra\native</Filter>
17131652
</ClCompile>
17141653
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_linux_WebBrowserComponent.cpp">
17151654
<Filter>Juce Modules\juce_gui_extra\native</Filter>
17161655
</ClCompile>
1717-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_AppleRemote.mm">
1718-
<Filter>Juce Modules\juce_gui_extra\native</Filter>
1719-
</ClCompile>
1720-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_NSViewComponent.mm">
1721-
<Filter>Juce Modules\juce_gui_extra\native</Filter>
1722-
</ClCompile>
17231656
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_SystemTrayIcon.cpp">
17241657
<Filter>Juce Modules\juce_gui_extra\native</Filter>
17251658
</ClCompile>
1726-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_mac_WebBrowserComponent.mm">
1727-
<Filter>Juce Modules\juce_gui_extra\native</Filter>
1728-
</ClCompile>
17291659
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_gui_extra\native\juce_win32_ActiveXComponent.cpp">
17301660
<Filter>Juce Modules\juce_gui_extra\native</Filter>
17311661
</ClCompile>
@@ -1762,12 +1692,6 @@
17621692
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_android_CameraDevice.cpp">
17631693
<Filter>Juce Modules\juce_video\native</Filter>
17641694
</ClCompile>
1765-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_mac_CameraDevice.mm">
1766-
<Filter>Juce Modules\juce_video\native</Filter>
1767-
</ClCompile>
1768-
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_mac_QuickTimeMovieComponent.mm">
1769-
<Filter>Juce Modules\juce_video\native</Filter>
1770-
</ClCompile>
17711695
<ClCompile Include="..\..\JuceLibraryCode\modules\juce_video\native\juce_win32_CameraDevice.cpp">
17721696
<Filter>Juce Modules\juce_video\native</Filter>
17731697
</ClCompile>
@@ -3647,4 +3571,4 @@
36473571
<Filter>Juce Library Code</Filter>
36483572
</ResourceCompile>
36493573
</ItemGroup>
3650-
</Project>
3574+
</Project>

Source/Processors/FileReader/FileSource.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ class PLUGIN_API FileSource
8383
virtual bool Open(File file)=0;
8484
virtual void fillRecordInfo()=0;
8585
virtual void updateActiveRecord()=0;
86+
87+
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(FileSource);
8688
};
8789

8890

Source/Processors/PluginManager/PluginManager.cpp

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,43 @@ PluginManager::~PluginManager()
5858
{
5959
}
6060

61+
62+
void PluginManager::loadAllPlugins()
63+
{
64+
Array<File> foundDLLs;
65+
66+
#ifdef WIN32
67+
File pluginPath = File::getSpecialLocation(File::currentApplicationFile).getParentDirectory().getChildFile("plugins");
68+
String pluginExt("*.dll");
69+
#else
70+
File pluginPath = File::getSpecialLocation(File::currentApplicationFile).getParentDirectory().getChildFile("plugins");
71+
String pluginExt("*.so");
72+
#endif
73+
74+
75+
if (!pluginPath.isDirectory())
76+
{
77+
std::cout << "Plugin path not found" << std::endl;
78+
return;
79+
}
80+
81+
pluginPath.findChildFiles(foundDLLs, File::findFiles, true, "*.dll");
82+
83+
for (int i = 0; i < foundDLLs.size(); i++)
84+
{
85+
std::cout << "Loading Plugin: " << foundDLLs[i].getFileNameWithoutExtension() << "... " << std::flush;
86+
int res = loadPlugin(foundDLLs[i].getFullPathName());
87+
if (res < 0)
88+
{
89+
std::cout << " DLL Load FAILED" << std::endl;
90+
}
91+
else
92+
{
93+
std::cout << "Loaded with " << res << " plugins" << std::endl;
94+
}
95+
}
96+
}
97+
6198
/*
6299
Takes the user-specified plugin and begins
63100
dynamic loading process. We want to ensure that
@@ -194,9 +231,7 @@ int PluginManager::loadPlugin(const String& pluginLoc) {
194231
}
195232
}
196233
}
197-
AccessClass::getProcessorList()->fillItemList();
198-
AccessClass::getControlPanel()->updateRecordEngineList();
199-
return 0;
234+
return lib.numPlugins;
200235
}
201236

202237
int PluginManager::getNumProcessors()

Source/Processors/PluginManager/PluginManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class PluginManager {
5858
public:
5959
PluginManager();
6060
~PluginManager();
61+
void loadAllPlugins();
6162
int loadPlugin(const String&);
6263
//void unloadPlugin(Plugin *);
6364
void removeAllPlugins();

Source/UI/UIComponent.cpp

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@
7979

8080
AccessClass::setUIComponent(this);
8181

82+
getPluginManager()->loadAllPlugins();
83+
8284
getProcessorList()->fillItemList();
8385
controlPanel->updateChildComponents();
8486

@@ -354,8 +356,6 @@ PopupMenu UIComponent::getMenuForIndex(int menuIndex, const String& menuName)
354356
menu.addCommandItem(commandManager, saveConfiguration);
355357
menu.addCommandItem(commandManager, saveConfigurationAs);
356358
menu.addSeparator();
357-
menu.addCommandItem(commandManager, loadPlugin);
358-
menu.addSeparator();
359359
menu.addCommandItem(commandManager, reloadOnStartup);
360360

361361
#if !JUCE_MAC
@@ -414,7 +414,6 @@ void UIComponent::getAllCommands(Array <CommandID>& commands)
414414
const CommandID ids[] = {openConfiguration,
415415
saveConfiguration,
416416
saveConfigurationAs,
417-
loadPlugin,
418417
reloadOnStartup,
419418
undo,
420419
redo,
@@ -455,11 +454,6 @@ void UIComponent::getCommandInfo(CommandID commandID, ApplicationCommandInfo& re
455454
result.addDefaultKeypress('S', ModifierKeys::commandModifier | ModifierKeys::shiftModifier);
456455
break;
457456

458-
case loadPlugin:
459-
result.setInfo("Load processor...", "Load a custom compiled processor.", "General", 0);
460-
result.addDefaultKeypress('L', ModifierKeys::commandModifier);
461-
break;
462-
463457
case reloadOnStartup:
464458
result.setInfo("Reload on startup", "Load the last used configuration on startup.", "General", 0);
465459
result.setActive(!acquisitionStarted);
@@ -604,35 +598,6 @@ bool UIComponent::perform(const InvocationInfo& info)
604598
break;
605599
}
606600

607-
case loadPlugin:
608-
{
609-
// Load UI for choosing plugin
610-
File pluginFile;
611-
FileChooser fc("Choose the file name...", File::getCurrentWorkingDirectory(), "*.dll", true);
612-
613-
// Store user input
614-
if(fc.browseForFileToOpen())
615-
pluginFile = fc.getResult();
616-
else
617-
{
618-
CoreServices::sendStatusMessage("No processor selected.");
619-
break;
620-
}
621-
622-
// UI Status string
623-
String error = "Loaded ";
624-
error += pluginFile.getFileName();
625-
626-
// Add to processor list
627-
if(getPluginManager()->loadPlugin(pluginFile.getFullPathName()))
628-
{
629-
CoreServices::sendStatusMessage(String("Failed to load: " + pluginFile.getFileName()));
630-
break;
631-
}
632-
CoreServices::sendStatusMessage(String("Loaded: " + pluginFile.getFileName()));
633-
break;
634-
}
635-
636601
case reloadOnStartup:
637602
{
638603
mainWindow->shouldReloadOnStartup = !mainWindow->shouldReloadOnStartup;

Source/UI/UIComponent.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,7 @@ class UIComponent : public Component,
187187
showHelp = 0x2011,
188188
resizeWindow = 0x2012,
189189
reloadOnStartup = 0x2013,
190-
saveConfigurationAs = 0x2014,
191-
loadPlugin = 0x2015
190+
saveConfigurationAs = 0x2014
192191
};
193192

194193
File currentConfigFile;

0 commit comments

Comments
 (0)