ref: 2a853dc838b882d3eb0dc3f5bcb7cfad32baf416
parent: e6ae8d2002a6e790bb619335dabc530ad5cc425f
author: Sigrid Haflínudóttir <[email protected]>
date: Sat Mar 14 18:07:54 EDT 2020
print out new color only if it actually changed
--- a/picker.c
+++ b/picker.c
@@ -353,16 +353,21 @@
Rectangle r = srects[i];
r.max.x += 1;
if (ptinrect(m.xy, r)) {
+ ulong u;
+
c->v[i] = MIN(mode->max[i], (double)(m.xy.x - r.min.x) * mode->max[i]/(double)(Dx(r)-1));
mode->torgb(c->v, c->rgba);
- c->u = D2C(c->rgba[0])<<24 | D2C(c->rgba[1])<<16 | D2C(c->rgba[2])<<8 | D2C(c->v[3]);
- if (nchan < 4)
- j = sprint(buf, "%d %06lux\n", curcolor, c->u>>8);
- else
- j = sprint(buf, "%d %08lux\n", curcolor, c->u);
- if (write(1, buf, j) != j)
- goto end;
- redraw();
+ u = D2C(c->rgba[0])<<24 | D2C(c->rgba[1])<<16 | D2C(c->rgba[2])<<8 | D2C(c->v[3]);
+ if (c->u != u) {
+ c->u = u;
+ if (nchan < 4)
+ j = sprint(buf, "%d %06lux\n", curcolor, u>>8);
+ else
+ j = sprint(buf, "%d %08lux\n", curcolor, u);
+ if (write(1, buf, j) != j)
+ goto end;
+ redraw();
+ }
goto next;
}
}