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

Commit a40d8729 authored by Xiaohui Niu's avatar Xiaohui Niu
Browse files

charger: fix charger display stuck

1.Retry charger when gr init fail caused
by display not ready.
2.Remove meaningless logs which occupy log lines,
the logs that really need to be printed cannot be
output due to printk suppresses kernel logs.

Bug: 197604278
Change-Id: Id9465a0a9c994986192fd39c124d05aed8caa862
Test: Manual. Power off charging.
parent f98bcdba
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -46,14 +46,6 @@ static int get_split_offset() {

HealthdDraw::HealthdDraw(animation* anim)
    : kSplitScreen(get_split_screen()), kSplitOffset(get_split_offset()) {
    int ret = gr_init();

    if (ret < 0) {
        LOGE("gr_init failed\n");
        graphics_available = false;
        return;
    }

    graphics_available = true;
    sys_font = gr_sys_font();
    if (sys_font == nullptr) {
@@ -235,3 +227,11 @@ void HealthdDraw::draw_unknown(GRSurface* surf_unknown) {
      LOGW("Charging, level unknown\n");
  }
}

std::unique_ptr<HealthdDraw> HealthdDraw::Create(animation *anim) {
    if (gr_init() < 0) {
        LOGE("gr_init failed\n");
        return nullptr;
    }
    return std::unique_ptr<HealthdDraw>(new HealthdDraw(anim));
}
+6 −2
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@ using namespace android;

class HealthdDraw {
 public:
  // Configures font using given animation.
  HealthdDraw(animation* anim);
  virtual ~HealthdDraw();

  // Redraws screen.
@@ -36,6 +34,8 @@ class HealthdDraw {
  // Blanks screen if true, unblanks if false.
  virtual void blank_screen(bool blank);

  static std::unique_ptr<HealthdDraw> Create(animation *anim);

 protected:
  virtual void clear_screen();

@@ -76,6 +76,10 @@ class HealthdDraw {

  // true if minui init'ed OK, false if minui init failed
  bool graphics_available;

 private:
  // Configures font using given animation.
  HealthdDraw(animation* anim);
};

#endif  // HEALTHD_DRAW_H
+2 −5
Original line number Diff line number Diff line
@@ -218,9 +218,7 @@ static void dump_last_kmsg(void) {
    char* ptr;
    size_t len;

    LOGW("\n");
    LOGW("*************** LAST KMSG ***************\n");
    LOGW("\n");
    const char* kmsg[] = {
        // clang-format off
        "/sys/fs/pstore/console-ramoops-0",
@@ -263,9 +261,7 @@ static void dump_last_kmsg(void) {
    }

out:
    LOGW("\n");
    LOGW("************* END LAST KMSG *************\n");
    LOGW("\n");
}

static int request_suspend(bool enable) {
@@ -325,7 +321,8 @@ void Charger::UpdateScreenState(int64_t now) {
            }
        }

        healthd_draw_.reset(new HealthdDraw(&batt_anim_));
        healthd_draw_ = HealthdDraw::Create(&batt_anim_);
        if (healthd_draw_ == nullptr) return;

        if (android::sysprop::ChargerProperties::disable_init_blank().value_or(false)) {
            healthd_draw_->blank_screen(true);