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

Commit c63d2486 authored by Derek Sollenberger's avatar Derek Sollenberger Committed by Android (Google) Code Review
Browse files

Merge "Remove isAvailable() from DisplayListCanvas."

parents 8bc8bb22 f64c34e7
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 },