the compmgr works.. hooray!
[dana/dcompmgr.git] / display.c
index 99d154c..1beee21 100644 (file)
--- a/display.c
+++ b/display.c
@@ -44,10 +44,10 @@ typedef struct {
     rep = xcb_get_extension_data(dpy->conn, &xcb_##name##_id); \
 \
     ext = find_extension_##name(dpy) \
-    ext->present = rep && rep->present;       \
-    ext->error   = rep && rep->first_error;   \
-    ext->event   = rep && rep->first_event;   \
-    ext->opcode  = rep && rep->major_opcode;  \
+    ext->present = rep && rep->present;          \
+    ext->error   = rep ? rep->first_error : 0;   \
+    ext->event   = rep ? rep->first_event : 0;   \
+    ext->opcode  = rep ? rep->major_opcode : 0;  \
 \
     if (ext->present) \
         ck_##name = xcb_##name##_query_version(dpy->conn, \
@@ -266,6 +266,65 @@ display_error(d_display_t *dpy, xcb_generic_error_t *ev)
         case 72: req = "PutImage";               break;
         default: break; 
         }
+    else if (major_opcode == dpy->damage.opcode)
+        switch (minor_opcode)
+        {
+        case 0: req = "DamageQueryVersion"; break;
+        case 1: req = "DamageCreate";       break;
+        case 2: req = "DamageDestroy";      break;
+        case 3: req = "DamageSubtract";     break;
+        default: break;
+        }
+    else if (major_opcode == dpy->render.opcode)
+        switch (minor_opcode)
+        {
+        case 0:  req = "RenderQueryVersion";             break;
+        case 1:  req = "RenderQueryPictFormats";         break;
+        case 2:  req = "RenderQueryPictIndexValues";     break;
+        case 4:  req = "RenderCreatePicture";            break;
+        case 5:  req = "RenderChangePicture";            break;
+        case 6:  req = "RenderSetPictureClipRectangles"; break;
+        case 7:  req = "RenderFreePicture";              break;
+        case 8:  req = "RenderComposite";                break;
+        case 10: req = "RenderCompositeTrapezoids";      break;
+        case 11: req = "RenderCompositeTriangles";       break;
+        case 12: req = "RenderCompositeTriStrip";        break;
+        case 13: req = "RenderCompositeTriFan";          break;
+        case 17: req = "RenderCreateGlyphSet";           break;
+        case 18: req = "RenderReferenceGlyphSet";        break;
+        case 19: req = "RenderFreeGlyphSet";             break;
+        case 20: req = "RenderAddGlyphs";                break;
+        case 22: req = "RenderFreeGlyphs";               break;
+        case 23: req = "RenderCompositeGlyphs8";         break;
+        case 24: req = "RenderCompositeGlyphs16";        break;
+        case 25: req = "RenderCompositeGlyphs32";        break;
+        case 26: req = "RenderFillRectangles";           break;
+        case 27: req = "RenderCreateCursor";             break;
+        case 28: req = "RenderSetPictureTransform";      break;
+        case 29: req = "RenderQueryFilters";             break;
+        case 30: req = "RenderSetPictureFilter";         break;
+        case 31: req = "RenderCreateAnimCursor";         break;
+        case 32: req = "RenderAddTraps";                 break;
+        case 33: req = "RenderCreateSolidFill";          break;
+        case 34: req = "RenderLinearGradient";           break;
+        case 35: req = "RenderRadialGradient";           break;
+        case 36: req = "RenderConicalGradient";          break;
+        default: break;
+        }
+    else if (major_opcode == dpy->composite.opcode)
+        switch (minor_opcode)
+        {
+        case 0: req = "CompositeQueryVersion";               break;
+        case 1: req = "CompositeRedirectWindow";             break;
+        case 2: req = "CompositeRedirectSubwindows";         break;
+        case 3: req = "CompositeUnredirectWindow";           break;
+        case 4: req = "CompositeUnredirectSubwindows";       break;
+        case 5: req = "CompositeCreateRegionFromBorderClip"; break;
+        case 6: req = "CompositeNameWindowPixmap";           break;
+        case 7: req = "CompositeGetOverlayWindow";           break;
+        case 8: req = "CompositeReleaseOverlayWindow";       break;
+        default: break;
+        }
 
     if (name && req)
         printf("XError: %s %s!\n",
@@ -277,7 +336,7 @@ display_error(d_display_t *dpy, xcb_generic_error_t *ev)
         printf("XError: code %d major opcode %d minor opcode %d!\n",
                ev->error_code, major_opcode, minor_opcode);
 
-    abort();
+    //abort();
 }
 
 int