ref: cf4c29056644b29a7f9f615a4c0d12bf6c15409c
parent: 5f5ba7ed32140f1bd9a35de52a361fd192afcdcd
author: qwx <qwx@sciops.net>
date: Sat Feb 4 12:19:35 EST 2023
draw: improve panning drawing performance by reducing updates
--- a/draw.c
+++ b/draw.c
@@ -28,6 +28,7 @@
static usize T;
static int sampwidth = 1;
static double zoom = 1.0;
+int viewdone;
static Image *
eallocimage(Rectangle r, int repl, ulong col)
@@ -162,9 +163,10 @@
draw(viewbg, r, col[Csamp], nil, ZP);
unlockdisplay(display);
x = (d.pos - views) / T;
- if(x % 100 == 0)
+ if(x % 320 == 0)
update();
}
+ viewdone = 1;
update();
qunlock(&lsync);
}
@@ -205,6 +207,8 @@
int x;
usize p;
+ if(!viewdone)
+ return;
p = dot.pos;
lockdisplay(display);
drawview();
@@ -360,7 +364,7 @@
resetdraw();
unlockdisplay(display);
nbsendul(drawc, 1);
- update();
+ viewdone = 0;
}
void
--- a/pplay.c
+++ b/pplay.c
@@ -40,7 +40,8 @@
}
nerr = 0;
advance(&dot, n);
- update();
+ if(viewdone)
+ update();
yield();
}
}