Update to latest AOSP master
Merge in latest commits from AOSP master and fix merge conflicts
This commit is contained in:
@@ -47,7 +47,8 @@ static RecoveryUI* self = NULL;
|
||||
|
||||
RecoveryUI::RecoveryUI() :
|
||||
key_queue_len(0),
|
||||
key_last_down(-1) {
|
||||
key_last_down(-1),
|
||||
key_down_time(0) {
|
||||
pthread_mutex_init(&key_queue_mutex, NULL);
|
||||
pthread_cond_init(&key_queue_cond, NULL);
|
||||
self = this;
|
||||
@@ -111,19 +112,29 @@ int RecoveryUI::input_callback(int fd, short revents, void* data)
|
||||
// updown == 1 for key down events; 0 for key up events
|
||||
void RecoveryUI::process_key(int key_code, int updown) {
|
||||
bool register_key = false;
|
||||
bool long_press = false;
|
||||
|
||||
const long long_threshold = CLOCKS_PER_SEC * 750 / 1000;
|
||||
|
||||
pthread_mutex_lock(&key_queue_mutex);
|
||||
key_pressed[key_code] = updown;
|
||||
if (updown) {
|
||||
key_last_down = key_code;
|
||||
key_down_time = clock();
|
||||
} else {
|
||||
if (key_last_down == key_code)
|
||||
if (key_last_down == key_code) {
|
||||
long duration = clock() - key_down_time;
|
||||
if (duration > long_threshold) {
|
||||
long_press = true;
|
||||
}
|
||||
register_key = true;
|
||||
}
|
||||
key_last_down = -1;
|
||||
}
|
||||
pthread_mutex_unlock(&key_queue_mutex);
|
||||
|
||||
if (register_key) {
|
||||
NextCheckKeyIsLong(long_press);
|
||||
switch (CheckKey(key_code)) {
|
||||
case RecoveryUI::IGNORE:
|
||||
break;
|
||||
@@ -139,18 +150,23 @@ void RecoveryUI::process_key(int key_code, int updown) {
|
||||
break;
|
||||
|
||||
case RecoveryUI::ENQUEUE:
|
||||
pthread_mutex_lock(&key_queue_mutex);
|
||||
const int queue_max = sizeof(key_queue) / sizeof(key_queue[0]);
|
||||
if (key_queue_len < queue_max) {
|
||||
key_queue[key_queue_len++] = key_code;
|
||||
pthread_cond_signal(&key_queue_cond);
|
||||
}
|
||||
pthread_mutex_unlock(&key_queue_mutex);
|
||||
EnqueueKey(key_code);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RecoveryUI::EnqueueKey(int key_code) {
|
||||
pthread_mutex_lock(&key_queue_mutex);
|
||||
const int queue_max = sizeof(key_queue) / sizeof(key_queue[0]);
|
||||
if (key_queue_len < queue_max) {
|
||||
key_queue[key_queue_len++] = key_code;
|
||||
pthread_cond_signal(&key_queue_cond);
|
||||
}
|
||||
pthread_mutex_unlock(&key_queue_mutex);
|
||||
}
|
||||
|
||||
|
||||
// Reads input events, handles special hot keys, and adds to the key queue.
|
||||
void* RecoveryUI::input_thread(void *cookie)
|
||||
{
|
||||
@@ -227,3 +243,6 @@ void RecoveryUI::FlushKeys() {
|
||||
RecoveryUI::KeyAction RecoveryUI::CheckKey(int key) {
|
||||
return RecoveryUI::ENQUEUE;
|
||||
}
|
||||
|
||||
void RecoveryUI::NextCheckKeyIsLong(bool is_long_press) {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user