From 420c967605b380daf4a16344d1e1aab588eca0b9 Mon Sep 17 00:00:00 2001 From: nick black Date: Fri, 16 Apr 2021 08:08:11 -0400 Subject: [PATCH] [postpaint_cell] don't damage cells hidden by sprixel #1527 --- src/lib/internal.h | 1 + src/lib/render.c | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/internal.h b/src/lib/internal.h index 265223b0c..b3864ba9a 100644 --- a/src/lib/internal.h +++ b/src/lib/internal.h @@ -948,6 +948,7 @@ static inline bool sprixel_kitty_p(const tinfo* t){ static inline sprixcell_e sprixel_state(sprixel* s, int y, int x){ int localy = y - s->n->absy; int localx = x - s->n->absx; +//fprintf(stderr, "TAM %d at %d/%d (%d/%d)\n", s->n->tacache[localy * s->dimx + localx], localy, localx, y, x); return s->n->tacache[localy * s->dimx + localx]; } diff --git a/src/lib/render.c b/src/lib/render.c index 01b011043..024bf85dd 100644 --- a/src/lib/render.c +++ b/src/lib/render.c @@ -386,7 +386,13 @@ postpaint_cell(nccell* lastframe, int dimx, struct crender* crender, nccell* prevcell = &lastframe[fbcellidx(y, dimx, *x)]; if(cellcmp_and_dupfar(pool, prevcell, crender->p, targc) > 0){ //fprintf(stderr, "damaging due to cmp\n"); - crender->s.damaged = 1; + if(crender->sprixel){ + if(!crender->s.p_beats_sprixel && sprixel_state(crender->sprixel, y, *x) != SPRIXCELL_OPAQUE){ + crender->s.damaged = 1; + } + }else{ + crender->s.damaged = 1; + } assert(!nccell_wide_right_p(targc)); const int width = targc->width; for(int i = 1 ; i < width ; ++i){