mirror of
https://github.com/zxing/zxing.git
synced 2025-02-02 05:41:08 -08:00
Made the worker threads shut down synchronously to fix a race condition where the CameraManager could close the camera driver too soon.
git-svn-id: https://zxing.googlecode.com/svn/trunk@357 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
e14defda5f
commit
4c10031a67
|
@ -91,8 +91,7 @@ public final class BarcodeReaderCaptureActivity extends Activity {
|
|||
protected void onPause() {
|
||||
super.onPause();
|
||||
if (cameraThread != null) {
|
||||
Message quit = Message.obtain(cameraThread.handler, R.id.quit);
|
||||
quit.sendToTarget();
|
||||
cameraThread.quitSynchronously();
|
||||
cameraThread = null;
|
||||
}
|
||||
cameraManager.closeDriver();
|
||||
|
|
|
@ -76,6 +76,10 @@ final class CameraThread extends Thread {
|
|||
state = State.DONE;
|
||||
Message quit = Message.obtain(decodeThread.handler, R.id.quit);
|
||||
quit.sendToTarget();
|
||||
try {
|
||||
decodeThread.join();
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
Looper.myLooper().quit();
|
||||
break;
|
||||
case R.id.decode_started:
|
||||
|
@ -116,6 +120,15 @@ final class CameraThread extends Thread {
|
|||
Looper.loop();
|
||||
}
|
||||
|
||||
public void quitSynchronously() {
|
||||
Message quit = Message.obtain(handler, R.id.quit);
|
||||
quit.sendToTarget();
|
||||
try {
|
||||
join();
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
}
|
||||
|
||||
public void setDecodeAllMode() {
|
||||
Message message = Message.obtain(decodeThread.handler, R.id.set_decode_all_mode);
|
||||
message.sendToTarget();
|
||||
|
|
Loading…
Reference in a new issue