diff options
author | Senpo Hu <senpo@google.com> | 2015-06-27 21:25:21 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-06-27 21:25:21 +0000 |
commit | dc1a777d0a7e95d461fcc6d9c28a12def38afcb0 (patch) | |
tree | f583ce69ec7c9aa01a830c055800e548f8a8fdef | |
parent | a596ed322aacf2ba005c95d4ae536ddb5f00a6c6 (diff) | |
parent | 75dcaf3bd47ec093f5805dc422dcdd397d2d0e1a (diff) | |
download | android_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.
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; |