From 3e9a4d553e6f183013ab26cd3148e2008607a40e Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 10 Jun 2010 12:12:27 -0400 Subject: [PATCH] ignore all BadDamage errors, just like BadWindow. a valid damage id can disappear at any time --- obt/display.c | 11 ++++++++--- obt/display.h | 1 + openbox/window.c | 5 +---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/obt/display.c b/obt/display.c index 5d0d0549..980750a1 100644 --- a/obt/display.c +++ b/obt/display.c @@ -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 diff --git a/obt/display.h b/obt/display.h index 7d4a23c4..acc34f77 100644 --- a/obt/display.h +++ b/obt/display.h @@ -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; diff --git a/openbox/window.c b/openbox/window.c index 6c8ff1d4..b139af56 100644 --- a/openbox/window.c +++ b/openbox/window.c @@ -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) -- 2.34.1