Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 695e1aa0 authored by John Reck's avatar John Reck
Browse files

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
parent db99a10b
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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);