[libbluray-devel] BD-J: cache parsed bdjo data
hpi1
git at videolan.org
Sun May 17 11:57:00 CEST 2015
libbluray | branch: master | hpi1 <hpi1 at anonymous.org> | Sun May 17 12:55:19 2015 +0300| [8bb56b3a4ea0f49071bec7fae69f1d54369ed45a] | committer: hpi1
BD-J: cache parsed bdjo data
Amount of data is small. Without caching it is loaded from disc multiple times.
> http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=8bb56b3a4ea0f49071bec7fae69f1d54369ed45a
---
src/libbluray/bdj/java/org/videolan/Libbluray.java | 25 +++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/src/libbluray/bdj/java/org/videolan/Libbluray.java b/src/libbluray/bdj/java/org/videolan/Libbluray.java
index 41af18f..1a67fc9 100644
--- a/src/libbluray/bdj/java/org/videolan/Libbluray.java
+++ b/src/libbluray/bdj/java/org/videolan/Libbluray.java
@@ -24,6 +24,8 @@ import java.awt.BDFontMetrics;
import java.awt.BDToolkit;
import java.awt.event.KeyEvent;
import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Vector;
import javax.media.PackageManager;
@@ -228,6 +230,7 @@ public class Libbluray {
}
nativePointer = 0;
titleInfos = null;
+ bdjoFiles = null;
}
/*
@@ -296,6 +299,10 @@ public class Libbluray {
* Disc data
*/
+ /* cache parsed .bdjo files */
+ private static Map bdjoFiles = null;
+ private static Object bdjoFilesLock = new Object();
+
public static byte[] getAacsData(int type) {
return getAacsDataN(nativePointer, type);
}
@@ -305,7 +312,23 @@ public class Libbluray {
}
public static Bdjo getBdjo(String name) {
- return getBdjoN(nativePointer, name + ".bdjo");
+ Bdjo bdjo;
+ synchronized (bdjoFilesLock) {
+ if (bdjoFiles == null) {
+ bdjoFiles = new HashMap();
+ } else {
+ bdjo = (Bdjo)bdjoFiles.get(name);
+ if (bdjo != null) {
+ return bdjo;
+ }
+ }
+
+ bdjo = getBdjoN(nativePointer, name + ".bdjo");
+ if (bdjo != null) {
+ bdjoFiles.put(name, bdjo);
+ }
+ return bdjo;
+ }
}
public static String[] listBdFiles(String path, boolean onlyBdRom) {
More information about the libbluray-devel
mailing list