libbluray | branch: master | hpi1 <[email protected]> | Fri Aug 23 11:20:33 2013 +0300| [1cde9460988aa605fe972640b7581e6511789e15] | committer: hpi1
Unbind all registered Ixc objects when Xlet terminates > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=1cde9460988aa605fe972640b7581e6511789e15 --- src/libbluray/bdj/java/org/dvb/io/ixc/IxcRegistry.java | 4 ++++ .../bdj/java/org/videolan/BDJXletContext.java | 2 ++ .../bdj/java/org/videolan/IxcRegistryImpl.java | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/src/libbluray/bdj/java/org/dvb/io/ixc/IxcRegistry.java b/src/libbluray/bdj/java/org/dvb/io/ixc/IxcRegistry.java index b861628..e82b3b9 100644 --- a/src/libbluray/bdj/java/org/dvb/io/ixc/IxcRegistry.java +++ b/src/libbluray/bdj/java/org/dvb/io/ixc/IxcRegistry.java @@ -108,4 +108,8 @@ public class IxcRegistry { public static String[] list(XletContext xc) { return getIxcRegistry().list(); } + + public static void unbindAll(XletContext xc) { + getIxcRegistry().unbindAll(xc); + } } diff --git a/src/libbluray/bdj/java/org/videolan/BDJXletContext.java b/src/libbluray/bdj/java/org/videolan/BDJXletContext.java index bccf7fb..1a7d2fe 100644 --- a/src/libbluray/bdj/java/org/videolan/BDJXletContext.java +++ b/src/libbluray/bdj/java/org/videolan/BDJXletContext.java @@ -195,6 +195,8 @@ public class BDJXletContext implements javax.tv.xlet.XletContext, javax.microedi protected void release() { stopIxcThreads(); + org.dvb.io.ixc.IxcRegistry.unbindAll(this); + if (sceneFactory != null) { sceneFactory.dispose(); sceneFactory = null; diff --git a/src/libbluray/bdj/java/org/videolan/IxcRegistryImpl.java b/src/libbluray/bdj/java/org/videolan/IxcRegistryImpl.java index 10f0d9c..2b23e5f 100644 --- a/src/libbluray/bdj/java/org/videolan/IxcRegistryImpl.java +++ b/src/libbluray/bdj/java/org/videolan/IxcRegistryImpl.java @@ -395,4 +395,20 @@ public class IxcRegistryImpl { return result; } + + public void unbindAll(XletContext xc) { + + Debug("IxcRegistry.removeBinding(" + xc + ")"); + String prefix = "/" + (String)xc.getXletProperty("dvb.org.id") + "/" + (String)xc.getXletProperty("dvb.app.id") + "/"; + + synchronized (remoteObjects) { + Iterator it = remoteObjects.keySet().iterator(); + while (it.hasNext()) { + Object o = it.next(); + String path = (String)o; + if (path.startsWith(prefix)) + it.remove(); + } + } + } } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
