From fdc55e32bb4643ca7a3637045b975d94b25f3714 Mon Sep 17 00:00:00 2001 From: John Reck Date: Mon, 10 Dec 2012 13:25:49 -0800 Subject: Force a layout pass if the display rotation changes Bug: 7687209 DisplayRotation is used to map camera orientation to the display and is updated in layoutContentPane(). However, in the case of a 180 rotate framework doesn't send an onConfigurationChanged nor does the layout dimensions change, thus layoutContentPane doesn't fire and we don't update mDisplayRotation, resulting in an upside-down preview. To handle this, check each draw whether or not the display rotation has changed and if it has force a layout pass. Change-Id: I610ea235d1bf7de2743f4cdb8e42ba1ddcb41404 --- src/com/android/gallery3d/ui/GLRootView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/android/gallery3d/ui/GLRootView.java b/src/com/android/gallery3d/ui/GLRootView.java index ea457f7fa..b7c48bf2e 100644 --- a/src/com/android/gallery3d/ui/GLRootView.java +++ b/src/com/android/gallery3d/ui/GLRootView.java @@ -392,7 +392,11 @@ public class GLRootView extends GLSurfaceView mRenderRequested = false; - if ((mFlags & FLAG_NEED_LAYOUT) != 0) layoutContentPane(); + if ((mOrientationSource != null + && mDisplayRotation != mOrientationSource.getDisplayRotation()) + || (mFlags & FLAG_NEED_LAYOUT) != 0) { + layoutContentPane(); + } mCanvas.save(GLCanvas.SAVE_FLAG_ALL); rotateCanvas(-mCompensation); -- cgit v1.2.3