diff options
author | Senpo Hu <senpo@google.com> | 2015-06-27 21:18:47 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-06-27 21:18:47 +0000 |
commit | 75dcaf3bd47ec093f5805dc422dcdd397d2d0e1a (patch) | |
tree | 03586691b1885c848e35c5ef68fd421dd5c04ce4 /src | |
parent | d3611d6a86f46fb877e5260410ddd6389445be1e (diff) | |
parent | 04a9f8b68dfc636e5d2194af18cc2022e6b8354f (diff) | |
download | android_packages_apps_Camera2-75dcaf3bd47ec093f5805dc422dcdd397d2d0e1a.tar.gz android_packages_apps_Camera2-75dcaf3bd47ec093f5805dc422dcdd397d2d0e1a.tar.bz2 android_packages_apps_Camera2-75dcaf3bd47ec093f5805dc422dcdd397d2d0e1a.zip |
am 04a9f8b6: Merge "Fix transform issue in CaptureIntent." into ub-camera-haleakala
* commit '04a9f8b68dfc636e5d2194af18cc2022e6b8354f':
Fix transform issue in CaptureIntent.
Diffstat (limited to 'src')
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; |