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

Commit 4406345c authored by Jesse Hall's avatar Jesse Hall
Browse files

Disable GLES20Canvas on emu w/o native GL

When the emulator is run without '-gpu on', GLES20 isn't supported,
so claiming GLES20Canvas is available will lead to catastrophic
failure. This change makes GLES20Canvas available when compiled in
and either not running on the emulator, or running on the emulator
with native GL acceleration enabled.

Change-Id: I89c944f9e3c9585224f5aa0877335ea48ea4a468
parent 335c4e6c
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <nativehelper/JNIHelp.h>
#include <android_runtime/AndroidRuntime.h>
#include <android_runtime/android_graphics_SurfaceTexture.h>
#include <cutils/properties.h>
#include <utils/ResourceTypes.h>

#include <gui/SurfaceTexture.h>
@@ -736,7 +737,15 @@ static jboolean android_view_GLES20Canvas_copyLayer(JNIEnv* env, jobject clazz,

static jboolean android_view_GLES20Canvas_isAvailable(JNIEnv* env, jobject clazz) {
#ifdef USE_OPENGL_RENDERER
    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 to 1 when hardware GLES is
    // enabled, 0 otherwise. On old emulator versions it will be undefined.
    property_get("ro.kernel.qemu.gles", prop, "0");
    return atoi(prop) == 1 ? JNI_TRUE : JNI_FALSE;
#else
    return JNI_FALSE;
#endif