Add compatibility API for functions removed after 1.9.8

The cleanup in 185630085 removed some symbols that were previously
exported as public experimental API in Cogl 1.9.8. That release is
already well after the point where we were meant to freeze the ABI so
we probably shouldn't be breaking it again. This patch adds the
removed functions back in so that for 1.9.10 we won't have to bump the
soname. The symbols are bundled together in a new file called
cogl2-compatibility.c so that they will be easy to remove again after
we can break ABI. It is expected that we will revert this patch
immediately after branching for Cogl 1.10.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
This commit is contained in:
Neil Roberts 2012-03-09 16:09:13 +00:00
parent 1b947a47c8
commit 361bd516f3
4 changed files with 207 additions and 0 deletions

View File

@ -112,6 +112,7 @@ cogl_experimental_h = \
$(srcdir)/cogl-buffer.h \
$(srcdir)/cogl-pixel-buffer.h \
$(srcdir)/cogl2-experimental.h \
$(srcdir)/cogl2-compatibility.h \
$(NULL)
# driver sources
@ -219,6 +220,7 @@ cogl_sources_c = \
$(srcdir)/cogl-clip-state-private.h \
$(srcdir)/cogl-clip-state.h \
$(srcdir)/cogl-clip-state.c \
$(srcdir)/cogl2-compatibility.c \
$(srcdir)/cogl-feature-private.h \
$(srcdir)/cogl-feature-private.c \
$(srcdir)/cogl-fixed.c \

View File

@ -124,6 +124,8 @@
*/
#ifdef COGL_ENABLE_EXPERIMENTAL_2_0_API
#include <cogl/cogl2-path.h>
/* This header will be removed in Cogl 1.12 */
#include <cogl/cogl2-compatibility.h>
#endif
/*

148
cogl/cogl2-compatibility.c Normal file
View File

@ -0,0 +1,148 @@
/*
* Cogl
*
* An object oriented GL/GLES Abstraction/Utility Layer
*
* Copyright (C) 2012 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
/* These functions are just here temporarily for the 1.10.x releases
to maintain ABI compatibility. They will be removed again
immediately once the branch for 1.12.x is created */
#include "cogl2-compatibility.h"
#include "cogl-framebuffer.h"
#include "cogl-index-buffer.h"
#include "cogl-pipeline.h"
void
cogl_clip_push_from_path (CoglPath *path)
{
cogl_framebuffer_push_path_clip (cogl_get_draw_framebuffer (), path);
}
/* These were never declared in a public header so we might as well
keep it that way. The declarations here are just to avoid a
warning */
GQuark
cogl_display_error_quark (void);
GQuark
cogl_onscreen_template_error_quark (void);
GQuark
cogl_swap_chain_error_quark (void);
GQuark
cogl_texture_3d_error_quark (void);
gboolean
cogl_index_buffer_allocate (CoglIndexBuffer *indices,
GError *error);
gboolean
cogl_is_journal (void *object);
void
cogl_vdraw_indexed_attributes (CoglFramebuffer *framebuffer,
CoglPipeline *pipeline,
CoglVerticesMode mode,
int first_vertex,
int n_vertices,
CoglIndices *indices,
...);
GQuark
cogl_display_error_quark (void)
{
return g_quark_from_static_string ("cogl-display-error-quark");
}
GQuark
cogl_onscreen_template_error_quark (void)
{
return g_quark_from_static_string ("cogl-onscreen-template-error-quark");
}
GQuark
cogl_swap_chain_error_quark (void)
{
return g_quark_from_static_string ("cogl-swap-chain-error-quark");
}
GQuark
cogl_texture_3d_error_quark (void)
{
return g_quark_from_static_string ("cogl-texture-3d-error-quark");
}
gboolean
cogl_index_buffer_allocate (CoglIndexBuffer *indices,
GError *error)
{
return TRUE;
}
gboolean
cogl_is_journal (void *object)
{
/* There's no way to get a pointer to a journal so this will never
return TRUE from an application's perspective */
return FALSE;
}
void
cogl_vdraw_indexed_attributes (CoglFramebuffer *framebuffer,
CoglPipeline *pipeline,
CoglVerticesMode mode,
int first_vertex,
int n_vertices,
CoglIndices *indices,
...)
{
va_list ap;
int n_attributes;
CoglAttribute **attributes;
int i;
CoglAttribute *attribute;
va_start (ap, indices);
for (n_attributes = 0; va_arg (ap, CoglAttribute *); n_attributes++)
;
va_end (ap);
attributes = g_alloca (sizeof (CoglAttribute *) * n_attributes);
va_start (ap, indices);
for (i = 0; (attribute = va_arg (ap, CoglAttribute *)); i++)
attributes[i] = attribute;
va_end (ap);
cogl_framebuffer_draw_indexed_attributes (framebuffer,
pipeline,
mode,
first_vertex,
n_vertices,
indices,
attributes,
n_attributes);
}

View File

@ -0,0 +1,55 @@
/*
* Cogl
*
* An object oriented GL/GLES Abstraction/Utility Layer
*
* Copyright (C) 2012 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(CLUTTER_COMPILATION)
#error "Only <cogl/cogl.h> can be included directly."
#endif
#ifndef __COGL2_COMPATIBILITY_H__
#define __COGL2_COMPATIBILITY_H__
#include <cogl/cogl-types.h>
#include <cogl/cogl2-path.h>
G_BEGIN_DECLS
#define cogl_clip_push_from_path cogl2_clip_push_from_path
/**
* cogl_clip_push_from_path:
* @path: The path to clip with.
*
* Sets a new clipping area using the silhouette of the specified,
* filled @path. The clipping area is intersected with the previous
* clipping area. To restore the previous clipping area, call
* call cogl_clip_pop().
*
* Since: 1.8
* Stability: Unstable
*/
void
cogl_clip_push_from_path (CoglPath *path);
G_END_DECLS
#endif /* __COGL2_COMPATIBILITY_H__ */