修复息屏按键会缓存的bug
authorxue <2144439972@qq.com>
Wed, 10 Dec 2025 09:59:08 +0000 (17:59 +0800)
committerxue <2144439972@qq.com>
Wed, 10 Dec 2025 09:59:08 +0000 (17:59 +0800)
code/sdk/application/brandy/brandy_standard/input_app.c

index 80da69a..8d184ca 100644 (file)
@@ -19,6 +19,7 @@
 #ifdef SUPPORT_POWER_MANAGER
 #include "soc_lcd_api.h"
 #endif
+#include "custom_utils.h"
 
 static unsigned long g_app_queue = 0xFFFFFFFF;
 uint8_t g_long_press_flag = 0;
@@ -207,10 +208,29 @@ static void button_report_event_to_gui(button_id_t id, uint16_t state)
     }
 }
 
+static bool is_screen_on(void)
+{
+#ifdef SUPPORT_POWER_MANAGER
+    // lcd_get_status: true=screen on, false=off
+    if (!lcd_get_status()) {
+        return false;
+    }
+#endif
+    // uapi_get_screen_state: 0=on, 1=off
+    return uapi_get_screen_state() == 0;
+}
+
 static void button_report_event(button_id_t id, event_button_t event)
 {
     input_dev_data_t data;
     printf("fac:id : %d\n",id);
+#ifdef BOARD_LEINIAO
+    // Drop all non电源键事件在息屏时,防止排队到亮屏后执行
+    if (!is_screen_on() && id != BUTTON_PWR) {
+        printf("button_report_event: screen off, drop id=%d, event=%d\n", id, event);
+        return;
+    }
+#endif
     switch (event) {
         case BUTTON_PWR_PRESS:
             #ifdef SUPPORT_POWER_MANAGER