libbluray | branch: master | hpi1 <h...@anonymous.org> | Tue Jan 10 10:24:59 2017 +0200| [0292947c89815d24188aac143bf1885beed1afbd] | committer: hpi1
Add locking for titleInfos > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=0292947c89815d24188aac143bf1885beed1afbd --- src/libbluray/bdj/java/org/videolan/Libbluray.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libbluray/bdj/java/org/videolan/Libbluray.java b/src/libbluray/bdj/java/org/videolan/Libbluray.java index 3bc0143..dead64b 100644 --- a/src/libbluray/bdj/java/org/videolan/Libbluray.java +++ b/src/libbluray/bdj/java/org/videolan/Libbluray.java @@ -277,7 +277,9 @@ public class Libbluray { System.err.println("shutdown() failed: " + e + "\n" + Logger.dumpStack(e)); } nativePointer = 0; - titleInfos = null; + synchronized (titleInfosLock) { + titleInfos = null; + } synchronized (bdjoFilesLock) { bdjoFiles = null; } @@ -314,6 +316,7 @@ public class Libbluray { /* used by javax/tv/service/SIManagerImpl */ public static int numTitles() { + synchronized (titleInfosLock) { if (titleInfos == null) { titleInfos = getTitleInfosN(nativePointer); if (titleInfos == null) { @@ -321,10 +324,12 @@ public class Libbluray { } } return titleInfos.length - 2; + } } /* used by org/bluray/ti/TitleImpl */ public static TitleInfo getTitleInfo(int titleNum) { + synchronized (titleInfosLock) { int numTitles = numTitles(); if (numTitles < 0) return null; @@ -337,6 +342,7 @@ public class Libbluray { throw new IllegalArgumentException(); return titleInfos[titleNum]; + } } /* used by org/bluray/ti/PlayListImpl */ @@ -727,5 +733,6 @@ public class Libbluray { int x0, int y0, int x1, int y1); private static long nativePointer = 0; + private static Object titleInfosLock = new Object(); private static TitleInfo[] titleInfos = null; } _______________________________________________ libbluray-devel mailing list libbluray-devel@videolan.org https://mailman.videolan.org/listinfo/libbluray-devel