From f0caa7d190e51af9ba4a487dc371b56174d56f31 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sun, 5 Jul 2009 19:18:24 +0000 Subject: Make optimizer registration fail if a canvas has already been written to. --- libdimension/canvas.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'libdimension/canvas.c') diff --git a/libdimension/canvas.c b/libdimension/canvas.c index d53c7ef..4151a0b 100644 --- a/libdimension/canvas.c +++ b/libdimension/canvas.c @@ -43,6 +43,7 @@ dmnsn_new_canvas(unsigned int x, unsigned int y) /* Allocate room for the optimizers */ canvas->optimizers = dmnsn_new_array(sizeof(dmnsn_canvas_optimizer)); + canvas->too_late = 0; } return canvas; @@ -71,10 +72,15 @@ dmnsn_delete_canvas(dmnsn_canvas *canvas) } /* Set a canvas optimizer */ -void +int dmnsn_optimize_canvas(dmnsn_canvas *canvas, dmnsn_canvas_optimizer optimizer) { - dmnsn_array_push(canvas->optimizers, &optimizer); + if (canvas->too_late) { + return 1; + } else { + dmnsn_array_push(canvas->optimizers, &optimizer); + return 0; + } } /* Set the color of a pixel */ @@ -85,6 +91,9 @@ dmnsn_set_pixel(dmnsn_canvas *canvas, unsigned int x, unsigned int y, unsigned int i; dmnsn_canvas_optimizer optimizer; + /* Don't allow any more optimizers */ + canvas->too_late = 1; + /* Set the pixel */ canvas->pixels[y*canvas->x + x] = color; -- cgit v1.2.3