From 2cb379108c7bb6ddba4b8c966c5e7b3644852143 Mon Sep 17 00:00:00 2001
From: matejcik <ja@matejcik.cz>
Date: Fri, 16 Apr 2021 12:16:10 +0200
Subject: [PATCH] refactor(core/homescreen): load homescreen image on-demand

---
 core/src/apps/homescreen/__init__.py   | 6 ++++--
 core/src/apps/homescreen/homescreen.py | 2 +-
 core/src/apps/homescreen/lockscreen.py | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/core/src/apps/homescreen/__init__.py b/core/src/apps/homescreen/__init__.py
index 0ad7f289ea..5cf8f2f860 100644
--- a/core/src/apps/homescreen/__init__.py
+++ b/core/src/apps/homescreen/__init__.py
@@ -9,10 +9,12 @@ class HomescreenBase(ui.Layout):
     def __init__(self) -> None:
         super().__init__()
         self.label = storage.device.get_label() or "My Trezor"
-        self.image = storage.device.get_homescreen() or res.load(
+        self.repaint = storage.cache.homescreen_shown is not self.RENDER_INDICATOR
+
+    def get_image(self) -> bytes:
+        return storage.device.get_homescreen() or res.load(
             "apps/homescreen/res/bg.toif"
         )
-        self.repaint = storage.cache.homescreen_shown is not self.RENDER_INDICATOR
 
     def on_render(self) -> None:
         if not self.repaint:
diff --git a/core/src/apps/homescreen/homescreen.py b/core/src/apps/homescreen/homescreen.py
index 6dbbaab41e..4dd46b74d7 100644
--- a/core/src/apps/homescreen/homescreen.py
+++ b/core/src/apps/homescreen/homescreen.py
@@ -52,7 +52,7 @@ class Homescreen(HomescreenBase):
             ui.display.bar(0, 0, ui.WIDTH, ui.HEIGHT, ui.BG)
 
         # homescreen with shifted avatar and text on bottom
-        ui.display.avatar(48, 48 - 10, self.image, ui.WHITE, ui.BLACK)
+        ui.display.avatar(48, 48 - 10, self.get_image(), ui.WHITE, ui.BLACK)
         ui.display.text_center(ui.WIDTH // 2, 220, self.label, ui.BOLD, ui.FG, ui.BG)
 
     def on_touch_start(self, _x: int, _y: int) -> None:
diff --git a/core/src/apps/homescreen/lockscreen.py b/core/src/apps/homescreen/lockscreen.py
index a2b51647e4..efca1e710d 100644
--- a/core/src/apps/homescreen/lockscreen.py
+++ b/core/src/apps/homescreen/lockscreen.py
@@ -41,7 +41,7 @@ class Lockscreen(HomescreenBase):
         ui.display.text_center(
             ui.WIDTH // 2, 35, self.label, ui.BOLD, ui.TITLE_GREY, ui.BG
         )
-        ui.display.avatar(48, 48, self.image, ui.WHITE, ui.BLACK)
+        ui.display.avatar(48, 48, self.get_image(), ui.WHITE, ui.BLACK)
 
         # lock bar
         ui.display.bar_radius(40, 100, 160, 40, ui.TITLE_GREY, ui.BG, 4)