5 void truecolor_startup(void)
7 unsigned long red_mask, green_mask, blue_mask;
10 timage = XCreateImage(ob_display, render_visual, render_depth,
11 ZPixmap, 0, NULL, 1, 1, 32, 0);
12 g_assert(timage != NULL);
13 /\* find the offsets for each color in the visual's masks *\/
14 render_red_mask = red_mask = timage->red_mask;
15 render_green_mask = green_mask = timage->green_mask;
16 render_blue_mask = blue_mask = timage->blue_mask;
18 render_red_offset = 0;
19 render_green_offset = 0;
20 render_blue_offset = 0;
22 while (! (red_mask & 1)) { render_red_offset++; red_mask >>= 1; }
23 while (! (green_mask & 1)) { render_green_offset++; green_mask >>= 1; }
24 while (! (blue_mask & 1)) { render_blue_offset++; blue_mask >>= 1; }
26 render_red_shift = render_green_shift = render_blue_shift = 8;
27 while (red_mask) { red_mask >>= 1; render_red_shift--; }
28 while (green_mask) { green_mask >>= 1; render_green_shift--; }
29 while (blue_mask) { blue_mask >>= 1; render_blue_shift--; }
34 struct RrInstance *RrInstanceNew(Display *display,
38 struct RrInstance *inst;
40 inst = g_new(struct RrInstance, 1);
41 inst->display = display;
42 inst->screen = screen;
43 inst->visinfo = visinfo;
44 inst->cmap = XCreateColormap(display, RootWindow(display, screen),
45 RrVisual(inst), AllocNone);
46 inst->glx_context = glXCreateContext(display, &visinfo, NULL, TRUE);
48 g_assert(inst->glx_context);
53 void RrInstanceFree(struct RrInstance *inst)
56 glXDestroyContext(inst->display, inst->glx_context);
57 XFreeColormap(inst->display, inst->cmap);