OSDN Git Service

Synchronize camera access in start preview thread.
authorAngus Kong <shkong@google.com>
Tue, 25 Jun 2013 18:12:16 +0000 (11:12 -0700)
committerAngus Kong <shkong@google.com>
Tue, 25 Jun 2013 18:12:16 +0000 (11:12 -0700)
Change-Id: Iba953fea3bd17ecb085d75fb3b2e350c0bf5d3b1

src/com/android/camera/VideoModule.java

index 839037f..0daa672 100644 (file)
@@ -394,12 +394,6 @@ public class VideoModule implements CameraModule,
 
         readVideoPreferences();
         mUI.setPrefChangedListener(this);
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                startPreview();
-            }
-        }).start();
 
         mQuickCapture = mActivity.getIntent().getBooleanExtra(EXTRA_QUICK_CAPTURE, false);
         mLocationManager = new LocationManager(mActivity, null);
@@ -761,7 +755,11 @@ public class VideoModule implements CameraModule,
             new Thread(new Runnable() {
                 @Override
                 public void run() {
-                    startPreview();
+                    synchronized (mCameraOpened) {
+                        if (mCameraOpened) {
+                            startPreview();
+                        }
+                    }
                 }
             }).start();
         } else {
@@ -931,8 +929,8 @@ public class VideoModule implements CameraModule,
                 CameraHolder.instance().release();
             }
             mCameraOpened = false;
+            mCameraDevice = null;
         }
-        mCameraDevice = null;
         mPreviewing = false;
         mSnapshotInProgress = false;
     }