|
|
1.1 root 1: /*
2: * make the current screen look like "win" over the area covered by
3: * win.
4: *
5: * 7/9/81 (Berkeley) @(#)refresh.c 1.6
6: */
7:
8: /* @(#) wnoutrfrsh.c: 1.1 10/15/83 (1.14 3/6/83) */
9: #include "curses.ext"
10:
11: extern WINDOW *lwin;
12:
13: /* Put out window but don't actually update screen. */
14: wnoutrefresh(win)
15: register WINDOW *win;
16: {
17: register int wy, y;
18: register chtype *nsp, *lch;
19:
20: # ifdef DEBUG
21: if( win == stdscr )
22: {
23: if(outf) fprintf(outf, "REFRESH(stdscr %x)", win);
24: }
25: else
26: {
27: if( win == curscr )
28: {
29: if(outf) fprintf(outf, "REFRESH(curscr %x)", win);
30: }
31: else
32: {
33: if(outf) fprintf(outf, "REFRESH(%d)", win);
34: }
35: }
36: if(outf) fprintf(outf, " (win == curscr) = %d, maxy %d\n", win, (win == curscr), win->_maxy);
37: if( win != curscr )
38: {
39: _dumpwin( win );
40: }
41: if(outf) fprintf(outf, "REFRESH:\n\tfirstch\tlastch\n");
42: # endif DEBUG
43: /*
44: * initialize loop parameters
45: */
46:
47: if( win->_clear || win == curscr || SP->doclear )
48: {
49: # ifdef DEBUG
50: if (outf) fprintf(outf, "refresh clears, win->_clear %d, curscr %d\n", win->_clear, win == curscr);
51: # endif DEBUG
52: SP->doclear = 1;
53: win->_clear = FALSE;
54: if( win != curscr )
55: {
56: touchwin( win );
57: }
58: }
59:
60: if( win == curscr )
61: {
62: #ifdef DEBUG
63: if(outf) fprintf(outf, "Calling _ll_refresh(FALSE)\n" );
64: #endif DEBUG
65: _ll_refresh(FALSE);
66: return OK;
67: }
68: #ifdef DEBUG
69: if(outf) fprintf(outf, "Didn't do _ll_refresh(FALSE)\n" );
70: #endif DEBUG
71:
72: for( wy = 0; wy < win->_maxy; wy++ )
73: {
74: if( win->_firstch[wy] != _NOCHANGE )
75: {
76: y = wy + win->_begy;
77: lch = &win->_y[wy][win->_maxx-1];
78: nsp = &win->_y[wy][0];
79: _ll_move(y, win->_begx);
80: while( nsp <= lch )
81: {
82: if( SP->virt_x++ < columns )
83: {
84: *SP->curptr++ = *nsp++;
85: }
86: else
87: {
88: break;
89: }
90: }
91: win->_firstch[wy] = _NOCHANGE;
92: }
93: }
94: lwin = win;
95: return OK;
96: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.