Merge "DO NOT MERGE Add debug log to trace wallpaper rendering" into qt-qpr1-dev
This commit is contained in:
@@ -20,6 +20,7 @@ import android.app.ActivityManager;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
|
import android.os.Trace;
|
||||||
import android.service.wallpaper.WallpaperService;
|
import android.service.wallpaper.WallpaperService;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Size;
|
import android.util.Size;
|
||||||
@@ -48,6 +49,7 @@ public class ImageWallpaper extends WallpaperService {
|
|||||||
private static final int DELAY_FINISH_RENDERING = 1000;
|
private static final int DELAY_FINISH_RENDERING = 1000;
|
||||||
private static final int INTERVAL_WAIT_FOR_RENDERING = 100;
|
private static final int INTERVAL_WAIT_FOR_RENDERING = 100;
|
||||||
private static final int PATIENCE_WAIT_FOR_RENDERING = 10;
|
private static final int PATIENCE_WAIT_FOR_RENDERING = 10;
|
||||||
|
private static final boolean DEBUG = true;
|
||||||
private HandlerThread mWorker;
|
private HandlerThread mWorker;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -125,6 +127,10 @@ public class ImageWallpaper extends WallpaperService {
|
|||||||
@Override
|
@Override
|
||||||
public void onAmbientModeChanged(boolean inAmbientMode, long animationDuration) {
|
public void onAmbientModeChanged(boolean inAmbientMode, long animationDuration) {
|
||||||
if (!mNeedTransition) return;
|
if (!mNeedTransition) return;
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "onAmbientModeChanged: inAmbient=" + inAmbientMode
|
||||||
|
+ ", duration=" + animationDuration);
|
||||||
|
}
|
||||||
mWorker.getThreadHandler().post(
|
mWorker.getThreadHandler().post(
|
||||||
() -> mRenderer.updateAmbientMode(inAmbientMode, animationDuration));
|
() -> mRenderer.updateAmbientMode(inAmbientMode, animationDuration));
|
||||||
if (inAmbientMode && animationDuration == 0) {
|
if (inAmbientMode && animationDuration == 0) {
|
||||||
@@ -177,6 +183,10 @@ public class ImageWallpaper extends WallpaperService {
|
|||||||
@Override
|
@Override
|
||||||
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
|
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
|
||||||
mWorker.getThreadHandler().post(() -> {
|
mWorker.getThreadHandler().post(() -> {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "onSurfaceChanged: w=" + width + ", h=" + height);
|
||||||
|
}
|
||||||
|
|
||||||
mRenderer.onSurfaceChanged(width, height);
|
mRenderer.onSurfaceChanged(width, height);
|
||||||
mNeedRedraw = true;
|
mNeedRedraw = true;
|
||||||
});
|
});
|
||||||
@@ -185,15 +195,30 @@ public class ImageWallpaper extends WallpaperService {
|
|||||||
@Override
|
@Override
|
||||||
public void onSurfaceRedrawNeeded(SurfaceHolder holder) {
|
public void onSurfaceRedrawNeeded(SurfaceHolder holder) {
|
||||||
mWorker.getThreadHandler().post(() -> {
|
mWorker.getThreadHandler().post(() -> {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "onSurfaceRedrawNeeded: mNeedRedraw=" + mNeedRedraw);
|
||||||
|
}
|
||||||
|
|
||||||
if (mNeedRedraw) {
|
if (mNeedRedraw) {
|
||||||
preRender();
|
drawFrame();
|
||||||
requestRender();
|
|
||||||
postRender();
|
|
||||||
mNeedRedraw = false;
|
mNeedRedraw = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onVisibilityChanged(boolean visible) {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "wallpaper visibility changes to: " + visible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void drawFrame() {
|
||||||
|
preRender();
|
||||||
|
requestRender();
|
||||||
|
postRender();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStatePostChange() {
|
public void onStatePostChange() {
|
||||||
// When back to home, we try to release EGL, which is preserved in lock screen or aod.
|
// When back to home, we try to release EGL, which is preserved in lock screen or aod.
|
||||||
@@ -204,8 +229,18 @@ public class ImageWallpaper extends WallpaperService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void preRender() {
|
public void preRender() {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "preRender start");
|
||||||
|
}
|
||||||
|
|
||||||
// This method should only be invoked from worker thread.
|
// This method should only be invoked from worker thread.
|
||||||
|
Trace.beginSection("ImageWallpaper#preRender");
|
||||||
preRenderInternal();
|
preRenderInternal();
|
||||||
|
Trace.endSection();
|
||||||
|
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "preRender end");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void preRenderInternal() {
|
private void preRenderInternal() {
|
||||||
@@ -240,7 +275,9 @@ public class ImageWallpaper extends WallpaperService {
|
|||||||
@Override
|
@Override
|
||||||
public void requestRender() {
|
public void requestRender() {
|
||||||
// This method should only be invoked from worker thread.
|
// This method should only be invoked from worker thread.
|
||||||
|
Trace.beginSection("ImageWallpaper#requestRender");
|
||||||
requestRenderInternal();
|
requestRenderInternal();
|
||||||
|
Trace.endSection();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestRenderInternal() {
|
private void requestRenderInternal() {
|
||||||
@@ -262,9 +299,19 @@ public class ImageWallpaper extends WallpaperService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postRender() {
|
public void postRender() {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "postRender start");
|
||||||
|
}
|
||||||
|
|
||||||
// This method should only be invoked from worker thread.
|
// This method should only be invoked from worker thread.
|
||||||
|
Trace.beginSection("ImageWallpaper#postRender");
|
||||||
notifyWaitingThread();
|
notifyWaitingThread();
|
||||||
scheduleFinishRendering();
|
scheduleFinishRendering();
|
||||||
|
Trace.endSection();
|
||||||
|
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "postRender end");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void notifyWaitingThread() {
|
private void notifyWaitingThread() {
|
||||||
@@ -289,12 +336,18 @@ public class ImageWallpaper extends WallpaperService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void finishRendering() {
|
private void finishRendering() {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "finishRendering, preserve=" + needPreserveEglContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
Trace.beginSection("ImageWallpaper#finishRendering");
|
||||||
if (mEglHelper != null) {
|
if (mEglHelper != null) {
|
||||||
mEglHelper.destroyEglSurface();
|
mEglHelper.destroyEglSurface();
|
||||||
if (!needPreserveEglContext()) {
|
if (!needPreserveEglContext()) {
|
||||||
mEglHelper.destroyEglContext();
|
mEglHelper.destroyEglContext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Trace.endSection();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean needPreserveEglContext() {
|
private boolean needPreserveEglContext() {
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package com.android.systemui.glwallpaper;
|
|||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.animation.AnimatorListenerAdapter;
|
import android.animation.AnimatorListenerAdapter;
|
||||||
import android.animation.ValueAnimator;
|
import android.animation.ValueAnimator;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.systemui.Interpolators;
|
import com.android.systemui.Interpolators;
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ class ImageRevealHelper {
|
|||||||
private static final String TAG = ImageRevealHelper.class.getSimpleName();
|
private static final String TAG = ImageRevealHelper.class.getSimpleName();
|
||||||
private static final float MAX_REVEAL = 0f;
|
private static final float MAX_REVEAL = 0f;
|
||||||
private static final float MIN_REVEAL = 1f;
|
private static final float MIN_REVEAL = 1f;
|
||||||
|
private static final boolean DEBUG = true;
|
||||||
|
|
||||||
private final ValueAnimator mAnimator;
|
private final ValueAnimator mAnimator;
|
||||||
private final RevealStateListener mRevealListener;
|
private final RevealStateListener mRevealListener;
|
||||||
@@ -56,8 +58,13 @@ class ImageRevealHelper {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
if (!mIsCanceled && mRevealListener != null) {
|
if (mRevealListener != null) {
|
||||||
mRevealListener.onRevealEnd();
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "transition end, cancel=" + mIsCanceled + ", reveal=" + mReveal);
|
||||||
|
}
|
||||||
|
if (!mIsCanceled) {
|
||||||
|
mRevealListener.onRevealEnd();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mIsCanceled = false;
|
mIsCanceled = false;
|
||||||
}
|
}
|
||||||
@@ -65,6 +72,9 @@ class ImageRevealHelper {
|
|||||||
@Override
|
@Override
|
||||||
public void onAnimationStart(Animator animation) {
|
public void onAnimationStart(Animator animation) {
|
||||||
if (mRevealListener != null) {
|
if (mRevealListener != null) {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "transition start");
|
||||||
|
}
|
||||||
mRevealListener.onRevealStart(true /* animate */);
|
mRevealListener.onRevealStart(true /* animate */);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -82,6 +92,9 @@ class ImageRevealHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void updateAwake(boolean awake, long duration) {
|
void updateAwake(boolean awake, long duration) {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "updateAwake: awake=" + awake + ", duration=" + duration);
|
||||||
|
}
|
||||||
mAwake = awake;
|
mAwake = awake;
|
||||||
mAnimator.setDuration(duration);
|
mAnimator.setDuration(duration);
|
||||||
if (duration == 0) {
|
if (duration == 0) {
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer,
|
|||||||
private static final String TAG = ImageWallpaperRenderer.class.getSimpleName();
|
private static final String TAG = ImageWallpaperRenderer.class.getSimpleName();
|
||||||
private static final float SCALE_VIEWPORT_MIN = 1f;
|
private static final float SCALE_VIEWPORT_MIN = 1f;
|
||||||
private static final float SCALE_VIEWPORT_MAX = 1.1f;
|
private static final float SCALE_VIEWPORT_MAX = 1.1f;
|
||||||
|
private static final boolean DEBUG = true;
|
||||||
|
|
||||||
private final WallpaperManager mWallpaperManager;
|
private final WallpaperManager mWallpaperManager;
|
||||||
private final ImageGLProgram mProgram;
|
private final ImageGLProgram mProgram;
|
||||||
@@ -107,6 +108,9 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean loadBitmap() {
|
private boolean loadBitmap() {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "loadBitmap: mBitmap=" + mBitmap);
|
||||||
|
}
|
||||||
if (mWallpaperManager != null && mBitmap == null) {
|
if (mWallpaperManager != null && mBitmap == null) {
|
||||||
mBitmap = mWallpaperManager.getBitmap();
|
mBitmap = mWallpaperManager.getBitmap();
|
||||||
mWallpaperManager.forgetLoadedWallpaper();
|
mWallpaperManager.forgetLoadedWallpaper();
|
||||||
@@ -119,6 +123,9 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer,
|
|||||||
mSurfaceSize.set(0, 0, surfaceWidth, surfaceHeight);
|
mSurfaceSize.set(0, 0, surfaceWidth, surfaceHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.d(TAG, "loadBitmap done, surface size=" + mSurfaceSize);
|
||||||
|
}
|
||||||
return mBitmap != null;
|
return mBitmap != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,16 +200,28 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRevealStart(boolean animate) {
|
public void onRevealStart(boolean animate) {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.v(TAG, "onRevealStart: start, anim=" + animate);
|
||||||
|
}
|
||||||
|
|
||||||
if (animate) {
|
if (animate) {
|
||||||
mScissorMode = true;
|
mScissorMode = true;
|
||||||
// Use current display area of texture.
|
// Use current display area of texture.
|
||||||
mWallpaper.adjustTextureCoordinates(mSurfaceSize, mScissor, mXOffset, mYOffset);
|
mWallpaper.adjustTextureCoordinates(mSurfaceSize, mScissor, mXOffset, mYOffset);
|
||||||
}
|
}
|
||||||
mProxy.preRender();
|
mProxy.preRender();
|
||||||
|
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.v(TAG, "onRevealStart: done");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRevealEnd() {
|
public void onRevealEnd() {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.v(TAG, "onRevealEnd: start, mScissorMode=" + mScissorMode);
|
||||||
|
}
|
||||||
|
|
||||||
if (mScissorMode) {
|
if (mScissorMode) {
|
||||||
mScissorMode = false;
|
mScissorMode = false;
|
||||||
// reset texture coordinates to use full texture.
|
// reset texture coordinates to use full texture.
|
||||||
@@ -211,6 +230,10 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer,
|
|||||||
mProxy.requestRender();
|
mProxy.requestRender();
|
||||||
}
|
}
|
||||||
mProxy.postRender();
|
mProxy.postRender();
|
||||||
|
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.v(TAG, "onRevealEnd: done");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -223,6 +246,7 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer,
|
|||||||
out.print(prefix); out.print("mXOffset="); out.print(mXOffset);
|
out.print(prefix); out.print("mXOffset="); out.print(mXOffset);
|
||||||
out.print(prefix); out.print("mYOffset="); out.print(mYOffset);
|
out.print(prefix); out.print("mYOffset="); out.print(mYOffset);
|
||||||
out.print(prefix); out.print("threshold="); out.print(mImageProcessHelper.getThreshold());
|
out.print(prefix); out.print("threshold="); out.print(mImageProcessHelper.getThreshold());
|
||||||
|
out.print(prefix); out.print("mReveal="); out.print(mImageRevealHelper.getReveal());
|
||||||
mWallpaper.dump(prefix, fd, out, args);
|
mWallpaper.dump(prefix, fd, out, args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user