libbluray | branch: master | hpi1 <[email protected]> | Mon Nov 17 10:55:23 2014 +0200| [b37f897b7b17aa1aba0443b6785f4dbed4200a58] | committer: hpi1
Do not create+start thread in constructor > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=b37f897b7b17aa1aba0443b6785f4dbed4200a58 --- src/libbluray/bdj/java/org/videolan/BDJAppProxy.java | 17 ++++++++++++++--- src/libbluray/bdj/java/org/videolan/BDJLoader.java | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/libbluray/bdj/java/org/videolan/BDJAppProxy.java b/src/libbluray/bdj/java/org/videolan/BDJAppProxy.java index ccefb8a..623c829 100644 --- a/src/libbluray/bdj/java/org/videolan/BDJAppProxy.java +++ b/src/libbluray/bdj/java/org/videolan/BDJAppProxy.java @@ -30,9 +30,15 @@ import java.util.LinkedList; import javax.tv.xlet.Xlet; public class BDJAppProxy implements DVBJProxy, Runnable { - public BDJAppProxy(BDJXletContext context) { - this.context = context; - state = NOT_LOADED; + protected static BDJAppProxy newInstance(BDJXletContext context) { + BDJAppProxy proxy = new BDJAppProxy(context); + /* do not create and start thread in constructor. + if constructor fails (exception), thread is left running without BDJAppProxy ... */ + proxy.startThread(); + return proxy; + } + + private void startThread() { thread = new Thread(context.getThreadGroup(), this, "BDJAppProxy"); thread.setDaemon(true); thread.start(); @@ -46,6 +52,11 @@ public class BDJAppProxy implements DVBJProxy, Runnable { } } + private BDJAppProxy(BDJXletContext context) { + this.context = context; + state = NOT_LOADED; + } + public int getState() { return state; } diff --git a/src/libbluray/bdj/java/org/videolan/BDJLoader.java b/src/libbluray/bdj/java/org/videolan/BDJLoader.java index 87f749e..1b59dcd 100644 --- a/src/libbluray/bdj/java/org/videolan/BDJLoader.java +++ b/src/libbluray/bdj/java/org/videolan/BDJLoader.java @@ -171,7 +171,7 @@ public class BDJLoader { // initialize appProxys for (int i = 0; i < appTable.length; i++) { if (proxys[i] == null) { - proxys[i] = new BDJAppProxy( + proxys[i] = BDJAppProxy.newInstance( new BDJXletContext( appTable[i], bdjo.getAppCaches(), _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
