EInk responsiveness fixes

This commit is contained in:
Jonathan Bennett 2025-06-10 21:32:09 -05:00
parent 6d2e653325
commit 23c420fa31
2 changed files with 8 additions and 1 deletions

View File

@ -1320,6 +1320,12 @@ int Screen::handleInputEvent(const InputEvent *event)
if (!screenOn)
return 0;
#ifdef USE_EINK // the screen is the last input handler, so if an event makes it here, we can assume it will prompt a screen draw.
EINK_ADD_FRAMEFLAG(dispdev, DEMAND_FAST); // Use fast-refresh for next frame, no skip please
EINK_ADD_FRAMEFLAG(dispdev, BLOCKING); // Edge case: if this frame is promoted to COSMETIC, wait for update
handleSetOn(true); // Ensure power-on to receive deep-sleep screensaver (PowerFSM should handle?)
setFastFramerate(); // Draw ASAP
#endif
if (NotificationRenderer::isOverlayBannerShowing()) {
NotificationRenderer::inEvent = event->inputEvent;
static OverlayCallback overlays[] = {graphics::UIRenderer::drawNavigationBar,

View File

@ -200,7 +200,8 @@ int32_t ButtonThread::runOnce()
LOG_WARN("Long press!");
// Check if this is part of a short-press + long-press combination
if (waitingForLongPress && (millis() - shortPressTime) <= BUTTON_COMBO_TIMEOUT_MS) {
if (_shortLong != INPUT_BROKER_NONE && waitingForLongPress &&
(millis() - shortPressTime) <= BUTTON_COMBO_TIMEOUT_MS) {
LOG_WARN("Short-press + Long-press combination detected!");
evt.inputEvent = _shortLong;
// evt.kbchar = _shortLong;