libbluray | branch: master | hpi1 <[email protected]> | Mon Jan 20 15:27:34 2014 +0200| [f098fa16de5f03922bc3f90f16b09825582e9a0c] | committer: hpi1
BDJActionQueue: abort actions added after queue stop > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=f098fa16de5f03922bc3f90f16b09825582e9a0c --- src/libbluray/bdj/java/org/videolan/BDJAction.java | 7 +++++++ src/libbluray/bdj/java/org/videolan/BDJActionQueue.java | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/libbluray/bdj/java/org/videolan/BDJAction.java b/src/libbluray/bdj/java/org/videolan/BDJAction.java index a4be70e..ae157b6 100644 --- a/src/libbluray/bdj/java/org/videolan/BDJAction.java +++ b/src/libbluray/bdj/java/org/videolan/BDJAction.java @@ -66,6 +66,13 @@ public abstract class BDJAction { } } + public void abort() { + synchronized (this) { + state = PROCESSED; + this.notifyAll(); + } + } + protected abstract void doAction(); private int state = NOT_PROCESSED; diff --git a/src/libbluray/bdj/java/org/videolan/BDJActionQueue.java b/src/libbluray/bdj/java/org/videolan/BDJActionQueue.java index 41969fc..07c314f 100644 --- a/src/libbluray/bdj/java/org/videolan/BDJActionQueue.java +++ b/src/libbluray/bdj/java/org/videolan/BDJActionQueue.java @@ -34,6 +34,7 @@ class BDJActionQueue implements Runnable { protected void finalize() throws Throwable { synchronized (actions) { + terminated = true; actions.addLast(null); actions.notifyAll(); } @@ -66,12 +67,18 @@ class BDJActionQueue implements Runnable { public void put(BDJAction action) { if (action != null) { synchronized (actions) { - actions.addLast(action); - actions.notifyAll(); + if (!terminated) { + actions.addLast(action); + actions.notifyAll(); + } else { + Logger.getLogger(BDJActionQueue.class.getName()).error("Action skipped (queue stopped): " + action); + action.abort(); + } } } } + private boolean terminated = false; private Thread thread; private LinkedList actions = new LinkedList(); } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
