]> icculus.org git repositories - dana/openbox.git/blob - render2/instance.c
add textures
[dana/openbox.git] / render2 / instance.c
1 #include "instance.h"
2 #include <stdlib.h>
3 #include <assert.h>
4
5 /*
6 void truecolor_startup(void)
7 {
8   unsigned long red_mask, green_mask, blue_mask;
9   XImage *timage = NULL;
10
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;
18
19   render_red_offset = 0;
20   render_green_offset = 0;
21   render_blue_offset = 0;
22
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; }
26
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--;  }
31   XFree(timage);
32 }
33 */
34
35 struct RrInstance *RrInstanceNew(Display *display,
36                                  int screen,
37                                  XVisualInfo visinfo)
38 {
39     struct RrInstance *inst;
40
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);
48
49     assert(inst->glx_context);
50
51     return inst;
52 }
53
54 void RrInstanceFree(struct RrInstance *inst)
55 {
56     if (inst) {
57         glXDestroyContext(inst->display, inst->glx_context);
58         XFreeColormap(inst->display, inst->cmap);
59         free(inst);
60     }
61 }