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

Commit ee26d1ef authored by John Reck's avatar John Reck Committed by Android (Google) Code Review
Browse files

Merge "Remove legacy callDrawGlFunction2 from HWUI"

parents 0139f3fe aa4c9822
Loading
Loading
Loading
Loading
+10 −19
Original line number Original line Diff line number Diff line
@@ -1227,28 +1227,19 @@ public final class ViewRootImpl implements ViewParent,
        }
        }
    }
    }


    @UnsupportedAppUsage
    /**
    public void detachFunctor(long functor) {
     * Does nothing; Here only because of @UnsupportedAppUsage
        if (mAttachInfo.mThreadedRenderer != null) {
     */
            // Fence so that any pending invokeFunctor() messages will be processed
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R,
            // before we return from detachFunctor.
            publicAlternatives = "Use {@link android.webkit.WebView} instead")
            mAttachInfo.mThreadedRenderer.stopDrawing();
    public void detachFunctor(long functor) { }
        }
    }


    /**
    /**
     * Schedules the functor for execution in either kModeProcess or
     * Does nothing; Here only because of @UnsupportedAppUsage
     * kModeProcessNoContext, depending on whether or not there is an EGLContext.
     *
     * @param functor The native functor to invoke
     * @param waitForCompletion If true, this will not return until the functor
     *                          has invoked. If false, the functor may be invoked
     *                          asynchronously.
     */
     */
    @UnsupportedAppUsage
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R,
    public static void invokeFunctor(long functor, boolean waitForCompletion) {
            publicAlternatives = "Use {@link android.webkit.WebView} instead")
        ThreadedRenderer.invokeFunctor(functor, waitForCompletion);
    public static void invokeFunctor(long functor, boolean waitForCompletion) { }
    }


    /**
    /**
     * @param animator animator to register with the hardware renderer
     * @param animator animator to register with the hardware renderer
+8 −40
Original line number Original line Diff line number Diff line
@@ -77,73 +77,41 @@ public final class WebViewDelegate {
    }
    }


    /**
    /**
     * Returns {@code true} if the draw GL functor can be invoked (see {@link #invokeDrawGlFunctor})
     * Throws {@link UnsupportedOperationException}
     * and {@code false} otherwise.
     *
     * @deprecated Use {@link #drawWebViewFunctor(Canvas, int)}
     * @deprecated Use {@link #drawWebViewFunctor(Canvas, int)}
     */
     */
    @Deprecated
    @Deprecated
    public boolean canInvokeDrawGlFunctor(View containerView) {
    public boolean canInvokeDrawGlFunctor(View containerView) {
        return true;
        throw new UnsupportedOperationException();
    }
    }


    /**
    /**
     * Invokes the draw GL functor. If waitForCompletion is {@code false} the functor
     * Throws {@link UnsupportedOperationException}
     * may be invoked asynchronously.
     *
     * @param nativeDrawGLFunctor the pointer to the native functor that implements
     *        system/core/include/utils/Functor.h
     * @deprecated Use {@link #drawWebViewFunctor(Canvas, int)}
     * @deprecated Use {@link #drawWebViewFunctor(Canvas, int)}
     */
     */
    @Deprecated
    @Deprecated
    public void invokeDrawGlFunctor(View containerView, long nativeDrawGLFunctor,
    public void invokeDrawGlFunctor(View containerView, long nativeDrawGLFunctor,
            boolean waitForCompletion) {
            boolean waitForCompletion) {
        ViewRootImpl.invokeFunctor(nativeDrawGLFunctor, waitForCompletion);
        throw new UnsupportedOperationException();
    }
    }


    /**
    /**
     * Calls the function specified with the nativeDrawGLFunctor functor pointer. This
     * Throws {@link UnsupportedOperationException}
     * functionality is used by the WebView for calling into their renderer from the
     * framework display lists.
     *
     * @param canvas a hardware accelerated canvas (see {@link Canvas#isHardwareAccelerated()})
     * @param nativeDrawGLFunctor the pointer to the native functor that implements
     *        system/core/include/utils/Functor.h
     * @throws IllegalArgumentException if the canvas is not hardware accelerated
     * @deprecated Use {@link #drawWebViewFunctor(Canvas, int)}
     * @deprecated Use {@link #drawWebViewFunctor(Canvas, int)}
     */
     */
    @Deprecated
    @Deprecated
    public void callDrawGlFunction(Canvas canvas, long nativeDrawGLFunctor) {
    public void callDrawGlFunction(Canvas canvas, long nativeDrawGLFunctor) {
        if (!(canvas instanceof RecordingCanvas)) {
        throw new UnsupportedOperationException();
            // Canvas#isHardwareAccelerated() is only true for subclasses of HardwareCanvas.
            throw new IllegalArgumentException(canvas.getClass().getName()
                    + " is not a DisplayList canvas");
        }
        ((RecordingCanvas) canvas).drawGLFunctor2(nativeDrawGLFunctor, null);
    }
    }


    /**
    /**
     * Calls the function specified with the nativeDrawGLFunctor functor pointer. This
     * Throws {@link UnsupportedOperationException}
     * functionality is used by the WebView for calling into their renderer from the
     * framework display lists.
     *
     * @param canvas a hardware accelerated canvas (see {@link Canvas#isHardwareAccelerated()})
     * @param nativeDrawGLFunctor the pointer to the native functor that implements
     *        system/core/include/utils/Functor.h
     * @param releasedRunnable Called when this nativeDrawGLFunctor is no longer referenced by this
     *        canvas, so is safe to be destroyed.
     * @throws IllegalArgumentException if the canvas is not hardware accelerated
     * @deprecated Use {@link #drawWebViewFunctor(Canvas, int)}
     * @deprecated Use {@link #drawWebViewFunctor(Canvas, int)}
     */
     */
    @Deprecated
    @Deprecated
    public void callDrawGlFunction(@NonNull Canvas canvas, long nativeDrawGLFunctor,
    public void callDrawGlFunction(@NonNull Canvas canvas, long nativeDrawGLFunctor,
            @Nullable Runnable releasedRunnable) {
            @Nullable Runnable releasedRunnable) {
        if (!(canvas instanceof RecordingCanvas)) {
        throw new UnsupportedOperationException();
            // Canvas#isHardwareAccelerated() is only true for subclasses of HardwareCanvas.
            throw new IllegalArgumentException(canvas.getClass().getName()
                    + " is not a DisplayList canvas");
        }
        ((RecordingCanvas) canvas).drawGLFunctor2(nativeDrawGLFunctor, releasedRunnable);
    }
    }


    /**
    /**
+0 −7
Original line number Original line Diff line number Diff line
@@ -872,11 +872,6 @@ public class HardwareRenderer {
        }
        }
    }
    }


    /** @hide */
    public static void invokeFunctor(long functor, boolean waitForCompletion) {
        nInvokeFunctor(functor, waitForCompletion);
    }

    /**
    /**
     * b/68769804: For low FPS experiments.
     * b/68769804: For low FPS experiments.
     *
     *
@@ -1246,8 +1241,6 @@ public class HardwareRenderer {


    private static native void nRegisterVectorDrawableAnimator(long rootRenderNode, long animator);
    private static native void nRegisterVectorDrawableAnimator(long rootRenderNode, long animator);


    private static native void nInvokeFunctor(long functor, boolean waitForCompletion);

    private static native long nCreateTextureLayer(long nativeProxy);
    private static native long nCreateTextureLayer(long nativeProxy);


    private static native void nBuildLayer(long nativeProxy, long node);
    private static native void nBuildLayer(long nativeProxy, long node);
+1 −44
Original line number Original line Diff line number Diff line
@@ -17,11 +17,9 @@
package android.graphics;
package android.graphics;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.util.Pools.SynchronizedPool;
import android.util.Pools.SynchronizedPool;


import dalvik.annotation.optimization.CriticalNative;
import dalvik.annotation.optimization.CriticalNative;
import dalvik.annotation.optimization.FastNative;


/**
/**
 * A Canvas implementation that records view system drawing operations for deferred rendering.
 * A Canvas implementation that records view system drawing operations for deferred rendering.
@@ -146,43 +144,9 @@ public final class RecordingCanvas extends BaseRecordingCanvas {
    }
    }


    ///////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////
    // Functor
    // WebView
    ///////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////


    /**
     * Records the functor specified with the drawGLFunction function pointer. This is
     * functionality used by webview for calling into their renderer from our display lists.
     *
     * @param drawGLFunction A native function pointer
     *
     * @hide
     * @deprecated Use {@link #drawWebViewFunctor(int)}
     */
    @Deprecated
    public void callDrawGLFunction2(long drawGLFunction) {
        nCallDrawGLFunction(mNativeCanvasWrapper, drawGLFunction, null);
    }

    /**
     * Records the functor specified with the drawGLFunction function pointer. This is
     * functionality used by webview for calling into their renderer from our display lists.
     *
     * @param drawGLFunctor A native function pointer
     * @param releasedCallback Called when the display list is destroyed, and thus
     * the functor is no longer referenced by this canvas's display list.
     *
     * NOTE: The callback does *not* necessarily mean that there are no longer
     * any references to the functor, just that the reference from this specific
     * canvas's display list has been released.
     *
     * @hide
     * @deprecated Use {@link #drawWebViewFunctor(int)}
     */
    @Deprecated
    public void drawGLFunctor2(long drawGLFunctor, @Nullable Runnable releasedCallback) {
        nCallDrawGLFunction(mNativeCanvasWrapper, drawGLFunctor, releasedCallback);
    }

    /**
    /**
     * Calls the provided functor that was created via WebViewFunctor_create()
     * Calls the provided functor that was created via WebViewFunctor_create()
     * @hide
     * @hide
@@ -273,13 +237,6 @@ public final class RecordingCanvas extends BaseRecordingCanvas {
    }
    }




    // ------------------ Fast JNI ------------------------

    @FastNative
    private static native void nCallDrawGLFunction(long renderer,
            long drawGLFunction, Runnable releasedCallback);


    // ------------------ Critical JNI ------------------------
    // ------------------ Critical JNI ------------------------


    @CriticalNative
    @CriticalNative
+0 −32
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <utils/Functor.h>
#include <utils/RefBase.h>

namespace android {
namespace uirenderer {

class GlFunctorLifecycleListener : public VirtualLightRefBase {
public:
    virtual ~GlFunctorLifecycleListener() {}
    virtual void onGlFunctorReleased(Functor* functor) = 0;
};

}  // namespace uirenderer
}  // namespace android
Loading