TimedEventQueue::event_id TimedEventQueue::postTimedEvent( const sp<Event> &event, int64_t realtime_us) { Mutex::Autolock autoLock(mLock); event->setEventID(mNextEventID++); List<QueueItem>::iterator it = mQueue.begin(); while (it != mQueue.end() && realtime_us >= (*it).realtime_us) { ++it; } QueueItem item; item.event = event; item.realtime_us = realtime_us; item.has_wakelock = false; if (it == mQueue.begin()) { mQueueHeadChangedCondition.signal(); } if (realtime_us > ALooper::GetNowUs() + kWakelockMinDelay) { acquireWakeLock_l(); item.has_wakelock = true; } mQueue.insert(it, item); mQueueNotEmptyCondition.signal(); return event->eventID(); }
TimedEventQueue::event_id TimedEventQueue::postTimedEvent( const sp<Event> &event, int64_t realtime_us) { Mutex::Autolock autoLock(mLock); event->setEventID(mNextEventID++); List<QueueItem>::iterator it = mQueue.begin(); while (it != mQueue.end() && realtime_us >= (*it).realtime_us) { ++it; } QueueItem item; item.event = event; item.realtime_us = realtime_us; if (it == mQueue.begin()) { mQueueHeadChangedCondition.signal(); } mQueue.insert(it, item); mQueueNotEmptyCondition.signal(); return event->eventID(); }
static bool MatchesEventID( void *cookie, const sp<TimedEventQueue::Event> &event) { TimedEventQueue::event_id *id = static_cast<TimedEventQueue::event_id *>(cookie); if (event->eventID() != *id) { return false; } *id = 0; return true; }