From 739c59fefc73f837377831340c3e9b07c6ae1b86 Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Tue, 19 Sep 2023 08:26:20 +0200 Subject: [PATCH] cogl: Port Buffer* away from CoglObject Make CoglBuffer an abstract class and inherit the various Cogl*Buffer types from it. As none of the subclasses is overriding the vtable functions, they were not turned into vfuncs but plain function pointers in CoglBuffer. We still use _cogl_buffer_initialize until we port the various params into actual construct-only properties, similar to the previous commit for CoglTexture. Part-of: --- clutter/clutter/clutter-deform-effect.c | 2 +- cogl/cogl-pango/cogl-pango-display-list.c | 2 +- cogl/cogl/cogl-attribute-buffer-private.h | 7 +- cogl/cogl/cogl-attribute-buffer.c | 29 ++--- cogl/cogl/cogl-attribute-buffer.h | 38 +++--- cogl/cogl/cogl-attribute.c | 8 +- cogl/cogl/cogl-bitmap.c | 9 +- cogl/cogl/cogl-buffer-private.h | 59 ++++----- cogl/cogl/cogl-buffer.c | 114 ++++++++---------- cogl/cogl/cogl-buffer.h | 38 +++--- cogl/cogl/cogl-index-buffer-private.h | 7 +- cogl/cogl/cogl-index-buffer.c | 65 ++-------- cogl/cogl/cogl-index-buffer.h | 38 +++--- cogl/cogl/cogl-indices.c | 8 +- cogl/cogl/cogl-journal.c | 8 +- cogl/cogl/cogl-pixel-buffer-private.h | 7 +- cogl/cogl/cogl-pixel-buffer.c | 32 ++--- cogl/cogl/cogl-pixel-buffer.h | 35 +++--- cogl/cogl/cogl-primitive.c | 16 +-- cogl/cogl/cogl-primitives.c | 2 +- cogl/cogl/cogl.h | 5 - cogl/cogl/deprecated/cogl-type-casts.h | 48 -------- cogl/cogl/meson.build | 1 - .../cogl/conform/test-custom-attributes.c | 8 +- .../cogl/conform/test-map-buffer-range.c | 6 +- src/tests/cogl/conform/test-pixel-buffer.c | 20 +-- src/tests/cogl/conform/test-primitive.c | 2 +- 27 files changed, 228 insertions(+), 386 deletions(-) delete mode 100644 cogl/cogl/deprecated/cogl-type-casts.h diff --git a/clutter/clutter/clutter-deform-effect.c b/clutter/clutter/clutter-deform-effect.c index 40d7969bb..cf242b171 100644 --- a/clutter/clutter/clutter-deform-effect.c +++ b/clutter/clutter/clutter-deform-effect.c @@ -337,7 +337,7 @@ clutter_deform_effect_free_arrays (ClutterDeformEffect *self) { ClutterDeformEffectPrivate *priv = self->priv; - cogl_clear_object (&priv->buffer); + g_clear_object (&priv->buffer); cogl_clear_object (&priv->primitive); cogl_clear_object (&priv->lines_primitive); } diff --git a/cogl/cogl-pango/cogl-pango-display-list.c b/cogl/cogl-pango/cogl-pango-display-list.c index 8accef760..b148ac09e 100644 --- a/cogl/cogl-pango/cogl-pango-display-list.c +++ b/cogl/cogl-pango/cogl-pango-display-list.c @@ -364,7 +364,7 @@ emit_vertex_buffer_geometry (CoglFramebuffer *fb, node->d.texture.primitive = prim; - cogl_object_unref (buffer); + g_object_unref (buffer); g_object_unref (attributes[0]); g_object_unref (attributes[1]); } diff --git a/cogl/cogl/cogl-attribute-buffer-private.h b/cogl/cogl/cogl-attribute-buffer-private.h index d8e5cb49d..bd17a28a1 100644 --- a/cogl/cogl/cogl-attribute-buffer-private.h +++ b/cogl/cogl/cogl-attribute-buffer-private.h @@ -37,5 +37,10 @@ struct _CoglAttributeBuffer { - CoglBuffer _parent; + CoglBuffer parent_instance; +}; + +struct _CoglAttributeBufferClass +{ + CoglBufferClass parent_class; }; diff --git a/cogl/cogl/cogl-attribute-buffer.c b/cogl/cogl/cogl-attribute-buffer.c index 4df92d8dd..2cec72570 100644 --- a/cogl/cogl/cogl-attribute-buffer.c +++ b/cogl/cogl/cogl-attribute-buffer.c @@ -33,22 +33,27 @@ #include "cogl-config.h" -#include "cogl/cogl-object-private.h" #include "cogl/cogl-attribute-buffer.h" #include "cogl/cogl-attribute-buffer-private.h" #include "cogl/cogl-context-private.h" -#include "cogl/cogl-gtype-private.h" -static void _cogl_attribute_buffer_free (CoglAttributeBuffer *array); +G_DEFINE_FINAL_TYPE (CoglAttributeBuffer, cogl_attribute_buffer, COGL_TYPE_BUFFER) -COGL_BUFFER_DEFINE (AttributeBuffer, attribute_buffer); -COGL_GTYPE_DEFINE_CLASS (AttributeBuffer, attribute_buffer); +static void +cogl_attribute_buffer_class_init (CoglAttributeBufferClass *klass) +{ +} + +static void +cogl_attribute_buffer_init (CoglAttributeBuffer *buffer) +{ +} CoglAttributeBuffer * cogl_attribute_buffer_new_with_size (CoglContext *context, size_t bytes) { - CoglAttributeBuffer *buffer = g_new0 (CoglAttributeBuffer, 1); + CoglAttributeBuffer *buffer = g_object_new (COGL_TYPE_ATTRIBUTE_BUFFER, NULL); /* parent's constructor */ _cogl_buffer_initialize (COGL_BUFFER (buffer), @@ -58,7 +63,7 @@ cogl_attribute_buffer_new_with_size (CoglContext *context, COGL_BUFFER_USAGE_HINT_ATTRIBUTE_BUFFER, COGL_BUFFER_UPDATE_HINT_STATIC); - return _cogl_attribute_buffer_object_new (buffer); + return buffer; } CoglAttributeBuffer * @@ -90,13 +95,3 @@ cogl_attribute_buffer_new (CoglContext *context, return buffer; } - -static void -_cogl_attribute_buffer_free (CoglAttributeBuffer *array) -{ - /* parent's destructor */ - _cogl_buffer_fini (COGL_BUFFER (array)); - - g_free (array); -} - diff --git a/cogl/cogl/cogl-attribute-buffer.h b/cogl/cogl/cogl-attribute-buffer.h index 00da82ef8..a035ced0c 100644 --- a/cogl/cogl/cogl-attribute-buffer.h +++ b/cogl/cogl/cogl-attribute-buffer.h @@ -49,22 +49,25 @@ typedef struct _CoglAttributeBuffer CoglAttributeBuffer; G_BEGIN_DECLS /** - * SECTION:cogl-attribute-buffer - * @short_description: Functions for creating and manipulating attribute - * buffers + * CoglAttributeBuffer: * - * FIXME + * Functions for creating and manipulating attribute buffers */ +#define COGL_TYPE_ATTRIBUTE_BUFFER (cogl_attribute_buffer_get_type ()) +#define COGL_ATTRIBUTE_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_ATTRIBUTE_BUFFER, CoglAttributeBuffer)) +#define COGL_ATTRIBUTE_BUFFER_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_ATTRIBUTE_BUFFER, CoglAttributeBuffer const)) +#define COGL_ATTRIBUTE_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COGL_TYPE_ATTRIBUTE_BUFFER, CoglAttributeBufferClass)) +#define COGL_IS_ATTRIBUTE_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COGL_TYPE_ATTRIBUTE_BUFFER)) +#define COGL_IS_ATTRIBUTE_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COGL_TYPE_ATTRIBUTE_BUFFER)) +#define COGL_ATTRIBUTE_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COGL_TYPE_ATTRIBUTE_BUFFER, CoglAttributeBufferClass)) -#define COGL_ATTRIBUTE_BUFFER(buffer) ((CoglAttributeBuffer *)(buffer)) +typedef struct _CoglAttributeBufferClass CoglAttributeBufferClass; +typedef struct _CoglAttributeBuffer CoglAttributeBuffer; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglAttributeBuffer, g_object_unref) -/** - * cogl_attribute_buffer_get_gtype: - * - * Returns: a #GType that can be used with the GLib type system. - */ COGL_EXPORT -GType cogl_attribute_buffer_get_gtype (void); +GType cogl_attribute_buffer_get_type (void) G_GNUC_CONST; /** * cogl_attribute_buffer_new_with_size: @@ -122,17 +125,4 @@ cogl_attribute_buffer_new (CoglContext *context, size_t bytes, const void *data); -/** - * cogl_is_attribute_buffer: - * @object: A #CoglObject - * - * Gets whether the given object references a #CoglAttributeBuffer. - * - * Returns: %TRUE if @object references a #CoglAttributeBuffer, - * %FALSE otherwise - */ -COGL_EXPORT gboolean -cogl_is_attribute_buffer (void *object); - G_END_DECLS - diff --git a/cogl/cogl/cogl-attribute.c b/cogl/cogl/cogl-attribute.c index 01b2fb611..f88d47130 100644 --- a/cogl/cogl/cogl-attribute.c +++ b/cogl/cogl/cogl-attribute.c @@ -57,7 +57,7 @@ cogl_attribute_dispose (GObject *object) CoglAttribute *attribute = COGL_ATTRIBUTE (object); if (attribute->is_buffered) - cogl_object_unref (attribute->d.buffered.attribute_buffer); + g_object_unref (attribute->d.buffered.attribute_buffer); else _cogl_boxed_value_destroy (&attribute->d.constant.boxed); @@ -229,7 +229,7 @@ cogl_attribute_new (CoglAttributeBuffer *attribute_buffer, attribute->name_state = name_state; } - attribute->d.buffered.attribute_buffer = cogl_object_ref (attribute_buffer); + attribute->d.buffered.attribute_buffer = g_object_ref (attribute_buffer); attribute->d.buffered.stride = stride; attribute->d.buffered.offset = offset; attribute->d.buffered.n_components = n_components; @@ -505,9 +505,9 @@ cogl_attribute_set_buffer (CoglAttribute *attribute, if (G_UNLIKELY (attribute->immutable_ref)) warn_about_midscene_changes (); - cogl_object_ref (attribute_buffer); + g_object_ref (attribute_buffer); - cogl_object_unref (attribute->d.buffered.attribute_buffer); + g_object_unref (attribute->d.buffered.attribute_buffer); attribute->d.buffered.attribute_buffer = attribute_buffer; } diff --git a/cogl/cogl/cogl-bitmap.c b/cogl/cogl/cogl-bitmap.c index 69dda0fef..c4dc9df09 100644 --- a/cogl/cogl/cogl-bitmap.c +++ b/cogl/cogl/cogl-bitmap.c @@ -56,8 +56,7 @@ cogl_bitmap_dispose (GObject *object) g_object_unref (bmp->shared_bmp); if (bmp->buffer) - cogl_object_unref (bmp->buffer); - + g_object_unref (bmp->buffer); G_OBJECT_CLASS (cogl_bitmap_parent_class)->dispose (object); } @@ -283,7 +282,7 @@ cogl_bitmap_new_from_buffer (CoglBuffer *buffer, { CoglBitmap *bmp; - g_return_val_if_fail (cogl_is_buffer (buffer), NULL); + g_return_val_if_fail (COGL_IS_BUFFER (buffer), NULL); bmp = cogl_bitmap_new_for_data (buffer->context, width, height, @@ -291,7 +290,7 @@ cogl_bitmap_new_from_buffer (CoglBuffer *buffer, rowstride, NULL /* data */); - bmp->buffer = cogl_object_ref (buffer); + bmp->buffer = g_object_ref (buffer); bmp->data = GINT_TO_POINTER (offset); return bmp; @@ -328,7 +327,7 @@ cogl_bitmap_new_with_size (CoglContext *context, rowstride, 0 /* offset */); - cogl_object_unref (pixel_buffer); + g_object_unref (pixel_buffer); return bitmap; } diff --git a/cogl/cogl/cogl-buffer-private.h b/cogl/cogl/cogl-buffer-private.h index f9ba843c0..ff0d85e84 100644 --- a/cogl/cogl/cogl-buffer-private.h +++ b/cogl/cogl/cogl-buffer-private.h @@ -36,33 +36,12 @@ #include -#include "cogl/cogl-object-private.h" #include "cogl/cogl-buffer.h" #include "cogl/cogl-context.h" #include "cogl/cogl-gl-header.h" G_BEGIN_DECLS -typedef struct _CoglBufferVtable CoglBufferVtable; - -struct _CoglBufferVtable -{ - void * (* map_range) (CoglBuffer *buffer, - size_t offset, - size_t size, - CoglBufferAccess access, - CoglBufferMapHint hints, - GError **error); - - void (* unmap) (CoglBuffer *buffer); - - gboolean (* set_data) (CoglBuffer *buffer, - unsigned int offset, - const void *data, - unsigned int size, - GError **error); -}; - typedef enum _CoglBufferFlags { COGL_BUFFER_FLAG_NONE = 0, @@ -90,12 +69,10 @@ typedef enum struct _CoglBuffer { - CoglObject _parent; + GObject parent_instance; CoglContext *context; - CoglBufferVtable vtable; - CoglBufferBindTarget last_target; CoglBufferFlags flags; @@ -111,18 +88,27 @@ struct _CoglBuffer int immutable_ref; - unsigned int store_created:1; + unsigned int store_created : 1; + + void * (* map_range) (CoglBuffer *buffer, + size_t offset, + size_t size, + CoglBufferAccess access, + CoglBufferMapHint hints, + GError **error); + + void (* unmap) (CoglBuffer *buffer); + + gboolean (* set_data) (CoglBuffer *buffer, + unsigned int offset, + const void *data, + unsigned int size, + GError **error); +}; +struct _CoglBufferClass +{ + GObjectClass parent_class; }; - -/* This is used to register a type to the list of handle types that - will be considered a texture in cogl_is_texture() */ -void -_cogl_buffer_register_buffer_type (const CoglObjectClass *klass); - -#define COGL_BUFFER_DEFINE(TypeName, type_name) \ - COGL_OBJECT_DEFINE_WITH_CODE \ - (TypeName, type_name, \ - _cogl_buffer_register_buffer_type (&_cogl_##type_name##_class)) void _cogl_buffer_initialize (CoglBuffer *buffer, @@ -132,9 +118,6 @@ _cogl_buffer_initialize (CoglBuffer *buffer, CoglBufferUsageHint usage_hint, CoglBufferUpdateHint update_hint); -void -_cogl_buffer_fini (CoglBuffer *buffer); - CoglBufferUsageHint _cogl_buffer_get_usage_hint (CoglBuffer *buffer); diff --git a/cogl/cogl/cogl-buffer.c b/cogl/cogl/cogl-buffer.c index cd3e5af8e..3da816ea0 100644 --- a/cogl/cogl/cogl-buffer.c +++ b/cogl/cogl/cogl-buffer.c @@ -45,37 +45,42 @@ #include "cogl/cogl-util.h" #include "cogl/cogl-context-private.h" -#include "cogl/cogl-object-private.h" #include "cogl/cogl-pixel-buffer-private.h" -/* XXX: - * The CoglObject macros don't support any form of inheritance, so for - * now we implement the CoglObject support for the CoglBuffer - * abstract class manually. - */ -static GSList *_cogl_buffer_types; +G_DEFINE_ABSTRACT_TYPE (CoglBuffer, cogl_buffer, G_TYPE_OBJECT) -void -_cogl_buffer_register_buffer_type (const CoglObjectClass *klass) +static void +cogl_buffer_dispose (GObject *object) { - _cogl_buffer_types = g_slist_prepend (_cogl_buffer_types, (void *) klass); + CoglBuffer *buffer = COGL_BUFFER (object); + + g_return_if_fail (!(buffer->flags & COGL_BUFFER_FLAG_MAPPED)); + g_return_if_fail (buffer->immutable_ref == 0); + + if (buffer->flags & COGL_BUFFER_FLAG_BUFFER_OBJECT) + buffer->context->driver_vtable->buffer_destroy (buffer); + else + g_free (buffer->data); + + G_OBJECT_CLASS (cogl_buffer_parent_class)->dispose (object); } -gboolean -cogl_is_buffer (void *object) +static void +cogl_buffer_class_init (CoglBufferClass *klass) { - const CoglObject *obj = object; - GSList *l; + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - if (object == NULL) - return FALSE; + gobject_class->dispose = cogl_buffer_dispose; +} - for (l = _cogl_buffer_types; l; l = l->next) - if (l->data == obj->klass) - return TRUE; - - return FALSE; +static void +cogl_buffer_init (CoglBuffer *buffer) +{ + buffer->flags = COGL_BUFFER_FLAG_NONE; + buffer->store_created = FALSE; + buffer->data = NULL; + buffer->immutable_ref = 0; } /* @@ -122,14 +127,10 @@ _cogl_buffer_initialize (CoglBuffer *buffer, gboolean use_malloc = FALSE; buffer->context = ctx; - buffer->flags = COGL_BUFFER_FLAG_NONE; - buffer->store_created = FALSE; buffer->size = size; buffer->last_target = default_target; buffer->usage_hint = usage_hint; buffer->update_hint = update_hint; - buffer->data = NULL; - buffer->immutable_ref = 0; if (default_target == COGL_BUFFER_BIND_TARGET_PIXEL_PACK || default_target == COGL_BUFFER_BIND_TARGET_PIXEL_UNPACK) @@ -140,17 +141,17 @@ _cogl_buffer_initialize (CoglBuffer *buffer, if (use_malloc) { - buffer->vtable.map_range = malloc_map_range; - buffer->vtable.unmap = malloc_unmap; - buffer->vtable.set_data = malloc_set_data; + buffer->map_range = malloc_map_range; + buffer->unmap = malloc_unmap; + buffer->set_data = malloc_set_data; buffer->data = g_malloc (size); } else { - buffer->vtable.map_range = ctx->driver_vtable->buffer_map_range; - buffer->vtable.unmap = ctx->driver_vtable->buffer_unmap; - buffer->vtable.set_data = ctx->driver_vtable->buffer_set_data; + buffer->map_range = ctx->driver_vtable->buffer_map_range; + buffer->unmap = ctx->driver_vtable->buffer_unmap; + buffer->set_data = ctx->driver_vtable->buffer_set_data; ctx->driver_vtable->buffer_create (buffer); @@ -158,33 +159,19 @@ _cogl_buffer_initialize (CoglBuffer *buffer, } } -void -_cogl_buffer_fini (CoglBuffer *buffer) -{ - g_return_if_fail (!(buffer->flags & COGL_BUFFER_FLAG_MAPPED)); - g_return_if_fail (buffer->immutable_ref == 0); - - if (buffer->flags & COGL_BUFFER_FLAG_BUFFER_OBJECT) - buffer->context->driver_vtable->buffer_destroy (buffer); - else - g_free (buffer->data); -} - unsigned int cogl_buffer_get_size (CoglBuffer *buffer) { - if (!cogl_is_buffer (buffer)) - return 0; + g_return_val_if_fail (COGL_IS_BUFFER (buffer), 0); - return COGL_BUFFER (buffer)->size; + return buffer->size; } void cogl_buffer_set_update_hint (CoglBuffer *buffer, CoglBufferUpdateHint hint) { - if (!cogl_is_buffer (buffer)) - return; + g_return_if_fail (COGL_IS_BUFFER (buffer)); if (G_UNLIKELY (hint > COGL_BUFFER_UPDATE_HINT_STREAM)) hint = COGL_BUFFER_UPDATE_HINT_STATIC; @@ -195,7 +182,7 @@ cogl_buffer_set_update_hint (CoglBuffer *buffer, CoglBufferUpdateHint cogl_buffer_get_update_hint (CoglBuffer *buffer) { - if (!cogl_is_buffer (buffer)) + if (!COGL_IS_BUFFER (buffer)) return FALSE; return buffer->update_hint; @@ -219,7 +206,7 @@ _cogl_buffer_map (CoglBuffer *buffer, CoglBufferMapHint hints, GError **error) { - g_return_val_if_fail (cogl_is_buffer (buffer), NULL); + g_return_val_if_fail (COGL_IS_BUFFER (buffer), NULL); return cogl_buffer_map_range (buffer, 0, buffer->size, access, hints, error); } @@ -245,18 +232,18 @@ cogl_buffer_map_range (CoglBuffer *buffer, CoglBufferMapHint hints, GError **error) { - g_return_val_if_fail (cogl_is_buffer (buffer), NULL); + g_return_val_if_fail (COGL_IS_BUFFER (buffer), NULL); g_return_val_if_fail (!(buffer->flags & COGL_BUFFER_FLAG_MAPPED), NULL); if (G_UNLIKELY (buffer->immutable_ref)) warn_about_midscene_changes (); - buffer->data = buffer->vtable.map_range (buffer, - offset, - size, - access, - hints, - error); + buffer->data = buffer->map_range (buffer, + offset, + size, + access, + hints, + error); return buffer->data; } @@ -264,13 +251,12 @@ cogl_buffer_map_range (CoglBuffer *buffer, void cogl_buffer_unmap (CoglBuffer *buffer) { - if (!cogl_is_buffer (buffer)) - return; + g_return_if_fail (COGL_IS_BUFFER (buffer)); if (!(buffer->flags & COGL_BUFFER_FLAG_MAPPED)) return; - buffer->vtable.unmap (buffer); + buffer->unmap (buffer); } void * @@ -359,13 +345,13 @@ _cogl_buffer_set_data (CoglBuffer *buffer, size_t size, GError **error) { - g_return_val_if_fail (cogl_is_buffer (buffer), FALSE); + g_return_val_if_fail (COGL_IS_BUFFER (buffer), FALSE); g_return_val_if_fail ((offset + size) <= buffer->size, FALSE); if (G_UNLIKELY (buffer->immutable_ref)) warn_about_midscene_changes (); - return buffer->vtable.set_data (buffer, offset, data, size, error); + return buffer->set_data (buffer, offset, data, size, error); } gboolean @@ -384,7 +370,7 @@ cogl_buffer_set_data (CoglBuffer *buffer, CoglBuffer * _cogl_buffer_immutable_ref (CoglBuffer *buffer) { - g_return_val_if_fail (cogl_is_buffer (buffer), NULL); + g_return_val_if_fail (COGL_IS_BUFFER (buffer), NULL); buffer->immutable_ref++; return buffer; @@ -393,7 +379,7 @@ _cogl_buffer_immutable_ref (CoglBuffer *buffer) void _cogl_buffer_immutable_unref (CoglBuffer *buffer) { - g_return_if_fail (cogl_is_buffer (buffer)); + g_return_if_fail (COGL_IS_BUFFER (buffer)); g_return_if_fail (buffer->immutable_ref > 0); buffer->immutable_ref--; diff --git a/cogl/cogl/cogl-buffer.h b/cogl/cogl/cogl-buffer.h index aa2c6ac41..d12c69836 100644 --- a/cogl/cogl/cogl-buffer.h +++ b/cogl/cogl/cogl-buffer.h @@ -43,8 +43,9 @@ G_BEGIN_DECLS /** - * SECTION:cogl-buffer - * @short_description: Common buffer functions, including data upload APIs + * CoglBuffer: + * + * Common buffer functions, including data upload APIs * * The CoglBuffer API provides a common interface to manipulate * buffers that have been allocated either via cogl_pixel_buffer_new() @@ -62,17 +63,21 @@ G_BEGIN_DECLS * of loading an image file and unpacking it into the mapped buffer * without blocking other Cogl operations. */ +#define COGL_TYPE_BUFFER (cogl_buffer_get_type ()) +#define COGL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_BUFFER, CoglBuffer)) +#define COGL_BUFFER_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_BUFFER, CoglBuffer const)) +#define COGL_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COGL_TYPE_BUFFER, CoglBufferClass)) +#define COGL_IS_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COGL_TYPE_BUFFER)) +#define COGL_IS_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COGL_TYPE_BUFFER)) +#define COGL_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COGL_TYPE_BUFFER, CoglBufferClass)) -#if defined(__COGL_H_INSIDE__) && !defined(COGL_ENABLE_MUTTER_API) && \ - !defined(COGL_GIR_SCANNING) -/* For the public C api we typedef interface types as void to avoid needing - * lots of casting in code and instead we will rely on runtime type checking - * for these objects. */ -typedef void CoglBuffer; -#else +typedef struct _CoglBufferClass CoglBufferClass; typedef struct _CoglBuffer CoglBuffer; -#define COGL_BUFFER(buffer) ((CoglBuffer *)(buffer)) -#endif + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglBuffer, g_object_unref) + +COGL_EXPORT +GType cogl_buffer_get_type (void) G_GNUC_CONST; #define COGL_BUFFER_ERROR (_cogl_buffer_error_domain ()) @@ -92,17 +97,6 @@ typedef enum /*< prefix=COGL_BUFFER_ERROR >*/ uint32_t _cogl_buffer_error_domain (void); -/** - * cogl_is_buffer: - * @object: a buffer object - * - * Checks whether @buffer is a buffer object. - * - * Return value: %TRUE if the handle is a CoglBuffer, and %FALSE otherwise - */ -COGL_EXPORT gboolean -cogl_is_buffer (void *object); - /** * cogl_buffer_get_size: * @buffer: a buffer object diff --git a/cogl/cogl/cogl-index-buffer-private.h b/cogl/cogl/cogl-index-buffer-private.h index dccd8fc51..4dfd73716 100644 --- a/cogl/cogl/cogl-index-buffer-private.h +++ b/cogl/cogl/cogl-index-buffer-private.h @@ -37,5 +37,10 @@ struct _CoglIndexBuffer { - CoglBuffer _parent; + CoglBuffer parent_instance; +}; + +struct _CoglIndexBufferClass +{ + CoglBufferClass parent_class; }; diff --git a/cogl/cogl/cogl-index-buffer.c b/cogl/cogl/cogl-index-buffer.c index af0980ed1..1f340ff8b 100644 --- a/cogl/cogl/cogl-index-buffer.c +++ b/cogl/cogl/cogl-index-buffer.c @@ -33,16 +33,21 @@ #include "cogl-config.h" -#include "cogl/cogl-object-private.h" #include "cogl/cogl-indices.h" #include "cogl/cogl-indices-private.h" #include "cogl/cogl-context-private.h" -#include "cogl/cogl-gtype-private.h" -static void _cogl_index_buffer_free (CoglIndexBuffer *indices); +G_DEFINE_FINAL_TYPE (CoglIndexBuffer, cogl_index_buffer, COGL_TYPE_BUFFER) -COGL_BUFFER_DEFINE (IndexBuffer, index_buffer); -COGL_GTYPE_DEFINE_CLASS (IndexBuffer, index_buffer); +static void +cogl_index_buffer_class_init (CoglIndexBufferClass *klass) +{ +} + +static void +cogl_index_buffer_init (CoglIndexBuffer *buffer) +{ +} /* XXX: Unlike the wiki design this just takes a size. A single * indices buffer should be able to contain multiple ranges of indices @@ -50,7 +55,7 @@ COGL_GTYPE_DEFINE_CLASS (IndexBuffer, index_buffer); CoglIndexBuffer * cogl_index_buffer_new (CoglContext *context, size_t bytes) { - CoglIndexBuffer *indices = g_new0 (CoglIndexBuffer, 1); + CoglIndexBuffer *indices = g_object_new (COGL_TYPE_INDEX_BUFFER, NULL); /* parent's constructor */ _cogl_buffer_initialize (COGL_BUFFER (indices), @@ -60,51 +65,5 @@ cogl_index_buffer_new (CoglContext *context, size_t bytes) COGL_BUFFER_USAGE_HINT_INDEX_BUFFER, COGL_BUFFER_UPDATE_HINT_STATIC); - return _cogl_index_buffer_object_new (indices); + return indices; } - -static void -_cogl_index_buffer_free (CoglIndexBuffer *indices) -{ - /* parent's destructor */ - _cogl_buffer_fini (COGL_BUFFER (indices)); - - g_free (indices); -} - -/* XXX: do we want a convenience function like this as an alternative - * to using cogl_buffer_set_data? The advantage of this is that we can - * track meta data such as the indices type and max_index_value for a - * range as part of the indices buffer. If we just leave people to use - * cogl_buffer_set_data then we either need a way to specify the type - * and max index value at draw time or we'll want a separate way to - * declare the type and max value for a range after uploading the - * data. - * - * XXX: I think in the end it'll be that CoglIndices are to - * CoglIndexBuffers as CoglAttributes are to CoglAttributeBuffers. I.e - * a CoglIndexBuffer is a lite subclass of CoglBuffer that simply - * implies that the buffer will later be bound as indices but doesn't - * track more detailed meta data. CoglIndices build on a - * CoglIndexBuffer and define the type and max_index_value for some - * sub-range of a CoglIndexBuffer. - */ -#if 0 -void -cogl_index_buffer_set_data (CoglIndexBuffer *indices, - CoglIndicesType type, - int max_index_value, - size_t write_offset, - void *user_indices, - int n_indices) -{ - GList *l; - - for (l = indices->ranges; l; l = l->next) - { - - } - cogl_buffer_set -} -#endif - diff --git a/cogl/cogl/cogl-index-buffer.h b/cogl/cogl/cogl-index-buffer.h index f8663683b..23b75d837 100644 --- a/cogl/cogl/cogl-index-buffer.h +++ b/cogl/cogl/cogl-index-buffer.h @@ -44,23 +44,25 @@ G_BEGIN_DECLS /** - * SECTION:cogl-index-buffer - * @short_description: Functions for creating and manipulating vertex - * indices. + * CoglIndexBuffer: * - * FIXME + *Functions for creating and manipulating vertex indices. */ +#define COGL_TYPE_INDEX_BUFFER (cogl_index_buffer_get_type ()) +#define COGL_INDEX_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_INDEX_BUFFER, CoglIndexBuffer)) +#define COGL_INDEX_BUFFER_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_INDEX_BUFFER, CoglIndexBuffer const)) +#define COGL_INDEX_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COGL_TYPE_INDEX_BUFFER, CoglIndexBufferClass)) +#define COGL_IS_INDEX_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COGL_TYPE_INDEX_BUFFER)) +#define COGL_IS_INDEX_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COGL_TYPE_INDEX_BUFFER)) +#define COGL_INDEX_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COGL_TYPE_INDEX_BUFFER, CoglIndexBufferClass)) -#define COGL_INDEX_BUFFER(buffer) ((CoglIndexBuffer*) buffer) +typedef struct _CoglIndexBufferClass CoglIndexBufferClass; +typedef struct _CoglIndexBuffer CoglIndexBuffer; -typedef struct _CoglIndexBuffer CoglIndexBuffer; +G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglIndexBuffer, g_object_unref) -/** - * cogl_index_buffer_get_gtype: - * - * Returns: a #GType that can be used with the GLib type system. - */ -COGL_EXPORT GType cogl_index_buffer_get_gtype (void); +COGL_EXPORT +GType cogl_index_buffer_get_type (void) G_GNUC_CONST; /** * cogl_index_buffer_new: @@ -78,16 +80,4 @@ COGL_EXPORT CoglIndexBuffer * cogl_index_buffer_new (CoglContext *context, size_t bytes); -/** - * cogl_is_index_buffer: - * @object: A #CoglObject - * - * Gets whether the given object references a #CoglIndexBuffer. - * - * Returns: %TRUE if the @object references a #CoglIndexBuffer, - * %FALSE otherwise - */ -COGL_EXPORT gboolean -cogl_is_index_buffer (void *object); - G_END_DECLS diff --git a/cogl/cogl/cogl-indices.c b/cogl/cogl/cogl-indices.c index 1e64c2314..f50b440a0 100644 --- a/cogl/cogl/cogl-indices.c +++ b/cogl/cogl/cogl-indices.c @@ -49,7 +49,7 @@ cogl_indices_dispose (GObject *object) { CoglIndices *indices = COGL_INDICES (object); - cogl_object_unref (indices->buffer); + g_object_unref (indices->buffer); G_OBJECT_CLASS (cogl_indices_parent_class)->dispose (object); } @@ -89,7 +89,7 @@ cogl_indices_new_for_buffer (CoglIndicesType type, { CoglIndices *indices = g_object_new (COGL_TYPE_INDICES, NULL); - indices->buffer = cogl_object_ref (buffer); + indices->buffer = g_object_ref (buffer); indices->offset = offset; indices->type = type; @@ -119,12 +119,12 @@ cogl_indices_new (CoglContext *context, if (ignore_error) { g_error_free (ignore_error); - cogl_object_unref (index_buffer); + g_object_unref (index_buffer); return NULL; } indices = cogl_indices_new_for_buffer (type, index_buffer, 0); - cogl_object_unref (index_buffer); + g_object_unref (index_buffer); return indices; } diff --git a/cogl/cogl/cogl-journal.c b/cogl/cogl/cogl-journal.c index 065e669de..981428f20 100644 --- a/cogl/cogl/cogl-journal.c +++ b/cogl/cogl/cogl-journal.c @@ -137,7 +137,7 @@ cogl_journal_dispose (GObject *object) for (i = 0; i < COGL_JOURNAL_VBO_POOL_SIZE; i++) if (journal->vbo_pool[i]) - cogl_object_unref (journal->vbo_pool[i]); + g_object_unref (journal->vbo_pool[i]); G_OBJECT_CLASS (cogl_journal_parent_class)->dispose (object); } @@ -1145,7 +1145,7 @@ create_attribute_buffer (CoglJournal *journal, else if (cogl_buffer_get_size (COGL_BUFFER (vbo)) < n_bytes) { /* If the buffer is too small then we'll just recreate it */ - cogl_object_unref (vbo); + g_object_unref (vbo); vbo = cogl_attribute_buffer_new_with_size (ctx, n_bytes); journal->vbo_pool[journal->next_vbo_in_pool] = vbo; } @@ -1153,7 +1153,7 @@ create_attribute_buffer (CoglJournal *journal, journal->next_vbo_in_pool = ((journal->next_vbo_in_pool + 1) % COGL_JOURNAL_VBO_POOL_SIZE); - return cogl_object_ref (vbo); + return g_object_ref (vbo); } static CoglAttributeBuffer * @@ -1478,7 +1478,7 @@ _cogl_journal_flush (CoglJournal *journal) g_object_unref (g_array_index (state.attributes, CoglAttribute *, i)); g_array_set_size (state.attributes, 0); - cogl_object_unref (state.attribute_buffer); + g_object_unref (state.attribute_buffer); COGL_TIMER_START (_cogl_uprof_context, discard_timer); _cogl_journal_discard (journal); diff --git a/cogl/cogl/cogl-pixel-buffer-private.h b/cogl/cogl/cogl-pixel-buffer-private.h index cdae26e56..235217254 100644 --- a/cogl/cogl/cogl-pixel-buffer-private.h +++ b/cogl/cogl/cogl-pixel-buffer-private.h @@ -43,7 +43,12 @@ G_BEGIN_DECLS struct _CoglPixelBuffer { - CoglBuffer _parent; + CoglBuffer parent_instance; +}; + +struct _CoglPixelBufferClass +{ + CoglBufferClass parent_class; }; G_END_DECLS diff --git a/cogl/cogl/cogl-pixel-buffer.c b/cogl/cogl/cogl-pixel-buffer.c index c17b76dfc..b8782a077 100644 --- a/cogl/cogl/cogl-pixel-buffer.c +++ b/cogl/cogl/cogl-pixel-buffer.c @@ -46,16 +46,20 @@ #include "cogl/cogl-private.h" #include "cogl/cogl-util.h" #include "cogl/cogl-context-private.h" -#include "cogl/cogl-object.h" #include "cogl/cogl-pixel-buffer-private.h" #include "cogl/cogl-pixel-buffer.h" -#include "cogl/cogl-gtype-private.h" + +G_DEFINE_FINAL_TYPE (CoglPixelBuffer, cogl_pixel_buffer, COGL_TYPE_BUFFER) static void -_cogl_pixel_buffer_free (CoglPixelBuffer *buffer); +cogl_pixel_buffer_class_init (CoglPixelBufferClass *klass) +{ +} -COGL_BUFFER_DEFINE (PixelBuffer, pixel_buffer) -COGL_GTYPE_DEFINE_CLASS (PixelBuffer, pixel_buffer) +static void +cogl_pixel_buffer_init (CoglPixelBuffer *buffer) +{ +} static CoglPixelBuffer * _cogl_pixel_buffer_new (CoglContext *context, @@ -63,18 +67,16 @@ _cogl_pixel_buffer_new (CoglContext *context, const void *data, GError **error) { - CoglPixelBuffer *pixel_buffer = g_new0 (CoglPixelBuffer, 1); - CoglBuffer *buffer = COGL_BUFFER (pixel_buffer); + CoglPixelBuffer *pixel_buffer = g_object_new (COGL_TYPE_PIXEL_BUFFER, NULL); /* parent's constructor */ - _cogl_buffer_initialize (buffer, + _cogl_buffer_initialize (COGL_BUFFER (pixel_buffer), context, size, COGL_BUFFER_BIND_TARGET_PIXEL_UNPACK, COGL_BUFFER_USAGE_HINT_TEXTURE, COGL_BUFFER_UPDATE_HINT_STATIC); - _cogl_pixel_buffer_object_new (pixel_buffer); if (data) { @@ -84,7 +86,7 @@ _cogl_pixel_buffer_new (CoglContext *context, size, error)) { - cogl_object_unref (pixel_buffer); + g_object_unref (pixel_buffer); return NULL; } } @@ -104,13 +106,3 @@ cogl_pixel_buffer_new (CoglContext *context, g_clear_error (&ignore_error); return buffer; } - -static void -_cogl_pixel_buffer_free (CoglPixelBuffer *buffer) -{ - /* parent's destructor */ - _cogl_buffer_fini (COGL_BUFFER (buffer)); - - g_free (buffer); -} - diff --git a/cogl/cogl/cogl-pixel-buffer.h b/cogl/cogl/cogl-pixel-buffer.h index 58084ee14..3acb1d79b 100644 --- a/cogl/cogl/cogl-pixel-buffer.h +++ b/cogl/cogl/cogl-pixel-buffer.h @@ -49,19 +49,24 @@ typedef struct _CoglPixelBuffer CoglPixelBuffer; G_BEGIN_DECLS -#define COGL_PIXEL_BUFFER(buffer) ((CoglPixelBuffer *)(buffer)) - /** - * CoglPixelBuffer: (skip) + * CoglPixelBuffer: */ +#define COGL_TYPE_PIXEL_BUFFER (cogl_pixel_buffer_get_type ()) +#define COGL_PIXEL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_PIXEL_BUFFER, CoglPixelBuffer)) +#define COGL_PIXEL_BUFFER_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_PIXEL_BUFFER, CoglPixelBuffer const)) +#define COGL_PIXEL_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COGL_TYPE_PIXEL_BUFFER, CoglPixelBufferClass)) +#define COGL_IS_PIXEL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COGL_TYPE_PIXEL_BUFFER)) +#define COGL_IS_PIXEL_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COGL_TYPE_PIXEL_BUFFER)) +#define COGL_PIXEL_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COGL_TYPE_PIXEL_BUFFER, CoglPixelBufferClass)) + +typedef struct _CoglPixelBufferClass CoglPixelBufferClass; +typedef struct _CoglPixelBuffer CoglPixelBuffer; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglPixelBuffer, g_object_unref) -/** - * cogl_pixel_buffer_get_gtype: - * - * Returns: a #GType that can be used with the GLib type system. - */ COGL_EXPORT -GType cogl_pixel_buffer_get_gtype (void); +GType cogl_pixel_buffer_get_type (void) G_GNUC_CONST; /** * cogl_pixel_buffer_new: @@ -84,16 +89,4 @@ cogl_pixel_buffer_new (CoglContext *context, size_t size, const void *data); -/** - * cogl_is_pixel_buffer: - * @object: a #CoglObject to test - * - * Checks whether @object is a pixel buffer. - * - * Return value: %TRUE if the @object is a pixel buffer, and %FALSE - * otherwise - */ -COGL_EXPORT gboolean -cogl_is_pixel_buffer (void *object); - G_END_DECLS diff --git a/cogl/cogl/cogl-primitive.c b/cogl/cogl/cogl-primitive.c index e61a23c0c..20a6d6cc1 100644 --- a/cogl/cogl/cogl-primitive.c +++ b/cogl/cogl/cogl-primitive.c @@ -150,7 +150,7 @@ cogl_primitive_new_p2 (CoglContext *ctx, 2, COGL_ATTRIBUTE_TYPE_FLOAT); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); return _cogl_primitive_new_with_attributes_unref (mode, n_vertices, attributes, @@ -174,7 +174,7 @@ cogl_primitive_new_p3 (CoglContext *ctx, 3, COGL_ATTRIBUTE_TYPE_FLOAT); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); return _cogl_primitive_new_with_attributes_unref (mode, n_vertices, attributes, @@ -204,7 +204,7 @@ cogl_primitive_new_p2c4 (CoglContext *ctx, 4, COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); return _cogl_primitive_new_with_attributes_unref (mode, n_vertices, attributes, @@ -234,7 +234,7 @@ cogl_primitive_new_p3c4 (CoglContext *ctx, 4, COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); return _cogl_primitive_new_with_attributes_unref (mode, n_vertices, attributes, @@ -264,7 +264,7 @@ cogl_primitive_new_p2t2 (CoglContext *ctx, 2, COGL_ATTRIBUTE_TYPE_FLOAT); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); return _cogl_primitive_new_with_attributes_unref (mode, n_vertices, attributes, @@ -294,7 +294,7 @@ cogl_primitive_new_p3t2 (CoglContext *ctx, 2, COGL_ATTRIBUTE_TYPE_FLOAT); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); return _cogl_primitive_new_with_attributes_unref (mode, n_vertices, attributes, @@ -331,7 +331,7 @@ cogl_primitive_new_p2t2c4 (CoglContext *ctx, 4, COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); return _cogl_primitive_new_with_attributes_unref (mode, n_vertices, attributes, @@ -368,7 +368,7 @@ cogl_primitive_new_p3t2c4 (CoglContext *ctx, 4, COGL_ATTRIBUTE_TYPE_UNSIGNED_BYTE); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); return _cogl_primitive_new_with_attributes_unref (mode, n_vertices, attributes, diff --git a/cogl/cogl/cogl-primitives.c b/cogl/cogl/cogl-primitives.c index 72ede8075..3cdc86705 100644 --- a/cogl/cogl/cogl-primitives.c +++ b/cogl/cogl/cogl-primitives.c @@ -740,7 +740,7 @@ cogl_2d_primitives_immediate (CoglFramebuffer *framebuffer, g_object_unref (attributes[0]); - cogl_object_unref (attribute_buffer); + g_object_unref (attribute_buffer); } void diff --git a/cogl/cogl/cogl.h b/cogl/cogl/cogl.h index 812a25fc5..f6dca44fa 100644 --- a/cogl/cogl/cogl.h +++ b/cogl/cogl/cogl.h @@ -76,11 +76,6 @@ #endif #endif -/* It would be good to move these casts up into 1.x only api if we can - * update Clutter, Mutter and GnomeShell to avoid redundant casts when - * they enable the experimental api... */ -#include - #include #ifdef COGL_ENABLE_MUTTER_API diff --git a/cogl/cogl/deprecated/cogl-type-casts.h b/cogl/cogl/deprecated/cogl-type-casts.h deleted file mode 100644 index 61025884b..000000000 --- a/cogl/cogl/deprecated/cogl-type-casts.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Cogl - * - * A Low Level GPU Graphics and Utilities API - * - * Copyright (C) 2013 Intel Corporation. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * - */ - -#pragma once - -#if !defined(__COGL_H_INSIDE__) && !defined(COGL_COMPILATION) -#error "Only can be included directly." -#endif - -/* The various interface types in Cogl used to be more strongly typed - * which required lots type casting by developers. We provided - * macros for performing these casts following a widely used Gnome - * coding style. Since we now consistently typedef these interfaces - * as void for the public C api and use runtime type checking to - * catch programming errors the casts have become redundant and - * so these macros are only kept for compatibility... - */ - -#if !defined(COGL_ENABLE_MUTTER_API) && !defined(COGL_GIR_SCANNING) -#define COGL_BUFFER(X) (X) -#endif diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build index 74d41a819..0ff027b48 100644 --- a/cogl/cogl/meson.build +++ b/cogl/cogl/meson.build @@ -61,7 +61,6 @@ cogl_deprecated_headers = [ 'deprecated/cogl-program.h', 'deprecated/cogl-shader.h', 'deprecated/cogl-clutter.h', - 'deprecated/cogl-type-casts.h', ] cogl_headers = [ diff --git a/src/tests/cogl/conform/test-custom-attributes.c b/src/tests/cogl/conform/test-custom-attributes.c index 7e12414c1..5094f84f6 100644 --- a/src/tests/cogl/conform/test-custom-attributes.c +++ b/src/tests/cogl/conform/test-custom-attributes.c @@ -74,7 +74,7 @@ test_float_verts (TestState *state, int offset_x, int offset_y) g_object_unref (attributes[1]); g_object_unref (attributes[0]); - cogl_object_unref (buffer); + g_object_unref (buffer); test_utils_check_pixel (test_fb, offset_x + 5, offset_y + 5, 0xff0000ff); test_utils_check_pixel (test_fb, offset_x + 15, offset_y + 5, 0x00ff00ff); @@ -157,8 +157,8 @@ test_byte_verts (TestState *state, int offset_x, int offset_y) g_object_unref (attributes[0]); g_object_unref (attributes[1]); - cogl_object_unref (buffer); - cogl_object_unref (unnorm_buffer); + g_object_unref (buffer); + g_object_unref (unnorm_buffer); test_utils_check_pixel (test_fb, offset_x + 5, offset_y + 5, 0xff0000ff); test_utils_check_pixel (test_fb, offset_x + 15, offset_y + 5, 0x00ff00ff); @@ -256,7 +256,7 @@ test_short_verts (TestState *state, int offset_x, int offset_y) cogl_object_unref (pipeline2); cogl_object_unref (pipeline); - cogl_object_unref (buffer); + g_object_unref (buffer); test_utils_check_pixel (test_fb, offset_x + 5, offset_y + 5, 0xff0000ff); test_utils_check_pixel (test_fb, offset_x + 15, offset_y + 5, 0x00ff00ff); diff --git a/src/tests/cogl/conform/test-map-buffer-range.c b/src/tests/cogl/conform/test-map-buffer-range.c index 12f87b429..83db9bc47 100644 --- a/src/tests/cogl/conform/test-map-buffer-range.c +++ b/src/tests/cogl/conform/test-map-buffer-range.c @@ -67,7 +67,7 @@ test_map_buffer_range (void) /* Replace the texture coordinates of the third vertex with the * coordinates for a green texel */ - data = cogl_buffer_map_range (buffer, + data = cogl_buffer_map_range (COGL_BUFFER (buffer), sizeof (vertex_data[0]) * 2, sizeof (vertex_data[0]), COGL_BUFFER_ACCESS_WRITE, @@ -80,7 +80,7 @@ test_map_buffer_range (void) data->s = 1.0f; data->t = 0.0f; - cogl_buffer_unmap (buffer); + cogl_buffer_unmap (COGL_BUFFER (buffer)); pos_attribute = cogl_attribute_new (buffer, @@ -117,7 +117,7 @@ test_map_buffer_range (void) test_utils_check_pixel (test_fb, 1, fb_height - 2, 0xff0000ff); test_utils_check_pixel (test_fb, fb_width - 2, fb_height - 2, 0xff0000ff); - cogl_object_unref (buffer); + g_object_unref (buffer); g_object_unref (pos_attribute); g_object_unref (tex_coord_attribute); diff --git a/src/tests/cogl/conform/test-pixel-buffer.c b/src/tests/cogl/conform/test-pixel-buffer.c index 0ae92316e..99439112e 100644 --- a/src/tests/cogl/conform/test-pixel-buffer.c +++ b/src/tests/cogl/conform/test-pixel-buffer.c @@ -33,7 +33,7 @@ static CoglBitmap * create_bitmap (void) { CoglBitmap *bitmap; - CoglBuffer *buffer; + CoglPixelBuffer *buffer; bitmap = cogl_bitmap_new_with_size (test_ctx, BITMAP_SIZE, @@ -41,11 +41,11 @@ create_bitmap (void) COGL_PIXEL_FORMAT_RGBA_8888); buffer = cogl_bitmap_get_buffer (bitmap); - g_assert (cogl_is_pixel_buffer (buffer)); - g_assert (cogl_is_buffer (buffer)); + g_assert (COGL_IS_PIXEL_BUFFER (buffer)); + g_assert (COGL_IS_BUFFER (buffer)); - cogl_buffer_set_update_hint (buffer, COGL_BUFFER_UPDATE_HINT_DYNAMIC); - g_assert_cmpint (cogl_buffer_get_update_hint (buffer), + cogl_buffer_set_update_hint (COGL_BUFFER (buffer), COGL_BUFFER_UPDATE_HINT_DYNAMIC); + g_assert_cmpint (cogl_buffer_get_update_hint (COGL_BUFFER (buffer)), ==, COGL_BUFFER_UPDATE_HINT_DYNAMIC); @@ -56,20 +56,20 @@ static CoglBitmap * create_and_fill_bitmap (void) { CoglBitmap *bitmap = create_bitmap (); - CoglBuffer *buffer = cogl_bitmap_get_buffer (bitmap); + CoglPixelBuffer *buffer = cogl_bitmap_get_buffer (bitmap); uint8_t *map; unsigned int stride; stride = cogl_bitmap_get_rowstride (bitmap); - map = cogl_buffer_map (buffer, + map = cogl_buffer_map (COGL_BUFFER (buffer), COGL_BUFFER_ACCESS_WRITE, COGL_BUFFER_MAP_HINT_DISCARD); g_assert (map); generate_bitmap_data (map, stride); - cogl_buffer_unmap (buffer); + cogl_buffer_unmap (COGL_BUFFER (buffer)); return bitmap; } @@ -166,7 +166,7 @@ static void test_pixel_buffer_set_data (void) { CoglBitmap *bitmap = create_bitmap (); - CoglBuffer *buffer = cogl_bitmap_get_buffer (bitmap); + CoglPixelBuffer *buffer = cogl_bitmap_get_buffer (bitmap); CoglPipeline *pipeline; CoglTexture *texture; uint8_t *data; @@ -178,7 +178,7 @@ test_pixel_buffer_set_data (void) generate_bitmap_data (data, stride); - cogl_buffer_set_data (buffer, + cogl_buffer_set_data (COGL_BUFFER (buffer), 0, /* offset */ data, stride * (BITMAP_SIZE - 1) + diff --git a/src/tests/cogl/conform/test-primitive.c b/src/tests/cogl/conform/test-primitive.c index 1a16eebfc..563dd4fb9 100644 --- a/src/tests/cogl/conform/test-primitive.c +++ b/src/tests/cogl/conform/test-primitive.c @@ -308,7 +308,7 @@ test_copy (TestState *state) for (i = 0; i < N_ATTRIBS; i++) g_object_unref (attributes[i]); - cogl_object_unref (buffer); + g_object_unref (buffer); } static void