[cogl/wip/neil/snippets: 5/26] framebuffer: Handle a NULL previous framebuffer when flushing
- From: Neil Roberts <nroberts src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cogl/wip/neil/snippets: 5/26] framebuffer: Handle a NULL previous framebuffer when flushing
- Date: Fri, 2 Dec 2011 12:45:26 +0000 (UTC)
commit 3e139224c12a592daff874c41df96d4d57797643
Author: Neil Roberts <neil linux intel com>
Date: Thu Dec 1 18:46:37 2011 +0000
framebuffer: Handle a NULL previous framebuffer when flushing
_cogl_framebuffer_flush_state needs to handle the case where
ctx->current_draw_buffer is NULL because this will be set in the
destructor for CoglFramebuffer if the framebuffer being destroyed is
the current framebuffer. This patch just makes it assume all state has
changed in that case.
cogl/cogl-framebuffer.c | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
---
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
index f8fc101..eaa0be7 100644
--- a/cogl/cogl-framebuffer.c
+++ b/cogl/cogl-framebuffer.c
@@ -1615,12 +1615,21 @@ _cogl_framebuffer_flush_state (CoglFramebuffer *draw_buffer,
if (ctx->current_draw_buffer != draw_buffer)
{
- /* NB: we only need to compare the state we're being asked to flush
- * and we don't need to compare the state we've already decided
- * we will definitely flush... */
- differences |= _cogl_framebuffer_compare (ctx->current_draw_buffer,
- draw_buffer,
- state & ~differences);
+ /* If the previous draw buffer is NULL then we'll assume
+ everything has changed. This can happen if a framebuffer is
+ destroyed while it is the last flushed draw buffer. In that
+ case the framebuffer destructor will set
+ ctx->current_draw_buffer to NULL */
+ if (ctx->current_draw_buffer == NULL)
+ differences |= state;
+ else
+ /* NB: we only need to compare the state we're being asked to flush
+ * and we don't need to compare the state we've already decided
+ * we will definitely flush... */
+ differences |= _cogl_framebuffer_compare (ctx->current_draw_buffer,
+ draw_buffer,
+ state & ~differences);
+
/* NB: we don't take a reference here, to avoid a circular
* reference. */
ctx->current_draw_buffer = draw_buffer;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]