--- rxvt-unicode/src/main.C 2007/12/28 14:57:04 1.293 +++ rxvt-unicode/src/main.C 2008/01/04 19:12:23 1.294 @@ -1713,34 +1713,30 @@ 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.50 < ev::now () - && !(bgPixmap.flags & bgPixmap_t::blurNeeded)) - { - update_background_ev.stop (); - bgPixmap.render (); - } - else - { - ev_tstamp refresh; + ev_tstamp refresh; - if (!bgPixmap.need_client_side_rendering ()) - refresh = .05; - else if (bgPixmap.flags & bgPixmap_t::blurNeeded) - refresh = .20; /* very slow !!! */ - else - refresh = .07; + if (!bgPixmap.need_client_side_rendering ()) + refresh = .05; + else if (bgPixmap.flags & bgPixmap_t::blurNeeded) + /* no chance of real time refresh if we are blurring! */ + refresh = .50; + else + refresh = .07; - update_background_ev.start (refresh); - } + update_background_ev.start (refresh); } void rxvt_term::update_background_cb (ev::timer &w, int revents) { make_current (); + + update_background_ev.stop (); bgPixmap.render (); refresh_check (); }