6 void truecolor_startup(void)
8 unsigned long red_mask, green_mask, blue_mask;
11 timage = XCreateImage(ob_display, render_visual, render_depth,
12 ZPixmap, 0, NULL, 1, 1, 32, 0);
13 assert(timage != NULL);
14 /\* find the offsets for each color in the visual's masks *\/
15 render_red_mask = red_mask = timage->red_mask;
16 render_green_mask = green_mask = timage->green_mask;
17 render_blue_mask = blue_mask = timage->blue_mask;
19 render_red_offset = 0;
20 render_green_offset = 0;
21 render_blue_offset = 0;
23 while (! (red_mask & 1)) { render_red_offset++; red_mask >>= 1; }
24 while (! (green_mask & 1)) { render_green_offset++; green_mask >>= 1; }
25 while (! (blue_mask & 1)) { render_blue_offset++; blue_mask >>= 1; }
27 render_red_shift = render_green_shift = render_blue_shift = 8;
28 while (red_mask) { red_mask >>= 1; render_red_shift--; }
29 while (green_mask) { green_mask >>= 1; render_green_shift--; }
30 while (blue_mask) { blue_mask >>= 1; render_blue_shift--; }
35 struct RrInstance *RrInstanceNew(Display *display,
39 struct RrInstance *inst;
41 inst = malloc(sizeof(struct RrInstance));
42 inst->display = display;
43 inst->screen = screen;
44 inst->visinfo = visinfo;
45 inst->cmap = XCreateColormap(display, RootWindow(display, screen),
46 RrVisual(inst), AllocNone);
47 inst->glx_context = glXCreateContext(display, &visinfo, NULL, True);
49 assert(inst->glx_context);
54 void RrInstanceFree(struct RrInstance *inst)
57 glXDestroyContext(inst->display, inst->glx_context);
58 XFreeColormap(inst->display, inst->cmap);