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);