static int crt_fb_get_cmap(struct fb_cmap *cmap, int kspc, int con) { if (con == currcon) /* current console? */ return(do_fb_get_cmap(cmap, &disp[con].var, kspc)); else if (disp[con].cmap.len) /* non default colormap? */ copy_cmap(&disp[con].cmap, cmap, kspc ? 0 : 2); else copy_cmap(get_default_colormap(disp[con].var.bits_per_pixel), cmap, kspc ? 0 : 2); return(0); }
static int alloc_cmap(struct fb_cmap *cmap, int len, int transp) { int size = len*sizeof(u_short); if (cmap->len != len) { if (cmap->red) kfree(cmap->red); if (cmap->green) kfree(cmap->green); if (cmap->blue) kfree(cmap->blue); if (cmap->transp) kfree(cmap->transp); cmap->red = cmap->green = cmap->blue = cmap->transp = NULL; cmap->len = 0; if (!len) return(0); if (!(cmap->red = kmalloc(size, GFP_ATOMIC))) return(-1); if (!(cmap->green = kmalloc(size, GFP_ATOMIC))) return(-1); if (!(cmap->blue = kmalloc(size, GFP_ATOMIC))) return(-1); if (transp) { if (!(cmap->transp = kmalloc(size, GFP_ATOMIC))) return(-1); } else cmap->transp = NULL; } cmap->start = 0; cmap->len = len; copy_cmap(get_default_colormap(len), cmap, 0); return(0); }
default_settings() { copy_structure(&default_vs, &vs, sizeof(vs) ); copy_cmap(init_cmap, render_form->cmap); rethink_settings(); if (zoom_form) unset_zoom(); }
static int crt_fb_set_cmap(struct fb_cmap *cmap, int kspc, int con) { int err; if (!disp[con].cmap.len) { /* no colormap allocated? */ if ((err = alloc_cmap(&disp[con].cmap, 1<<disp[con].var.bits_per_pixel, 0))) return(err); } if (con == currcon) /* current console? */ return(do_fb_set_cmap(cmap, &disp[con].var, kspc)); else copy_cmap(cmap, &disp[con].cmap, kspc ? 0 : 1); return(0); }