charger: support screen rotation
Bug: 191831427
Test: charging animation can show in display correctly
Signed-off-by: Jack Wu <wjack@google.com>
Change-Id: Iedcd7d6c3cd841c44bdf1116701abcbd12a26959
diff --git a/healthd/healthd_draw.cpp b/healthd/healthd_draw.cpp
index 0e6fd27..3e73fcd 100644
--- a/healthd/healthd_draw.cpp
+++ b/healthd/healthd_draw.cpp
@@ -99,6 +99,15 @@
gr_fb_blank(blank, drm);
}
+/* support screen rotation for foldable phone */
+void HealthdDraw::rotate_screen(int drm) {
+ if (!graphics_available) return;
+ if (drm == 0)
+ gr_rotate(GRRotation::RIGHT /* landscape mode */);
+ else
+ gr_rotate(GRRotation::NONE /* Portrait mode */);
+}
+
void HealthdDraw::clear_screen(void) {
if (!graphics_available) return;
gr_color(0, 0, 0, 255);
diff --git a/healthd/healthd_draw.h b/healthd/healthd_draw.h
index 0d7ac7a..3d4abbd 100644
--- a/healthd/healthd_draw.h
+++ b/healthd/healthd_draw.h
@@ -35,6 +35,9 @@
// Blanks screen if true, unblanks if false.
virtual void blank_screen(bool blank, int drm);
+ // Rotate screen.
+ virtual void rotate_screen(int drm);
+
static std::unique_ptr<HealthdDraw> Create(animation *anim);
protected:
diff --git a/healthd/healthd_mode_charger.cpp b/healthd/healthd_mode_charger.cpp
index 012e33b..9fe85d4 100644
--- a/healthd/healthd_mode_charger.cpp
+++ b/healthd/healthd_mode_charger.cpp
@@ -352,6 +352,7 @@
if (screen_switch_ == SCREEN_SWITCH_ENABLE) {
healthd_draw_->blank_screen(true, 0 /* drm */);
healthd_draw_->blank_screen(true, 1 /* drm */);
+ healthd_draw_->rotate_screen(static_cast<int>(drm_));
screen_blanked_ = true;
screen_switch_ = SCREEN_SWITCH_DISABLE;
}