2008-08-30 Colin D Bennett VBE smart double buffering using page flipping or blitting. * include/grub/video.h (GRUB_VIDEO_RENDER_TARGET_FRONT_BUFFER): Removed. (GRUB_VIDEO_RENDER_TARGET_BACK_BUFFER): Removed. * video/i386/pc/vbe.c (framebuffer): Added is_double_buffered field. (doublebuf_state): New struct. (double_buffering_init): New function. (grub_video_vbe_init): Clear doublebuf_state. (grub_video_vbe_fini): Destroy doublebuf_state. (grub_video_vbe_setup): Call double_buffering_init to initialize double buffering. (doublebuf_pageflipping_commit): New function. (doublebuf_pageflipping_update_screen): New function. (doublebuf_pageflipping_destroy): New function. (doublebuf_pageflipping_init): New function. (doublebuf_blit_update_screen): New function. (doublebuf_blit_destroy): New function. (doublebuf_blit_init): New function. (doublebuf_null_update_screen): New function. (doublebuf_null_destroy): New function. (doublebuf_null_init): New function. (double_buffering_init): New function. (grub_video_vbe_swap_buffers): Implement buffer swapping. (grub_video_vbe_set_active_render_target): Handle special target GRUB_VIDEO_RENDER_TARGET_DISPLAY and neither GRUB_VIDEO_RENDER_TARGET_FRONT_BUFFER nor GRUB_VIDEO_RENDER_TARGET_BACK_BUFFER.