[cogl] texture: Fix error handling in get_texture_bits_via_offscreen
- From: Neil Roberts <nroberts src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cogl] texture: Fix error handling in get_texture_bits_via_offscreen
- Date: Mon, 2 Apr 2012 22:48:51 +0000 (UTC)
commit a000189c6844b487786d3599f389fd662feaec3b
Author: Adel Gadllah <adel gadllah gmail com>
Date: Sat Mar 31 14:29:01 2012 +0200
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>
cogl/cogl-framebuffer.c | 3 +++
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 af95cac..dff08ff 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 ab07f91..f44970c 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]