X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftty%2Ftty_update.c;h=9be997389993818ed765078665f3b0844d809d97;hp=2dc93830ce95664612c4a9048b93c2faf4219ca8;hb=1c551ea75ea57f9186fbe8d79674ac85baa4d358;hpb=d1a026123ac051716cdc16278345c1fb5c843b79 diff --git a/ncurses/tty/tty_update.c b/ncurses/tty/tty_update.c index 2dc93830..9be99738 100644 --- a/ncurses/tty/tty_update.c +++ b/ncurses/tty/tty_update.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -82,7 +82,7 @@ #include -MODULE_ID("$Id: tty_update.c,v 1.265 2011/05/28 21:51:20 tom Exp $") +MODULE_ID("$Id: tty_update.c,v 1.272 2012/12/15 21:00:19 tom Exp $") /* * This define controls the line-breakout optimization. Every once in a @@ -209,7 +209,9 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch) { int chlen = 1; NCURSES_CH_T my_ch; +#if USE_WIDEC_SUPPORT PUTC_DATA; +#endif NCURSES_CH_T tilde; NCURSES_CH_T attr = CHDEREF(ch); @@ -288,13 +290,12 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch) int j = CharOfD(ch); chtype temp = UChar(SP_PARM->_acs_map[j]); - if (!(SP_PARM->_screen_acs_map[j])) { + if (temp != 0) { + SetChar(my_ch, temp, AttrOf(attr)); + } else { + my_ch = CHDEREF(ch); RemAttr(attr, A_ALTCHARSET); - if (temp == 0) - temp = ' '; } - if (temp != 0) - SetChar(my_ch, temp, AttrOf(attr)); } ch = CHREF(my_ch); } @@ -304,18 +305,10 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch) } UpdateAttrs(SP_PARM, attr); + PUTC(CHDEREF(ch)); #if !USE_WIDEC_SUPPORT - /* FIXME - we do this special case for signal handling, should see how to - * make it work for wide characters. - */ - if (SP_PARM->_outch != 0) { - SP_PARM->_outch(NCURSES_SP_ARGx UChar(ch)); - } else + COUNT_OUTCHARS(1); #endif - { - PUTC(CHDEREF(ch), SP_PARM->_ofp); /* macro's fastest... */ - COUNT_OUTCHARS(1); - } SP_PARM->_curscol += chlen; if (char_padding) { TPUTS_TRACE("char_padding"); @@ -342,7 +335,7 @@ check_pending(NCURSES_SP_DCL0) struct pollfd fds[1]; fds[0].fd = SP_PARM->_checkfd; fds[0].events = POLLIN; - if (poll(fds, 1, 0) > 0) { + if (poll(fds, (size_t) 1, 0) > 0) { have_pending = TRUE; } #elif defined(__BEOS__) @@ -1079,28 +1072,26 @@ ClrUpdate(NCURSES_SP_DCL0) */ static void -ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, bool needclear) +ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, int needclear) { int j; - if (SP_PARM != 0) { - if (CurScreen(SP_PARM) != 0 - && SP_PARM->_cursrow >= 0) { - for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) { - if (j >= 0) { - NCURSES_CH_T *cp = - &(CurScreen(SP_PARM)->_line[SP_PARM->_cursrow].text[j]); - - if (!CharEq(*cp, blank)) { - *cp = blank; - needclear = TRUE; - } + if (CurScreen(SP_PARM) != 0 + && SP_PARM->_cursrow >= 0) { + for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) { + if (j >= 0) { + NCURSES_CH_T *cp = + &(CurScreen(SP_PARM)->_line[SP_PARM->_cursrow].text[j]); + + if (!CharEq(*cp, blank)) { + *cp = blank; + needclear = TRUE; } } } } - if (needclear && (SP_PARM != 0)) { + if (needclear) { UpdateAttrs(SP_PARM, blank); TPUTS_TRACE("clr_eol"); if (clr_eol && SP_PARM->_el_cost <= (screen_columns(SP_PARM) - SP_PARM->_curscol)) { @@ -1124,9 +1115,6 @@ ClrToEOS(NCURSES_SP_DCLx NCURSES_CH_T blank) { int row, col; - if (0 == SP_PARM) - return; - row = SP_PARM->_cursrow; col = SP_PARM->_curscol; @@ -2162,33 +2150,33 @@ _nc_screen_init(void) NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_screen_wrap) (NCURSES_SP_DCL0) { - if (SP_PARM == 0) - return; + if (SP_PARM != 0) { - UpdateAttrs(SP_PARM, normal); + UpdateAttrs(SP_PARM, normal); #if NCURSES_EXT_FUNCS - if (SP_PARM->_coloron - && !SP_PARM->_default_color) { - static const NCURSES_CH_T blank = NewChar(BLANK_TEXT); - SP_PARM->_default_color = TRUE; - NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx - -1, - 0, - FALSE, - NCURSES_SP_NAME(_nc_outch)); - SP_PARM->_default_color = FALSE; - - TINFO_MVCUR(NCURSES_SP_ARGx - SP_PARM->_cursrow, - SP_PARM->_curscol, - screen_lines(SP_PARM) - 1, - 0); - - ClrToEOL(NCURSES_SP_ARGx blank, TRUE); - } + if (SP_PARM->_coloron + && !SP_PARM->_default_color) { + static const NCURSES_CH_T blank = NewChar(BLANK_TEXT); + SP_PARM->_default_color = TRUE; + NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx + -1, + 0, + FALSE, + NCURSES_SP_NAME(_nc_outch)); + SP_PARM->_default_color = FALSE; + + TINFO_MVCUR(NCURSES_SP_ARGx + SP_PARM->_cursrow, + SP_PARM->_curscol, + screen_lines(SP_PARM) - 1, + 0); + + ClrToEOL(NCURSES_SP_ARGx blank, TRUE); + } #endif - if (SP_PARM->_color_defs) { - NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG); + if (SP_PARM->_color_defs) { + NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG); + } } }