From 45e219eac23ea4a8181f68300fed693d9ac361a0 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 30 May 2014 15:48:29 -0400 Subject: canvas: Use pool. --- libdimension/gl.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'libdimension/gl.c') diff --git a/libdimension/gl.c b/libdimension/gl.c index 0b6b0b0..c6a2da5 100644 --- a/libdimension/gl.c +++ b/libdimension/gl.c @@ -1,5 +1,5 @@ /************************************************************************* - * Copyright (C) 2009-2011 Tavian Barnes * + * Copyright (C) 2009-2014 Tavian Barnes * * * * This file is part of The Dimension Library. * * * @@ -77,21 +77,18 @@ dmnsn_gl_write_canvas(const dmnsn_canvas *canvas) } /* Read a canvas from a GL framebuffer. Returns NULL on failure. */ -dmnsn_canvas * -dmnsn_gl_read_canvas(size_t x0, size_t y0, - size_t width, size_t height) +int +dmnsn_gl_read_canvas(dmnsn_canvas *canvas, size_t x0, size_t y0) { - dmnsn_canvas *canvas = dmnsn_new_canvas(width, height); + size_t width = canvas->width; + size_t height = canvas->height; /* Array of 16-bit ints in RGBA order */ GLushort *pixels = dmnsn_malloc(4*width*height*sizeof(GLushort)); - glReadPixels(x0, y0, width, height, GL_RGBA, GL_UNSIGNED_SHORT, pixels); - if (glGetError() != GL_NO_ERROR) { dmnsn_free(pixels); - dmnsn_delete_canvas(canvas); - return NULL; + return -1; } for (size_t y = 0; y < height; ++y) { @@ -111,5 +108,5 @@ dmnsn_gl_read_canvas(size_t x0, size_t y0, } dmnsn_free(pixels); - return canvas; + return 0; } -- cgit v1.2.3