i dont know why the pixmap creation fails but it does. bed time :(
authorDana Jansens <danakj@orodu.net>
Mon, 10 Mar 2008 05:37:26 +0000 (01:37 -0400)
committerDana Jansens <danakj@orodu.net>
Mon, 10 Mar 2008 05:56:20 +0000 (01:56 -0400)
glxrender.c

index 3aa3b0c..511bdb1 100644 (file)
@@ -332,6 +332,10 @@ glxrender_find_fb_config(d_screen_t *sc, data_t *d)
                 if (val != vid) continue;
 
                 val = glxrender_fbconfig_info(fbprops, k, nfbprops,
+                                              GLX_BIND_TO_TEXTURE_TARGETS_EXT);
+                printf("BIND TO TARGETS %x\n", val);
+
+                val = glxrender_fbconfig_info(fbprops, k, nfbprops,
                                               GLX_DOUBLEBUFFER);
                 printf("dbl buffer %s\n", val ? "yes" : "no");
                 if (val) continue;
@@ -505,7 +509,7 @@ glxrender_update_window_pixmap(d_window_t *w, data_t *d, window_data_t *wd)
 
     static const uint32_t attrs[] = {
         GLX_TEXTURE_FORMAT_EXT,
-        GLX_TEXTURE_FORMAT_RGBA_EXT,
+        GLX_TEXTURE_FORMAT_RGBA_EXT
     };
 
     px = window_get_pixmap(w);
@@ -513,12 +517,26 @@ glxrender_update_window_pixmap(d_window_t *w, data_t *d, window_data_t *wd)
     if (px && d->fbconfig[depth]) {
         wd->glpixmap = xcb_generate_id(w->sc->dpy->conn);
         printf("creating pixmap fbcon 0x%x\n", d->fbconfig[depth]);
-        xcb_glx_create_pixmap(w->sc->dpy->conn, w->sc->num, d->fbconfig[depth],
-                              px, wd->glpixmap, 2, attrs);
+
+        xcb_void_cookie_t ck =
+            xcb_glx_create_pixmap_checked(w->sc->dpy->conn, w->sc->num,
+                                          d->fbconfig[depth],
+                                          px, wd->glpixmap,
+                                          sizeof(attrs)/sizeof(attrs[0]),
+                                          attrs);
+        {
+            xcb_generic_error_t *err;
+            err = xcb_request_check(w->sc->dpy->conn, ck);
+            if (err) {
+                printf("error creating pixmap\n");
+                display_error(w->sc->dpy, err);
+                free(err);
+            }
+        }
 
         glBindTexture(GL_TEXTURE_2D, wd->texname);
 
-        if (0) {
+        {
             /*
               BindTexImageEXT
               1           CARD8                   opcode (X assigned)
@@ -531,12 +549,11 @@ glxrender_update_window_pixmap(d_window_t *w, data_t *d, window_data_t *wd)
               4           CARD32                  num_attributes
               4*n         LISTofATTRIBUTE_PAIR    attribute, value pairs.
             */
-            unsigned int len = (4 + 0) * sizeof(uint32_t);
+            unsigned int len = (3 + 0) * sizeof(uint32_t);
             uint32_t data[] = {
                 wd->glpixmap,
                 GLX_FRONT_LEFT_EXT,
-                0,
-                NULL
+                0
             };
             xcb_glx_vendor_private(w->sc->dpy->conn,
                                    1330,