2009-08-24 Colin D Bennett 2009-08-24 Vladimir Serbinenko Double buffering support. * commands/i386/pc/videotest.c (grub_cmd_videotest): Swap doublebuffers. * include/grub/video.h: Update comment. * include/grub/video_fb.h (grub_video_fb_doublebuf_update_screen_t): New type. (grub_video_fb_doublebuf_blit_init): New prototype. * term/gfxterm.c (scroll_up): Support double buffering. (grub_gfxterm_refresh): Likewise. * video/fb/video_fb.c (doublebuf_blit_update_screen): New function. (grub_video_fb_doublebuf_blit_init): Likewise. * video/i386/pc/vbe.c (framebuffer): Remove 'render_target'. Add 'front_target', 'back_target', 'offscreen_buffer', 'page_size', 'displayed_page', 'render_page' and 'update_screen'. (grub_video_vbe_fini): Free offscreen buffer. (doublebuf_pageflipping_commit): New function. (doublebuf_pageflipping_update_screen): Likewise. (doublebuf_pageflipping_init): Likewise. (double_buffering_init): Likewise. (grub_video_vbe_setup): Enable doublebuffering. (grub_video_vbe_swap_buffers): Implement. (grub_video_vbe_set_active_render_target): Handle double buffering. (grub_video_vbe_get_active_render_target): Likewise. (grub_video_vbe_get_info_and_fini): Likewise. Free offscreen_buffer. (grub_video_vbe_adapter): Use grub_video_vbe_get_active_render_target. (grub_video_vbe_enable_double_buffering): Likewise. (grub_video_vbe_swap_buffers): Use update_screen. (grub_video_set_mode): Use double buffering.