void fb_cleanup(void) { Debug("fb_cleanup()\n"); if (saved_fb) fb_restore(); if (fb) fb_unmap(); if (fb_fd != -1) { if (saved_cmap.len) { fb_cmap = saved_cmap; RESTORE_AND_FREE_COMPONENT(red); RESTORE_AND_FREE_COMPONENT(green); RESTORE_AND_FREE_COMPONENT(blue); if (fb_cmap.transp) RESTORE_AND_FREE_COMPONENT(transp); fb_set_cmap(); } //fb_var = saved_var; memcpy(&fb_var, &saved_var, sizeof(struct fb_var_screeninfo)); fb_set_var(); fb_get_var(); /* FIXME: compare fb_var with saved_var */ fb_get_fix(); /* FIXME: compare fb_fix with saved_fix */ fb_close(); } }
/* Draw background and text */ void draw_background(struct gui_t *gui, const char *text) { #ifdef USE_BG_BUFFER if (NULL != gui->bg_buffer) { /* If we have bg buffer use it */ fb_restore(gui->fb, gui->bg_buffer); } else { /* else draw bg */ draw_background_low(gui); log_msg(lg, "bg_buffer is empty"); } #else /* Have bg buffer disabled. Draw bg */ draw_background_low(gui); #endif /* Draw text on bg */ draw_bg_text(gui, text); }