diff options
author | Adel Gadllah <adel.gadllah@gmail.com> | 2012-03-31 14:29:01 +0200 |
---|---|---|
committer | Neil Roberts <neil@linux.intel.com> | 2012-04-02 23:32:53 +0100 |
commit | a000189c6844b487786d3599f389fd662feaec3b (patch) | |
tree | 522b32951f9f534dcbd5ca35ae42920193dc353e | |
parent | 8af076ced1b715ca5de52041b01fb5df0b629e22 (diff) | |
download | cogl-a000189c6844b487786d3599f389fd662feaec3b.tar.gz |
texture: Fix error handling in get_texture_bits_via_offscreen
get_texture_bits_via_offscreen does not check the return value of
cogl_framebuffer_read_pixels_into_bitmap which results into never
using the fallback path texture_get_cb.
cogl_framebuffer_read_pixels_into_bitmap does not check whether the framebuffer
is properly allocated though; so fix that as well.
https://bugzilla.gnome.org/show_bug.cgi?id=673137
Reviewed-by: Neil Roberts <neil@linux.intel.com>
-rw-r--r-- | cogl/cogl-framebuffer.c | 3 | ||||
-rw-r--r-- | cogl/cogl-texture.c | 11 |
2 files changed, 9 insertions, 5 deletions
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c index af95cac3..dff08fff 100644 --- a/cogl/cogl-framebuffer.c +++ b/cogl/cogl-framebuffer.c @@ -1963,6 +1963,9 @@ cogl_framebuffer_read_pixels_into_bitmap (CoglFramebuffer *framebuffer, _COGL_RETURN_VAL_IF_FAIL (source == COGL_READ_PIXELS_COLOR_BUFFER, FALSE); _COGL_RETURN_VAL_IF_FAIL (cogl_is_framebuffer (framebuffer), FALSE); + if (!cogl_framebuffer_allocate (framebuffer, NULL)) + return FALSE; + ctx = cogl_framebuffer_get_context (framebuffer); width = cogl_bitmap_get_width (bitmap); diff --git a/cogl/cogl-texture.c b/cogl/cogl-texture.c index ab07f911..f44970c2 100644 --- a/cogl/cogl-texture.c +++ b/cogl/cogl-texture.c @@ -965,6 +965,7 @@ get_texture_bits_via_offscreen (CoglTexture *texture, CoglOffscreen *offscreen; CoglFramebuffer *framebuffer; CoglBitmap *bitmap; + gboolean ret; _COGL_GET_CONTEXT (ctx, FALSE); @@ -986,15 +987,15 @@ get_texture_bits_via_offscreen (CoglTexture *texture, dst_format, dst_rowstride, dst_bits); - cogl_framebuffer_read_pixels_into_bitmap (framebuffer, - x, y, - COGL_READ_PIXELS_COLOR_BUFFER, - bitmap); + ret = cogl_framebuffer_read_pixels_into_bitmap (framebuffer, + x, y, + COGL_READ_PIXELS_COLOR_BUFFER, + bitmap); cogl_object_unref (bitmap); cogl_object_unref (framebuffer); - return TRUE; + return ret; } static gboolean |