[Cogl] [PATCH] Revert "Revert "Remove the framebuffer's stack of clip stacks""
Robert Bragg
robert at sixbynine.org
Wed Dec 4 09:17:35 PST 2013
This looks good to land to me:
Reviewed-by: Robert Bragg <robert at linux.intel.com>
thanks,
Robert
On Wed, Dec 4, 2013 at 4:23 PM, Neil Roberts <neil at linux.intel.com> wrote:
> Note, this patch is only for the 1.18 branch.
>
> ------- >8 --------------- (use git am --scissors to automatically chop here)
>
> This reverts commit bc4148933670cea024cf7525b58bfa673898ec75.
>
> The reason this was causing problems for Clutter is that it defines
> COGL_ENABLE_EXPERIMENTAL_2_0_API which is meant to cause the Cogl
> headers not to declare the deprecated API. The reverted patch moved
> some additional clipping API to a deprecated header which was
> previously being used by Clutter. Clutter was still successfully
> compiling but with some warnings for the missing function
> declarations. However when the binary is run the clipping would get
> completely messed up because it would assume all of the arguments to
> the functions are integers instead of floats and the wrong values
> would be passed.
>
> Clutter now has commit to make it use the 2.0 API instead of the
> deprecated functions so the revert is no longer necessary.
>
> https://git.gnome.org/browse/clutter/commit?id=705640367a5c2ae21405806bfa
> ---
> cogl-path/cogl-path.c | 5 +-
> cogl/Makefile.am | 8 +-
> cogl/cogl-clip-state-private.h | 56 --------
> cogl/cogl-clip-state.c | 187 -------------------------
> cogl/cogl-clip-state.h | 37 -----
> cogl/cogl-framebuffer-private.h | 7 +-
> cogl/cogl-framebuffer.c | 68 ++-------
> cogl/cogl.h | 2 +-
> cogl/cogl1-context.h | 222 ------------------------------
> cogl/deprecated/cogl-clip-state.c | 132 ++++++++++++++++++
> cogl/deprecated/cogl-clip-state.h | 259 +++++++++++++++++++++++++++++++++++
> cogl/driver/gl/cogl-framebuffer-gl.c | 3 +-
> 12 files changed, 414 insertions(+), 572 deletions(-)
> delete mode 100644 cogl/cogl-clip-state-private.h
> delete mode 100644 cogl/cogl-clip-state.c
> delete mode 100644 cogl/cogl-clip-state.h
> create mode 100644 cogl/deprecated/cogl-clip-state.c
> create mode 100644 cogl/deprecated/cogl-clip-state.h
>
> diff --git a/cogl-path/cogl-path.c b/cogl-path/cogl-path.c
> index cde6196..aeceda2 100644
> --- a/cogl-path/cogl-path.c
> +++ b/cogl-path/cogl-path.c
> @@ -1471,7 +1471,6 @@ void
> cogl_framebuffer_push_path_clip (CoglFramebuffer *framebuffer,
> CoglPath *path)
> {
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> CoglMatrixEntry *modelview_entry =
> _cogl_framebuffer_get_modelview_entry (framebuffer);
> CoglMatrixEntry *projection_entry =
> @@ -1485,8 +1484,8 @@ cogl_framebuffer_push_path_clip (CoglFramebuffer *framebuffer,
> framebuffer->viewport_height
> };
>
> - clip_state->stacks->data =
> - _cogl_clip_stack_push_from_path (clip_state->stacks->data,
> + framebuffer->clip_stack =
> + _cogl_clip_stack_push_from_path (framebuffer->clip_stack,
> path,
> modelview_entry,
> projection_entry,
> diff --git a/cogl/Makefile.am b/cogl/Makefile.am
> index 76cd93d..6ac1284 100644
> --- a/cogl/Makefile.am
> +++ b/cogl/Makefile.am
> @@ -69,6 +69,7 @@ EXTRA_DIST += cogl-1.0.pc.in cogl-$(COGL_API_VERSION)-experimental.pc.in
> DISTCLEANFILES += $(pc_files)
>
> cogl_deprecated_h = \
> + $(srcdir)/deprecated/cogl-clip-state.h \
> $(srcdir)/deprecated/cogl-fixed.h \
> $(srcdir)/deprecated/cogl-material-compat.h \
> $(srcdir)/deprecated/cogl-vertex-buffer.h \
> @@ -111,7 +112,6 @@ cogl_experimental_h = \
> $(srcdir)/cogl-indices.h \
> $(srcdir)/cogl-attribute.h \
> $(srcdir)/cogl-primitive.h \
> - $(srcdir)/cogl-clip-state.h \
> $(srcdir)/cogl-framebuffer.h \
> $(srcdir)/cogl-onscreen.h \
> $(srcdir)/cogl-frame-info.h \
> @@ -261,9 +261,6 @@ cogl_sources_c = \
> $(srcdir)/cogl-bitmap-pixbuf.c \
> $(srcdir)/cogl-clip-stack.h \
> $(srcdir)/cogl-clip-stack.c \
> - $(srcdir)/cogl-clip-state-private.h \
> - $(srcdir)/cogl-clip-state.h \
> - $(srcdir)/cogl-clip-state.c \
> $(srcdir)/cogl-feature-private.h \
> $(srcdir)/cogl-feature-private.c \
> $(srcdir)/cogl-color-private.h \
> @@ -393,6 +390,7 @@ cogl_sources_c = \
> $(srcdir)/cogl-closure-list.c \
> $(srcdir)/cogl-fence.c \
> $(srcdir)/cogl-fence-private.h \
> + $(srcdir)/deprecated/cogl-clip-state.c \
> $(srcdir)/deprecated/cogl-fixed.c \
> $(srcdir)/deprecated/cogl-vertex-buffer-private.h \
> $(srcdir)/deprecated/cogl-vertex-buffer.c \
> @@ -542,7 +540,7 @@ libcogl_la_LDFLAGS = \
> -no-undefined \
> -version-info @COGL_LT_CURRENT@:@COGL_LT_REVISION@:@COGL_LT_AGE@ \
> -export-dynamic \
> - -export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_foreach_sub_texture_in_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_framebuffer_draw_primitive|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_framebuffer_get_clip_state|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|_cogl_primitive_draw|test_|unit_test_).*"
> + -export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_foreach_sub_texture_in_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_framebuffer_draw_primitive|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|_cogl_primitive_draw|test_|unit_test_).*"
>
> libcogl_la_SOURCES = $(cogl_sources_c)
> nodist_libcogl_la_SOURCES = $(BUILT_SOURCES)
> diff --git a/cogl/cogl-clip-state-private.h b/cogl/cogl-clip-state-private.h
> deleted file mode 100644
> index e5e1488..0000000
> --- a/cogl/cogl-clip-state-private.h
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -/*
> - * Cogl
> - *
> - * An object oriented GL/GLES Abstraction/Utility Layer
> - *
> - * Copyright (C) 2007,2008,2009,2010 Intel Corporation.
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2 of the License, or (at your option) any later version.
> - *
> - * This library is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library. If not, see <http://www.gnu.org/licenses/>.
> - *
> - *
> - */
> -
> -#ifndef __COGL_CLIP_STATE_PRIVATE_H
> -#define __COGL_CLIP_STATE_PRIVATE_H
> -
> -#include "cogl-clip-stack.h"
> -
> -typedef struct _CoglClipState CoglClipState;
> -
> -struct _CoglClipState
> -{
> - /* Stack of CoglClipStacks */
> - GSList *stacks;
> -};
> -
> -void
> -_cogl_clip_state_init (CoglClipState *state);
> -
> -void
> -_cogl_clip_state_destroy (CoglClipState *state);
> -
> -CoglClipStack *
> -_cogl_clip_state_get_stack (CoglClipState *clip_state);
> -
> -void
> -_cogl_clip_state_set_stack (CoglClipState *clip_state,
> - CoglClipStack *clip_stack);
> -
> -void
> -_cogl_clip_state_save_clip_stack (CoglClipState *clip_state);
> -
> -void
> -_cogl_clip_state_restore_clip_stack (CoglClipState *clip_state);
> -
> -#endif /* __COGL_CLIP_STATE_PRIVATE_H */
> diff --git a/cogl/cogl-clip-state.c b/cogl/cogl-clip-state.c
> deleted file mode 100644
> index 4b70f3f..0000000
> --- a/cogl/cogl-clip-state.c
> +++ /dev/null
> @@ -1,187 +0,0 @@
> -/*
> - * Cogl
> - *
> - * An object oriented GL/GLES Abstraction/Utility Layer
> - *
> - * Copyright (C) 2007,2008,2009,2010 Intel Corporation.
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2 of the License, or (at your option) any later version.
> - *
> - * This library is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library. If not, see <http://www.gnu.org/licenses/>.
> - *
> - *
> - */
> -
> -#ifdef HAVE_CONFIG_H
> -#include "config.h"
> -#endif
> -
> -#include <string.h>
> -#include <math.h>
> -
> -#include <glib.h>
> -
> -#include "cogl-clip-stack.h"
> -#include "cogl-clip-state-private.h"
> -#include "cogl-context-private.h"
> -#include "cogl-framebuffer-private.h"
> -#include "cogl-journal-private.h"
> -#include "cogl-util.h"
> -#include "cogl-matrix-private.h"
> -#include "cogl-clip-state.h"
> -#include "cogl1-context.h"
> -#include "cogl-path/cogl-path.h"
> -
> -void
> -cogl_clip_push_window_rectangle (int x_offset,
> - int y_offset,
> - int width,
> - int height)
> -{
> - cogl_framebuffer_push_scissor_clip (cogl_get_draw_framebuffer (),
> - x_offset, y_offset, width, height);
> -}
> -
> -/* XXX: This is deprecated API */
> -void
> -cogl_clip_push_window_rect (float x_offset,
> - float y_offset,
> - float width,
> - float height)
> -{
> - cogl_clip_push_window_rectangle (x_offset, y_offset, width, height);
> -}
> -
> -void
> -cogl_clip_push_rectangle (float x_1,
> - float y_1,
> - float x_2,
> - float y_2)
> -{
> - cogl_framebuffer_push_rectangle_clip (cogl_get_draw_framebuffer (),
> - x_1, y_1, x_2, y_2);
> -}
> -
> -/* XXX: Deprecated API */
> -void
> -cogl_clip_push (float x_offset,
> - float y_offset,
> - float width,
> - float height)
> -{
> - cogl_clip_push_rectangle (x_offset,
> - y_offset,
> - x_offset + width,
> - y_offset + height);
> -}
> -
> -void
> -cogl_clip_push_primitive (CoglPrimitive *primitive,
> - float bounds_x1,
> - float bounds_y1,
> - float bounds_x2,
> - float bounds_y2)
> -{
> - cogl_framebuffer_push_primitive_clip (cogl_get_draw_framebuffer (),
> - primitive,
> - bounds_x1,
> - bounds_y1,
> - bounds_x2,
> - bounds_y2);
> -}
> -
> -void
> -cogl_clip_pop (void)
> -{
> - cogl_framebuffer_pop_clip (cogl_get_draw_framebuffer ());
> -}
> -
> -void
> -cogl_clip_stack_save (void)
> -{
> - _cogl_framebuffer_save_clip_stack (cogl_get_draw_framebuffer ());
> -}
> -
> -void
> -cogl_clip_stack_restore (void)
> -{
> - _cogl_framebuffer_restore_clip_stack (cogl_get_draw_framebuffer ());
> -}
> -
> -/* XXX: This should never have been made public API! */
> -void
> -cogl_clip_ensure (void)
> -{
> - /* Do nothing.
> - *
> - * This API shouldn't be used by anyone and the documented semantics
> - * are basically vague enough that we can get away with doing
> - * nothing here.
> - */
> -}
> -
> -void
> -_cogl_clip_state_init (CoglClipState *clip_state)
> -{
> - _COGL_GET_CONTEXT (ctx, NO_RETVAL);
> -
> - clip_state->stacks = NULL;
> -
> - /* Add an intial stack */
> - _cogl_clip_state_save_clip_stack (clip_state);
> -}
> -
> -void
> -_cogl_clip_state_destroy (CoglClipState *clip_state)
> -{
> - /* Destroy all of the stacks */
> - while (clip_state->stacks)
> - _cogl_clip_state_restore_clip_stack (clip_state);
> -}
> -
> -CoglClipStack *
> -_cogl_clip_state_get_stack (CoglClipState *clip_state)
> -{
> - return clip_state->stacks->data;
> -}
> -
> -void
> -_cogl_clip_state_set_stack (CoglClipState *clip_state,
> - CoglClipStack *stack)
> -{
> - /* Replace the top of the stack of stacks */
> - _cogl_clip_stack_ref (stack);
> - _cogl_clip_stack_unref (clip_state->stacks->data);
> - clip_state->stacks->data = stack;
> -}
> -
> -void
> -_cogl_clip_state_save_clip_stack (CoglClipState *clip_state)
> -{
> - clip_state->stacks = g_slist_prepend (clip_state->stacks, NULL);
> -}
> -
> -void
> -_cogl_clip_state_restore_clip_stack (CoglClipState *clip_state)
> -{
> - CoglClipStack *stack;
> -
> - _COGL_RETURN_IF_FAIL (clip_state->stacks != NULL);
> -
> - stack = clip_state->stacks->data;
> -
> - _cogl_clip_stack_unref (stack);
> -
> - /* Revert to an old stack */
> - clip_state->stacks = g_slist_delete_link (clip_state->stacks,
> - clip_state->stacks);
> -}
> diff --git a/cogl/cogl-clip-state.h b/cogl/cogl-clip-state.h
> deleted file mode 100644
> index 2d71fbf..0000000
> --- a/cogl/cogl-clip-state.h
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -/*
> - * Cogl
> - *
> - * An object oriented GL/GLES Abstraction/Utility Layer
> - *
> - * Copyright (C) 2007,2008,2009,2010 Intel Corporation.
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2 of the License, or (at your option) any later version.
> - *
> - * This library is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library. If not, see <http://www.gnu.org/licenses/>.
> - *
> - *
> - */
> -
> -#if !defined(__COGL_H_INSIDE__) && !defined(COGL_COMPILATION)
> -#error "Only <cogl/cogl.h> can be included directly."
> -#endif
> -
> -#ifndef __COGL_CLIP_STATE_H
> -#define __COGL_CLIP_STATE_H
> -
> -#include <cogl/cogl-types.h>
> -
> -COGL_BEGIN_DECLS
> -
> -COGL_END_DECLS
> -
> -#endif /* __COGL_CLIP_STATE_H */
> diff --git a/cogl/cogl-framebuffer-private.h b/cogl/cogl-framebuffer-private.h
> index b180b75..52bd1cd 100644
> --- a/cogl/cogl-framebuffer-private.h
> +++ b/cogl/cogl-framebuffer-private.h
> @@ -26,12 +26,12 @@
>
> #include "cogl-object-private.h"
> #include "cogl-matrix-stack-private.h"
> -#include "cogl-clip-state-private.h"
> #include "cogl-journal-private.h"
> #include "cogl-winsys-private.h"
> #include "cogl-attribute-private.h"
> #include "cogl-offscreen.h"
> #include "cogl-gl-header.h"
> +#include "cogl-clip-stack.h"
>
> #ifdef COGL_HAS_XLIB_SUPPORT
> #include <X11/Xlib.h>
> @@ -142,7 +142,7 @@ struct _CoglFramebuffer
> int viewport_age;
> int viewport_age_for_scissor_workaround;
>
> - CoglClipState clip_state;
> + CoglClipStack *clip_stack;
>
> CoglBool dither_enabled;
> CoglBool depth_writing_enabled;
> @@ -242,9 +242,6 @@ _cogl_framebuffer_clear_without_flush4f (CoglFramebuffer *framebuffer,
> void
> _cogl_framebuffer_mark_mid_scene (CoglFramebuffer *framebuffer);
>
> -CoglClipState *
> -_cogl_framebuffer_get_clip_state (CoglFramebuffer *framebuffer);
> -
> /*
> * _cogl_framebuffer_get_clip_stack:
> * @framebuffer: A #CoglFramebuffer
> diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c
> index 7e3305b..3e5796b 100644
> --- a/cogl/cogl-framebuffer.c
> +++ b/cogl/cogl-framebuffer.c
> @@ -125,8 +125,7 @@ _cogl_framebuffer_init (CoglFramebuffer *framebuffer,
>
> framebuffer->samples_per_pixel = 0;
>
> - /* Initialise the clip stack */
> - _cogl_clip_state_init (&framebuffer->clip_state);
> + framebuffer->clip_stack = NULL;
>
> framebuffer->journal = _cogl_journal_new (framebuffer);
>
> @@ -173,7 +172,7 @@ _cogl_framebuffer_free (CoglFramebuffer *framebuffer)
>
> _cogl_fence_cancel_fences_for_framebuffer (framebuffer);
>
> - _cogl_clip_state_destroy (&framebuffer->clip_state);
> + _cogl_clip_stack_unref (framebuffer->clip_stack);
>
> cogl_object_unref (framebuffer->modelview_stack);
> framebuffer->modelview_stack = NULL;
> @@ -459,27 +458,19 @@ cogl_framebuffer_get_height (CoglFramebuffer *framebuffer)
> return framebuffer->height;
> }
>
> -CoglClipState *
> -_cogl_framebuffer_get_clip_state (CoglFramebuffer *framebuffer)
> -{
> - return &framebuffer->clip_state;
> -}
> -
> CoglClipStack *
> _cogl_framebuffer_get_clip_stack (CoglFramebuffer *framebuffer)
> {
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> -
> - return _cogl_clip_state_get_stack (clip_state);
> + return framebuffer->clip_stack;
> }
>
> void
> _cogl_framebuffer_set_clip_stack (CoglFramebuffer *framebuffer,
> CoglClipStack *stack)
> {
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> -
> - _cogl_clip_state_set_stack (clip_state, stack);
> + _cogl_clip_stack_ref (stack);
> + _cogl_clip_stack_unref (framebuffer->clip_stack);
> + framebuffer->clip_stack = stack;
> }
>
> void
> @@ -1046,10 +1037,7 @@ static unsigned long
> _cogl_framebuffer_compare_clip_state (CoglFramebuffer *a,
> CoglFramebuffer *b)
> {
> - if (((a->clip_state.stacks == NULL || b->clip_state.stacks == NULL) &&
> - a->clip_state.stacks != b->clip_state.stacks)
> - ||
> - a->clip_state.stacks->data != b->clip_state.stacks->data)
> + if (a->clip_stack != b->clip_stack)
> return COGL_FRAMEBUFFER_STATE_CLIP;
> else
> return 0;
> @@ -1959,10 +1947,8 @@ cogl_framebuffer_push_scissor_clip (CoglFramebuffer *framebuffer,
> int width,
> int height)
> {
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> -
> - clip_state->stacks->data =
> - _cogl_clip_stack_push_window_rectangle (clip_state->stacks->data,
> + framebuffer->clip_stack =
> + _cogl_clip_stack_push_window_rectangle (framebuffer->clip_stack,
> x, y, width, height);
>
> if (framebuffer->context->current_draw_buffer == framebuffer)
> @@ -1977,7 +1963,6 @@ cogl_framebuffer_push_rectangle_clip (CoglFramebuffer *framebuffer,
> float x_2,
> float y_2)
> {
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> CoglMatrixEntry *modelview_entry =
> _cogl_framebuffer_get_modelview_entry (framebuffer);
> CoglMatrixEntry *projection_entry =
> @@ -1991,8 +1976,8 @@ cogl_framebuffer_push_rectangle_clip (CoglFramebuffer *framebuffer,
> framebuffer->viewport_height
> };
>
> - clip_state->stacks->data =
> - _cogl_clip_stack_push_rectangle (clip_state->stacks->data,
> + framebuffer->clip_stack =
> + _cogl_clip_stack_push_rectangle (framebuffer->clip_stack,
> x_1, y_1, x_2, y_2,
> modelview_entry,
> projection_entry,
> @@ -2011,7 +1996,6 @@ cogl_framebuffer_push_primitive_clip (CoglFramebuffer *framebuffer,
> float bounds_x2,
> float bounds_y2)
> {
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> CoglMatrixEntry *modelview_entry =
> _cogl_framebuffer_get_modelview_entry (framebuffer);
> CoglMatrixEntry *projection_entry =
> @@ -2025,8 +2009,8 @@ cogl_framebuffer_push_primitive_clip (CoglFramebuffer *framebuffer,
> framebuffer->viewport_height
> };
>
> - clip_state->stacks->data =
> - _cogl_clip_stack_push_primitive (clip_state->stacks->data,
> + framebuffer->clip_stack =
> + _cogl_clip_stack_push_primitive (framebuffer->clip_stack,
> primitive,
> bounds_x1, bounds_y1,
> bounds_x2, bounds_y2,
> @@ -2042,31 +2026,7 @@ cogl_framebuffer_push_primitive_clip (CoglFramebuffer *framebuffer,
> void
> cogl_framebuffer_pop_clip (CoglFramebuffer *framebuffer)
> {
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> -
> - clip_state->stacks->data = _cogl_clip_stack_pop (clip_state->stacks->data);
> -
> - if (framebuffer->context->current_draw_buffer == framebuffer)
> - framebuffer->context->current_draw_buffer_changes |=
> - COGL_FRAMEBUFFER_STATE_CLIP;
> -}
> -
> -void
> -_cogl_framebuffer_save_clip_stack (CoglFramebuffer *framebuffer)
> -{
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> - _cogl_clip_state_save_clip_stack (clip_state);
> -
> - if (framebuffer->context->current_draw_buffer == framebuffer)
> - framebuffer->context->current_draw_buffer_changes |=
> - COGL_FRAMEBUFFER_STATE_CLIP;
> -}
> -
> -void
> -_cogl_framebuffer_restore_clip_stack (CoglFramebuffer *framebuffer)
> -{
> - CoglClipState *clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
> - _cogl_clip_state_restore_clip_stack (clip_state);
> + framebuffer->clip_stack = _cogl_clip_stack_pop (framebuffer->clip_stack);
>
> if (framebuffer->context->current_draw_buffer == framebuffer)
> framebuffer->context->current_draw_buffer_changes |=
> diff --git a/cogl/cogl.h b/cogl/cogl.h
> index 940b7dd..5035a99 100644
> --- a/cogl/cogl.h
> +++ b/cogl/cogl.h
> @@ -73,8 +73,8 @@
> * 1.x only api...
> */
> #ifndef COGL_ENABLE_EXPERIMENTAL_2_0_API
> -#include <cogl/cogl-clip-state.h>
> #include <cogl/cogl-enum-types.h>
> +#include <cogl/deprecated/cogl-clip-state.h>
> #include <cogl/deprecated/cogl-vertex-buffer.h>
> #include <cogl/deprecated/cogl-fixed.h>
> #include <cogl/deprecated/cogl-material-compat.h>
> diff --git a/cogl/cogl1-context.h b/cogl/cogl1-context.h
> index 48b6ce2..53c9783 100644
> --- a/cogl/cogl1-context.h
> +++ b/cogl/cogl1-context.h
> @@ -731,228 +731,6 @@ COGL_DEPRECATED_IN_1_16
> void
> cogl_set_source_texture (CoglTexture *texture);
>
> -
> -/**
> - * SECTION:cogl-clipping
> - * @short_description: Fuctions for manipulating a stack of clipping regions
> - *
> - * To support clipping your geometry to rectangles or paths Cogl exposes a
> - * stack based API whereby each clip region you push onto the stack is
> - * intersected with the previous region.
> - */
> -
> -/**
> - * cogl_clip_push_window_rect:
> - * @x_offset: left edge of the clip rectangle in window coordinates
> - * @y_offset: top edge of the clip rectangle in window coordinates
> - * @width: width of the clip rectangle
> - * @height: height of the clip rectangle
> - *
> - * Specifies a rectangular clipping area for all subsequent drawing
> - * operations. Any drawing commands that extend outside the rectangle
> - * will be clipped so that only the portion inside the rectangle will
> - * be displayed. The rectangle dimensions are not transformed by the
> - * current model-view matrix.
> - *
> - * The rectangle is intersected with the current clip region. To undo
> - * the effect of this function, call cogl_clip_pop().
> - *
> - * Deprecated: 1.16: Use cogl_framebuffer_push_scissor_clip() instead
> - */
> -COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_scissor_clip)
> -void
> -cogl_clip_push_window_rect (float x_offset,
> - float y_offset,
> - float width,
> - float height);
> -
> -/**
> - * cogl_clip_push_window_rectangle:
> - * @x_offset: left edge of the clip rectangle in window coordinates
> - * @y_offset: top edge of the clip rectangle in window coordinates
> - * @width: width of the clip rectangle
> - * @height: height of the clip rectangle
> - *
> - * Specifies a rectangular clipping area for all subsequent drawing
> - * operations. Any drawing commands that extend outside the rectangle
> - * will be clipped so that only the portion inside the rectangle will
> - * be displayed. The rectangle dimensions are not transformed by the
> - * current model-view matrix.
> - *
> - * The rectangle is intersected with the current clip region. To undo
> - * the effect of this function, call cogl_clip_pop().
> - *
> - * Since: 1.2
> - * Deprecated: 1.16: Use cogl_framebuffer_push_scissor_clip() instead
> - */
> -COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_scissor_clip)
> -void
> -cogl_clip_push_window_rectangle (int x_offset,
> - int y_offset,
> - int width,
> - int height);
> -
> -/**
> - * cogl_clip_push:
> - * @x_offset: left edge of the clip rectangle
> - * @y_offset: top edge of the clip rectangle
> - * @width: width of the clip rectangle
> - * @height: height of the clip rectangle
> - *
> - * Specifies a rectangular clipping area for all subsequent drawing
> - * operations. Any drawing commands that extend outside the rectangle
> - * will be clipped so that only the portion inside the rectangle will
> - * be displayed. The rectangle dimensions are transformed by the
> - * current model-view matrix.
> - *
> - * The rectangle is intersected with the current clip region. To undo
> - * the effect of this function, call cogl_clip_pop().
> - *
> - * Deprecated: 1.16: The x, y, width, height arguments are inconsistent
> - * with other API that specify rectangles in model space, and when used
> - * with a coordinate space that puts the origin at the center and y+
> - * extending up, it's awkward to use. Please use
> - * cogl_framebuffer_push_rectangle_clip()
> - */
> -COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_rectangle_clip)
> -void
> -cogl_clip_push (float x_offset,
> - float y_offset,
> - float width,
> - float height);
> -
> -/**
> - * cogl_clip_push_rectangle:
> - * @x0: x coordinate for top left corner of the clip rectangle
> - * @y0: y coordinate for top left corner of the clip rectangle
> - * @x1: x coordinate for bottom right corner of the clip rectangle
> - * @y1: y coordinate for bottom right corner of the clip rectangle
> - *
> - * Specifies a rectangular clipping area for all subsequent drawing
> - * operations. Any drawing commands that extend outside the rectangle
> - * will be clipped so that only the portion inside the rectangle will
> - * be displayed. The rectangle dimensions are transformed by the
> - * current model-view matrix.
> - *
> - * The rectangle is intersected with the current clip region. To undo
> - * the effect of this function, call cogl_clip_pop().
> - *
> - * Since: 1.2
> - * Deprecated: 1.16: Use cogl_framebuffer_push_rectangle_clip()
> - * instead
> - */
> -COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_rectangle_clip)
> -void
> -cogl_clip_push_rectangle (float x0,
> - float y0,
> - float x1,
> - float y1);
> -
> -/**
> - * cogl_clip_push_primitive:
> - * @primitive: A #CoglPrimitive describing a flat 2D shape
> - * @bounds_x1: x coordinate for the top-left corner of the primitives
> - * bounds
> - * @bounds_y1: y coordinate for the top-left corner of the primitives
> - * bounds
> - * @bounds_x2: x coordinate for the bottom-right corner of the primitives
> - * bounds
> - * @bounds_y2: y coordinate for the bottom-right corner of the
> - * primitives bounds.
> - *
> - * Sets a new clipping area using a 2D shaped described with a
> - * #CoglPrimitive. The shape must not contain self overlapping
> - * geometry and must lie on a single 2D plane. A bounding box of the
> - * 2D shape in local coordinates (the same coordinates used to
> - * describe the shape) must be given. It is acceptable for the bounds
> - * to be larger than the true bounds but behaviour is undefined if the
> - * bounds are smaller than the true bounds.
> - *
> - * The primitive is transformed by the current model-view matrix and
> - * the silhouette is intersected with the previous clipping area. To
> - * restore the previous clipping area, call
> - * cogl_clip_pop().
> - *
> - * Since: 1.10
> - * Stability: unstable
> - * Deprecated: 1.16: Use cogl_framebuffer_push_primitive_clip()
> - * instead
> - */
> -COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_primitive_clip)
> -void
> -cogl_clip_push_primitive (CoglPrimitive *primitive,
> - float bounds_x1,
> - float bounds_y1,
> - float bounds_x2,
> - float bounds_y2);
> -
> -/**
> - * cogl_clip_pop:
> - *
> - * Reverts the clipping region to the state before the last call to
> - * cogl_clip_push().
> - *
> - * Deprecated: 1.16: Use cogl_framebuffer_pop_clip() instead
> - */
> -COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_pop_clip)
> -void
> -cogl_clip_pop (void);
> -
> -/**
> - * cogl_clip_ensure:
> - *
> - * Ensures that the current clipping region has been set in GL. This
> - * will automatically be called before any Cogl primitives but it
> - * maybe be neccessary to call if you are using raw GL calls with
> - * clipping.
> - *
> - * Deprecated: 1.2: Calling this function has no effect
> - *
> - * Since: 1.0
> - */
> -COGL_DEPRECATED
> -void
> -cogl_clip_ensure (void);
> -
> -/**
> - * cogl_clip_stack_save:
> - *
> - * Save the entire state of the clipping stack and then clear all
> - * clipping. The previous state can be returned to with
> - * cogl_clip_stack_restore(). Each call to cogl_clip_push() after this
> - * must be matched by a call to cogl_clip_pop() before calling
> - * cogl_clip_stack_restore().
> - *
> - * Deprecated: 1.2: This was originally added to allow us to save the
> - * clip stack when switching to an offscreen framebuffer, but it's
> - * not necessary anymore given that framebuffers now own separate
> - * clip stacks which will be automatically switched between when a
> - * new buffer is set. Calling this function has no effect
> - *
> - * Since: 0.8.2
> - */
> -COGL_DEPRECATED
> -void
> -cogl_clip_stack_save (void);
> -
> -/**
> - * cogl_clip_stack_restore:
> - *
> - * Restore the state of the clipping stack that was previously saved
> - * by cogl_clip_stack_save().
> - *
> - * Deprecated: 1.2: This was originally added to allow us to restore
> - * the clip stack when switching back from an offscreen framebuffer,
> - * but it's not necessary anymore given that framebuffers now own
> - * separate clip stacks which will be automatically switched between
> - * when a new buffer is set. Calling this function has no effect
> - *
> - * Since: 0.8.2
> - */
> -COGL_DEPRECATED
> -void
> -cogl_clip_stack_restore (void);
> -
> /**
> * cogl_set_framebuffer:
> * @buffer: A #CoglFramebuffer object, either onscreen or offscreen.
> diff --git a/cogl/deprecated/cogl-clip-state.c b/cogl/deprecated/cogl-clip-state.c
> new file mode 100644
> index 0000000..7beee46
> --- /dev/null
> +++ b/cogl/deprecated/cogl-clip-state.c
> @@ -0,0 +1,132 @@
> +/*
> + * Cogl
> + *
> + * An object oriented GL/GLES Abstraction/Utility Layer
> + *
> + * Copyright (C) 2007,2008,2009,2010 Intel Corporation.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library. If not, see <http://www.gnu.org/licenses/>.
> + *
> + *
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <string.h>
> +#include <math.h>
> +
> +#include <glib.h>
> +
> +#include "cogl-clip-state.h"
> +#include "cogl-clip-stack.h"
> +#include "cogl-context-private.h"
> +#include "cogl-framebuffer-private.h"
> +#include "cogl-journal-private.h"
> +#include "cogl-util.h"
> +#include "cogl-matrix-private.h"
> +#include "cogl1-context.h"
> +#include "cogl-path/cogl-path.h"
> +
> +void
> +cogl_clip_push_window_rectangle (int x_offset,
> + int y_offset,
> + int width,
> + int height)
> +{
> + cogl_framebuffer_push_scissor_clip (cogl_get_draw_framebuffer (),
> + x_offset, y_offset, width, height);
> +}
> +
> +/* XXX: This is deprecated API */
> +void
> +cogl_clip_push_window_rect (float x_offset,
> + float y_offset,
> + float width,
> + float height)
> +{
> + cogl_clip_push_window_rectangle (x_offset, y_offset, width, height);
> +}
> +
> +void
> +cogl_clip_push_rectangle (float x_1,
> + float y_1,
> + float x_2,
> + float y_2)
> +{
> + cogl_framebuffer_push_rectangle_clip (cogl_get_draw_framebuffer (),
> + x_1, y_1, x_2, y_2);
> +}
> +
> +/* XXX: Deprecated API */
> +void
> +cogl_clip_push (float x_offset,
> + float y_offset,
> + float width,
> + float height)
> +{
> + cogl_clip_push_rectangle (x_offset,
> + y_offset,
> + x_offset + width,
> + y_offset + height);
> +}
> +
> +void
> +cogl_clip_push_primitive (CoglPrimitive *primitive,
> + float bounds_x1,
> + float bounds_y1,
> + float bounds_x2,
> + float bounds_y2)
> +{
> + cogl_framebuffer_push_primitive_clip (cogl_get_draw_framebuffer (),
> + primitive,
> + bounds_x1,
> + bounds_y1,
> + bounds_x2,
> + bounds_y2);
> +}
> +
> +void
> +cogl_clip_pop (void)
> +{
> + cogl_framebuffer_pop_clip (cogl_get_draw_framebuffer ());
> +}
> +
> +void
> +cogl_clip_stack_save (void)
> +{
> + /* This function was just used to temporarily switch the clip stack
> + * when using an offscreen buffer. This is no longer needed because
> + * each framebuffer maintains its own clip stack. The function is
> + * documented to do nothing since version 1.2 */
> +}
> +
> +void
> +cogl_clip_stack_restore (void)
> +{
> + /* Do nothing. See cogl_clip_stack_save() */
> +}
> +
> +/* XXX: This should never have been made public API! */
> +void
> +cogl_clip_ensure (void)
> +{
> + /* Do nothing.
> + *
> + * This API shouldn't be used by anyone and the documented semantics
> + * are basically vague enough that we can get away with doing
> + * nothing here.
> + */
> +}
> diff --git a/cogl/deprecated/cogl-clip-state.h b/cogl/deprecated/cogl-clip-state.h
> new file mode 100644
> index 0000000..b4662bc
> --- /dev/null
> +++ b/cogl/deprecated/cogl-clip-state.h
> @@ -0,0 +1,259 @@
> +/*
> + * Cogl
> + *
> + * An object oriented GL/GLES Abstraction/Utility Layer
> + *
> + * Copyright (C) 2010,2013 Intel Corporation.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library. If not, see <http://www.gnu.org/licenses/>.
> + *
> + *
> + */
> +
> +#if !defined(__COGL_H_INSIDE__) && !defined(COGL_COMPILATION)
> +#error "Only <cogl/cogl.h> can be included directly."
> +#endif
> +
> +#ifndef __COGL_CLIP_STATE_H__
> +#define __COGL_CLIP_STATE_H__
> +
> +#include <cogl/cogl-types.h>
> +#include <cogl/cogl-macros.h>
> +#include <cogl/cogl-primitive.h>
> +
> +COGL_BEGIN_DECLS
> +
> +/**
> + * SECTION:cogl-clipping
> + * @short_description: Fuctions for manipulating a stack of clipping regions
> + *
> + * To support clipping your geometry to rectangles or paths Cogl exposes a
> + * stack based API whereby each clip region you push onto the stack is
> + * intersected with the previous region.
> + */
> +
> +/**
> + * cogl_clip_push_window_rectangle:
> + * @x_offset: left edge of the clip rectangle in window coordinates
> + * @y_offset: top edge of the clip rectangle in window coordinates
> + * @width: width of the clip rectangle
> + * @height: height of the clip rectangle
> + *
> + * Specifies a rectangular clipping area for all subsequent drawing
> + * operations. Any drawing commands that extend outside the rectangle
> + * will be clipped so that only the portion inside the rectangle will
> + * be displayed. The rectangle dimensions are not transformed by the
> + * current model-view matrix.
> + *
> + * The rectangle is intersected with the current clip region. To undo
> + * the effect of this function, call cogl_clip_pop().
> + *
> + * Since: 1.2
> + * Deprecated: 1.16: Use cogl_framebuffer_push_scissor_clip() instead
> + */
> +COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_scissor_clip)
> +void
> +cogl_clip_push_window_rectangle (int x_offset,
> + int y_offset,
> + int width,
> + int height);
> +
> +/**
> + * cogl_clip_push_window_rect:
> + * @x_offset: left edge of the clip rectangle in window coordinates
> + * @y_offset: top edge of the clip rectangle in window coordinates
> + * @width: width of the clip rectangle
> + * @height: height of the clip rectangle
> + *
> + * Specifies a rectangular clipping area for all subsequent drawing
> + * operations. Any drawing commands that extend outside the rectangle
> + * will be clipped so that only the portion inside the rectangle will
> + * be displayed. The rectangle dimensions are not transformed by the
> + * current model-view matrix.
> + *
> + * The rectangle is intersected with the current clip region. To undo
> + * the effect of this function, call cogl_clip_pop().
> + *
> + * Deprecated: 1.16: Use cogl_framebuffer_push_scissor_clip() instead
> + */
> +COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_scissor_clip)
> +void
> +cogl_clip_push_window_rect (float x_offset,
> + float y_offset,
> + float width,
> + float height);
> +
> +/**
> + * cogl_clip_push_rectangle:
> + * @x0: x coordinate for top left corner of the clip rectangle
> + * @y0: y coordinate for top left corner of the clip rectangle
> + * @x1: x coordinate for bottom right corner of the clip rectangle
> + * @y1: y coordinate for bottom right corner of the clip rectangle
> + *
> + * Specifies a rectangular clipping area for all subsequent drawing
> + * operations. Any drawing commands that extend outside the rectangle
> + * will be clipped so that only the portion inside the rectangle will
> + * be displayed. The rectangle dimensions are transformed by the
> + * current model-view matrix.
> + *
> + * The rectangle is intersected with the current clip region. To undo
> + * the effect of this function, call cogl_clip_pop().
> + *
> + * Since: 1.2
> + * Deprecated: 1.16: Use cogl_framebuffer_push_rectangle_clip()
> + * instead
> + */
> +COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_rectangle_clip)
> +void
> +cogl_clip_push_rectangle (float x0,
> + float y0,
> + float x1,
> + float y1);
> +
> +/**
> + * cogl_clip_push:
> + * @x_offset: left edge of the clip rectangle
> + * @y_offset: top edge of the clip rectangle
> + * @width: width of the clip rectangle
> + * @height: height of the clip rectangle
> + *
> + * Specifies a rectangular clipping area for all subsequent drawing
> + * operations. Any drawing commands that extend outside the rectangle
> + * will be clipped so that only the portion inside the rectangle will
> + * be displayed. The rectangle dimensions are transformed by the
> + * current model-view matrix.
> + *
> + * The rectangle is intersected with the current clip region. To undo
> + * the effect of this function, call cogl_clip_pop().
> + *
> + * Deprecated: 1.16: The x, y, width, height arguments are inconsistent
> + * with other API that specify rectangles in model space, and when used
> + * with a coordinate space that puts the origin at the center and y+
> + * extending up, it's awkward to use. Please use
> + * cogl_framebuffer_push_rectangle_clip()
> + */
> +COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_rectangle_clip)
> +void
> +cogl_clip_push (float x_offset,
> + float y_offset,
> + float width,
> + float height);
> +
> +/**
> + * cogl_clip_push_primitive:
> + * @primitive: A #CoglPrimitive describing a flat 2D shape
> + * @bounds_x1: x coordinate for the top-left corner of the primitives
> + * bounds
> + * @bounds_y1: y coordinate for the top-left corner of the primitives
> + * bounds
> + * @bounds_x2: x coordinate for the bottom-right corner of the primitives
> + * bounds
> + * @bounds_y2: y coordinate for the bottom-right corner of the
> + * primitives bounds.
> + *
> + * Sets a new clipping area using a 2D shaped described with a
> + * #CoglPrimitive. The shape must not contain self overlapping
> + * geometry and must lie on a single 2D plane. A bounding box of the
> + * 2D shape in local coordinates (the same coordinates used to
> + * describe the shape) must be given. It is acceptable for the bounds
> + * to be larger than the true bounds but behaviour is undefined if the
> + * bounds are smaller than the true bounds.
> + *
> + * The primitive is transformed by the current model-view matrix and
> + * the silhouette is intersected with the previous clipping area. To
> + * restore the previous clipping area, call
> + * cogl_clip_pop().
> + *
> + * Since: 1.10
> + * Stability: unstable
> + * Deprecated: 1.16: Use cogl_framebuffer_push_primitive_clip()
> + * instead
> + */
> +COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_push_primitive_clip)
> +void
> +cogl_clip_push_primitive (CoglPrimitive *primitive,
> + float bounds_x1,
> + float bounds_y1,
> + float bounds_x2,
> + float bounds_y2);
> +/**
> + * cogl_clip_pop:
> + *
> + * Reverts the clipping region to the state before the last call to
> + * cogl_clip_push().
> + *
> + * Deprecated: 1.16: Use cogl_framebuffer_pop_clip() instead
> + */
> +COGL_DEPRECATED_IN_1_16_FOR (cogl_framebuffer_pop_clip)
> +void
> +cogl_clip_pop (void);
> +
> +/**
> + * cogl_clip_ensure:
> + *
> + * Ensures that the current clipping region has been set in GL. This
> + * will automatically be called before any Cogl primitives but it
> + * maybe be neccessary to call if you are using raw GL calls with
> + * clipping.
> + *
> + * Deprecated: 1.2: Calling this function has no effect
> + *
> + * Since: 1.0
> + */
> +COGL_DEPRECATED
> +void
> +cogl_clip_ensure (void);
> +
> +/**
> + * cogl_clip_stack_save:
> + *
> + * Save the entire state of the clipping stack and then clear all
> + * clipping. The previous state can be returned to with
> + * cogl_clip_stack_restore(). Each call to cogl_clip_push() after this
> + * must be matched by a call to cogl_clip_pop() before calling
> + * cogl_clip_stack_restore().
> + *
> + * Deprecated: 1.2: This was originally added to allow us to save the
> + * clip stack when switching to an offscreen framebuffer, but it's
> + * not necessary anymore given that framebuffers now own separate
> + * clip stacks which will be automatically switched between when a
> + * new buffer is set. Calling this function has no effect
> + *
> + * Since: 0.8.2
> + */
> +COGL_DEPRECATED
> +void
> +cogl_clip_stack_save (void);
> +
> +/**
> + * cogl_clip_stack_restore:
> + *
> + * Restore the state of the clipping stack that was previously saved
> + * by cogl_clip_stack_save().
> + *
> + * Deprecated: 1.2: This was originally added to allow us to restore
> + * the clip stack when switching back from an offscreen framebuffer,
> + * but it's not necessary anymore given that framebuffers now own
> + * separate clip stacks which will be automatically switched between
> + * when a new buffer is set. Calling this function has no effect
> + *
> + * Since: 0.8.2
> + */
> +COGL_DEPRECATED
> +void
> +cogl_clip_stack_restore (void);
> +
> +COGL_END_DECLS
> +
> +#endif /* __COGL_CLIP_STATE_H__ */
> diff --git a/cogl/driver/gl/cogl-framebuffer-gl.c b/cogl/driver/gl/cogl-framebuffer-gl.c
> index 5749983..68ac661 100644
> --- a/cogl/driver/gl/cogl-framebuffer-gl.c
> +++ b/cogl/driver/gl/cogl-framebuffer-gl.c
> @@ -148,8 +148,7 @@ _cogl_framebuffer_gl_flush_viewport_state (CoglFramebuffer *framebuffer)
> static void
> _cogl_framebuffer_gl_flush_clip_state (CoglFramebuffer *framebuffer)
> {
> - CoglClipStack *stack = _cogl_clip_state_get_stack (&framebuffer->clip_state);
> - _cogl_clip_stack_flush (stack, framebuffer);
> + _cogl_clip_stack_flush (framebuffer->clip_stack, framebuffer);
> }
>
> static void
> --
> 1.8.3.1
>
> _______________________________________________
> Cogl mailing list
> Cogl at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/cogl
More information about the Cogl
mailing list