--- rxvt-unicode/src/main.C 2012/06/05 11:35:58 1.380 +++ rxvt-unicode/src/main.C 2012/12/30 11:34:43 1.385 @@ -170,7 +170,7 @@ #if defined(MOUSE_WHEEL) && defined(MOUSE_SLIP_WHEELING) slip_wheel_ev.set (this); #endif -#if ENABLE_TRANSPARENCY || ENABLE_PERL +#if BG_IMAGE_FROM_ROOT || ENABLE_PERL rootwin_ev.set (this), #endif scrollbar_ev.set (this), @@ -228,6 +228,10 @@ bg_destroy (); #endif +#if HAVE_IMG + delete bg_img; +#endif + if (display) { selection_clear (); @@ -313,7 +317,7 @@ im_ev.stop (display); #endif scrollbar_ev.stop (display); -#if ENABLE_TRANSPARENCY || ENABLE_PERL +#if BG_IMAGE_FROM_ROOT || ENABLE_PERL rootwin_ev.stop (display); #endif termwin_ev.stop (display); @@ -394,14 +398,60 @@ XGetErrorDatabaseText (dpy, "XlibMessage", "MajorCode", "Request Major code %d", mesg, BUFSIZ); snprintf (buffer, BUFSIZ, "+ %s\n", mesg); rxvt_warn (buffer, event->request_code); - sprintf (number, "%d", event->request_code); - XGetErrorDatabaseText (dpy, "XRequest", number, "", buffer, BUFSIZ); - rxvt_warn ("+ (which is %s)\n", buffer); - if (event->request_code >= 128) { - XGetErrorDatabaseText (dpy, "XlibMessage", "MinorCode", "Request Minor code %d", mesg, BUFSIZ); - snprintf (buffer, BUFSIZ, "+ %s\n", mesg); rxvt_warn (buffer, event->minor_code); +#if 0 + /* XListExtensions and probably query extensions hangs when there are multiple queues errors */ + int nexts; + char **exts = XListExtensions (dpy, &nexts); + + while (nexts) + { + char *extname = exts [nexts - 1]; + int major, first_event, first_error; + + if (XQueryExtension (dpy, extname, &major, &first_event, &first_error) && major == event->request_code) + { + XGetErrorDatabaseText (dpy, "XlibMessage", "MinorCode", "Request Minor code %d", mesg, BUFSIZ); + rxvt_warn ("+ (which is extension %s minor code %d)\n", extname, event->minor_code); + + snprintf (buffer, BUFSIZ, "%s.%d", extname, event->minor_code); + XGetErrorDatabaseText (dpy, "XRequest", buffer, "an unregistered minor code", buffer, BUFSIZ); + rxvt_warn ("+ (which is %s)\n", buffer); + + break; + } + + printf ("nextss %d %s\n", nexts, extname);//D + --nexts; + ++exts; + } +#else + int nexts = 0; + char **exts = 0; +#endif + + if (!nexts) + { + rxvt_warn ("+ (which is an unknown extension)\n", buffer); + + XGetErrorDatabaseText (dpy, "XlibMessage", "MinorCode", "Request Minor code %d", mesg, BUFSIZ); + snprintf (buffer, BUFSIZ, "+ %s\n", mesg); rxvt_warn (buffer, event->minor_code); + +#if 0 + sprintf (number, "RENDER.%d", event->minor_code); + XGetErrorDatabaseText (dpy, "XRequest", number, "", buffer, BUFSIZ); + rxvt_warn ("+ (which is %s)\n", buffer); +#endif + } + + XFreeExtensionList (exts); + } + else + { + sprintf (number, "%d", event->request_code); + XGetErrorDatabaseText (dpy, "XRequest", number, "", buffer, BUFSIZ); + rxvt_warn ("+ (which is %s)\n", buffer); } if (event->error_code == BadWindow @@ -773,7 +823,7 @@ fontset[0] = fs; prop = (*fs)[rxvt_fontset::firstFont]->properties (); - prop.width += letterSpace; + prop.width = max (prop.width + letterSpace, 1); fs->set_prop (prop, false);