--- rxvt-unicode/src/main.C 2007/12/18 01:36:24 1.288 +++ rxvt-unicode/src/main.C 2008/01/04 21:25:57 1.296 @@ -172,7 +172,7 @@ slip_wheel_ev.set (this); #endif #if ENABLE_TRANSPARENCY || ENABLE_PERL - rootwin_ev.set (this), + rootwin_ev.set (this), #endif #ifdef HAVE_SCROLLBARS scrollbar_ev.set (this), @@ -278,11 +278,6 @@ clear (); } - delete [] pix_colors_focused; -#if OFF_FOCUS_FADING - delete [] pix_colors_unfocused; -#endif - #ifdef HAVE_BG_PIXMAP bgPixmap.destroy (); #endif @@ -523,12 +518,14 @@ if (option (Opt_transparent)) { bgPixmap.set_transparent (); + #ifdef HAVE_AFTERIMAGE if (rs [Rs_blurradius]) bgPixmap.set_blur_radius (rs [Rs_blurradius]); #endif if (ISSET_PIXCOLOR (Color_tint)) bgPixmap.set_tint (pix_colors_focused [Color_tint]); + if (rs [Rs_shade]) bgPixmap.set_shade (rs [Rs_shade]); @@ -539,11 +536,11 @@ #endif #ifdef BG_IMAGE_FROM_FILE - if (rs[Rs_backgroundPixmap] != NULL) + if (rs[Rs_backgroundPixmap]) { const char *p = rs[Rs_backgroundPixmap]; - if ((p = strchr (p, ';')) != NULL) + if ((p = strchr (p, ';')) != 0) { p++; bgPixmap.set_geometry (p); @@ -1679,7 +1676,7 @@ { Window cr; XTranslateCoordinates (dpy, parent[0], display->root, 0, 0, &x, &y, &cr); -/* fprintf( stderr, "origin is %+d%+d\n", x, y);*/ +/* fprintf (stderr, "origin is %+d%+d\n", x, y);*/ } Pixmap @@ -1696,52 +1693,45 @@ 0L, 1L, False, XA_PIXMAP, &atype, &aformat, &nitems, &bytes_after, &prop); if (result == Success && prop && atype == XA_PIXMAP) - { - return *(Pixmap *)prop; - } + return *(Pixmap *)prop; } + return None; } #ifdef HAVE_BG_PIXMAP # if TRACE_PIXMAPS # undef update_background -int rxvt_term::trace_update_background (const char *file, int line) +void +rxvt_term::trace_update_background (const char *file, int line) { fprintf (stderr, "%s:%d:update_background()\n", file, line); update_background (); } # endif -int +void rxvt_term::update_background () { + if (update_background_ev.is_active ()) + return; + bgPixmap.invalidate (); - /* no chance of real time refresh if we are blurring! */ - if (bgPixmap.invalid_since + 0.5 < ev::now () && !(bgPixmap.flags & bgPixmap_t::blurNeeded)) + ev_tstamp to_wait = 0.5 - (ev::now () - bgPixmap.valid_since); + + if ( to_wait <= 0. ) bgPixmap.render (); else - { - ev_tstamp refresh; - update_background_ev.stop (); - - if (!bgPixmap.need_client_side_rendering ()) - refresh = .05; - else if (bgPixmap.flags & bgPixmap_t::blurNeeded) - refresh = .20; /* very slow !!! */ - else - refresh = .07; - update_background_ev.start (refresh); - } - - return 0; + update_background_ev.start (to_wait); } void rxvt_term::update_background_cb (ev::timer &w, int revents) { make_current (); + + update_background_ev.stop (); bgPixmap.render (); refresh_check (); }