Introduction
Introduction Statistics Contact Development Disclaimer Help
Update XIM cursor position only if changed - st - simple terminal
git clone git://git.suckless.org/st
Log
Files
Refs
README
LICENSE
---
commit 72e3f6c7c05b4d5b56388508bb20a863aec279f5
parent 33a9a456644ceb235ea6ce61282f3bdce7a8b547
Author: Ivan Tham <[email protected]>
Date: Sun, 19 Apr 2020 19:38:39 +0200
Update XIM cursor position only if changed
Updating XIM cursor position is expensive, so only update it when cursor
position changed.
Diffstat:
M st.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/st.c b/st.c
@@ -2571,6 +2571,7 @@ void
drawregion(int x1, int y1, int x2, int y2)
{
int y;
+
for (y = y1; y < y2; y++) {
if (!term.dirty[y])
continue;
@@ -2583,7 +2584,7 @@ drawregion(int x1, int y1, int x2, int y2)
void
draw(void)
{
- int cx = term.c.x;
+ int cx = term.c.x, ocx = term.ocx, ocy = term.ocy;
if (!xstartdraw())
return;
@@ -2599,9 +2600,11 @@ draw(void)
drawregion(0, 0, term.col, term.row);
xdrawcursor(cx, term.c.y, term.line[term.c.y][cx],
term.ocx, term.ocy, term.line[term.ocy][term.ocx]);
- term.ocx = cx, term.ocy = term.c.y;
+ term.ocx = cx;
+ term.ocy = term.c.y;
xfinishdraw();
- xximspot(term.ocx, term.ocy);
+ if (ocx != term.ocx || ocy != term.ocy)
+ xximspot(term.ocx, term.ocy);
}
void
You are viewing proxied material from suckless.org. 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.