Merge "Only supports ambient mode when necessary." into qt-dev
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
mScissor = new Rect(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight);
|
||||
|
||||
// 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() {
|
||||
mScissorMode = true;
|
||||
// Use current display area of texture.
|
||||
mWallpaper.adjustTextureCoordinates(mSurfaceSize, mScissor, mXOffset, mYOffset);
|
||||
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() {
|
||||
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();
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user