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

Commit a71bfbe8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix broken synchronization in CombinedMessageQueue:dispatchEvents" into main

parents 7d42ca60 eb9b9802
Loading
Loading
Loading
Loading
+20 −7
Original line number Diff line number Diff line
@@ -426,6 +426,18 @@ public final class MessageQueue {
        // Update the file descriptor record if the listener changed the set of
        // events to watch and the listener itself hasn't been updated since.
        if (newWatchedEvents != oldWatchedEvents) {
            if (mUseConcurrent) {
                synchronized (mFileDescriptorRecordsLock) {
                    int index = mFileDescriptorRecords.indexOfKey(fd);
                    if (index >= 0 && mFileDescriptorRecords.valueAt(index) == record
                            && record.mSeq == seq) {
                        record.mEvents = newWatchedEvents;
                        if (newWatchedEvents == 0) {
                            mFileDescriptorRecords.removeAt(index);
                        }
                    }
                }
            } else {
                synchronized (this) {
                    int index = mFileDescriptorRecords.indexOfKey(fd);
                    if (index >= 0 && mFileDescriptorRecords.valueAt(index) == record
@@ -437,6 +449,7 @@ public final class MessageQueue {
                    }
                }
            }
        }

        // Return the new set of events to watch for native code to take care of.
        return newWatchedEvents;