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

Commit 10a9fde8 authored by bsears's avatar bsears Committed by Android (Google) Code Review
Browse files

Merge "Only supports ambient mode when necessary." into qt-dev

parents 0b41c894 0e17480b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ public class ImageWallpaper extends WallpaperService {
    // This is to avoid destroying then recreating render context in a very short time.
    private static final int DELAY_FINISH_RENDERING = 1000;
    private static final int INTERVAL_WAIT_FOR_RENDERING = 100;
    private static final int PATIENCE_WAIT_FOR_RENDERING = 5;
    private static final int PATIENCE_WAIT_FOR_RENDERING = 10;
    private HandlerThread mWorker;

    @Override
@@ -124,10 +124,10 @@ public class ImageWallpaper extends WallpaperService {

        @Override
        public void onAmbientModeChanged(boolean inAmbientMode, long animationDuration) {
            long duration = mNeedTransition || animationDuration != 0 ? animationDuration : 0;
            if (!mNeedTransition) return;
            mWorker.getThreadHandler().post(
                    () -> mRenderer.updateAmbientMode(inAmbientMode, duration));
            if (inAmbientMode && duration == 0) {
                    () -> mRenderer.updateAmbientMode(inAmbientMode, animationDuration));
            if (inAmbientMode && animationDuration == 0) {
                // This means that we are transiting from home to aod, to avoid
                // race condition between window visibility and transition,
                // we don't return until the transition is finished. See b/136643341.
+8 −9
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ class ImageRevealHelper {
            @Override
            public void onAnimationStart(Animator animation) {
                if (mRevealListener != null) {
                    mRevealListener.onRevealStart();
                    mRevealListener.onRevealStart(true /* animate */);
                }
            }
        });
@@ -73,7 +73,7 @@ class ImageRevealHelper {

    private void animate() {
        mAnimator.cancel();
        mAnimator.setFloatValues(mReveal, !mAwake ? MIN_REVEAL : MAX_REVEAL);
        mAnimator.setFloatValues(mReveal, mAwake ? MAX_REVEAL : MIN_REVEAL);
        mAnimator.start();
    }

@@ -84,12 +84,11 @@ class ImageRevealHelper {
    void updateAwake(boolean awake, long duration) {
        mAwake = awake;
        mAnimator.setDuration(duration);
        if (!mAwake && duration == 0) {
            // We are transiting from home to aod,
            // since main thread is waiting for rendering finished, we only need draw
            // the last state directly, which is a black screen.
            mReveal = MIN_REVEAL;
            mRevealListener.onRevealStart();
        if (duration == 0) {
            // We are transiting from home to aod or aod to home directly,
            // we don't need to do transition in these cases.
            mReveal = mAwake ? MAX_REVEAL : MIN_REVEAL;
            mRevealListener.onRevealStart(false /* animate */);
            mRevealListener.onRevealStateChanged();
            mRevealListener.onRevealEnd();
        } else {
@@ -110,7 +109,7 @@ class ImageRevealHelper {
        /**
         * Called back while reveal starts.
         */
        void onRevealStart();
        void onRevealStart(boolean animate);

        /**
         * Called back while reveal ends.
+22 −10
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static android.opengl.GLES20.glViewport;

import android.app.WallpaperManager;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.util.Log;
@@ -70,7 +71,14 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer,
        DisplayInfo displayInfo = new DisplayInfo();
        WindowManager wm = context.getSystemService(WindowManager.class);
        wm.getDefaultDisplay().getDisplayInfo(displayInfo);

        // We only do transition in portrait currently, b/137962047.
        int orientation = context.getResources().getConfiguration().orientation;
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            mScissor = new Rect(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight);
        } else {
            mScissor = new Rect(0, 0, displayInfo.logicalHeight, displayInfo.logicalWidth);
        }

        mProxy = proxy;
        mProgram = new ImageGLProgram(context);
@@ -179,20 +187,24 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer,
    }

    @Override
    public void onRevealStart() {
    public void onRevealStart(boolean animate) {
        if (animate) {
            mScissorMode = true;
            // Use current display area of texture.
            mWallpaper.adjustTextureCoordinates(mSurfaceSize, mScissor, mXOffset, mYOffset);
        }
        mProxy.preRender();
    }

    @Override
    public void onRevealEnd() {
        if (mScissorMode) {
            mScissorMode = false;
            // reset texture coordinates to use full texture.
            mWallpaper.adjustTextureCoordinates(null, null, 0, 0);
            // We need draw full texture back before finishing render.
            mProxy.requestRender();
        }
        mProxy.postRender();
    }

+4 −1
Original line number Diff line number Diff line
@@ -482,9 +482,12 @@ public class StatusBar extends SystemUI implements DemoMode,
            WallpaperInfo info = wallpaperManager.getWallpaperInfo(UserHandle.USER_CURRENT);
            final boolean deviceSupportsAodWallpaper = mContext.getResources().getBoolean(
                    com.android.internal.R.bool.config_dozeSupportsAodWallpaper);
            final boolean imageWallpaperInAmbient =
                    !DozeParameters.getInstance(mContext).getDisplayNeedsBlanking();
            // If WallpaperInfo is null, it must be ImageWallpaper.
            final boolean supportsAmbientMode = deviceSupportsAodWallpaper
                    && (info == null || info.supportsAmbientMode());
                    && ((info == null && imageWallpaperInAmbient)
                        || (info != null && info.supportsAmbientMode()));

            mStatusBarWindowController.setWallpaperSupportsAmbientMode(supportsAmbientMode);
            mScrimController.setWallpaperSupportsAmbientMode(supportsAmbientMode);