From 36325969b17a1fb8b1de2c5bd8c6efea08cee3bd Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Sat, 18 Dec 2010 19:22:32 +0330 Subject: [PATCH] draw: update from fbpad --- draw.c | 26 +++----------------------- draw.h | 3 +-- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/draw.c b/draw.c index 929eb02..8fb03cf 100644 --- a/draw.c +++ b/draw.c @@ -8,7 +8,6 @@ #include #include "draw.h" -#define MAXFBWIDTH (1 << 12) #define BPP sizeof(fbval_t) #define NLEVELS (1 << 8) @@ -19,7 +18,7 @@ static struct fb_fix_screeninfo finfo; static int rl, rr, gl, gr, bl, br; static int nr, ng, nb; -static int fb_len() +static int fb_len(void) { return finfo.line_length * vinfo.yres_virtual; } @@ -100,6 +99,7 @@ void fb_init(void) xerror("ioctl failed"); if ((vinfo.bits_per_pixel + 7) >> 3 != BPP) xdie("fbval_t does not match framebuffer depth"); + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); init_colors(); fb = mmap(NULL, fb_len(), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (fb == MAP_FAILED) @@ -115,7 +115,7 @@ void fb_set(int r, int c, fbval_t *mem, int len) memcpy(fb + loc, mem, len * BPP); } -void fb_free() +void fb_free(void) { fb_cmap_save(0); munmap(fb, fb_len()); @@ -136,23 +136,3 @@ int fb_cols(void) { return vinfo.xres; } - -static unsigned char *rowaddr(int r) -{ - return fb + (r + vinfo.yoffset) * finfo.line_length; -} - -static unsigned long cache[MAXFBWIDTH]; -void fb_box(int sr, int sc, int er, int ec, fbval_t val) -{ - int i; - int pc = sizeof(cache[0]) / sizeof(val); - int cn = MIN((ec - sc) / pc + 1, MAXFBWIDTH); - unsigned long nv = val; - for (i = 1; i < pc; i++) - nv = (nv << (sizeof(val) * 8)) | val; - for (i = 0; i < cn; i++) - cache[i] = nv; - for (i = sr; i < er; i++) - memcpy(rowaddr(i) + sc * BPP, cache, (ec - sc) * BPP); -} diff --git a/draw.h b/draw.h index a13328b..6d9fd76 100644 --- a/draw.h +++ b/draw.h @@ -4,7 +4,7 @@ /* framebuffer device */ #define FBDEV_PATH "/dev/fb0" /* framebuffer depth */ -typedef unsigned short fbval_t; +typedef unsigned int fbval_t; void fb_init(void); void fb_free(void); @@ -12,5 +12,4 @@ fbval_t fb_color(unsigned char r, unsigned char g, unsigned char b); void fb_set(int r, int c, fbval_t *mem, int len); int fb_rows(void); int fb_cols(void); -void fb_box(int sr, int sc, int er, int ec, fbval_t val); void fb_cmap(void); -- 2.11.4.GIT