libbluray | branch: master | hpi1 <h...@anonymous.org> | Tue Mar 29 11:33:15 2016 +0300| [8a4d1b4eb647f531c44184ea3a9de0fe9449a1a0] | committer: hpi1
FontFactory: clean up locking > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=8a4d1b4eb647f531c44184ea3a9de0fe9449a1a0 --- src/libbluray/bdj/java/org/dvb/ui/FontFactory.java | 24 +++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/libbluray/bdj/java/org/dvb/ui/FontFactory.java b/src/libbluray/bdj/java/org/dvb/ui/FontFactory.java index 3b0c913..ab3ab4b 100644 --- a/src/libbluray/bdj/java/org/dvb/ui/FontFactory.java +++ b/src/libbluray/bdj/java/org/dvb/ui/FontFactory.java @@ -34,16 +34,22 @@ import org.videolan.FontIndexData; import org.videolan.Logger; public class FontFactory { - public static synchronized void loadDiscFonts() { + public static void loadDiscFonts() { unloadDiscFonts(); + + // fonts are loaded on demand } - public static synchronized void unloadDiscFonts() { - fonts = null; - fontIds = null; + public static void unloadDiscFonts() { + synchronized (fontsLock) { + fonts = null; + fontIds = null; + } } - private static synchronized void readDiscFonts() throws FontFormatException, IOException { + private static void readDiscFonts() throws FontFormatException, IOException { + synchronized (fontsLock) { + if (fonts != null) return; @@ -84,7 +90,7 @@ public class FontFactory { } } } - + } } public FontFactory() throws FontFormatException, IOException { @@ -120,7 +126,7 @@ public class FontFactory { public Font createFont(String fontId) { Font font = null; - synchronized (FontFactory.class) { + synchronized (fontsLock) { font = (Font)fontIds.get(fontId); } if (font != null) { @@ -148,7 +154,7 @@ public class FontFactory { /* Factory created for fonts in dvb.fontindex */ Font font = null; - synchronized (FontFactory.class) { + synchronized (fontsLock) { font = (Font)fonts.get(name + "." + style); } @@ -162,6 +168,8 @@ public class FontFactory { private Font urlFont = null; + private static final Object fontsLock = new Object(); + private static Map fonts = null; private static Map fontIds = null; _______________________________________________ libbluray-devel mailing list libbluray-devel@videolan.org https://mailman.videolan.org/listinfo/libbluray-devel