ignore all BadDamage errors, just like BadWindow. a valid damage id can disappear...
authorDana Jansens <danakj@orodu.net>
Thu, 10 Jun 2010 16:12:27 +0000 (12:12 -0400)
committerDana Jansens <danakj@orodu.net>
Sat, 26 Jun 2010 23:30:47 +0000 (01:30 +0200)
obt/display.c
obt/display.h
openbox/window.c

index 5d0d0549615a6c3cf6a7843bfef2df4b6576a957..980750a1979dfac635e30b6bed41559c05959776 100644 (file)
@@ -54,6 +54,7 @@ gboolean obt_display_extension_composite = FALSE;
 gint     obt_display_extension_composite_basep;
 gboolean obt_display_extension_damage    = FALSE;
 gint     obt_display_extension_damage_basep;
+gint     obt_display_extension_damage_error;
 gboolean obt_display_extension_render    = FALSE;
 gint     obt_display_extension_render_basep;
 gboolean obt_display_extension_fixes     = FALSE;
@@ -140,7 +141,7 @@ gboolean obt_display_open(const char *display_name)
 
         obt_display_extension_damage =
             XDamageQueryExtension(d, &obt_display_extension_damage_basep,
-                                  &junk);
+                                  &obt_display_extension_damage_error);
         if (!obt_display_extension_damage)
             g_message("X Damage extension is not present on the server");
 
@@ -184,8 +185,12 @@ static gint xerror_handler(Display *d, XErrorEvent *e)
 
     XGetErrorText(d, e->error_code, errtxt, 127);
     if (!xerror_ignore) {
-        if (e->error_code == BadWindow)
-            /*g_debug(_("X Error: %s\n"), errtxt)*/;
+        if (e->error_code == BadWindow ||
+            (obt_display_extension_damage &&
+             e->error_code - obt_display_extension_damage_error == BadDamage))
+        {
+            /*g_error("X Error: %d '%s'", e->error_code, errtxt);*/
+        }
         else
             g_error("X Error: %s", errtxt);
     } else
index 7d4a23c4ceaab5fe0722fd9452fe71daf3546e74..acc34f77cddb6acdc1c90ddafbf4836531d5c00c 100644 (file)
@@ -63,6 +63,7 @@ extern gboolean obt_display_extension_composite;
 extern gint     obt_display_extension_composite_basep;
 extern gboolean obt_display_extension_damage;
 extern gint     obt_display_extension_damage_basep;
+extern gint     obt_display_extension_damage_error;
 extern gboolean obt_display_extension_render;
 extern gint     obt_display_extension_render_basep;
 extern gboolean obt_display_extension_fixes;
index 6c8ff1d4d0813179e3f0c94e8386cc388517f58f..b139af5684887497f5a97827e7d8dc97cf0eb1d4 100644 (file)
@@ -94,11 +94,8 @@ void window_free(ObWindow *self)
 
 #ifdef USE_COMPOSITING
     if (self->type != OB_WINDOW_CLASS_PROMPT) {
-        if (self->damage) {
-            obt_display_ignore_errors(TRUE);
+        if (self->damage)
             XDamageDestroy(obt_display, self->damage);
-            obt_display_ignore_errors(FALSE);
-        }
         if (self->gpixmap)
             glXDestroyPixmap(obt_display, self->gpixmap);
         if (self->pixmap)