Loading core/java/android/os/DeliQueue/MessageQueue.java +10 −9 Original line number Diff line number Diff line Loading @@ -758,7 +758,8 @@ public final class MessageQueue { public void removeSyncBarrier(int token) { final MatchBarrierToken matchBarrierToken = new MatchBarrierToken(token); final boolean removed = mStack.updateFreelist(matchBarrierToken, null, -1, null, null, 0); final boolean removed = mStack.moveMatchingToFreelist(matchBarrierToken, null, -1, null, null, 0); if (!removed) { throw new IllegalStateException("The specified message queue synchronization " + " barrier token has not been posted or has already been removed."); Loading Loading @@ -922,21 +923,21 @@ public final class MessageQueue { if (h == null) { return; } mStack.updateFreelist(sMatchHandlerWhatAndObject, h, what, object, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerWhatAndObject, h, what, object, null, 0); } void removeEqualMessages(Handler h, int what, Object object) { if (h == null) { return; } mStack.updateFreelist(sMatchHandlerWhatAndObjectEquals, h, what, object, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerWhatAndObjectEquals, h, what, object, null, 0); } void removeMessages(Handler h, Runnable r, Object object) { if (h == null || r == null) { return; } mStack.updateFreelist(sMatchHandlerRunnableAndObject, h, -1, object, r, 0); mStack.moveMatchingToFreelist(sMatchHandlerRunnableAndObject, h, -1, object, r, 0); } static final class MatchHandlerRunnableAndObjectEquals extends MessageCompare { Loading @@ -956,7 +957,7 @@ public final class MessageQueue { if (h == null || r == null) { return; } mStack.updateFreelist(sMatchHandlerRunnableAndObjectEquals, h, -1, object, r, 0); mStack.moveMatchingToFreelist(sMatchHandlerRunnableAndObjectEquals, h, -1, object, r, 0); } static final class MatchHandlerAndObject extends MessageCompare { Loading @@ -975,7 +976,7 @@ public final class MessageQueue { if (h == null) { return; } mStack.updateFreelist(sMatchHandlerAndObject, h, -1, object, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerAndObject, h, -1, object, null, 0); } static final class MatchHandlerAndObjectEquals extends MessageCompare { Loading @@ -995,7 +996,7 @@ public final class MessageQueue { if (h == null) { return; } mStack.updateFreelist(sMatchHandlerAndObjectEquals, h, -1, object, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, h, -1, object, null, 0); } static final class MatchAllMessages extends MessageCompare { Loading @@ -1008,7 +1009,7 @@ public final class MessageQueue { private static final MatchAllMessages sMatchAllMessages = new MatchAllMessages(); private void removeAllMessages() { mStack.updateFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, 0); } static final class MatchAllFutureMessages extends MessageCompare { Loading @@ -1022,7 +1023,7 @@ public final class MessageQueue { new MatchAllFutureMessages(); private void removeAllFutureMessages(long when) { mStack.updateFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, when); mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, when); } /** Loading core/java/android/os/MessageStack.java +1 −1 Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ public final class MessageStack { * Iterates through messages and creates a reverse-ordered chain of messages to remove. * @return true if any messages were removed, false otherwise */ public boolean updateFreelist(MessageQueue.MessageCompare compare, Handler h, int what, public boolean moveMatchingToFreelist(MessageQueue.MessageCompare compare, Handler h, int what, Object object, Runnable r, long when) { Message current = (Message) sTop.getAcquire(this); Message prev = null; Loading core/tests/coretests/src/android/os/MessageStackTest.java +6 −6 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ public final class MessageStackTest { * removal. */ @Test public void testUpdateFreelistAndDrainFreelist() { public void testmoveMatchingToFreelistAndDrainFreelist() { MessageStack stack = new MessageStack(); Handler h = new Handler(Looper.getMainLooper()); int removeWhat = 1; Loading @@ -113,11 +113,11 @@ public final class MessageStackTest { stack.pushMessage(Message.obtain(h, keepWhat)); } stack.heapSweep(); assertTrue(stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), assertTrue(stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, removeWhat, null, null, 0)); // Try deleting a message we never pushed assertFalse(stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), assertFalse(stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, neverPushedWhat, null, null, 0)); assertEquals(5, stack.freelistSizeForTest()); Loading Loading @@ -159,7 +159,7 @@ public final class MessageStackTest { assertFalse(stack.hasMessages(new MessageQueue.MatchHandlerWhatAndObject(), h, 3, null, null, 0)); stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, findWhat, null, null, 0); assertFalse(stack.hasMessages(new MessageQueue.MatchHandlerWhatAndObject(), Loading Loading @@ -259,7 +259,7 @@ public final class MessageStackTest { stack.pushMessage(Message.obtain(h, removeWhat)); } stack.heapSweep(); stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, removeWhat, null, null, 0); assertNull(stack.peek(false)); Loading @@ -281,7 +281,7 @@ public final class MessageStackTest { assertEquals(10, stack.sizeForTest()); assertEquals(10, stack.combinedHeapSizesForTest()); stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, removeWhat, null, null, 0); assertEquals(0, stack.sizeForTest()); assertEquals(10, stack.freelistSizeForTest()); Loading Loading
core/java/android/os/DeliQueue/MessageQueue.java +10 −9 Original line number Diff line number Diff line Loading @@ -758,7 +758,8 @@ public final class MessageQueue { public void removeSyncBarrier(int token) { final MatchBarrierToken matchBarrierToken = new MatchBarrierToken(token); final boolean removed = mStack.updateFreelist(matchBarrierToken, null, -1, null, null, 0); final boolean removed = mStack.moveMatchingToFreelist(matchBarrierToken, null, -1, null, null, 0); if (!removed) { throw new IllegalStateException("The specified message queue synchronization " + " barrier token has not been posted or has already been removed."); Loading Loading @@ -922,21 +923,21 @@ public final class MessageQueue { if (h == null) { return; } mStack.updateFreelist(sMatchHandlerWhatAndObject, h, what, object, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerWhatAndObject, h, what, object, null, 0); } void removeEqualMessages(Handler h, int what, Object object) { if (h == null) { return; } mStack.updateFreelist(sMatchHandlerWhatAndObjectEquals, h, what, object, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerWhatAndObjectEquals, h, what, object, null, 0); } void removeMessages(Handler h, Runnable r, Object object) { if (h == null || r == null) { return; } mStack.updateFreelist(sMatchHandlerRunnableAndObject, h, -1, object, r, 0); mStack.moveMatchingToFreelist(sMatchHandlerRunnableAndObject, h, -1, object, r, 0); } static final class MatchHandlerRunnableAndObjectEquals extends MessageCompare { Loading @@ -956,7 +957,7 @@ public final class MessageQueue { if (h == null || r == null) { return; } mStack.updateFreelist(sMatchHandlerRunnableAndObjectEquals, h, -1, object, r, 0); mStack.moveMatchingToFreelist(sMatchHandlerRunnableAndObjectEquals, h, -1, object, r, 0); } static final class MatchHandlerAndObject extends MessageCompare { Loading @@ -975,7 +976,7 @@ public final class MessageQueue { if (h == null) { return; } mStack.updateFreelist(sMatchHandlerAndObject, h, -1, object, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerAndObject, h, -1, object, null, 0); } static final class MatchHandlerAndObjectEquals extends MessageCompare { Loading @@ -995,7 +996,7 @@ public final class MessageQueue { if (h == null) { return; } mStack.updateFreelist(sMatchHandlerAndObjectEquals, h, -1, object, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, h, -1, object, null, 0); } static final class MatchAllMessages extends MessageCompare { Loading @@ -1008,7 +1009,7 @@ public final class MessageQueue { private static final MatchAllMessages sMatchAllMessages = new MatchAllMessages(); private void removeAllMessages() { mStack.updateFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, 0); mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, 0); } static final class MatchAllFutureMessages extends MessageCompare { Loading @@ -1022,7 +1023,7 @@ public final class MessageQueue { new MatchAllFutureMessages(); private void removeAllFutureMessages(long when) { mStack.updateFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, when); mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, when); } /** Loading
core/java/android/os/MessageStack.java +1 −1 Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ public final class MessageStack { * Iterates through messages and creates a reverse-ordered chain of messages to remove. * @return true if any messages were removed, false otherwise */ public boolean updateFreelist(MessageQueue.MessageCompare compare, Handler h, int what, public boolean moveMatchingToFreelist(MessageQueue.MessageCompare compare, Handler h, int what, Object object, Runnable r, long when) { Message current = (Message) sTop.getAcquire(this); Message prev = null; Loading
core/tests/coretests/src/android/os/MessageStackTest.java +6 −6 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ public final class MessageStackTest { * removal. */ @Test public void testUpdateFreelistAndDrainFreelist() { public void testmoveMatchingToFreelistAndDrainFreelist() { MessageStack stack = new MessageStack(); Handler h = new Handler(Looper.getMainLooper()); int removeWhat = 1; Loading @@ -113,11 +113,11 @@ public final class MessageStackTest { stack.pushMessage(Message.obtain(h, keepWhat)); } stack.heapSweep(); assertTrue(stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), assertTrue(stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, removeWhat, null, null, 0)); // Try deleting a message we never pushed assertFalse(stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), assertFalse(stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, neverPushedWhat, null, null, 0)); assertEquals(5, stack.freelistSizeForTest()); Loading Loading @@ -159,7 +159,7 @@ public final class MessageStackTest { assertFalse(stack.hasMessages(new MessageQueue.MatchHandlerWhatAndObject(), h, 3, null, null, 0)); stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, findWhat, null, null, 0); assertFalse(stack.hasMessages(new MessageQueue.MatchHandlerWhatAndObject(), Loading Loading @@ -259,7 +259,7 @@ public final class MessageStackTest { stack.pushMessage(Message.obtain(h, removeWhat)); } stack.heapSweep(); stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, removeWhat, null, null, 0); assertNull(stack.peek(false)); Loading @@ -281,7 +281,7 @@ public final class MessageStackTest { assertEquals(10, stack.sizeForTest()); assertEquals(10, stack.combinedHeapSizesForTest()); stack.updateFreelist(new MessageQueue.MatchHandlerWhatAndObject(), stack.moveMatchingToFreelist(new MessageQueue.MatchHandlerWhatAndObject(), h, removeWhat, null, null, 0); assertEquals(0, stack.sizeForTest()); assertEquals(10, stack.freelistSizeForTest()); Loading