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

Commit 4e5da97f authored by Ady Abraham's avatar Ady Abraham
Browse files

cleanup unify_refresh_rate_callbacks flag

Fixes: 436397800
Bug: 399482301
Test: presubmit
Flag: EXEMPT flag cleanup
Change-Id: I73202e5b549571ab3654a5bb975998ce88a38a06
parent 770058f6
Loading
Loading
Loading
Loading
+0 −44
Original line number Diff line number Diff line
@@ -291,23 +291,6 @@ public abstract class DisplayEventReceiver {
    public void onHotplugConnectionError(long timestampNanos, int connectionError) {
    }

    /**
     * Called when a display mode changed event is received.
     *
     * @param timestampNanos The timestamp of the event, in the {@link System#nanoTime()}
     * timebase.
     * @param physicalDisplayId Stable display ID that uniquely describes a (display, port) pair.
     * @param modeId The new mode ID
     * @param renderPeriod The render frame period, which is a multiple of the mode's vsync period
     * @param appVsyncOffsetNanos The offset from the vsync of the display refresh rate.
     * @param presentationDeadlineNanos The time in nanoseconds by which the frame should be ready
     *                             from the target vsync, if target vsync is N then the frame
     *                             should be ready by N - presentationDeadlineNanos.
     */
    public void onModeChanged(long timestampNanos, long physicalDisplayId, int modeId,
            long renderPeriod, long appVsyncOffsetNanos, long presentationDeadlineNanos) {
    }

    /**
     * Called when a display mode and frame rate overrides changed event is received.
     *
@@ -372,18 +355,6 @@ public abstract class DisplayEventReceiver {
        }
    }

    /**
     * Called when frame rate override event is received.
     *
     * @param timestampNanos The timestamp of the event, in the {@link System#nanoTime()}
     * timebase.
     * @param physicalDisplayId Stable display ID that uniquely describes a (display, port) pair.
     * @param overrides The mappings from uid to frame rates
     */
    public void onFrameRateOverridesChanged(long timestampNanos, long physicalDisplayId,
            FrameRateOverride[] overrides) {
    }

    /**
     * Schedules a single vertical sync pulse to be delivered when the next
     * display frame begins.
@@ -423,14 +394,6 @@ public abstract class DisplayEventReceiver {
        onHotplugConnectionError(timestampNanos, connectionError);
    }

    // Called from native code.
    @SuppressWarnings("unused")
    private void dispatchModeChanged(long timestampNanos, long physicalDisplayId, int modeId,
            long renderPeriod, long appVsyncOffsetNanos, long presentationDeadlineNanos) {
        onModeChanged(timestampNanos, physicalDisplayId, modeId, renderPeriod,
                appVsyncOffsetNanos, presentationDeadlineNanos);
    }

    // Called from native code.
    @SuppressWarnings("unused")
    private void dispatchModeChangedWithFrameRateOverrides(long timestampNanos,
@@ -448,13 +411,6 @@ public abstract class DisplayEventReceiver {
        onModeRejected(physicalDisplayId, modeId);
    }

    // Called from native code.
    @SuppressWarnings("unused")
    private void dispatchFrameRateOverrides(long timestampNanos, long physicalDisplayId,
            FrameRateOverride[] overrides) {
        onFrameRateOverridesChanged(timestampNanos, physicalDisplayId, overrides);
    }

    // Called from native code.
    @SuppressWarnings("unused")
    private void dispatchHdcpLevelsChanged(long physicalDisplayId, int connectedLevel,
+0 −49
Original line number Diff line number Diff line
@@ -40,10 +40,8 @@ static struct {
    jmethodID dispatchVsync;
    jmethodID dispatchHotplug;
    jmethodID dispatchHotplugConnectionError;
    jmethodID dispatchModeChanged;
    jmethodID dispatchModeChangedWithFrameRateOverrides;
    jmethodID dispatchModeRejected;
    jmethodID dispatchFrameRateOverrides;
    jmethodID dispatchHdcpLevelsChanged;

    struct {
@@ -129,12 +127,7 @@ private:
            nsecs_t appVsyncOffset, nsecs_t presentationDeadline,
            std::vector<FrameRateOverride> overrides,
            std::vector<SupportedRefreshRate> supportedRefreshRates) override;
    void dispatchModeChanged(nsecs_t timestamp, PhysicalDisplayId displayId, int32_t modeId,
                             nsecs_t renderPeriod, nsecs_t appVsyncOffset,
                             nsecs_t presentationDeadline) override;
    void dispatchModeRejected(PhysicalDisplayId displayId, int32_t modeId) override;
    void dispatchFrameRateOverrides(nsecs_t timestamp, PhysicalDisplayId displayId,
                                    std::vector<FrameRateOverride> overrides) override;
    void dispatchNullEvent(nsecs_t timestamp, PhysicalDisplayId displayId) override {}
    void dispatchHdcpLevelsChanged(PhysicalDisplayId displayId, int connectedLevel,
                                   int maxLevel) override;
@@ -294,24 +287,6 @@ void NativeDisplayEventReceiver::dispatchHotplugConnectionError(nsecs_t timestam
    mMessageQueue->raiseAndClearException(env, "dispatchHotplugConnectionError");
}

void NativeDisplayEventReceiver::dispatchModeChanged(nsecs_t timestamp, PhysicalDisplayId displayId,
                                                     int32_t modeId, nsecs_t renderPeriod,
                                                     nsecs_t appVsyncOffset,
                                                     nsecs_t presentationDeadline) {
    JNIEnv* env = AndroidRuntime::getJNIEnv();

    ScopedLocalRef<jobject> receiverObj(env, GetReferent(env, mReceiverWeakGlobal));
    if (receiverObj.get()) {
        ALOGV("receiver %p ~ Invoking mode changed handler.", this);
        env->CallVoidMethod(receiverObj.get(), gDisplayEventReceiverClassInfo.dispatchModeChanged,
                            timestamp, displayId.value, modeId, renderPeriod, appVsyncOffset,
                            presentationDeadline);
        ALOGV("receiver %p ~ Returned from mode changed handler.", this);
    }

    mMessageQueue->raiseAndClearException(env, "dispatchModeChanged");
}

void NativeDisplayEventReceiver::dispatchModeChangedWithFrameRateOverrides(
        nsecs_t timestamp, PhysicalDisplayId displayId, int32_t modeId, nsecs_t renderPeriod,
        nsecs_t appVsyncOffset, nsecs_t presentationDeadline,
@@ -348,23 +323,6 @@ void NativeDisplayEventReceiver::dispatchModeRejected(PhysicalDisplayId displayI
    mMessageQueue->raiseAndClearException(env, "dispatchModeRejected");
}

void NativeDisplayEventReceiver::dispatchFrameRateOverrides(
        nsecs_t timestamp, PhysicalDisplayId displayId, std::vector<FrameRateOverride> overrides) {
    JNIEnv* env = AndroidRuntime::getJNIEnv();

    ScopedLocalRef<jobject> receiverObj(env, GetReferent(env, mReceiverWeakGlobal));
    if (receiverObj.get()) {
        ALOGV("receiver %p ~ Invoking FrameRateOverride handler.", this);
        auto frameRateOverrideArray = getFrameRateOverrides(overrides, env);
        env->CallVoidMethod(receiverObj.get(),
                            gDisplayEventReceiverClassInfo.dispatchFrameRateOverrides, timestamp,
                            displayId.value, frameRateOverrideArray);
        ALOGV("receiver %p ~ Returned from FrameRateOverride handler.", this);
    }

    mMessageQueue->raiseAndClearException(env, "dispatchFrameRateOverrides");
}

void NativeDisplayEventReceiver::dispatchHdcpLevelsChanged(PhysicalDisplayId displayId,
                                                           int connectedLevel, int maxLevel) {
    JNIEnv* env = AndroidRuntime::getJNIEnv();
@@ -465,9 +423,6 @@ int register_android_view_DisplayEventReceiver(JNIEnv* env) {
    gDisplayEventReceiverClassInfo.dispatchHotplugConnectionError =
            GetMethodIDOrDie(env, gDisplayEventReceiverClassInfo.clazz,
                             "dispatchHotplugConnectionError", "(JI)V");
    gDisplayEventReceiverClassInfo.dispatchModeChanged =
            GetMethodIDOrDie(env, gDisplayEventReceiverClassInfo.clazz, "dispatchModeChanged",
                             "(JJIJJJ)V");
    gDisplayEventReceiverClassInfo.dispatchModeChangedWithFrameRateOverrides =
            GetMethodIDOrDie(env, gDisplayEventReceiverClassInfo.clazz,
                             "dispatchModeChangedWithFrameRateOverrides",
@@ -475,10 +430,6 @@ int register_android_view_DisplayEventReceiver(JNIEnv* env) {
    gDisplayEventReceiverClassInfo.dispatchModeRejected =
            GetMethodIDOrDie(env, gDisplayEventReceiverClassInfo.clazz, "dispatchModeRejected",
                             "(JI)V");
    gDisplayEventReceiverClassInfo.dispatchFrameRateOverrides =
            GetMethodIDOrDie(env, gDisplayEventReceiverClassInfo.clazz,
                             "dispatchFrameRateOverrides",
                             "(JJ[Landroid/view/DisplayEventReceiver$FrameRateOverride;)V");
    gDisplayEventReceiverClassInfo.dispatchHdcpLevelsChanged =
            GetMethodIDOrDie(env, gDisplayEventReceiverClassInfo.clazz, "dispatchHdcpLevelsChanged",
                             "(JII)V");
+10 −45
Original line number Diff line number Diff line
@@ -1240,29 +1240,18 @@ final class LocalDisplayAdapter extends DisplayAdapter {

        private void onActiveDisplayModeChangedLocked(int sfModeId, float renderFrameRate,
                long appVsyncOffsetNanos, long presentationDeadlineNanos,
                @Nullable float[] supportedRefreshRates) {
            if (updateActiveModeAndFrameOverrideChangedLocked(sfModeId, renderFrameRate,
                    appVsyncOffsetNanos, presentationDeadlineNanos, mFrameRateOverrides,
                    supportedRefreshRates == null
                            ? mSupportedRefreshRates
                            : supportedRefreshRates)) {
                updateDeviceInfoLocked();
            }
                float[] supportedRefreshRates) {
            onModeAndFrameRateOverridesChangedLocked(sfModeId, renderFrameRate, appVsyncOffsetNanos,
                    presentationDeadlineNanos, mFrameRateOverrides, supportedRefreshRates);
        }

        private void onFrameRateOverridesChangedLocked(
                DisplayEventReceiver.FrameRateOverride[] overrides,
                @Nullable float[] supportedRefreshRates) {
            if (updateActiveModeAndFrameOverrideChangedLocked(mActiveSfDisplayMode.id,
                float[] supportedRefreshRates) {
            onModeAndFrameRateOverridesChangedLocked(mActiveSfDisplayMode.id,
                    mActiveRenderFrameRate, mAppVsyncOffsetNanos, mPresentationDeadlineNanos,
                    overrides,
                    supportedRefreshRates == null
                            ? mSupportedRefreshRates
                            : supportedRefreshRates)) {
                updateDeviceInfoLocked();
                    overrides, supportedRefreshRates);
        }
        }

        private void onModeAndFrameRateOverridesChangedLocked(
                int sfModeId, float renderFrameRate,
                long appVsyncOffsetNanos, long presentationDeadlineNanos,
@@ -1637,12 +1626,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {
    public interface DisplayEventListener {
        void onHotplug(long timestampNanos, long physicalDisplayId, boolean connected);
        void onHotplugConnectionError(long timestampNanos, int connectionError);
        void onModeChanged(long timestampNanos, long physicalDisplayId, int modeId,
                long renderPeriod, long appVsyncOffsetNanos, long presentationDeadlineNanos,
                @Nullable float[] supportedRefreshRates);
        void onFrameRateOverridesChanged(long timestampNanos, long physicalDisplayId,
                DisplayEventReceiver.FrameRateOverride[] overrides,
                @Nullable float[] supportedRefreshRates);
        void onModeAndFrameRateOverridesChanged(long timestampNanos, long physicalDisplayId,
                int modeId,  long renderPeriod, long appVsyncOffsetNanos,
                long presentationDeadlineNanos, DisplayEventReceiver.FrameRateOverride[] overrides,
@@ -1671,14 +1654,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {
            mListener.onHotplugConnectionError(timestampNanos, errorCode);
        }

        @Override
        public void onModeChanged(long timestampNanos, long physicalDisplayId, int modeId,
                long renderPeriod, long appVsyncOffsetNanos, long presentationDeadlineNanos) {
            mListener.onModeChanged(timestampNanos, physicalDisplayId, modeId,
                    renderPeriod, appVsyncOffsetNanos, presentationDeadlineNanos,
                    /*supportedRefreshRates*/ null);
        }

        public void onModeAndFrameRateOverridesChanged(long timestampNanos, long physicalDisplayId,
                int modeId,  long renderPeriod, long appVsyncOffsetNanos,
                long presentationDeadlineNanos,
@@ -1689,13 +1664,6 @@ final class LocalDisplayAdapter extends DisplayAdapter {
                    supportedRefreshRates);
        }

        @Override
        public void onFrameRateOverridesChanged(long timestampNanos, long physicalDisplayId,
                DisplayEventReceiver.FrameRateOverride[] overrides) {
            mListener.onFrameRateOverridesChanged(timestampNanos, physicalDisplayId, overrides,
                    /*supportedRefreshRates*/ null);
        }

        @Override
        public void onHdcpLevelsChanged(long physicalDisplayId, int connectedLevel, int maxLevel) {
            mListener.onHdcpLevelsChanged(physicalDisplayId, connectedLevel, maxLevel);
@@ -1724,11 +1692,9 @@ final class LocalDisplayAdapter extends DisplayAdapter {

            mDisplayNotificationManager.onHotplugConnectionError();
        }

        @Override
        public void onModeChanged(long timestampNanos, long physicalDisplayId, int modeId,
        private void onModeChanged(long timestampNanos, long physicalDisplayId, int modeId,
                long renderPeriod, long appVsyncOffsetNanos, long presentationDealineNanos,
                @Nullable float[] supportedRefreshRates) {
                float[] supportedRefreshRates) {
            if (DEBUG) {
                Slog.d(TAG, "onModeChanged("
                        + "timestampNanos=" + timestampNanos
@@ -1756,10 +1722,9 @@ final class LocalDisplayAdapter extends DisplayAdapter {
            }
        }

        @Override
        public void onFrameRateOverridesChanged(long timestampNanos, long physicalDisplayId,
        private void onFrameRateOverridesChanged(long timestampNanos, long physicalDisplayId,
                DisplayEventReceiver.FrameRateOverride[] overrides,
                @Nullable float[] supportedRefreshRates) {
                float[] supportedRefreshRates) {
            if (DEBUG) {
                Slog.d(TAG, "onFrameRateOverrideChanged(timestampNanos=" + timestampNanos
                        + ", physicalDisplayId=" + physicalDisplayId + " overrides="
+3 −11
Original line number Diff line number Diff line
@@ -885,9 +885,10 @@ public class LocalDisplayAdapterTest {
        long newAppVsyncOffsetNanos = 400;
        long newPresentationDeadlineNanos = 500;

        mInjector.getTransmitter().sendOnModeChanged(display,
        mInjector.getTransmitter().sendOnModeAndFrameRateOverridesChanged(display,
                1, (long) displayMode2.peakRefreshRate, newAppVsyncOffsetNanos,
                newPresentationDeadlineNanos);
                newPresentationDeadlineNanos, new FrameRateOverride[0],
                /*supportedRefreshRates*/ new float[0]);
        waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);
        assertTrue(mListener.traversalRequested);

@@ -1934,15 +1935,6 @@ public class LocalDisplayAdapterTest {
            waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);
        }

        public void sendOnModeChanged(FakeDisplay display, int modeId,
                long renderPeriod, long appVsyncOffsetNanos, long presentationDeadlineNanos)
                throws InterruptedException {
            mHandler.post(() -> mListener.onModeChanged(/* timestampNanos = */ 0,
                    display.address.getPhysicalDisplayId(), modeId, renderPeriod,
                    appVsyncOffsetNanos, presentationDeadlineNanos, /*supportedRefreshRate*/ null));
            waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);
        }

        public void sendOnModeAndFrameRateOverridesChanged(FakeDisplay display, int modeId,
                long renderPeriod, long appVsyncOffsetNanos, long presentationDeadlineNanos,
                FrameRateOverride[] frameRateOverrides, float[] supportedRefreshRates)