diff options
| -rw-r--r-- | src/mesa/state_tracker/st_cb_texture.c | 17 | 
1 files changed, 10 insertions, 7 deletions
| diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index ed8eb2929a..b66630f9a6 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -255,8 +255,10 @@ get_texture_dims(GLenum target)   *   * We use the given st_texture_image as a clue to determine the size of the   * mipmap image at level=0. + * + * \return GL_TRUE for success, GL_FALSE if out of memory.   */ -static void +static GLboolean  guess_and_alloc_texture(struct st_context *st,  			struct st_texture_object *stObj,  			const struct st_texture_image *stImage) @@ -287,7 +289,8 @@ guess_and_alloc_texture(struct st_context *st,             (dims >= 3 && depth == 1) ) {           /* we can't determine the image size at level=0 */           stObj->width0 = stObj->height0 = stObj->depth0 = 0; -         return; +         /* this is not an out of memory error */ +         return GL_TRUE;        }     } @@ -349,7 +352,9 @@ guess_and_alloc_texture(struct st_context *st,                                   depth,                                   bindings); -   DBG("%s - success\n", __FUNCTION__); +   DBG("%s returning %d\n", __FUNCTION__, (stObj->pt != NULL)); + +   return stObj->pt != NULL;  } @@ -597,14 +602,12 @@ st_TexImage(GLcontext * ctx,     }     if (!stObj->pt) { -      guess_and_alloc_texture(st, stObj, stImage); -      if (!stObj->pt) { +      if (!guess_and_alloc_texture(st, stObj, stImage)) {           /* Probably out of memory.            * Try flushing any pending rendering, then retry.            */           st_finish(st); -         guess_and_alloc_texture(st, stObj, stImage); -         if (!stObj->pt) { +         if (!guess_and_alloc_texture(st, stObj, stImage)) {              _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");              return;           } | 
