clear recovery framebuffers on allocation; display icon right after ui_init
Make ui_init() clear the framebuffer memory it maps in so the user
isn't treated to a visible flash of random bits on recovery startup.
Call ui_set_background() (to show the installing icon) right after
ui_init() to display something while device_recovery_start() is
working (which can take a second or two on some devices).
Bug: 3145331
Change-Id: I11e7859fab5847370ea4f4932c3fb1558af26c5d
diff --git a/minui/graphics.c b/minui/graphics.c
index adbfc09..4127c40 100644
--- a/minui/graphics.c
+++ b/minui/graphics.c
@@ -88,6 +88,7 @@
fb->stride = vi.xres;
fb->data = bits;
fb->format = GGL_PIXEL_FORMAT_RGB_565;
+ memset(fb->data, 0, vi.yres * vi.xres * 2);
fb++;
@@ -97,6 +98,7 @@
fb->stride = vi.xres;
fb->data = (void*) (((unsigned) bits) + vi.yres * vi.xres * 2);
fb->format = GGL_PIXEL_FORMAT_RGB_565;
+ memset(fb->data, 0, vi.yres * vi.xres * 2);
return fd;
}
@@ -277,7 +279,6 @@
set_active_framebuffer(0);
gl->colorBuffer(gl, &gr_mem_surface);
-
gl->activeTexture(gl, 0);
gl->enable(gl, GGL_BLEND);
gl->blendFunc(gl, GGL_SRC_ALPHA, GGL_ONE_MINUS_SRC_ALPHA);
diff --git a/recovery.c b/recovery.c
index 452794a..9ad075d 100644
--- a/recovery.c
+++ b/recovery.c
@@ -701,6 +701,7 @@
printf("Starting recovery on %s", ctime(&start));
ui_init();
+ ui_set_background(BACKGROUND_ICON_INSTALLING);
load_volume_table();
get_args(&argc, &argv);