[cogl] Add compatibility API for functions removed after 1.9.8



commit 361bd516f3d678d6d8ec08c1f01cf872e10a4f43
Author: Neil Roberts <neil linux intel com>
Date:   Fri Mar 9 16:09:13 2012 +0000

    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>

 cogl/Makefile.am           |    2 +
 cogl/cogl.h                |    2 +
 cogl/cogl2-compatibility.c |  148 ++++++++++++++++++++++++++++++++++++++++++++
 cogl/cogl2-compatibility.h |   55 ++++++++++++++++
 4 files changed, 207 insertions(+), 0 deletions(-)
---
diff --git a/cogl/Makefile.am b/cogl/Makefile.am
index 68f2089..853e561 100644
--- a/cogl/Makefile.am
+++ b/cogl/Makefile.am
@@ -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		    		\
diff --git a/cogl/cogl.h b/cogl/cogl.h
index 4477885..d2e0bc0 100644
--- a/cogl/cogl.h
+++ b/cogl/cogl.h
@@ -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
 
 /*
diff --git a/cogl/cogl2-compatibility.c b/cogl/cogl2-compatibility.c
new file mode 100644
index 0000000..bae88c2
--- /dev/null
+++ b/cogl/cogl2-compatibility.c
@@ -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);
+}
diff --git a/cogl/cogl2-compatibility.h b/cogl/cogl2-compatibility.h
new file mode 100644
index 0000000..3c9f979
--- /dev/null
+++ b/cogl/cogl2-compatibility.h
@@ -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__ */
+



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]