1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-03 17:59:33 +02:00

avoid multiple plugin instances

This commit is contained in:
Nikolay Pultsin 2015-02-28 11:27:22 +00:00
parent 0431c36fc4
commit 22fcf7851b

View file

@ -31,7 +31,7 @@ public class PluginCollection {
System.loadLibrary("NativeFormats-v4");
}
private static PluginCollection ourInstance;
private static volatile PluginCollection ourInstance;
private final List<BuiltinFormatPlugin> myBuiltinPlugins =
new LinkedList<BuiltinFormatPlugin>();
@ -39,16 +39,23 @@ public class PluginCollection {
new LinkedList<ExternalFormatPlugin>();
public static PluginCollection Instance() {
if (ourInstance == null) {
createInstance();
}
return ourInstance;
}
private static synchronized void createInstance() {
if (ourInstance == null) {
ourInstance = new PluginCollection();
// This code can not be moved to constructor because nativePlugins() is a native method
// This code cannot be moved to constructor
// because nativePlugins() is a native method
for (NativeFormatPlugin p : ourInstance.nativePlugins()) {
ourInstance.myBuiltinPlugins.add(p);
System.err.println("native plugin: " + p);
}
}
return ourInstance;
}
public static void deleteInstance() {