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

Commit baf1c68c authored by Mathias Agopian's avatar Mathias Agopian Committed by Android (Google) Code Review
Browse files

Merge "fix an issue with vsync event delivery"

parents 7fc1fc1b 3cf199ae
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -63,7 +63,9 @@ public:
public:
    /*
     * DisplayEventReceiver creates and registers an event connection with
     * SurfaceFlinger. Events start being delivered immediately.
     * SurfaceFlinger. VSync events are disabled by default. Call setVSyncRate
     * or requestNextVsync to receive them.
     * Other events start being delivered immediately.
     */
    DisplayEventReceiver();

+3 −7
Original line number Diff line number Diff line
@@ -151,9 +151,9 @@ bool EventThread::threadLoop() {
            mLastVSyncTimestamp = timestamp;

            // now see if we still need to report this VSYNC event
            bool reportVsync = false;
            size_t count = mDisplayEventConnections.size();
            const size_t count = mDisplayEventConnections.size();
            for (size_t i=0 ; i<count ; i++) {
                bool reportVsync = false;
                const ConnectionInfo& info(
                        mDisplayEventConnections.valueAt(i));
                if (info.count >= 1) {
@@ -174,11 +174,7 @@ bool EventThread::threadLoop() {
                    displayEventConnections.add(mDisplayEventConnections.keyAt(i));
                }
            }

            if (reportVsync) {
                break;
            }
        } while (true);
        } while (!displayEventConnections.size());

        // dispatch vsync events to listeners...
        vsync.header.type = DisplayEventReceiver::DISPLAY_EVENT_VSYNC;
+2 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ int main(int argc, char** argv)
    loop->addFd(myDisplayEvent.getFd(), 0, ALOOPER_EVENT_INPUT, receiver,
            &myDisplayEvent);

    myDisplayEvent.setVsyncRate(1);

    do {
        //printf("about to poll...\n");
        int32_t ret = loop->pollOnce(-1);