libbluray | branch: master | hpi1 <[email protected]> | Sun Feb 22 23:06:03 2015 +0200| [64a48435eb3826e67bda39f03068e969806f6bc1] | committer: hpi1
BDJ: kill xlet if terminating it takes too long time Fixes discs with badly behaving Xlets. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=64a48435eb3826e67bda39f03068e969806f6bc1 --- src/libbluray/bdj/java/org/videolan/BDJAppProxy.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/libbluray/bdj/java/org/videolan/BDJAppProxy.java b/src/libbluray/bdj/java/org/videolan/BDJAppProxy.java index b488e83..cdcfea9 100644 --- a/src/libbluray/bdj/java/org/videolan/BDJAppProxy.java +++ b/src/libbluray/bdj/java/org/videolan/BDJAppProxy.java @@ -140,10 +140,9 @@ public class BDJAppProxy implements DVBJProxy, Runnable { cmds.addLast(null); cmds.notifyAll(); } - try { - thread.join(); - } catch (InterruptedException e) { + if (!cmd.waitDone(5000)) { + logger.error("release(): STOP timeout, killing Xlet " + context.getThreadGroup().getName()); } context.release(); @@ -382,16 +381,21 @@ public class BDJAppProxy implements DVBJProxy, Runnable { return arg; } - public void waitDone() { + public boolean waitDone(int timeoutMs) { synchronized(this) { while (!done) { try { - this.wait(); + if (timeoutMs < 1) { + this.wait(); + } else { + this.wait(timeoutMs); + break; + } } catch (InterruptedException e) { - } } } + return done; } public void release() { _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
