Merge "Improve watchdog monitor for InputReader and InputDispatcher."
This commit is contained in:
@@ -238,6 +238,8 @@ void InputDispatcher::dispatchOnce() {
|
||||
nsecs_t nextWakeupTime = LONG_LONG_MAX;
|
||||
{ // acquire lock
|
||||
AutoMutex _l(mLock);
|
||||
mDispatcherIsAliveCondition.broadcast();
|
||||
|
||||
dispatchOnceInnerLocked(&nextWakeupTime);
|
||||
|
||||
if (runCommandsLockedInterruptible()) {
|
||||
@@ -4086,6 +4088,8 @@ void InputDispatcher::dump(String8& dump) {
|
||||
void InputDispatcher::monitor() {
|
||||
// Acquire and release the lock to ensure that the dispatcher has not deadlocked.
|
||||
mLock.lock();
|
||||
mLooper->wake();
|
||||
mDispatcherIsAliveCondition.wait(mLock);
|
||||
mLock.unlock();
|
||||
}
|
||||
|
||||
|
||||
@@ -862,6 +862,8 @@ private:
|
||||
|
||||
Mutex mLock;
|
||||
|
||||
Condition mDispatcherIsAliveCondition;
|
||||
|
||||
sp<Looper> mLooper;
|
||||
|
||||
EventEntry* mPendingEvent;
|
||||
|
||||
@@ -278,17 +278,20 @@ void InputReader::loopOnce() {
|
||||
|
||||
{ // acquire lock
|
||||
AutoMutex _l(mLock);
|
||||
mReaderIsAliveCondition.broadcast();
|
||||
|
||||
if (count) {
|
||||
processEventsLocked(mEventBuffer, count);
|
||||
}
|
||||
if (!count || timeoutMillis == 0) {
|
||||
nsecs_t now = systemTime(SYSTEM_TIME_MONOTONIC);
|
||||
if (now >= mNextTimeout) {
|
||||
#if DEBUG_RAW_EVENTS
|
||||
ALOGD("Timeout expired, latency=%0.3fms", (now - mNextTimeout) * 0.000001f);
|
||||
ALOGD("Timeout expired, latency=%0.3fms", (now - mNextTimeout) * 0.000001f);
|
||||
#endif
|
||||
mNextTimeout = LLONG_MAX;
|
||||
timeoutExpiredLocked(now);
|
||||
mNextTimeout = LLONG_MAX;
|
||||
timeoutExpiredLocked(now);
|
||||
}
|
||||
}
|
||||
} // release lock
|
||||
|
||||
@@ -772,6 +775,8 @@ void InputReader::dump(String8& dump) {
|
||||
void InputReader::monitor() {
|
||||
// Acquire and release the lock to ensure that the reader has not deadlocked.
|
||||
mLock.lock();
|
||||
mEventHub->wake();
|
||||
mReaderIsAliveCondition.wait(mLock);
|
||||
mLock.unlock();
|
||||
|
||||
// Check the EventHub
|
||||
|
||||
@@ -363,6 +363,8 @@ protected:
|
||||
private:
|
||||
Mutex mLock;
|
||||
|
||||
Condition mReaderIsAliveCondition;
|
||||
|
||||
sp<EventHubInterface> mEventHub;
|
||||
sp<InputReaderPolicyInterface> mPolicy;
|
||||
sp<QueuedInputListener> mQueuedListener;
|
||||
|
||||
Reference in New Issue
Block a user