Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d6da4d4f authored by Dima Zavin's avatar Dima Zavin Committed by Android Git Automerger
Browse files

am 47cca063: Merge changes Idcb48155,Iecb8c3db,I4924134b into ics-mr0

* commit '47cca063':
  charger: ignore key event if value didn't change
  charger: sync with the current key state on boot
  charger: print last_kmsg directly using klog_write
parents 5babfad4 47cca063
Loading
Loading
Loading
Loading
+30 −14
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ static void dump_last_kmsg(void)

        yoink = ptr[cnt];
        ptr[cnt] = '\0';
        KLOG_INFO("", "%s", ptr);
        klog_write(6, "<6>%s", ptr);
        ptr[cnt] = yoink;

        len -= cnt;
@@ -745,30 +745,44 @@ static void update_screen_state(struct charger *charger, int64_t now)
    }
}

static void update_input_state(struct charger *charger,
                               struct input_event *ev,
                               int64_t now)
static int set_key_callback(int code, int value, void *data)
{
    int down = !!ev->value;
    struct charger *charger = data;
    int64_t now = curr_time_ms();
    int down = !!value;

    if (ev->type != EV_KEY || ev->code > KEY_MAX)
        return;
    if (code > KEY_MAX)
        return -1;

    /* ignore events that don't modify our state */
    if (charger->keys[code].down == down)
        return -1;

    /* only record the down even timestamp, as the amount
     * of time the key spent not being pressed is not useful */
    if (down)
        charger->keys[ev->code].timestamp = now;
    charger->keys[ev->code].down = down;
    charger->keys[ev->code].pending = true;
        charger->keys[code].timestamp = now;
    charger->keys[code].down = down;
    charger->keys[code].pending = true;
    if (down) {
        LOGV("[%lld] key[%d] down\n", now, ev->code);
        LOGV("[%lld] key[%d] down\n", now, code);
    } else {
        int64_t duration = now - charger->keys[ev->code].timestamp;
        int64_t duration = now - charger->keys[code].timestamp;
        int64_t secs = duration / 1000;
        int64_t msecs = duration - secs * 1000;
        LOGV("[%lld] key[%d] up (was down for %lld.%lldsec)\n", now,
            ev->code, secs, msecs);
            code, secs, msecs);
    }

    return 0;
}

static void update_input_state(struct charger *charger,
                               struct input_event *ev)
{
    if (ev->type != EV_KEY)
        return;
    set_key_callback(ev->code, ev->value, charger);
}

static void set_next_key_check(struct charger *charger,
@@ -876,7 +890,7 @@ static int input_callback(int fd, short revents, void *data)
    ret = ev_get_input(fd, revents, &ev);
    if (ret)
        return -1;
    update_input_state(charger, &ev, curr_time_ms());
    update_input_state(charger, &ev);
    return 0;
}

@@ -949,6 +963,8 @@ int main(int argc, char **argv)
        }
    }

    ev_sync_key_state(set_key_callback, charger);

    gr_fb_blank(true);

    charger->next_screen_transition = now - 1;