--- rxvt-unicode/src/screen.C 2007/08/10 23:52:12 1.272 +++ rxvt-unicode/src/screen.C 2007/09/17 08:31:54 1.278 @@ -28,13 +28,11 @@ #include "rxvt.h" /* NECESSARY */ #include "rxvtperl.h" /* NECESSARY */ -#include /* get the typedef for CARD32 */ - #include #include "salloc.C" // HACK, should be a seperate compile! -inline void fill_text (text_t *start, text_t value, int len) +static inline void fill_text (text_t *start, text_t value, int len) { while (len--) *start++ = value; @@ -409,7 +407,7 @@ prev_nrow = nrow; prev_ncol = ncol; - tabs = (char *)rxvt_malloc (ncol * sizeof (char)); + tabs = (char *)rxvt_malloc (ncol); for (int col = ncol; --col; ) tabs [col] = col % TABSIZE == 0; @@ -1625,7 +1623,7 @@ rxvt_term::scr_set_tab (int mode) NOTHROW { if (mode < 0) - memset (tabs, 0, ncol * sizeof (char)); + memset (tabs, 0, ncol); else if (screen.cur.col < ncol) tabs [screen.cur.col] = !!mode; } @@ -1653,9 +1651,6 @@ #ifdef HAVE_BG_PIXMAP if (bgPixmap.pixmap == None) #endif -#if ENABLE_TRANSPARENCY - if (!option (Opt_transparent) || am_transparent == 0) -#endif XSetWindowBackground (dpy, vt, pix_colors[Color_bg]); XGCValues gcvalue; @@ -1808,7 +1803,7 @@ min_it (rc[i].col, ncol - 1); min_it (rc[i].row, nrow - 1); } - +// TODO: this line somehow causes segfault if scr_expose() is called just after resize for (i = rc[PART_BEG].row; i <= rc[PART_END].row; i++) fill_text (&drawn_buf[i].t[rc[PART_BEG].col], 0, rc[PART_END].col - rc[PART_BEG].col + 1); @@ -1892,16 +1887,14 @@ # endif XMapWindow (dpy, parent[0]); # endif + # if ENABLE_FRILLS if (option (Opt_urgentOnBell)) { - XWMHints *h; - - h = XGetWMHints(dpy, parent[0]); - if (h != NULL) + if (XWMHints *h = XGetWMHints(dpy, parent[0])) { h->flags |= XUrgencyHint; - XSetWMHints(dpy, parent[0], h); + XSetWMHints (dpy, parent[0], h); } } # endif @@ -2009,9 +2002,6 @@ #ifdef HAVE_BG_PIXMAP have_bg |= bgPixmap.pixmap != None; #endif -#if ENABLE_TRANSPARENCY - have_bg |= option (Opt_transparent) && am_transparent; -#endif ocrow = oldcursor.row; /* is there an old outline cursor on screen? */ /* @@ -2482,28 +2472,22 @@ void rxvt_term::scr_recolour () NOTHROW { - if (1 -#if ENABLE_TRANSPARENCY - && !am_transparent -#endif #ifdef HAVE_BG_PIXMAP - && !bgPixmap.pixmap -#endif - ) - { - XSetWindowBackground (dpy, parent[0], pix_colors[Color_border]); - XClearWindow (dpy, parent[0]); - XSetWindowBackground (dpy, vt, pix_colors[Color_bg]); -#if HAVE_SCROLLBARS - if (scrollBar.win) - { - XSetWindowBackground (dpy, scrollBar.win, pix_colors[Color_border]); - scrollBar.setIdle (); - scrollbar_show (0); - } + bgPixmap.apply (); +#else + XSetWindowBackground (dpy, parent[0], pix_colors[Color_border]); + XClearWindow (dpy, parent[0]); + XSetWindowBackground (dpy, vt, pix_colors[Color_bg]); +# if HAVE_SCROLLBARS + if (scrollBar.win) + { + XSetWindowBackground (dpy, scrollBar.win, pix_colors[Color_border]); + scrollBar.setIdle (); + scrollbar_show (0); + } +# endif #endif - } - + scr_clear (); scr_touch (true); want_refresh = 1;