static grub_err_t grub_video_sm712_video_fini (void) { if (framebuffer.mapped) grub_pci_device_unmap_range (framebuffer.dev, framebuffer.ptr, GRUB_SM712_TOTAL_MEMORY_SPACE); return grub_video_fb_fini (); }
static grub_err_t grub_video_gop_fini (void) { if (restore_needed) { efi_call_2 (gop->set_mode, gop, old_mode); restore_needed = 0; } return grub_video_fb_fini (); }
static grub_err_t grub_video_sdl_fini (void) { SDL_Quit (); window = 0; grub_memset (&mode_info, 0, sizeof (mode_info)); return grub_video_fb_fini (); }
static grub_err_t grub_video_ieee1275_fini (void) { if (restore_needed) { set_video_mode (old_width, old_height); restore_needed = 0; } return grub_video_fb_fini (); }
static grub_err_t grub_video_gop_get_info_and_fini (struct grub_video_mode_info *mode_info, void **framebuf) { grub_memcpy (mode_info, &(framebuffer.mode_info), sizeof (*mode_info)); *framebuf = (char *) framebuffer.ptr; grub_video_fb_fini (); return GRUB_ERR_NONE; }
void grub_video_capture_end (void) { grub_video_fb_delete_render_target (framebuffer.render_target); grub_free (framebuffer.ptr); grub_video_fb_fini (); grub_video_adapter_active = saved; if (saved) { if (saved->init) saved->init (); if (saved->setup) saved->setup (saved_mode_info.width, saved_mode_info.height, 0, 0); } }
grub_err_t grub_video_fb_set_palette (unsigned int start, unsigned int count, struct grub_video_palette_data *palette_data) { unsigned i; if (start + count > framebuffer.palette_size) { framebuffer.palette_size = start + count; framebuffer.palette = grub_realloc (framebuffer.palette, sizeof (framebuffer.palette[0]) * framebuffer.palette_size); if (!framebuffer.palette) { grub_video_fb_fini (); return grub_errno; } } for (i = 0; (i < count) && ((i + start) < framebuffer.palette_size); i++) framebuffer.palette[start + i] = palette_data[i]; return GRUB_ERR_NONE; }