From d56a6fadc5118e7fddba6294245a355ef2d3def9 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 12 Nov 2013 21:42:05 +0100 Subject: libmemdraw: change memimageinit() to return integer error (for kernel), minor cleanups --- sys/src/libmemdraw/alloc.c | 2 +- sys/src/libmemdraw/draw.c | 26 ++++++++++---------------- sys/src/libmemdraw/fillpoly.c | 2 +- 3 files changed, 12 insertions(+), 18 deletions(-) (limited to 'sys/src/libmemdraw') diff --git a/sys/src/libmemdraw/alloc.c b/sys/src/libmemdraw/alloc.c index d2852c3c4..aa3597f71 100644 --- a/sys/src/libmemdraw/alloc.c +++ b/sys/src/libmemdraw/alloc.c @@ -121,7 +121,7 @@ freememimage(Memimage *i) { if(i == nil) return; - if(i->data->ref-- == 1 && i->data->allocd){ + if(--i->data->ref == 0 && i->data->allocd){ if(i->data->base) poolfree(imagmem, i->data->base); free(i->data); diff --git a/sys/src/libmemdraw/draw.c b/sys/src/libmemdraw/draw.c index 5a15e4dae..96cb01e44 100644 --- a/sys/src/libmemdraw/draw.c +++ b/sys/src/libmemdraw/draw.c @@ -6,7 +6,6 @@ extern Pool* imagmem; int drawdebug; -static int tablesbuilt; /* perfect approximation to NTSC = .299r+.587g+.114b when 0 ≤ r,g,b < 256 */ #define RGB2K(r,g,b) ((156763*(r)+307758*(g)+59769*(b))>>19) @@ -54,16 +53,15 @@ Memimage *memopaque; int _ifmt(Fmt*); -void +int memimageinit(void) { static int didinit = 0; if(didinit) - return; - - didinit = 1; + return 0; + if(imagmem != nil) if(strcmp(imagmem->name, "Image") == 0 || strcmp(imagmem->name, "image") == 0) imagmem->move = memimagemove; @@ -75,22 +73,25 @@ memimageinit(void) fmtinstall('b', _ifmt); memones = allocmemimage(Rect(0,0,1,1), GREY1); + memzeros = allocmemimage(Rect(0,0,1,1), GREY1); + if(memones == nil || memzeros == nil) + return -1; + memones->flags |= Frepl; memones->clipr = Rect(-0x3FFFFFF, -0x3FFFFFF, 0x3FFFFFF, 0x3FFFFFF); *byteaddr(memones, ZP) = ~0; - memzeros = allocmemimage(Rect(0,0,1,1), GREY1); memzeros->flags |= Frepl; memzeros->clipr = Rect(-0x3FFFFFF, -0x3FFFFFF, 0x3FFFFFF, 0x3FFFFFF); *byteaddr(memzeros, ZP) = 0; - if(memones == nil || memzeros == nil) - assert(0 /*cannot initialize memimage library */); /* RSC BUG */ - memwhite = memones; memblack = memzeros; memopaque = memones; memtransparent = memzeros; + + didinit = 1; + return 0; } static ulong imgtorgba(Memimage*, ulong); @@ -354,13 +355,6 @@ mktables(void) { int i, j, mask, sh, small; - if(tablesbuilt) - return; - - fmtinstall('R', Rfmt); - fmtinstall('P', Pfmt); - tablesbuilt = 1; - /* bit replication up to 8 bits */ for(i=0; i<256; i++){ for(j=0; j<=8; j++){ /* j <= 8 [sic] */ diff --git a/sys/src/libmemdraw/fillpoly.c b/sys/src/libmemdraw/fillpoly.c index 6d5370a9a..6ecccc0a1 100644 --- a/sys/src/libmemdraw/fillpoly.c +++ b/sys/src/libmemdraw/fillpoly.c @@ -79,7 +79,7 @@ _memfillpolysc(Memimage *dst, Point *vert, int nvert, int w, Memimage *src, Poin Point p0; int i; - if(nvert == 0) + if(nvert <= 0) return; seg = malloc((nvert+2)*sizeof(Seg*)); -- cgit v1.2.3