Merge "InputDispatcher: Optimize count()"

This commit is contained in:
Narayan Kamath 2014-12-24 10:25:42 +00:00 committed by Gerrit Code Review
commit 033f7e8e35
2 changed files with 9 additions and 14 deletions

View File

@ -3814,18 +3814,6 @@ void InputDispatcher::monitor() {
} }
// --- InputDispatcher::Queue ---
template <typename T>
uint32_t InputDispatcher::Queue<T>::count() const {
uint32_t result = 0;
for (const T* entry = head; entry; entry = entry->next) {
result += 1;
}
return result;
}
// --- InputDispatcher::InjectionState --- // --- InputDispatcher::InjectionState ---
InputDispatcher::InjectionState::InjectionState(int32_t injectorPid, int32_t injectorUid) : InputDispatcher::InjectionState::InjectionState(int32_t injectorPid, int32_t injectorUid) :

View File

@ -606,8 +606,9 @@ private:
struct Queue { struct Queue {
T* head; T* head;
T* tail; T* tail;
uint32_t entryCount;
inline Queue() : head(NULL), tail(NULL) { inline Queue() : head(NULL), tail(NULL), entryCount(0) {
} }
inline bool isEmpty() const { inline bool isEmpty() const {
@ -615,6 +616,7 @@ private:
} }
inline void enqueueAtTail(T* entry) { inline void enqueueAtTail(T* entry) {
entryCount++;
entry->prev = tail; entry->prev = tail;
if (tail) { if (tail) {
tail->next = entry; tail->next = entry;
@ -626,6 +628,7 @@ private:
} }
inline void enqueueAtHead(T* entry) { inline void enqueueAtHead(T* entry) {
entryCount++;
entry->next = head; entry->next = head;
if (head) { if (head) {
head->prev = entry; head->prev = entry;
@ -637,6 +640,7 @@ private:
} }
inline void dequeue(T* entry) { inline void dequeue(T* entry) {
entryCount--;
if (entry->prev) { if (entry->prev) {
entry->prev->next = entry->next; entry->prev->next = entry->next;
} else { } else {
@ -650,6 +654,7 @@ private:
} }
inline T* dequeueAtHead() { inline T* dequeueAtHead() {
entryCount--;
T* entry = head; T* entry = head;
head = entry->next; head = entry->next;
if (head) { if (head) {
@ -660,7 +665,9 @@ private:
return entry; return entry;
} }
uint32_t count() const; uint32_t count() const {
return entryCount;
}
}; };
/* Specifies which events are to be canceled and why. */ /* Specifies which events are to be canceled and why. */