Introduction
Introduction Statistics Contact Development Disclaimer Help
tfixed optimized drawing routine and factored some code. - st - [fork] customiz…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 5258d6054599e456c260984b8619500d0b4b75b7
parent b4f623f9109cc38a87469c6430d5e780e9a01989
Author: AurĂ©lien Aptel <[email protected]>
Date: Sun, 29 Aug 2010 20:12:44 +0200
fixed optimized drawing routine and factored some code.
Diffstat:
M st.c | 33 +++++++++++++++++------------…
1 file changed, 18 insertions(+), 15 deletions(-)
---
diff --git a/st.c b/st.c
t@@ -46,8 +46,8 @@
/* Attribute, Cursor, Character state, Terminal mode, Screen draw mode */
enum { ATTR_NULL=0 , ATTR_REVERSE=1 , ATTR_UNDERLINE=2, ATTR_BOLD=4, ATTR_GFX=…
-enum { CURSOR_UP, CURSOR_DOWN, CURSOR_LEFT, CURSOR_RIGHT, CURSOR_HIDE, CURSOR_…
- CURSOR_SAVE, CURSOR_LOAD };
+enum { CURSOR_UP, CURSOR_DOWN, CURSOR_LEFT, CURSOR_RIGHT, CURSOR_HIDE = 1,
+ CURSOR_DRAW = 0, CURSOR_SAVE, CURSOR_LOAD };
enum { GLYPH_SET=1, GLYPH_DIRTY=2 };
enum { MODE_WRAP=1, MODE_INSERT=2, MODE_APPKEYPAD=4 };
enum { ESC_START=1, ESC_CSI=2, ESC_OSC=4, ESC_TITLE=8, ESC_ALTCHARSET=16 };
t@@ -711,7 +711,7 @@ csihandle(void) {
case 12: /* att610 -- Stop blinking cursor (IGNORED) */
break;
case 25:
- term.c.hide = 1;
+ term.c.hide = CURSOR_HIDE;
break;
case 1048: /* XXX: no alt. screen to erase/save */
case 1049:
t@@ -760,7 +760,7 @@ csihandle(void) {
case 12: /* att610 -- Start blinking cursor (IGNORED) …
break;
case 25:
- term.c.hide = 0;
+ term.c.hide = CURSOR_DRAW;
break;
case 1048:
case 1049: /* XXX: no alt. screen to erase/save */
t@@ -1166,8 +1166,7 @@ draw(int dummy) {
if(term.line[y][x].state & GLYPH_SET)
xdrawc(x, y, term.line[y][x]);
- if(!term.c.hide)
- xcursor(CURSOR_DRAW);
+ xcursor(term.c.hide);
XCopyArea(xw.dis, xw.buf, xw.win, dc.gc, 0, 0, xw.bufw, xw.bufh, BORDE…
XFlush(xw.dis);
}
t@@ -1187,19 +1186,23 @@ draw(int redraw_all) {
i = ox = 0;
for(x = 0; x < term.col; x++) {
new = term.line[y][x];
- if(!ATTRCMP(base, new) && i < DRAW_BUF_SIZ)
- buf[i++] = new.c;
- else {
+ if(i > 0 && (!(new.state & GLYPH_SET) || ATTRCMP(base,…
+ i >= DRAW_BUF_SIZ)) {
xdraws(buf, base, ox, y, i);
- buf[0] = new.c;
- i = 1;
- ox = x;
- base = new;
+ i = 0;
+ }
+ if(new.state & GLYPH_SET) {
+ if(i == 0) {
+ ox = x;
+ base = new;
+ }
+ buf[i++] = new.c;
}
}
- xdraws(buf, base, ox, y, i);
+ if(i > 0)
+ xdraws(buf, base, ox, y, i);
}
- xcursor(term.c.hide ? CURSOR_HIDE : CURSOR_DRAW);
+ xcursor(term.c.hide);
XCopyArea(xw.dis, xw.buf, xw.win, dc.gc, 0, 0, xw.bufw, xw.bufh, BORDE…
XFlush(xw.dis);
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.