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

Commit f64c34e7 authored by Derek Sollenberger's avatar Derek Sollenberger
Browse files

Remove isAvailable() from DisplayListCanvas.

The method has been moved to ThreadedRenderer and the native
implementation has been renamed to better reflect its intent.

Change-Id: I7ee6d578ad0c2ee20111edd424c7560a449f0b39
parent ce447b00
Loading
Loading
Loading
Loading
+1 −12
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import android.graphics.Paint;
import android.util.Pools.SynchronizedPool;

/**
 * A Canvas implementation that records drawing operations for deferred rendering.
 * A Canvas implementation that records view system drawing operations for deferred rendering.
 * This is intended for use with a DisplayList. This class keeps a list of all the Paint and
 * Bitmap objects that it draws, preventing the backing memory of Bitmaps from being freed while
 * the DisplayList is still holding a native reference to the memory.
@@ -74,17 +74,6 @@ public class DisplayListCanvas extends Canvas {
        return o == mNode;
    }

    ///////////////////////////////////////////////////////////////////////////
    // JNI
    ///////////////////////////////////////////////////////////////////////////

    private static native boolean nIsAvailable();
    private static boolean sIsAvailable = nIsAvailable();

    static boolean isAvailable() {
        return sIsAvailable;
    }

    ///////////////////////////////////////////////////////////////////////////
    // Constructors
    ///////////////////////////////////////////////////////////////////////////
+5 −2
Original line number Diff line number Diff line
@@ -226,6 +226,9 @@ public final class ThreadedRenderer {
        sTrimForeground = true;
    }

    private static native boolean nSupportsOpenGL();
    private static boolean sSupportsOpenGL = nSupportsOpenGL();

    /**
     * Indicates whether threaded rendering is available under any form for
     * the view hierarchy.
@@ -234,7 +237,7 @@ public final class ThreadedRenderer {
     *         false otherwise
     */
    public static boolean isAvailable() {
        return DisplayListCanvas.isAvailable();
        return sSupportsOpenGL;
    }

    /**
@@ -258,7 +261,7 @@ public final class ThreadedRenderer {
     */
    public static ThreadedRenderer create(Context context, boolean translucent) {
        ThreadedRenderer renderer = null;
        if (DisplayListCanvas.isAvailable()) {
        if (isAvailable()) {
            renderer = new ThreadedRenderer(context, translucent);
        }
        return renderer;
+0 −17
Original line number Diff line number Diff line
@@ -198,22 +198,6 @@ static void android_view_DisplayListCanvas_drawLayer(JNIEnv* env, jobject clazz,
    canvas->drawLayer(layer);
}

// ----------------------------------------------------------------------------
// Common
// ----------------------------------------------------------------------------

static jboolean android_view_DisplayListCanvas_isAvailable(JNIEnv* env, jobject clazz) {
    char prop[PROPERTY_VALUE_MAX];
    if (property_get("ro.kernel.qemu", prop, NULL) == 0) {
        // not in the emulator
        return JNI_TRUE;
    }
    // In the emulator this property will be set > 0 when OpenGL ES 2.0 is
    // enabled, 0 otherwise. On old emulator versions it will be undefined.
    property_get("qemu.gles", prop, "0");
    return atoi(prop) > 0 ? JNI_TRUE : JNI_FALSE;
}

// ----------------------------------------------------------------------------
// Logging
// ----------------------------------------------------------------------------
@@ -231,7 +215,6 @@ android_app_ActivityThread_dumpGraphics(JNIEnv* env, jobject clazz, jobject java
const char* const kClassPathName = "android/view/DisplayListCanvas";

static JNINativeMethod gMethods[] = {
    { "nIsAvailable",       "!()Z",             (void*) android_view_DisplayListCanvas_isAvailable },
    { "nInsertReorderBarrier","!(JZ)V",         (void*) android_view_DisplayListCanvas_insertReorderBarrier },

    { "nCallDrawGLFunction", "!(JJLjava/lang/Runnable;)V",
+13 −0
Original line number Diff line number Diff line
@@ -521,6 +521,18 @@ void NotifyHandler::handleMessage(const Message& message) {
    mObserver->decStrong(nullptr);
}

static jboolean android_view_ThreadedRenderer_supportsOpenGL(JNIEnv* env, jobject clazz) {
    char prop[PROPERTY_VALUE_MAX];
    if (property_get("ro.kernel.qemu", prop, NULL) == 0) {
        // not in the emulator
        return JNI_TRUE;
    }
    // In the emulator this property will be set > 0 when OpenGL ES 2.0 is
    // enabled, 0 otherwise. On old emulator versions it will be undefined.
    property_get("qemu.gles", prop, "0");
    return atoi(prop) > 0 ? JNI_TRUE : JNI_FALSE;
}

static void android_view_ThreadedRenderer_setAtlas(JNIEnv* env, jobject clazz,
        jlong proxyPtr, jobject graphicBuffer, jlongArray atlasMapArray) {
    sp<GraphicBuffer> buffer = graphicBufferForJavaObject(env, graphicBuffer);
@@ -855,6 +867,7 @@ static void android_view_ThreadedRenderer_setupShadersDiskCache(JNIEnv* env, job
const char* const kClassPathName = "android/view/ThreadedRenderer";

static const JNINativeMethod gMethods[] = {
    { "nSupportsOpenGL", "!()Z", (void*) android_view_ThreadedRenderer_supportsOpenGL },
    { "nSetAtlas", "(JLandroid/view/GraphicBuffer;[J)V",   (void*) android_view_ThreadedRenderer_setAtlas },
    { "nSetProcessStatsBuffer", "(JI)V", (void*) android_view_ThreadedRenderer_setProcessStatsBuffer },
    { "nCreateRootRenderNode", "()J", (void*) android_view_ThreadedRenderer_createRootRenderNode },