summaryrefslogtreecommitdiff
path: root/cogl/cogl-framebuffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'cogl/cogl-framebuffer.c')
-rw-r--r--cogl/cogl-framebuffer.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
index 829b5c2a..7a5e432b 100644
--- a/cogl/cogl-framebuffer.c
+++ b/cogl/cogl-framebuffer.c
@@ -1489,7 +1489,7 @@ _cogl_framebuffer_flush_viewport_state (CoglFramebuffer *framebuffer)
* left, while Cogl defines them to be top left.
* NB: We render upside down to offscreen framebuffers so we don't
* need to convert the y offset in this case. */
- if (cogl_is_offscreen (framebuffer))
+ if (_cogl_framebuffer_is_flipped (framebuffer))
gl_viewport_y = framebuffer->viewport_y;
else
gl_viewport_y = framebuffer->height -
@@ -2407,3 +2407,20 @@ _cogl_framebuffer_restore_clip_stack (CoglFramebuffer *framebuffer)
framebuffer->context->current_draw_buffer_changes |=
COGL_FRAMEBUFFER_STATE_CLIP;
}
+
+gboolean
+_cogl_framebuffer_is_flipped (CoglFramebuffer *framebuffer)
+{
+ CoglRendererFramebufferOrientation orientation =
+ framebuffer->context->framebuffer_orientation;
+
+ switch (framebuffer->type)
+ {
+ case COGL_FRAMEBUFFER_TYPE_ONSCREEN:
+ return !!(orientation & COGL_RENDERER_FLIP_ONSCREEN);
+ case COGL_FRAMEBUFFER_TYPE_OFFSCREEN:
+ return !!(orientation & COGL_RENDERER_FLIP_OFFSCREEN);
+ }
+
+ g_assert_not_reached ();
+}