From 880fa39f649cce55b571cb6277750a4b98d97916 Mon Sep 17 00:00:00 2001 From: GetAway Date: Wed, 4 Oct 2017 12:31:25 +0200 Subject: [PATCH] init backbuffer depending on FSCREENINFO line_length this prevents horizontal cut of OSD with new fb driver bump version 2.12 --- fb_display.c | 4 ++-- gfx.c | 22 +++++++++++----------- shellexec.c | 10 +++++++--- shellexec.h | 2 +- text.c | 8 ++++---- 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/fb_display.c b/fb_display.c index ce645a4..6db3adc 100644 --- a/fb_display.c +++ b/fb_display.c @@ -76,7 +76,7 @@ void blit2FB(void *fbbuff, { uint32_t * data = (uint32_t *) fbbuff; - uint32_t * d = (uint32_t *)lbb + xo + stride * ssy/*yoffs*/; + uint32_t * d = (uint32_t *)lbb + xo + swidth * ssy/*yoffs*/; uint32_t * d2; for (count = 0; count < yc; count++ ) { @@ -99,7 +99,7 @@ void blit2FB(void *fbbuff, d2++; pixpos++; } - d += stride; + d += swidth; } } break; diff --git a/gfx.c b/gfx.c index 8450739..9e09cf4 100644 --- a/gfx.c +++ b/gfx.c @@ -12,7 +12,7 @@ void RenderBox(int _sx, int _sy, int _ex, int _ey, int rad, int col) { int F,R=rad,ssx=startx+_sx,ssy=starty+_sy,dxx=_ex-_sx,dyy=_ey-_sy,rx,ry,wx,wy,count; - uint32_t *pos = lbb + ssx + stride * ssy; + uint32_t *pos = lbb + ssx + swidth * ssy; uint32_t *pos0, *pos1, *pos2, *pos3, *i; uint32_t pix = bgra[col]; @@ -63,10 +63,10 @@ void RenderBox(int _sx, int _sy, int _ex, int _ey, int rad, int col) rx=R-ssx; ry=R-ssy; - pos0=pos+(dyy-ry)*stride; - pos1=pos+ry*stride; - pos2=pos+rx*stride; - pos3=pos+(dyy-rx)*stride; + pos0=pos+(dyy-ry)*swidth; + pos1=pos+ry*swidth; + pos2=pos+rx*swidth; + pos3=pos+(dyy-rx)*swidth; while (ssx <= ssy) { rx=R-ssx; @@ -84,8 +84,8 @@ void RenderBox(int _sx, int _sy, int _ex, int _ey, int rad, int col) *i = pix; ssx++; - pos2-=stride; - pos3+=stride; + pos2-=swidth; + pos3+=swidth; if (F<0) { F+=(ssx<<1)-1; @@ -94,18 +94,18 @@ void RenderBox(int _sx, int _sy, int _ex, int _ey, int rad, int col) { F+=((ssx-ssy)<<1); ssy--; - pos0-=stride; - pos1+=stride; + pos0-=swidth; + pos1+=swidth; } } - pos+=R*stride; + pos+=R*swidth; } for (count=R; count<(dyy-R); count++) { for(i=pos; i\n", __plugin__); @@ -1793,7 +1798,6 @@ int main (int argc, char **argv) munmap(lfb, fix_screeninfo.smem_len); return -1; } - stride = fix_screeninfo.line_length/sizeof(uint32_t); //lbb=lfb; memset(lbb, TRANSP, var_screeninfo.xres*var_screeninfo.yres*sizeof(uint32_t)); diff --git a/shellexec.h b/shellexec.h index adbe485..9e0ef48 100644 --- a/shellexec.h +++ b/shellexec.h @@ -162,7 +162,7 @@ enum { #define TRANSP 0 extern uint32_t bgra[]; -extern int stride; +extern int swidth; extern uint32_t *lfb, *lbb; extern int FSIZE_BIG; diff --git a/text.c b/text.c index 0c8bfa2..384ef99 100644 --- a/text.c +++ b/text.c @@ -291,10 +291,10 @@ int RenderChar(FT_ULong currentchar, int _sx, int _sy, int _ex, int color) if (_sx + sbit->xadvance >= _ex) return -1; /* limit to maxwidth */ - uint32_t bgcolor = *(lbb + (starty + _sy - _d - 1) * stride + (startx + _sx + sbit->left)); + uint32_t bgcolor = *(lbb + (starty + _sy - _d - 1) * swidth + (startx + _sx + sbit->left)); uint32_t fgcolor = bgra[color]; uint32_t *colors = lookup_colors(fgcolor, bgcolor); - uint32_t *p = lbb + (startx + _sx + sbit->left + kerning.x) + stride * (starty + _sy - sbit->top - _d); + uint32_t *p = lbb + (startx + _sx + sbit->left + kerning.x) + swidth * (starty + _sy - sbit->top - _d); uint32_t *r = p + (_ex - _sx); /* end of usable box */ for(row = 0; row < sbit->height; row++) { @@ -308,8 +308,8 @@ int RenderChar(FT_ULong currentchar, int _sx, int _sy, int _ex, int color) if (q > r) /* we are past _ex */ break; } - p += stride; - r += stride; + p += swidth; + r += swidth; } } -- 2.39.5