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

Commit 0b2c8df7 authored by John Reck's avatar John Reck
Browse files

Fix layer recycling for GLRenderer

 Bug: 13007905

Change-Id: I1589f2bb14429099e391c03d7dfb1650da145f28
parent 587f43d8
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -500,6 +500,10 @@ public class GLRenderer extends HardwareRenderer {
        if (mGlCanvas != null) {
            mGlCanvas.cancelLayerUpdate(layer);
        }
        if (Looper.myLooper() == Looper.getMainLooper() && validate()) {
            long backingLayer = layer.detachBackingLayer();
            nDestroyLayer(backingLayer);
        }
        mAttachedLayers.remove(layer);
    }

@@ -1472,6 +1476,8 @@ public class GLRenderer extends HardwareRenderer {
     */
    static native boolean isBackBufferPreserved();

    static native void nDestroyLayer(long layerPtr);

    class DrawPerformanceDataProvider extends GraphDataProvider {
        private final int mGraphType;

+9 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@

#include <Caches.h>
#include <Extensions.h>
#include <LayerRenderer.h>

#ifdef USE_OPENGL_RENDERER
    EGLAPI void EGLAPIENTRY eglBeginFrame(EGLDisplay dpy, EGLSurface surface);
@@ -131,6 +132,13 @@ static jlong android_view_GLRenderer_getSystemTime(JNIEnv* env, jobject clazz) {
    return systemTime(SYSTEM_TIME_MONOTONIC);
}

static void android_view_GLRenderer_destroyLayer(JNIEnv* env, jobject clazz,
        jlong layerPtr) {
    using namespace android::uirenderer;
    Layer* layer = reinterpret_cast<Layer*>(layerPtr);
    LayerRenderer::destroyLayer(layer);
}

#endif // USE_OPENGL_RENDERER

// ----------------------------------------------------------------------------
@@ -160,6 +168,7 @@ static JNINativeMethod gMethods[] = {
    { "beginFrame",            "([I)V", (void*) android_view_GLRenderer_beginFrame },

    { "getSystemTime",         "()J",   (void*) android_view_GLRenderer_getSystemTime },
    { "nDestroyLayer",         "(J)V",  (void*) android_view_GLRenderer_destroyLayer },
#endif

    { "setupShadersDiskCache", "(Ljava/lang/String;)V",