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

Commit 3e049d6b authored by Ady Abraham's avatar Ady Abraham Committed by android-build-merger
Browse files

Merge "SurfaceFlinger: add explicit register for DISPLAY_EVENT_CONFIG_CHANGED"...

Merge "SurfaceFlinger: add explicit register for DISPLAY_EVENT_CONFIG_CHANGED" into qt-r1-dev am: aacc75c2
am: ba225e3f

Change-Id: I89a902e389ce521cf8e7f320f68a1dc0005fc8de
parents 942a9aab ba225e3f
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -32,10 +32,11 @@ namespace android {

// ---------------------------------------------------------------------------

DisplayEventReceiver::DisplayEventReceiver(ISurfaceComposer::VsyncSource vsyncSource) {
DisplayEventReceiver::DisplayEventReceiver(ISurfaceComposer::VsyncSource vsyncSource,
                                           ISurfaceComposer::ConfigChanged configChanged) {
    sp<ISurfaceComposer> sf(ComposerService::getComposerService());
    if (sf != nullptr) {
        mEventConnection = sf->createDisplayEventConnection(vsyncSource);
        mEventConnection = sf->createDisplayEventConnection(vsyncSource, configChanged);
        if (mEventConnection != nullptr) {
            mDataChannel = std::make_unique<gui::BitTube>();
            mEventConnection->stealReceiveChannel(mDataChannel.get());
+8 −4
Original line number Diff line number Diff line
@@ -278,8 +278,8 @@ public:
        return NO_ERROR;
    }

    virtual sp<IDisplayEventConnection> createDisplayEventConnection(VsyncSource vsyncSource)
    {
    virtual sp<IDisplayEventConnection> createDisplayEventConnection(VsyncSource vsyncSource,
                                                                     ConfigChanged configChanged) {
        Parcel data, reply;
        sp<IDisplayEventConnection> result;
        int err = data.writeInterfaceToken(
@@ -288,6 +288,7 @@ public:
            return result;
        }
        data.writeInt32(static_cast<int32_t>(vsyncSource));
        data.writeInt32(static_cast<int32_t>(configChanged));
        err = remote()->transact(
                BnSurfaceComposer::CREATE_DISPLAY_EVENT_CONNECTION,
                data, &reply);
@@ -1155,8 +1156,11 @@ status_t BnSurfaceComposer::onTransact(
        }
        case CREATE_DISPLAY_EVENT_CONNECTION: {
            CHECK_INTERFACE(ISurfaceComposer, data, reply);
            sp<IDisplayEventConnection> connection(createDisplayEventConnection(
                    static_cast<ISurfaceComposer::VsyncSource>(data.readInt32())));
            auto vsyncSource = static_cast<ISurfaceComposer::VsyncSource>(data.readInt32());
            auto configChanged = static_cast<ISurfaceComposer::ConfigChanged>(data.readInt32());

            sp<IDisplayEventConnection> connection(
                    createDisplayEventConnection(vsyncSource, configChanged));
            reply->writeStrongBinder(IInterface::asBinder(connection));
            return NO_ERROR;
        }
+4 −1
Original line number Diff line number Diff line
@@ -88,10 +88,13 @@ public:
     * DisplayEventReceiver creates and registers an event connection with
     * SurfaceFlinger. VSync events are disabled by default. Call setVSyncRate
     * or requestNextVsync to receive them.
     * To receive Config Changed events specify this in the constructor.
     * Other events start being delivered immediately.
     */
    explicit DisplayEventReceiver(
            ISurfaceComposer::VsyncSource vsyncSource = ISurfaceComposer::eVsyncSourceApp);
            ISurfaceComposer::VsyncSource vsyncSource = ISurfaceComposer::eVsyncSourceApp,
            ISurfaceComposer::ConfigChanged configChanged =
                    ISurfaceComposer::eConfigChangedSuppress);

    /*
     * ~DisplayEventReceiver severs the connection with SurfaceFlinger, new events
+4 −1
Original line number Diff line number Diff line
@@ -90,6 +90,8 @@ public:
        eVsyncSourceSurfaceFlinger = 1
    };

    enum ConfigChanged { eConfigChangedSuppress = 0, eConfigChangedDispatch = 1 };

    /*
     * Create a connection with SurfaceFlinger.
     */
@@ -97,7 +99,8 @@ public:

    /* return an IDisplayEventConnection */
    virtual sp<IDisplayEventConnection> createDisplayEventConnection(
            VsyncSource vsyncSource = eVsyncSourceApp) = 0;
            VsyncSource vsyncSource = eVsyncSourceApp,
            ConfigChanged configChanged = eConfigChangedSuppress) = 0;

    /* create a virtual display
     * requires ACCESS_SURFACE_FLINGER permission.
+2 −2
Original line number Diff line number Diff line
@@ -548,8 +548,8 @@ public:
    }

    sp<ISurfaceComposerClient> createConnection() override { return nullptr; }
    sp<IDisplayEventConnection> createDisplayEventConnection(ISurfaceComposer::VsyncSource)
            override {
    sp<IDisplayEventConnection> createDisplayEventConnection(
            ISurfaceComposer::VsyncSource, ISurfaceComposer::ConfigChanged) override {
        return nullptr;
    }
    sp<IBinder> createDisplay(const String8& /*displayName*/,
Loading