From b320f70e522f4f2c126cf2e3ff5d8db7b64fb62c Mon Sep 17 00:00:00 2001 From: srowen Date: Sat, 15 May 2010 11:28:43 +0000 Subject: [PATCH] Commit good fix for race condition Daniel noted git-svn-id: http://zxing.googlecode.com/svn/trunk@1366 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../com/google/zxing/client/android/DecodeThread.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/android/src/com/google/zxing/client/android/DecodeThread.java b/android/src/com/google/zxing/client/android/DecodeThread.java index f297361c..75e5bad7 100755 --- a/android/src/com/google/zxing/client/android/DecodeThread.java +++ b/android/src/com/google/zxing/client/android/DecodeThread.java @@ -27,6 +27,7 @@ import android.preference.PreferenceManager; import java.util.Hashtable; import java.util.Vector; +import java.util.concurrent.CountDownLatch; /** * This thread does all the heavy lifting of decoding the images. @@ -40,6 +41,7 @@ final class DecodeThread extends Thread { private final CaptureActivity activity; private final Hashtable hints; private Handler handler; + private final CountDownLatch handlerInitLatch; DecodeThread(CaptureActivity activity, Vector decodeFormats, @@ -47,6 +49,7 @@ final class DecodeThread extends Thread { ResultPointCallback resultPointCallback) { this.activity = activity; + handlerInitLatch = new CountDownLatch(1); hints = new Hashtable(3); @@ -74,13 +77,19 @@ final class DecodeThread extends Thread { } Handler getHandler() { + try { + handlerInitLatch.await(); + } catch (InterruptedException ie) { + // continue? + } return handler; } @Override public void run() { Looper.prepare(); - handler = new DecodeHandler(activity, hints); + handler = new DecodeHandler(activity, hints); + handlerInitLatch.countDown(); Looper.loop(); } -- 2.20.1