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

Commit 01053d43 authored by chaviw's avatar chaviw
Browse files

Add call to disable RT Animations

HWUI already supports disabling RT animations, but there was no correct
way to call it from the application. Adding a call to enable or disable
RT animations on the RenderThread so RT animations can be disabled
during a blast sync.

Test: Builds
Bug: 200284684
Change-Id: Ia1ae3498c38b84b4975f08d37bc764f0c690ed9f
parent b3c1d198
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -976,12 +976,12 @@ public class HardwareRenderer {
    }

    /**
     * b/68769804: For low FPS experiments.
     * b/68769804, b/66945974: For low FPS experiments.
     *
     * @hide
     */
    public static void setFPSDivisor(int divisor) {
        nHackySetRTAnimationsEnabled(divisor <= 1);
        nSetRtAnimationsEnabled(divisor <= 1);
    }

    /**
@@ -1145,6 +1145,16 @@ public class HardwareRenderer {
        nSetDrawingEnabled(drawingEnabled);
    }

    /**
     * Disable RenderThread animations that schedule draws directly from RenderThread. This is used
     * when we don't want to de-schedule draw requests that come from the UI thread.
     *
     * @hide
     */
    public static void setRtAnimationsEnabled(boolean enabled) {
        nSetRtAnimationsEnabled(enabled);
    }

    private static final class DestroyContextRunnable implements Runnable {
        private final long mNativeInstance;

@@ -1451,9 +1461,6 @@ public class HardwareRenderer {

    private static native void nSetHighContrastText(boolean enabled);

    // For temporary experimentation b/66945974
    private static native void nHackySetRTAnimationsEnabled(boolean enabled);

    private static native void nSetDebuggingEnabled(boolean enabled);

    private static native void nSetIsolatedProcess(boolean enabled);
@@ -1472,4 +1479,6 @@ public class HardwareRenderer {
    private static native void nSetDrawingEnabled(boolean drawingEnabled);

    private static native boolean nIsDrawingEnabled();

    private static native void nSetRtAnimationsEnabled(boolean rtAnimationsEnabled);
}
+7 −7
Original line number Diff line number Diff line
@@ -770,11 +770,6 @@ static void android_view_ThreadedRenderer_setHighContrastText(JNIEnv*, jclass, j
    Properties::enableHighContrastText = enable;
}

static void android_view_ThreadedRenderer_hackySetRTAnimationsEnabled(JNIEnv*, jclass,
        jboolean enable) {
    Properties::enableRTAnimations = enable;
}

static void android_view_ThreadedRenderer_setDebuggingEnabled(JNIEnv*, jclass, jboolean enable) {
    Properties::debuggingEnabled = enable;
}
@@ -804,6 +799,11 @@ static void android_view_ThreadedRenderer_preload(JNIEnv*, jclass) {
    RenderProxy::preload();
}

static void android_view_ThreadedRenderer_setRtAnimationsEnabled(JNIEnv* env, jobject clazz,
                                                                 jboolean enabled) {
    RenderProxy::setRtAnimationsEnabled(enabled);
}

// Plumbs the display density down to DeviceInfo.
static void android_view_ThreadedRenderer_setDisplayDensityDpi(JNIEnv*, jclass, jint densityDpi) {
    // Convert from dpi to density-independent pixels.
@@ -959,8 +959,6 @@ static const JNINativeMethod gMethods[] = {
         (void*)android_view_ThreadedRenderer_createHardwareBitmapFromRenderNode},
        {"disableVsync", "()V", (void*)android_view_ThreadedRenderer_disableVsync},
        {"nSetHighContrastText", "(Z)V", (void*)android_view_ThreadedRenderer_setHighContrastText},
        {"nHackySetRTAnimationsEnabled", "(Z)V",
         (void*)android_view_ThreadedRenderer_hackySetRTAnimationsEnabled},
        {"nSetDebuggingEnabled", "(Z)V", (void*)android_view_ThreadedRenderer_setDebuggingEnabled},
        {"nSetIsolatedProcess", "(Z)V", (void*)android_view_ThreadedRenderer_setIsolatedProcess},
        {"nSetContextPriority", "(I)V", (void*)android_view_ThreadedRenderer_setContextPriority},
@@ -974,6 +972,8 @@ static const JNINativeMethod gMethods[] = {
         (void*)android_view_ThreadedRenderer_isWebViewOverlaysEnabled},
        {"nSetDrawingEnabled", "(Z)V", (void*)android_view_ThreadedRenderer_setDrawingEnabled},
        {"nIsDrawingEnabled", "()Z", (void*)android_view_ThreadedRenderer_isDrawingEnabled},
        {"nSetRtAnimationsEnabled", "(Z)V",
         (void*)android_view_ThreadedRenderer_setRtAnimationsEnabled},
};

static JavaVM* mJvm = nullptr;
+9 −0
Original line number Diff line number Diff line
@@ -424,6 +424,15 @@ void RenderProxy::preload() {
    thread.queue().post([&thread]() { thread.preload(); });
}

void RenderProxy::setRtAnimationsEnabled(bool enabled) {
    if (RenderThread::hasInstance()) {
        RenderThread::getInstance().queue().post(
                [enabled]() { Properties::enableRTAnimations = enabled; });
    } else {
        Properties::enableRTAnimations = enabled;
    }
}

} /* namespace renderthread */
} /* namespace uirenderer */
} /* namespace android */
+2 −0
Original line number Diff line number Diff line
@@ -143,6 +143,8 @@ public:

    static void preload();

    static void setRtAnimationsEnabled(bool enabled);

private:
    RenderThread& mRenderThread;
    CanvasContext* mContext;