libbluray | branch: master | hpi1 <[email protected]> | Sun Apr 13 17:31:34 2014 +0300| [feaa80fdca6618b48311de161134ce68fa08893e] | committer: hpi1
BDJXletContext: added storage for HAVI default looks > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=feaa80fdca6618b48311de161134ce68fa08893e --- .../bdj/java/org/videolan/BDJXletContext.java | 75 ++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/libbluray/bdj/java/org/videolan/BDJXletContext.java b/src/libbluray/bdj/java/org/videolan/BDJXletContext.java index 5ead166..31dbe28 100644 --- a/src/libbluray/bdj/java/org/videolan/BDJXletContext.java +++ b/src/libbluray/bdj/java/org/videolan/BDJXletContext.java @@ -23,6 +23,7 @@ import java.awt.Container; import java.awt.EventQueue; import java.net.URL; import java.util.LinkedList; +import java.util.HashMap; import java.security.AccessController; import java.security.PrivilegedAction; @@ -94,6 +95,10 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi return container; } + /* + * Class loader + */ + public ClassLoader getClassLoader() { return loader; } @@ -134,6 +139,10 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi return url; } + /* + * + */ + protected AppProxy getAppProxy() { return AppsDatabase.getAppsDatabase().getAppProxy(appid); } @@ -155,6 +164,10 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi return threadGroup; } + /* + * Event queues + */ + protected void setEventQueue(EventQueue eq) { eventQueue = eq; } @@ -194,6 +207,10 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi return cnt; } + /* + * HAVI + */ + public void setSceneFactory(HSceneFactory f) { sceneFactory = f; } @@ -202,6 +219,53 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi return sceneFactory; } + public static Object getXletDefaultLook(String key, Class defClass) { + BDJXletContext ctx = BDJXletContext.getCurrentContext(); + if (ctx == null) { + logger.error("getDefaultLook(): no context: " + Logger.dumpStack()); + return null; + } + return ctx.getDefaultLook(key, defClass); + } + + public static void setXletDefaultLook(String key, Object look) { + BDJXletContext ctx = BDJXletContext.getCurrentContext(); + if (ctx == null) { + logger.error("setDefaultLook(): no context: " + Logger.dumpStack()); + return; + } + ctx.setDefaultLook(key, look); + } + + private Object getDefaultLook(String key, Class defClass) { + Object look = null; + synchronized (defaultLooks) { + look = defaultLooks.get(key); + if (look == null) { + try { + look = defClass.newInstance(); + setDefaultLook(key, look); + } catch (Throwable t) { + logger.error("Error creating default look " + defClass.getName() + " for " + key + ": " + t); + } + } + } + return look; + } + + private void setDefaultLook(String key, Object look) { + synchronized (defaultLooks) { + defaultLooks.remove(key); + if (look != null) { + defaultLooks.put(key, look); + } + } + } + + /* + * Ixc + */ + protected void addIxcThread(Thread thread) { synchronized (ixcThreads) { ixcThreads.addLast(thread); @@ -257,6 +321,10 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi } } + /* + * Frame-accurate animations + */ + public void addFAA(FrameAccurateAnimation faa) { synchronized (faaList) { faaList.add(faa); @@ -280,6 +348,10 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi } } + /* + * + */ + public static BDJXletContext getCurrentContext() { Object obj = AccessController.doPrivileged( new PrivilegedAction() { @@ -313,6 +385,7 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi removeAllFAA(); stopIxcThreads(); + defaultLooks.clear(); org.dvb.io.ixc.IxcRegistry.unbindAll(this); @@ -336,6 +409,7 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi loader = null; container = null; callbackQueue = null; + defaultLooks = null; released = true; } } @@ -350,6 +424,7 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi private BDJThreadGroup threadGroup = null; private LinkedList ixcThreads = new LinkedList(); private LinkedList faaList = new LinkedList(); + private HashMap defaultLooks = new HashMap(); private BDJActionQueue callbackQueue; private static final Logger logger = Logger.getLogger(BDJXletContext.class.getName()); } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
