diff --git a/main/display/lcd_display.cc b/main/display/lcd_display.cc index 239e10f..9d110e0 100644 --- a/main/display/lcd_display.cc +++ b/main/display/lcd_display.cc @@ -1079,6 +1079,11 @@ void LcdDisplay::SetEmotion(const char* emotion) { if (gif_controller_) { DisplayLockGuard lock(this); gif_controller_->Stop(); + // Hide image before destroying GIF controller to prevent LVGL from + // accessing freed image data during rendering between lock scopes + if (emoji_image_) { + lv_obj_add_flag(emoji_image_, LV_OBJ_FLAG_HIDDEN); + } gif_controller_.reset(); }