|
|
|
@ -65,15 +65,14 @@ bool InteractionHandler::Init() { |
|
|
|
|
if (mState != INTERACTION_STATE_UNINITIALIZED) |
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
int fd = fb_idle_open(); |
|
|
|
|
if (fd < 0) |
|
|
|
|
return false; |
|
|
|
|
mIdleFd = fd; |
|
|
|
|
mIdleFd = fb_idle_open(); |
|
|
|
|
|
|
|
|
|
mEventFd = eventfd(0, EFD_NONBLOCK); |
|
|
|
|
if (mEventFd < 0) { |
|
|
|
|
ALOGE("Unable to create event fd (%d)", errno); |
|
|
|
|
close(mIdleFd); |
|
|
|
|
if (mIdleFd >= 0) { |
|
|
|
|
close(mIdleFd); |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -96,7 +95,9 @@ void InteractionHandler::Exit() { |
|
|
|
|
mThread->join(); |
|
|
|
|
|
|
|
|
|
close(mEventFd); |
|
|
|
|
close(mIdleFd); |
|
|
|
|
if (mIdleFd >= 0) { |
|
|
|
|
close(mIdleFd); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void InteractionHandler::PerfLock() { |
|
|
|
@ -212,6 +213,18 @@ void InteractionHandler::WaitForIdle(int32_t wait_ms, int32_t timeout_ms) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (mIdleFd < 0) { |
|
|
|
|
ret = poll(pfd, 1, timeout_ms); |
|
|
|
|
if (ret > 0) { |
|
|
|
|
ALOGV("%s: wait for duration aborted", __func__); |
|
|
|
|
return; |
|
|
|
|
} else if (ret < 0) { |
|
|
|
|
ALOGE("%s: Error on waiting for duration (%zd)", __func__, ret); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ret = pread(mIdleFd, data, sizeof(data), 0); |
|
|
|
|
if (!ret) { |
|
|
|
|
ALOGE("%s: Unexpected EOF!", __func__); |
|
|
|
|