summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSenpo Hu <senpo@google.com>2015-06-27 21:25:21 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-06-27 21:25:21 +0000
commitdc1a777d0a7e95d461fcc6d9c28a12def38afcb0 (patch)
treef583ce69ec7c9aa01a830c055800e548f8a8fdef
parenta596ed322aacf2ba005c95d4ae536ddb5f00a6c6 (diff)
parent75dcaf3bd47ec093f5805dc422dcdd397d2d0e1a (diff)
downloadandroid_packages_apps_Camera2-dc1a777d0a7e95d461fcc6d9c28a12def38afcb0.tar.gz
android_packages_apps_Camera2-dc1a777d0a7e95d461fcc6d9c28a12def38afcb0.tar.bz2
android_packages_apps_Camera2-dc1a777d0a7e95d461fcc6d9c28a12def38afcb0.zip
am 75dcaf3b: am 04a9f8b6: Merge "Fix transform issue in CaptureIntent." into ub-camera-haleakala
* commit '75dcaf3bd47ec093f5805dc422dcdd397d2d0e1a': Fix transform issue in CaptureIntent.
-rw-r--r--src/com/android/camera/captureintent/CaptureIntentModuleUI.java8
-rw-r--r--src/com/android/camera/captureintent/resource/ResourceSurfaceTextureImpl.java24
-rw-r--r--src/com/android/camera/captureintent/state/StateReadyForCapture.java11
3 files changed, 39 insertions, 4 deletions
diff --git a/src/com/android/camera/captureintent/CaptureIntentModuleUI.java b/src/com/android/camera/captureintent/CaptureIntentModuleUI.java
index 5f518a45f..740218134 100644
--- a/src/com/android/camera/captureintent/CaptureIntentModuleUI.java
+++ b/src/com/android/camera/captureintent/CaptureIntentModuleUI.java
@@ -25,6 +25,7 @@ import com.android.camera.ui.PreviewStatusListener;
import com.android.camera.ui.ProgressOverlay;
import com.android.camera.ui.focus.FocusRing;
import com.android.camera.util.AndroidServices;
+import com.android.camera.util.Size;
import com.android.camera2.R;
import android.graphics.Bitmap;
@@ -112,6 +113,13 @@ public class CaptureIntentModuleUI {
}
/**
+ * Obtains the current preview layout size.
+ */
+ public Size getPreviewSurfaceSize() {
+ return new Size(mAppUI.getSurfaceWidth(), mAppUI.getSurfaceHeight());
+ }
+
+ /**
* Configures the bottom bar UI.
*
* @param hardwareSpec The hardware spec.
diff --git a/src/com/android/camera/captureintent/resource/ResourceSurfaceTextureImpl.java b/src/com/android/camera/captureintent/resource/ResourceSurfaceTextureImpl.java
index c980f9464..a4e63e7e3 100644
--- a/src/com/android/camera/captureintent/resource/ResourceSurfaceTextureImpl.java
+++ b/src/com/android/camera/captureintent/resource/ResourceSurfaceTextureImpl.java
@@ -96,7 +96,20 @@ public class ResourceSurfaceTextureImpl implements ResourceSurfaceTexture {
@Override
public void setPreviewSize(Size previewSize) {
// Update preview transform when preview stream size is changed.
- mPreviewSize = previewSize;
+ if (!mPreviewSize.equals(previewSize)) {
+ mPreviewSize = previewSize;
+
+ /**
+ * Update transform here since preview size might change when
+ * switching between back and front camera.
+ */
+ mResourceConstructed.get().getMainThread().execute(new Runnable() {
+ @Override
+ public void run() {
+ updatePreviewTransform();
+ }
+ });
+ }
// Update surface texture's default buffer size. See b/17286155.
mSurfaceTexture.setDefaultBufferSize(mPreviewSize.width(), mPreviewSize.height());
@@ -124,10 +137,15 @@ public class ResourceSurfaceTextureImpl implements ResourceSurfaceTexture {
@Override
public void updatePreviewTransform() {
MainThread.checkMainThread();
- if (mPreviewSize.getWidth() == 0 || mPreviewSize.getHeight() == 0 ||
- mPreviewLayoutSize.getWidth() == 0 || mPreviewLayoutSize.getHeight() == 0) {
+ if (mPreviewSize.getWidth() == 0 || mPreviewSize.getHeight() == 0) {
+ Log.w(TAG, "Do nothing since mPreviewSize is 0");
+ return;
+ }
+ if (mPreviewLayoutSize.getWidth() == 0 || mPreviewLayoutSize.getHeight() == 0) {
+ Log.w(TAG, "Do nothing since mPreviewLayoutSize is 0");
return;
}
+
Matrix transformMatrix = mPreviewTransformCalculator.toTransformMatrix(
mPreviewLayoutSize, mPreviewSize);
mResourceConstructed.get().getModuleUI().updatePreviewTransform(transformMatrix);
diff --git a/src/com/android/camera/captureintent/state/StateReadyForCapture.java b/src/com/android/camera/captureintent/state/StateReadyForCapture.java
index 481c03972..d4fb5e8e7 100644
--- a/src/com/android/camera/captureintent/state/StateReadyForCapture.java
+++ b/src/com/android/camera/captureintent/state/StateReadyForCapture.java
@@ -65,6 +65,8 @@ import com.android.camera.settings.SettingsManager;
import com.android.camera.ui.CountDownView;
import com.android.camera.ui.TouchCoordinate;
import com.android.camera.ui.focus.FocusController;
+import com.android.camera.util.Size;
+
import com.google.common.base.Optional;
import javax.annotation.Nullable;
@@ -224,8 +226,15 @@ public final class StateReadyForCapture extends StateImpl {
public Optional<State> processEvent(EventOnSurfaceTextureUpdated event) {
if (mShouldUpdateTransformOnNextSurfaceTextureUpdate) {
mShouldUpdateTransformOnNextSurfaceTextureUpdate = false;
+
+ // We have to provide a preview layout size to
+ // ResourceSurfaceTexture. Otherwise, it will
+ // not be able to calculate transform matrix.
+ Size previewSurfaceSize = mResourceCaptureTools.get().getModuleUI()
+ .getPreviewSurfaceSize();
mResourceCaptureTools.get().getResourceSurfaceTexture().get()
- .updatePreviewTransform();
+ .setPreviewLayoutSize(previewSurfaceSize);
+
removeEventHandler(EventOnSurfaceTextureUpdated.class);
}
return NO_CHANGE;