libbluray | branch: master | hpi1 <[email protected]> | Tue Dec 10 10:28:48 2013 +0200| [c512316f07f24f91664069b32eb205a4153651f2] | committer: hpi1
Fix HSceneFactory.dispose(HScene). Never return disposed scene from factory. Fixes Terminator Salvation. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=c512316f07f24f91664069b32eb205a4153651f2 --- .../bdj/java/org/havi/ui/HSceneFactory.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/libbluray/bdj/java/org/havi/ui/HSceneFactory.java b/src/libbluray/bdj/java/org/havi/ui/HSceneFactory.java index ce8d076..9d49060 100644 --- a/src/libbluray/bdj/java/org/havi/ui/HSceneFactory.java +++ b/src/libbluray/bdj/java/org/havi/ui/HSceneFactory.java @@ -21,6 +21,7 @@ package org.havi.ui; import org.videolan.GUIManager; import org.videolan.BDJXletContext; +import org.videolan.Logger; public class HSceneFactory extends Object { private HSceneFactory() { @@ -97,15 +98,31 @@ public class HSceneFactory extends Object { } public void dispose(HScene scene) { + + if (scene == null) { + logger.error("null HScene"); + return; + } + if (defaultHScene == null) { + logger.error("no HScene created"); + return; + } + + if (!scene.equals(defaultHScene)) { + logger.error("wrong HScene"); + } + GUIManager.getInstance().remove(scene); + defaultHScene = null; } public void dispose() { synchronized(HSceneFactory.class) { dispose(defaultHScene); - defaultHScene = null; } } private HScene defaultHScene = null; + + private static final Logger logger = Logger.getLogger(HSceneFactory.class.getName()); } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
