2009-11-14 Vladimir Serbinenko <phcoder@gmail.com>
Support for gfxterm in a window.
* include/grub/gfxterm.h: New file.
* include/grub/video.h (struct grub_video_rect): New declaration.
(grub_video_rect_t): Likewise.
* term/gfxterm.c (struct grub_gfxterm_window): New type.
(refcount): New variable.
(render_target): Likewise.
(window): Likewise.
(repaint_callback): Likewise.
(grub_virtual_screen_setup): Use 'render_target'.
(init_window): New function.
(grub_gfxterm_init_window): Likewise.
(grub_gfxterm_init): Check reference counter.
Use init_window.
(destroy_window): New function.
(grub_gfxterm_destroy_window): Likewise.
(grub_gfxterm_fini): Check reference counter.
Use destroy_window.
(redraw_screen_rect): Restore viewport.
Use 'render_target' and 'window'.
Call 'repaint_callback'.
(write_char): Use 'render_target'.
(draw_cursor): Likewise.
(scroll_up): Restore viewport.
Use 'render_target' and 'window'.
Call 'repaint_callback'.
(grub_gfxterm_cls): Likewise.
(grub_gfxterm_refresh): Use 'window'.
(grub_gfxterm_set_repaint_callback): New function.
(grub_gfxterm_background_image_cmd): Use 'window'.
(grub_gfxterm_get_term): New function.
(GRUB_MOD_INIT(term_gfxterm)): Set 'refcount' to 0.
Also-By: Vladimir Serbinenko <phcoder@gmail.com>