diff --git a/clutter/clutter/clutter-blur-effect.c b/clutter/clutter/clutter-blur-effect.c index e624b0bce..7d5031b38 100644 --- a/clutter/clutter/clutter-blur-effect.c +++ b/clutter/clutter/clutter-blur-effect.c @@ -117,7 +117,7 @@ clutter_blur_effect_create_pipeline (ClutterOffscreenEffect *effect, cogl_pipeline_set_layer_texture (blur_effect->pipeline, 0, texture); - return cogl_object_ref (blur_effect->pipeline); + return g_object_ref (blur_effect->pipeline); } static gboolean @@ -147,7 +147,7 @@ clutter_blur_effect_dispose (GObject *gobject) { ClutterBlurEffect *self = CLUTTER_BLUR_EFFECT (gobject); - cogl_clear_object (&self->pipeline); + g_clear_object (&self->pipeline); G_OBJECT_CLASS (clutter_blur_effect_parent_class)->dispose (gobject); } diff --git a/clutter/clutter/clutter-blur.c b/clutter/clutter/clutter-blur.c index 6a43baa4f..2617e47c4 100644 --- a/clutter/clutter/clutter-blur.c +++ b/clutter/clutter/clutter-blur.c @@ -326,7 +326,7 @@ apply_blur_pass (BlurPass *pass) static void clear_blur_pass (BlurPass *pass) { - cogl_clear_object (&pass->pipeline); + g_clear_object (&pass->pipeline); g_clear_object (&pass->texture); g_clear_object (&pass->framebuffer); } diff --git a/clutter/clutter/clutter-brightness-contrast-effect.c b/clutter/clutter/clutter-brightness-contrast-effect.c index 28838919b..fed67cf69 100644 --- a/clutter/clutter/clutter-brightness-contrast-effect.c +++ b/clutter/clutter/clutter-brightness-contrast-effect.c @@ -130,7 +130,7 @@ clutter_brightness_contrast_effect_create_pipeline (ClutterOffscreenEffect *effe cogl_pipeline_set_layer_texture (self->pipeline, 0, texture); - return cogl_object_ref (self->pipeline); + return g_object_ref (self->pipeline); } static gboolean @@ -155,7 +155,7 @@ clutter_brightness_contrast_effect_dispose (GObject *gobject) { ClutterBrightnessContrastEffect *self = CLUTTER_BRIGHTNESS_CONTRAST_EFFECT (gobject); - cogl_clear_object (&self->pipeline); + g_clear_object (&self->pipeline); G_OBJECT_CLASS (clutter_brightness_contrast_effect_parent_class)->dispose (gobject); } diff --git a/clutter/clutter/clutter-colorize-effect.c b/clutter/clutter/clutter-colorize-effect.c index 0242351c9..7171bd0bf 100644 --- a/clutter/clutter/clutter-colorize-effect.c +++ b/clutter/clutter/clutter-colorize-effect.c @@ -105,7 +105,7 @@ clutter_colorize_effect_create_pipeline (ClutterOffscreenEffect *effect, cogl_pipeline_set_layer_texture (colorize_effect->pipeline, 0, texture); - return cogl_object_ref (colorize_effect->pipeline); + return g_object_ref (colorize_effect->pipeline); } static void @@ -113,7 +113,7 @@ clutter_colorize_effect_dispose (GObject *gobject) { ClutterColorizeEffect *self = CLUTTER_COLORIZE_EFFECT (gobject); - cogl_clear_object (&self->pipeline); + g_clear_object (&self->pipeline); G_OBJECT_CLASS (clutter_colorize_effect_parent_class)->dispose (gobject); } diff --git a/clutter/clutter/clutter-deform-effect.c b/clutter/clutter/clutter-deform-effect.c index cf242b171..034cc277e 100644 --- a/clutter/clutter/clutter-deform-effect.c +++ b/clutter/clutter/clutter-deform-effect.c @@ -313,7 +313,7 @@ clutter_deform_effect_paint_target (ClutterOffscreenEffect *effect, clutter_paint_node_add_primitive (back_node, priv->primitive); clutter_paint_node_unref (back_node); - cogl_object_unref (back_pipeline); + g_object_unref (back_pipeline); } if (G_UNLIKELY (priv->lines_primitive != NULL)) @@ -487,7 +487,7 @@ clutter_deform_effect_free_back_pipeline (ClutterDeformEffect *self) { ClutterDeformEffectPrivate *priv = self->priv; - cogl_clear_object (&priv->back_pipeline); + g_clear_object (&priv->back_pipeline); } static void @@ -522,7 +522,7 @@ clutter_deform_effect_set_property (GObject *gobject, break; case PROP_BACK_MATERIAL: - clutter_deform_effect_set_back_material (self, g_value_get_pointer (value)); + clutter_deform_effect_set_back_material (self, g_value_get_object (value)); break; default: @@ -550,7 +550,7 @@ clutter_deform_effect_get_property (GObject *gobject, break; case PROP_BACK_MATERIAL: - g_value_set_pointer (value, priv->back_pipeline); + g_value_set_object (value, priv->back_pipeline); break; default: @@ -601,8 +601,9 @@ clutter_deform_effect_class_init (ClutterDeformEffectClass *klass) * By default, no material will be used */ obj_props[PROP_BACK_MATERIAL] = - g_param_spec_pointer ("back-material", NULL, NULL, - CLUTTER_PARAM_READWRITE); + g_param_spec_object ("back-material", NULL, NULL, + COGL_TYPE_PIPELINE, + CLUTTER_PARAM_READWRITE); gobject_class->finalize = clutter_deform_effect_finalize; gobject_class->set_property = clutter_deform_effect_set_property; @@ -644,7 +645,7 @@ clutter_deform_effect_set_back_material (ClutterDeformEffect *effect, ClutterDeformEffectPrivate *priv; g_return_if_fail (CLUTTER_IS_DEFORM_EFFECT (effect)); - g_return_if_fail (pipeline == NULL || cogl_is_pipeline (pipeline)); + g_return_if_fail (pipeline == NULL || COGL_IS_PIPELINE (pipeline)); priv = effect->priv; @@ -652,7 +653,7 @@ clutter_deform_effect_set_back_material (ClutterDeformEffect *effect, priv->back_pipeline = pipeline; if (priv->back_pipeline != NULL) - cogl_object_ref (priv->back_pipeline); + g_object_ref (priv->back_pipeline); clutter_deform_effect_invalidate (effect); } diff --git a/clutter/clutter/clutter-desaturate-effect.c b/clutter/clutter/clutter-desaturate-effect.c index 87b4312e2..a0b582e1b 100644 --- a/clutter/clutter/clutter-desaturate-effect.c +++ b/clutter/clutter/clutter-desaturate-effect.c @@ -116,7 +116,7 @@ clutter_desaturate_effect_create_pipeline (ClutterOffscreenEffect *effect, cogl_pipeline_set_layer_texture (desaturate_effect->pipeline, 0, texture); - return cogl_object_ref (desaturate_effect->pipeline); + return g_object_ref (desaturate_effect->pipeline); } static void @@ -124,7 +124,7 @@ clutter_desaturate_effect_dispose (GObject *gobject) { ClutterDesaturateEffect *self = CLUTTER_DESATURATE_EFFECT (gobject); - cogl_clear_object (&self->pipeline); + g_clear_object (&self->pipeline); G_OBJECT_CLASS (clutter_desaturate_effect_parent_class)->dispose (gobject); } diff --git a/clutter/clutter/clutter-effect.c b/clutter/clutter/clutter-effect.c index 50e669a6c..76e690755 100644 --- a/clutter/clutter/clutter-effect.c +++ b/clutter/clutter/clutter-effect.c @@ -101,13 +101,13 @@ * // Clear the previous state // * if (self->rect_1) * { - * cogl_object_unref (self->rect_1); + * g_object_unref (self->rect_1); * self->rect_1 = NULL; * } * * if (self->rect_2) * { - * cogl_object_unref (self->rect_2); + * g_object_unref (self->rect_2); * self->rect_2 = NULL; * } * diff --git a/clutter/clutter/clutter-offscreen-effect.c b/clutter/clutter/clutter-offscreen-effect.c index dc62eec10..6a5efa914 100644 --- a/clutter/clutter/clutter-offscreen-effect.c +++ b/clutter/clutter/clutter-offscreen-effect.c @@ -274,7 +274,7 @@ update_fbo (ClutterEffect *effect, error->message); g_object_unref (offscreen); - cogl_clear_object (&priv->pipeline); + g_clear_object (&priv->pipeline); priv->target_width = 0; priv->target_height = 0; @@ -284,7 +284,7 @@ update_fbo (ClutterEffect *effect, priv->offscreen = offscreen; - cogl_clear_object (&priv->pipeline); + g_clear_object (&priv->pipeline); priv->pipeline = offscreen_class->create_pipeline (self, priv->texture); return TRUE; @@ -577,7 +577,7 @@ clutter_offscreen_effect_finalize (GObject *gobject) g_clear_object (&priv->offscreen); g_clear_object (&priv->texture); - g_clear_pointer (&priv->pipeline, cogl_object_unref); + g_clear_object (&priv->pipeline); G_OBJECT_CLASS (clutter_offscreen_effect_parent_class)->finalize (gobject); } diff --git a/clutter/clutter/clutter-paint-nodes.c b/clutter/clutter/clutter-paint-nodes.c index f551a098b..d7dd91e64 100644 --- a/clutter/clutter/clutter-paint-nodes.c +++ b/clutter/clutter/clutter-paint-nodes.c @@ -384,7 +384,7 @@ clutter_pipeline_node_finalize (ClutterPaintNode *node) ClutterPipelineNode *pnode = CLUTTER_PIPELINE_NODE (node); if (pnode->pipeline != NULL) - cogl_object_unref (pnode->pipeline); + g_object_unref (pnode->pipeline); CLUTTER_PAINT_NODE_CLASS (clutter_pipeline_node_parent_class)->finalize (node); } @@ -554,7 +554,7 @@ clutter_pipeline_node_init (ClutterPipelineNode *self) * paint its contents. * * This function will acquire a reference on the passed @pipeline, - * so it is safe to call cogl_object_unref() when it returns. + * so it is safe to call g_object_unref() when it returns. * * Return value: (transfer full): the newly created #ClutterPaintNode. * Use clutter_paint_node_unref() when done. @@ -564,12 +564,12 @@ clutter_pipeline_node_new (CoglPipeline *pipeline) { ClutterPipelineNode *res; - g_return_val_if_fail (pipeline == NULL || cogl_is_pipeline (pipeline), NULL); + g_return_val_if_fail (pipeline == NULL || COGL_IS_PIPELINE (pipeline), NULL); res = _clutter_paint_node_create (CLUTTER_TYPE_PIPELINE_NODE); if (pipeline != NULL) - res->pipeline = cogl_object_ref (pipeline); + res->pipeline = g_object_ref (pipeline); return (ClutterPaintNode *) res; } @@ -1427,7 +1427,7 @@ clutter_layer_node_finalize (ClutterPaintNode *node) ClutterLayerNode *lnode = CLUTTER_LAYER_NODE (node); if (lnode->pipeline != NULL) - cogl_object_unref (lnode->pipeline); + g_object_unref (lnode->pipeline); g_clear_object (&lnode->offscreen); @@ -1494,7 +1494,7 @@ clutter_layer_node_new_to_framebuffer (CoglFramebuffer *framebuffer, ClutterLayerNode *res; g_return_val_if_fail (COGL_IS_FRAMEBUFFER (framebuffer), NULL); - g_return_val_if_fail (cogl_is_pipeline (pipeline), NULL); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), NULL); res = _clutter_paint_node_create (CLUTTER_TYPE_LAYER_NODE); diff --git a/clutter/clutter/clutter-stage-view.c b/clutter/clutter/clutter-stage-view.c index b12b61b9a..a07c7bc40 100644 --- a/clutter/clutter/clutter-stage-view.c +++ b/clutter/clutter/clutter-stage-view.c @@ -208,7 +208,7 @@ clutter_stage_view_invalidate_offscreen_blit_pipeline (ClutterStageView *view) ClutterStageViewPrivate *priv = clutter_stage_view_get_instance_private (view); - g_clear_pointer (&priv->offscreen_pipeline, cogl_object_unref); + g_clear_object (&priv->offscreen_pipeline); } void @@ -1485,7 +1485,7 @@ clutter_stage_view_dispose (GObject *object) clutter_damage_history_free); g_clear_object (&priv->offscreen); - g_clear_pointer (&priv->offscreen_pipeline, cogl_object_unref); + g_clear_object (&priv->offscreen_pipeline); g_clear_pointer (&priv->redraw_clip, cairo_region_destroy); g_clear_pointer (&priv->accumulated_redraw_clip, cairo_region_destroy); g_clear_pointer (&priv->frame_clock, clutter_frame_clock_destroy); diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c index 9f0f17c31..c41a13425 100644 --- a/clutter/clutter/clutter-text.c +++ b/clutter/clutter/clutter-text.c @@ -1964,7 +1964,7 @@ paint_selection_rectangle (ClutterText *self, cogl_pango_show_layout (fb, layout, priv->text_x, 0, &cogl_color); cogl_framebuffer_pop_clip (fb); - cogl_object_unref (color_pipeline); + g_object_unref (color_pipeline); } /* Draws the selected text, its background, and the cursor */ @@ -2007,7 +2007,7 @@ selection_paint (ClutterText *self, priv->cursor_rect.origin.x + priv->cursor_rect.size.width, priv->cursor_rect.origin.y + priv->cursor_rect.size.height); - g_clear_pointer (&color_pipeline, cogl_object_unref); + g_clear_object (&color_pipeline); } else { diff --git a/cogl/cogl-pango/cogl-pango-display-list.c b/cogl/cogl-pango/cogl-pango-display-list.c index b148ac09e..99582246d 100644 --- a/cogl/cogl-pango/cogl-pango-display-list.c +++ b/cogl/cogl-pango/cogl-pango-display-list.c @@ -469,7 +469,7 @@ _cogl_pango_display_list_node_free (CoglPangoDisplayListNode *node) cogl_object_unref (node->d.trapezoid.primitive); if (node->pipeline) - cogl_object_unref (node->pipeline); + g_object_unref (node->pipeline); g_free (node); } diff --git a/cogl/cogl-pango/cogl-pango-pipeline-cache.c b/cogl/cogl-pango/cogl-pango-pipeline-cache.c index f1720acef..b4e4edbe8 100644 --- a/cogl/cogl-pango/cogl-pango-pipeline-cache.c +++ b/cogl/cogl-pango/cogl-pango-pipeline-cache.c @@ -41,6 +41,8 @@ typedef struct _CoglPangoPipelineCacheEntry CoglPangoPipelineCacheEntry; +static GQuark pipeline_destroy_notify_key = 0; + struct _CoglPangoPipelineCacheEntry { /* This will take a reference or it can be NULL to represent the @@ -55,7 +57,7 @@ static void _cogl_pango_pipeline_cache_key_destroy (void *data) { if (data) - cogl_object_unref (data); + g_object_unref (data); } static void @@ -173,13 +175,13 @@ _cogl_pango_pipeline_cache_get (CoglPangoPipelineCache *cache, { CoglPangoPipelineCacheEntry *entry; PipelineDestroyNotifyData *destroy_data; - static CoglUserDataKey pipeline_destroy_notify_key; + pipeline_destroy_notify_key = g_quark_from_static_string ("-cogl-pango-pipeline-cache-key"); /* Look for an existing entry */ entry = g_hash_table_lookup (cache->hash_table, texture); if (entry) - return cogl_object_ref (entry->pipeline); + return g_object_ref (entry->pipeline); /* No existing pipeline was found so let's create another */ entry = g_new0 (CoglPangoPipelineCacheEntry, 1); @@ -210,10 +212,10 @@ _cogl_pango_pipeline_cache_get (CoglPangoPipelineCache *cache, destroy_data = g_new0 (PipelineDestroyNotifyData, 1); destroy_data->cache = cache; destroy_data->texture = texture; - cogl_object_set_user_data (COGL_OBJECT (entry->pipeline), - &pipeline_destroy_notify_key, - destroy_data, - pipeline_destroy_notify_cb); + g_object_set_qdata_full (G_OBJECT (entry->pipeline), + pipeline_destroy_notify_key, + destroy_data, + pipeline_destroy_notify_cb); g_hash_table_insert (cache->hash_table, texture ? g_object_ref (texture) : NULL, @@ -228,9 +230,9 @@ void _cogl_pango_pipeline_cache_free (CoglPangoPipelineCache *cache) { if (cache->base_texture_rgba_pipeline) - cogl_object_unref (cache->base_texture_rgba_pipeline); + g_object_unref (cache->base_texture_rgba_pipeline); if (cache->base_texture_alpha_pipeline) - cogl_object_unref (cache->base_texture_alpha_pipeline); + g_object_unref (cache->base_texture_alpha_pipeline); g_hash_table_destroy (cache->hash_table); diff --git a/cogl/cogl/cogl-attribute.c b/cogl/cogl/cogl-attribute.c index f88d47130..68ad20a53 100644 --- a/cogl/cogl/cogl-attribute.c +++ b/cogl/cogl/cogl-attribute.c @@ -642,7 +642,7 @@ _cogl_flush_attributes_state (CoglFramebuffer *framebuffer, n_attributes); if (copy) - cogl_object_unref (copy); + g_object_unref (copy); } int diff --git a/cogl/cogl/cogl-context.c b/cogl/cogl/cogl-context.c index cda8f83de..0826aa19a 100644 --- a/cogl/cogl/cogl-context.c +++ b/cogl/cogl/cogl-context.c @@ -81,10 +81,10 @@ cogl_context_dispose (GObject *object) g_object_unref (context->default_gl_texture_2d_tex); if (context->opaque_color_pipeline) - cogl_object_unref (context->opaque_color_pipeline); + g_object_unref (context->opaque_color_pipeline); if (context->blit_texture_pipeline) - cogl_object_unref (context->blit_texture_pipeline); + g_object_unref (context->blit_texture_pipeline); if (context->swap_callback_closures) g_hash_table_destroy (context->swap_callback_closures); @@ -100,14 +100,14 @@ cogl_context_dispose (GObject *object) g_object_unref (context->rectangle_short_indices); if (context->default_pipeline) - cogl_object_unref (context->default_pipeline); + g_object_unref (context->default_pipeline); if (context->dummy_layer_dependant) - cogl_object_unref (context->dummy_layer_dependant); + g_object_unref (context->dummy_layer_dependant); if (context->default_layer_n) - cogl_object_unref (context->default_layer_n); + g_object_unref (context->default_layer_n); if (context->default_layer_0) - cogl_object_unref (context->default_layer_0); + g_object_unref (context->default_layer_0); if (context->current_clip_stack_valid) _cogl_clip_stack_unref (context->current_clip_stack); @@ -402,7 +402,7 @@ cogl_context_new (CoglDisplay *display, _cogl_list_init (&context->fences); context->named_pipelines = - g_hash_table_new_full (NULL, NULL, NULL, cogl_object_unref); + g_hash_table_new_full (NULL, NULL, NULL, g_object_unref); return context; } diff --git a/cogl/cogl/cogl-framebuffer.c b/cogl/cogl/cogl-framebuffer.c index 1c3d554a0..a4c7edb54 100644 --- a/cogl/cogl/cogl-framebuffer.c +++ b/cogl/cogl/cogl-framebuffer.c @@ -77,7 +77,7 @@ enum static guint signals[N_SIGNALS]; #ifdef COGL_ENABLE_DEBUG -static CoglUserDataKey wire_pipeline_key; +static GQuark wire_pipeline_key = 0; #endif typedef struct _CoglFramebufferPrivate @@ -869,7 +869,7 @@ _cogl_framebuffer_add_dependency (CoglFramebuffer *framebuffer, } /* TODO: generalize the primed-array type structure we e.g. use for - * cogl_object_set_user_data or for pipeline children as a way to + * g_object_set_qdata_full or for pipeline children as a way to * avoid quite a lot of mid-scene micro allocations here... */ priv->deps = g_list_prepend (priv->deps, g_object_ref (dependency)); @@ -2288,7 +2288,7 @@ pipeline_destroyed_cb (CoglPipeline *weak_pipeline, void *user_data) /* XXX: I think we probably need to provide a custom unref function for * CoglPipeline because it's possible that we will reach this callback - * because original_pipeline is being freed which means cogl_object_unref + * because original_pipeline is being freed which means g_object_unref * will have already freed any associated user data. * * Setting more user data here will *probably* succeed but that may allocate @@ -2298,10 +2298,10 @@ pipeline_destroyed_cb (CoglPipeline *weak_pipeline, void *user_data) * that a custom unref function could be written that can destroy weak * pipeline children before removing user data. */ - cogl_object_set_user_data (COGL_OBJECT (original_pipeline), - &wire_pipeline_key, NULL, NULL); + g_object_set_qdata_full (G_OBJECT (original_pipeline), + wire_pipeline_key, NULL, NULL); - cogl_object_unref (weak_pipeline); + g_object_unref (weak_pipeline); } static void @@ -2319,7 +2319,7 @@ draw_wireframe (CoglContext *ctx, CoglIndices *wire_indices; CoglPipeline *wire_pipeline; int n_indices; - + wire_pipeline_key = g_quark_from_static_string ("framebuffer-wire-pipeline-key"); wire_indices = get_wire_line_indices (ctx, mode, first_vertex, @@ -2327,8 +2327,8 @@ draw_wireframe (CoglContext *ctx, indices, &n_indices); - wire_pipeline = cogl_object_get_user_data (COGL_OBJECT (pipeline), - &wire_pipeline_key); + wire_pipeline = g_object_get_qdata (G_OBJECT (pipeline), + wire_pipeline_key); if (!wire_pipeline) { @@ -2337,9 +2337,9 @@ draw_wireframe (CoglContext *ctx, wire_pipeline = _cogl_pipeline_weak_copy (pipeline, pipeline_destroyed_cb, NULL); - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &wire_pipeline_key, wire_pipeline, - NULL); + g_object_set_qdata_full (G_OBJECT (pipeline), + wire_pipeline_key, wire_pipeline, + NULL); /* If we have glsl then the pipeline may have an associated * vertex program and since we'd like to see the results of the diff --git a/cogl/cogl/cogl-journal.c b/cogl/cogl/cogl-journal.c index 981428f20..59deec86d 100644 --- a/cogl/cogl/cogl-journal.c +++ b/cogl/cogl/cogl-journal.c @@ -1618,7 +1618,7 @@ _cogl_journal_log_quad (CoglJournal *journal, cogl_framebuffer_get_viewport4fv (framebuffer, entry->viewport); if (G_UNLIKELY (final_pipeline != pipeline)) - cogl_object_unref (final_pipeline); + g_object_unref (final_pipeline); modelview_stack = _cogl_framebuffer_get_modelview_stack (framebuffer); diff --git a/cogl/cogl/cogl-node-private.h b/cogl/cogl/cogl-node-private.h index 9bd97435c..7f10f10b6 100644 --- a/cogl/cogl/cogl-node-private.h +++ b/cogl/cogl/cogl-node-private.h @@ -33,9 +33,9 @@ #pragma once -#include "cogl/cogl-object-private.h" #include "cogl/cogl-list.h" +typedef struct _CoglNodeClass CoglNodeClass; typedef struct _CoglNode CoglNode; /* Pipelines and layers represent their state in a tree structure where @@ -44,9 +44,7 @@ typedef struct _CoglNode CoglNode; * type to track the tree hierarchy so we can share code... */ struct _CoglNode { - /* the parent in terms of class hierarchy, so anything inheriting - * from CoglNode also inherits from CoglObject. */ - CoglObject _parent; + GObject parent_instance; /* The parent pipeline/layer */ CoglNode *parent; @@ -62,10 +60,23 @@ struct _CoglNode gboolean has_parent_reference; }; -#define COGL_NODE(X) ((CoglNode *)(X)) +struct _CoglNodeClass +{ + GObjectClass parent_class; +}; -void -_cogl_pipeline_node_init (CoglNode *node); +#define COGL_TYPE_NODE (cogl_node_get_type ()) +#define COGL_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_NODE, CoglNode)) +#define COGL_NODE_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_NODE, CoglNode const)) +#define COGL_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COGL_TYPE_NODE, CoglNodeClass)) +#define COGL_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COGL_TYPE_NODE)) +#define COGL_IS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COGL_TYPE_NODE)) +#define COGL_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COGL_TYPE_NODE, CoglNodeClass)) + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglNode, g_object_unref) + +COGL_EXPORT +GType cogl_node_get_type (void) G_GNUC_CONST; void _cogl_pipeline_node_set_parent_real (CoglNode *node, diff --git a/cogl/cogl/cogl-node.c b/cogl/cogl/cogl-node.c index b02563825..164685dcc 100644 --- a/cogl/cogl/cogl-node.c +++ b/cogl/cogl/cogl-node.c @@ -36,8 +36,15 @@ #include "cogl/cogl-util.h" #include "cogl/cogl-node-private.h" -void -_cogl_pipeline_node_init (CoglNode *node) +G_DEFINE_ABSTRACT_TYPE (CoglNode, cogl_node, G_TYPE_OBJECT) + +static void +cogl_node_class_init (CoglNodeClass *klass) +{ +} + +static void +cogl_node_init (CoglNode *node) { node->parent = NULL; _cogl_list_init (&node->children); @@ -57,7 +64,7 @@ _cogl_pipeline_node_set_parent_real (CoglNode *node, * consistent link to all weak nodes. Once the node is linked to its * parent then we remove the reference at the end if * take_strong_reference == FALSE. */ - cogl_object_ref (parent); + g_object_ref (parent); if (node->parent) _cogl_pipeline_node_unparent_real (node); @@ -72,7 +79,7 @@ _cogl_pipeline_node_set_parent_real (CoglNode *node, * out that the new parent was only being kept alive by the old * parent then it will be disposed of here. */ if (!take_strong_reference) - cogl_object_unref (parent); + g_object_unref (parent); } void @@ -88,7 +95,7 @@ _cogl_pipeline_node_unparent_real (CoglNode *node) _cogl_list_remove (&node->link); if (node->has_parent_reference) - cogl_object_unref (parent); + g_object_unref (parent); node->parent = NULL; } diff --git a/cogl/cogl/cogl-pipeline-debug.c b/cogl/cogl/cogl-pipeline-debug.c index 6e86ab7d8..2641ebd38 100644 --- a/cogl/cogl/cogl-pipeline-debug.c +++ b/cogl/cogl/cogl-pipeline-debug.c @@ -34,6 +34,7 @@ #include "cogl-config.h" #include "cogl/cogl-context-private.h" +#include "cogl/cogl-debug.h" #include "cogl/cogl-pipeline-private.h" #include "cogl/cogl-pipeline-layer-private.h" #include "cogl/cogl-node-private.h" @@ -61,7 +62,7 @@ dump_layer_cb (CoglNode *node, void *user_data) if (state->parent_id >= 0) g_string_append_printf (state->graph, "%*slayer%p -> layer%p;\n", state->indent, "", - layer->_parent.parent, + layer->parent_instance.parent, layer); g_string_append_printf (state->graph, @@ -71,7 +72,7 @@ dump_layer_cb (CoglNode *node, void *user_data) state->indent, "", layer, layer, - COGL_OBJECT (layer)->ref_count); + G_OBJECT (layer)->ref_count); changes_label = g_string_new (""); g_string_append_printf (changes_label, @@ -161,9 +162,9 @@ dump_pipeline_cb (CoglNode *node, void *user_data) state->indent, "", pipeline_id, pipeline, - COGL_OBJECT (pipeline)->ref_count, - pipeline->has_static_breadcrumb ? + G_OBJECT (pipeline)->ref_count, #ifdef COGL_DEBUG_ENABLED + pipeline->has_static_breadcrumb ? pipeline->static_breadcrumb : "NULL" #else "NULL" diff --git a/cogl/cogl/cogl-pipeline-hash-table.c b/cogl/cogl/cogl-pipeline-hash-table.c index 812de18c5..86dc1352e 100644 --- a/cogl/cogl/cogl-pipeline-hash-table.c +++ b/cogl/cogl/cogl-pipeline-hash-table.c @@ -64,7 +64,7 @@ value_destroy_cb (void *value) { CoglPipelineHashTableEntry *entry = value; - cogl_object_unref (entry->parent.pipeline); + g_object_unref (entry->parent.pipeline); g_free (entry); } diff --git a/cogl/cogl/cogl-pipeline-layer-private.h b/cogl/cogl/cogl-pipeline-layer-private.h index e82233567..dfe4786be 100644 --- a/cogl/cogl/cogl-pipeline-layer-private.h +++ b/cogl/cogl/cogl-pipeline-layer-private.h @@ -43,8 +43,21 @@ #include -typedef struct _CoglPipelineLayer CoglPipelineLayer; -#define COGL_PIPELINE_LAYER(OBJECT) ((CoglPipelineLayer *)OBJECT) +#define COGL_TYPE_PIPELINE_LAYER (cogl_pipeline_layer_get_type ()) +#define COGL_PIPELINE_LAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_PIPELINE_LAYER, CoglPipelineLayer)) +#define COGL_PIPELINE_LAYER_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_PIPELINE_LAYER, CoglPipelineLayer const)) +#define COGL_PIPELINE_LAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COGL_TYPE_PIPELINE_LAYER, CoglPipelineLayerClass)) +#define COGL_IS_PIPELINE_LAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COGL_TYPE_PIPELINE_LAYER)) +#define COGL_IS_PIPELINE_LAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COGL_TYPE_PIPELINE_LAYER)) +#define COGL_PIPELINE_LAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COGL_TYPE_PIPELINE_LAYER, CoglPipelineLayerClass)) + +typedef struct _CoglPipelineLayerClass CoglPipelineLayerClass; +typedef struct _CoglPipelineLayer CoglPipelineLayer; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglPipelineLayer, g_object_unref) + +COGL_EXPORT +GType cogl_pipeline_layer_get_type (void) G_GNUC_CONST; /* XXX: should I rename these as * COGL_PIPELINE_LAYER_STATE_INDEX_XYZ... ? @@ -206,7 +219,7 @@ struct _CoglPipelineLayer * the state relating to a given pipeline or layer may actually be * owned by one if is ancestors in the tree. We have a common data * type to track the tree hierarchy so we can share code... */ - CoglNode _parent; + CoglNode parent_instance; /* Some layers have a pipeline owner, which is to say that the layer * is referenced in that pipelines->layer_differences list. A layer @@ -250,6 +263,12 @@ struct _CoglPipelineLayer }; +struct _CoglPipelineLayerClass +{ + CoglNodeClass parent_class; +}; + + typedef gboolean (*CoglPipelineLayerStateComparator) (CoglPipelineLayer *authority0, CoglPipelineLayer *authority1); @@ -330,12 +349,6 @@ _cogl_pipeline_layer_get_texture (CoglPipelineLayer *layer); CoglTexture * _cogl_pipeline_layer_get_texture_real (CoglPipelineLayer *layer); -CoglPipelineFilter -_cogl_pipeline_layer_get_min_filter (CoglPipelineLayer *layer); - -CoglPipelineFilter -_cogl_pipeline_layer_get_mag_filter (CoglPipelineLayer *layer); - CoglPipelineWrapMode _cogl_pipeline_layer_get_wrap_mode_s (CoglPipelineLayer *layer); diff --git a/cogl/cogl/cogl-pipeline-layer-state.c b/cogl/cogl/cogl-pipeline-layer-state.c index cd09cab55..b0cd14e74 100644 --- a/cogl/cogl/cogl-pipeline-layer-state.c +++ b/cogl/cogl/cogl-pipeline-layer-state.c @@ -311,7 +311,7 @@ cogl_pipeline_set_layer_wrap_mode_s (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, NO_RETVAL); - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -351,7 +351,7 @@ cogl_pipeline_set_layer_wrap_mode_t (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, NO_RETVAL); - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -391,7 +391,7 @@ cogl_pipeline_set_layer_wrap_mode (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, NO_RETVAL); - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -424,7 +424,7 @@ _cogl_pipeline_layer_get_wrap_mode_s (CoglPipelineLayer *layer) CoglPipelineLayer *authority; const CoglSamplerCacheEntry *sampler_state; - g_return_val_if_fail (_cogl_is_pipeline_layer (layer), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE_LAYER (layer), FALSE); /* Now find the ancestor of the layer that is the authority for the * state we want to change */ @@ -439,7 +439,7 @@ cogl_pipeline_get_layer_wrap_mode_s (CoglPipeline *pipeline, int layer_index) { CoglPipelineLayer *layer; - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -461,7 +461,7 @@ _cogl_pipeline_layer_get_wrap_mode_t (CoglPipelineLayer *layer) CoglPipelineLayer *authority; const CoglSamplerCacheEntry *sampler_state; - g_return_val_if_fail (_cogl_is_pipeline_layer (layer), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE_LAYER (layer), FALSE); /* Now find the ancestor of the layer that is the authority for the * state we want to change */ @@ -476,7 +476,7 @@ cogl_pipeline_get_layer_wrap_mode_t (CoglPipeline *pipeline, int layer_index) { CoglPipelineLayer *layer; - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -517,7 +517,7 @@ cogl_pipeline_set_layer_point_sprite_coords_enabled (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, FALSE); - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -587,7 +587,7 @@ cogl_pipeline_get_layer_point_sprite_coords_enabled (CoglPipeline *pipeline, CoglPipelineLayer *layer; CoglPipelineLayer *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -680,7 +680,7 @@ cogl_pipeline_add_layer_snippet (CoglPipeline *pipeline, int layer_index, CoglSnippet *snippet) { - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); g_return_if_fail (COGL_IS_SNIPPET (snippet)); g_return_if_fail (snippet->hook >= COGL_SNIPPET_FIRST_LAYER_HOOK); @@ -921,7 +921,7 @@ cogl_pipeline_set_layer_combine (CoglPipeline *pipeline, CoglBlendStringStatement *a; int count; - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -1021,7 +1021,7 @@ cogl_pipeline_set_layer_combine_constant (CoglPipeline *pipeline, CoglPipelineLayer *new; float color_as_floats[4]; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -1104,7 +1104,7 @@ _cogl_pipeline_get_layer_combine_constant (CoglPipeline *pipeline, CoglPipelineLayer *layer; CoglPipelineLayer *authority; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -1131,7 +1131,7 @@ _cogl_pipeline_get_layer_matrix (CoglPipeline *pipeline, int layer_index) CoglPipelineLayer *layer; CoglPipelineLayer *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), NULL); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), NULL); layer = _cogl_pipeline_get_layer (pipeline, layer_index); @@ -1149,7 +1149,7 @@ cogl_pipeline_set_layer_matrix (CoglPipeline *pipeline, CoglPipelineLayer *authority; CoglPipelineLayer *new; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); /* Note: this will ensure that the layer exists, creating one if it * doesn't already. @@ -1211,7 +1211,7 @@ cogl_pipeline_set_layer_matrix (CoglPipeline *pipeline, CoglTexture * _cogl_pipeline_layer_get_texture (CoglPipelineLayer *layer) { - g_return_val_if_fail (_cogl_is_pipeline_layer (layer), NULL); + g_return_val_if_fail (COGL_IS_PIPELINE_LAYER (layer), NULL); return _cogl_pipeline_layer_get_texture_real (layer); } @@ -1254,7 +1254,7 @@ cogl_pipeline_get_layer_filters (CoglPipeline *pipeline, { CoglPipelineLayer *layer; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); layer = _cogl_pipeline_get_layer (pipeline, layer_index); return _cogl_pipeline_layer_get_filters (layer, min_filter, mag_filter); @@ -1273,7 +1273,7 @@ cogl_pipeline_set_layer_filters (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, NO_RETVAL); - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); g_return_if_fail (mag_filter == COGL_PIPELINE_FILTER_NEAREST || mag_filter == COGL_PIPELINE_FILTER_LINEAR); diff --git a/cogl/cogl/cogl-pipeline-layer.c b/cogl/cogl/cogl-pipeline-layer.c index fd7fa3a2d..f1dbb18e5 100644 --- a/cogl/cogl/cogl-pipeline-layer.c +++ b/cogl/cogl/cogl-pipeline-layer.c @@ -47,15 +47,43 @@ #include +G_DEFINE_FINAL_TYPE (CoglPipelineLayer, cogl_pipeline_layer, COGL_TYPE_NODE) + static void -_cogl_pipeline_layer_free (CoglPipelineLayer *layer); +cogl_pipeline_layer_dispose (GObject *object) +{ + CoglPipelineLayer *layer = COGL_PIPELINE_LAYER (object); -/* This type was made deprecated before the cogl_is_pipeline_layer - function was ever exposed in the public headers so there's no need - to make the cogl_is_pipeline_layer function public. We use INTERNAL - so that the cogl_is_* function won't get defined */ -COGL_OBJECT_INTERNAL_DEFINE (PipelineLayer, pipeline_layer); + _cogl_pipeline_node_unparent_real (COGL_NODE (layer)); + if (layer->differences & COGL_PIPELINE_LAYER_STATE_TEXTURE_DATA && + layer->texture != NULL) + g_object_unref (layer->texture); + + if (layer->differences & COGL_PIPELINE_LAYER_STATE_VERTEX_SNIPPETS) + _cogl_pipeline_snippet_list_free (&layer->big_state->vertex_snippets); + + if (layer->differences & COGL_PIPELINE_LAYER_STATE_FRAGMENT_SNIPPETS) + _cogl_pipeline_snippet_list_free (&layer->big_state->fragment_snippets); + + if (layer->differences & COGL_PIPELINE_LAYER_STATE_NEEDS_BIG_STATE) + g_free (layer->big_state); + + G_OBJECT_CLASS (cogl_pipeline_layer_parent_class)->dispose (object); +} + +static void +cogl_pipeline_layer_class_init (CoglPipelineLayerClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->dispose = cogl_pipeline_layer_dispose; +} + +static void +cogl_pipeline_layer_init (CoglPipelineLayer *layer) +{ +} CoglPipelineLayer * _cogl_pipeline_layer_get_authority (CoglPipelineLayer *layer, @@ -372,7 +400,7 @@ _cogl_pipeline_layer_pre_change_notify (CoglPipeline *required_owner, if (layer->owner == required_owner) _cogl_pipeline_remove_layer_difference (required_owner, layer, FALSE); _cogl_pipeline_add_layer_difference (required_owner, new, FALSE); - cogl_object_unref (new); + g_object_unref (new); layer = new; goto init_layer_state; } @@ -449,9 +477,7 @@ _cogl_pipeline_layer_set_parent (CoglPipelineLayer *layer, CoglPipelineLayer * _cogl_pipeline_layer_copy (CoglPipelineLayer *src) { - CoglPipelineLayer *layer = g_new0 (CoglPipelineLayer, 1); - - _cogl_pipeline_node_init (COGL_NODE (layer)); + CoglPipelineLayer *layer = g_object_new (COGL_TYPE_PIPELINE_LAYER, NULL); layer->owner = NULL; layer->index = src->index; @@ -460,7 +486,7 @@ _cogl_pipeline_layer_copy (CoglPipelineLayer *src) _cogl_pipeline_layer_set_parent (layer, src); - return _cogl_pipeline_layer_object_new (layer); + return layer; } /* XXX: This is duplicated logic; the same as for @@ -688,39 +714,16 @@ _cogl_pipeline_layer_equal (CoglPipelineLayer *layer0, return TRUE; } -static void -_cogl_pipeline_layer_free (CoglPipelineLayer *layer) -{ - _cogl_pipeline_node_unparent_real (COGL_NODE (layer)); - - if (layer->differences & COGL_PIPELINE_LAYER_STATE_TEXTURE_DATA && - layer->texture != NULL) - g_object_unref (layer->texture); - - if (layer->differences & COGL_PIPELINE_LAYER_STATE_VERTEX_SNIPPETS) - _cogl_pipeline_snippet_list_free (&layer->big_state->vertex_snippets); - - if (layer->differences & COGL_PIPELINE_LAYER_STATE_FRAGMENT_SNIPPETS) - _cogl_pipeline_snippet_list_free (&layer->big_state->fragment_snippets); - - if (layer->differences & COGL_PIPELINE_LAYER_STATE_NEEDS_BIG_STATE) - g_free (layer->big_state); - - g_free (layer); -} - void _cogl_pipeline_init_default_layers (void) { - CoglPipelineLayer *layer = g_new0 (CoglPipelineLayer, 1); + CoglPipelineLayer *layer = g_object_new (COGL_TYPE_PIPELINE_LAYER, NULL); CoglPipelineLayerBigState *big_state = g_new0 (CoglPipelineLayerBigState, 1); CoglPipelineLayer *new; _COGL_GET_CONTEXT (ctx, NO_RETVAL); - _cogl_pipeline_node_init (COGL_NODE (layer)); - layer->index = 0; layer->differences = COGL_PIPELINE_LAYER_STATE_ALL_SPARSE; @@ -762,7 +765,7 @@ _cogl_pipeline_init_default_layers (void) graphene_matrix_init_identity (&big_state->matrix); - ctx->default_layer_0 = _cogl_pipeline_layer_object_new (layer); + ctx->default_layer_0 = layer; /* TODO: we should make default_layer_n comprise of two * descendants of default_layer_0: diff --git a/cogl/cogl/cogl-pipeline-private.h b/cogl/cogl/cogl-pipeline-private.h index c7e17b901..f177f26a2 100644 --- a/cogl/cogl/cogl-pipeline-private.h +++ b/cogl/cogl/cogl-pipeline-private.h @@ -33,10 +33,10 @@ #pragma once +#include "cogl/cogl-debug.h" #include "cogl/cogl-node-private.h" #include "cogl/cogl-pipeline-layer-private.h" #include "cogl/cogl-pipeline.h" -#include "cogl/cogl-object-private.h" #include "cogl/cogl-profile.h" #include "cogl/cogl-list.h" #include "cogl/cogl-boxed-value.h" @@ -269,7 +269,7 @@ struct _CoglPipeline * the state relating to a given pipeline or layer may actually be * owned by one if is ancestors in the tree. We have a common data * type to track the tree hierarchy so we can share code... */ - CoglNode _parent; + CoglNode parent_instance; /* When weak pipelines are destroyed the user is notified via this * callback */ @@ -373,6 +373,11 @@ struct _CoglPipeline #endif }; +struct _CoglPipelineClass +{ + CoglNodeClass parent_class; +}; + typedef struct _CoglPipelineFragend { void (*start) (CoglPipeline *pipeline, @@ -488,9 +493,6 @@ _cogl_pipeline_get_layer_with_flags (CoglPipeline *pipeline, #define _cogl_pipeline_get_layer(p, l) \ _cogl_pipeline_get_layer_with_flags (p, l, 0) -gboolean -_cogl_is_pipeline_layer (void *object); - void _cogl_pipeline_prune_empty_layer_difference (CoglPipeline *layers_authority, CoglPipelineLayer *layer); @@ -623,7 +625,7 @@ _cogl_get_n_args_for_combine_func (CoglPipelineCombineFunc func); * This is the recommended coding pattern for validating an input * pipeline and caching a derived result: * |[ - * static CoglUserDataKey _cogl_my_cache_key; + * static GQuark _cogl_my_cache_key = 0; * * typedef struct { * CoglPipeline *validated_source; @@ -639,22 +641,24 @@ _cogl_get_n_args_for_combine_func (CoglPipelineCombineFunc func); * invalidate_cache_cb (CoglPipeline *destroyed, void *user_data) * { * MyValidatedMaterialCache *cache = user_data; - * cogl_object_unref (cache->validated_source); + * g_object_unref (cache->validated_source); * cache->validated_source = NULL; * } * * static CoglPipeline * * get_validated_pipeline (CoglPipeline *source) * { + * _cogl_my_cache_key = g_quark_from_static_string ("my-cache-key"); * MyValidatedMaterialCache *cache = - * cogl_object_get_user_data (COGL_OBJECT (source), - * &_cogl_my_cache_key); + * g_object_get_qdata (G_OBJECT (source), + * _cogl_my_cache_key); * if (G_UNLIKELY (cache == NULL)) * { * cache = g_new0 (MyValidatedMaterialCache, 1); - * cogl_object_set_user_data (COGL_OBJECT (source), - * &_cogl_my_cache_key, - * cache, destroy_cache_cb); + * + * g_object_set_qdata_full (G_OBJECT (source), + * _cogl_my_cache_key, + * cache, destroy_cache_cb); * cache->validated_source = source; * } * diff --git a/cogl/cogl/cogl-pipeline-state.c b/cogl/cogl/cogl-pipeline-state.c index 61b70be76..4bfc90eda 100644 --- a/cogl/cogl/cogl-pipeline-state.c +++ b/cogl/cogl/cogl-pipeline-state.c @@ -320,7 +320,7 @@ cogl_pipeline_get_color (CoglPipeline *pipeline, { CoglPipeline *authority; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, COGL_PIPELINE_STATE_COLOR); @@ -346,7 +346,7 @@ cogl_pipeline_set_color (CoglPipeline *pipeline, CoglPipelineState state = COGL_PIPELINE_STATE_COLOR; CoglPipeline *authority; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -400,7 +400,7 @@ _cogl_pipeline_set_alpha_test_function (CoglPipeline *pipeline, CoglPipeline *authority; CoglPipelineAlphaFuncState *alpha_state; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -430,7 +430,7 @@ _cogl_pipeline_set_alpha_test_function_reference (CoglPipeline *pipeline, CoglPipeline *authority; CoglPipelineAlphaFuncState *alpha_state; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -467,7 +467,7 @@ cogl_pipeline_get_alpha_test_function (CoglPipeline *pipeline) { CoglPipeline *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), 0); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), 0); authority = _cogl_pipeline_get_authority (pipeline, COGL_PIPELINE_STATE_ALPHA_FUNC); @@ -480,7 +480,7 @@ cogl_pipeline_get_alpha_test_reference (CoglPipeline *pipeline) { CoglPipeline *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), 0.0f); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), 0.0f); authority = _cogl_pipeline_get_authority (pipeline, @@ -593,7 +593,7 @@ cogl_pipeline_set_blend (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, FALSE); - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); count = _cogl_blend_string_compile (blend_description, @@ -670,7 +670,7 @@ cogl_pipeline_set_blend_constant (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, NO_RETVAL); - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -699,7 +699,7 @@ cogl_pipeline_get_user_program (CoglPipeline *pipeline) { CoglPipeline *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), NULL); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), NULL); authority = _cogl_pipeline_get_authority (pipeline, COGL_PIPELINE_STATE_USER_SHADER); @@ -720,7 +720,7 @@ cogl_pipeline_set_user_program (CoglPipeline *pipeline, CoglPipelineState state = COGL_PIPELINE_STATE_USER_SHADER; CoglPipeline *authority; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -777,7 +777,7 @@ cogl_pipeline_set_depth_state (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, FALSE); - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); g_return_val_if_fail (depth_state->magic == COGL_DEPTH_STATE_MAGIC, FALSE); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -811,7 +811,7 @@ cogl_pipeline_get_depth_state (CoglPipeline *pipeline, { CoglPipeline *authority; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, COGL_PIPELINE_STATE_DEPTH); @@ -826,7 +826,7 @@ cogl_pipeline_set_cull_face_mode (CoglPipeline *pipeline, CoglPipeline *authority; CoglPipelineCullFaceState *cull_face_state; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -856,7 +856,7 @@ cogl_pipeline_set_front_face_winding (CoglPipeline *pipeline, CoglPipeline *authority; CoglPipelineCullFaceState *cull_face_state; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -884,7 +884,7 @@ cogl_pipeline_get_cull_face_mode (CoglPipeline *pipeline) CoglPipelineState state = COGL_PIPELINE_STATE_CULL_FACE; CoglPipeline *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), COGL_PIPELINE_CULL_FACE_MODE_NONE); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -898,7 +898,7 @@ cogl_pipeline_get_front_face_winding (CoglPipeline *pipeline) CoglPipelineState state = COGL_PIPELINE_STATE_CULL_FACE; CoglPipeline *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), COGL_WINDING_CLOCKWISE); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -911,7 +911,7 @@ cogl_pipeline_get_point_size (CoglPipeline *pipeline) { CoglPipeline *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); authority = _cogl_pipeline_get_authority (pipeline, COGL_PIPELINE_STATE_POINT_SIZE); @@ -926,7 +926,7 @@ _cogl_pipeline_set_non_zero_point_size (CoglPipeline *pipeline, CoglPipelineState state = COGL_PIPELINE_STATE_NON_ZERO_POINT_SIZE; CoglPipeline *authority; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -950,7 +950,7 @@ cogl_pipeline_set_point_size (CoglPipeline *pipeline, CoglPipelineState state = COGL_PIPELINE_STATE_POINT_SIZE; CoglPipeline *authority; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -985,7 +985,7 @@ cogl_pipeline_set_per_vertex_point_size (CoglPipeline *pipeline, CoglPipeline *authority; _COGL_GET_CONTEXT (ctx, FALSE); - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); authority = _cogl_pipeline_get_authority (pipeline, state); @@ -1014,7 +1014,7 @@ cogl_pipeline_get_per_vertex_point_size (CoglPipeline *pipeline) { CoglPipeline *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); authority = _cogl_pipeline_get_authority (pipeline, @@ -1033,7 +1033,7 @@ _cogl_pipeline_override_uniform (CoglPipeline *pipeline, _COGL_GET_CONTEXT (ctx, NULL); - g_return_val_if_fail (cogl_is_pipeline (pipeline), NULL); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), NULL); g_return_val_if_fail (location >= 0, NULL); g_return_val_if_fail (location < ctx->n_uniform_names, NULL); @@ -1204,7 +1204,7 @@ void cogl_pipeline_add_snippet (CoglPipeline *pipeline, CoglSnippet *snippet) { - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); g_return_if_fail (COGL_IS_SNIPPET (snippet)); g_return_if_fail (snippet->hook < COGL_SNIPPET_FIRST_LAYER_HOOK); diff --git a/cogl/cogl/cogl-pipeline.c b/cogl/cogl/cogl-pipeline.c index 4358c23e9..b1bd21d57 100644 --- a/cogl/cogl/cogl-pipeline.c +++ b/cogl/cogl/cogl-pipeline.c @@ -35,8 +35,6 @@ #include "cogl/cogl-debug.h" #include "cogl/cogl-context-private.h" -#include "cogl/cogl-object.h" - #include "cogl/cogl-pipeline-private.h" #include "cogl/cogl-pipeline-state-private.h" #include "cogl/cogl-pipeline-layer-state-private.h" @@ -48,13 +46,11 @@ #include "cogl/cogl-profile.h" #include "cogl/cogl-depth-state-private.h" #include "cogl/cogl1-context.h" -#include "cogl/cogl-gtype-private.h" #include #include #include -static void _cogl_pipeline_free (CoglPipeline *tex); static void recursively_free_layer_caches (CoglPipeline *pipeline); static gboolean _cogl_pipeline_is_weak (CoglPipeline *pipeline); @@ -66,8 +62,113 @@ const CoglPipelineProgend *_cogl_pipeline_progend; #include "cogl/driver/gl/cogl-pipeline-vertend-glsl-private.h" #include "cogl/driver/gl/cogl-pipeline-progend-glsl-private.h" -COGL_OBJECT_DEFINE (Pipeline, pipeline); -COGL_GTYPE_DEFINE_CLASS (Pipeline, pipeline); +G_DEFINE_FINAL_TYPE (CoglPipeline, cogl_pipeline, COGL_TYPE_NODE) + +static void +_cogl_pipeline_revert_weak_ancestors (CoglPipeline *strong) +{ + CoglNode *n; + + g_return_if_fail (!strong->is_weak); + + /* This reverts the effect of calling + _cogl_pipeline_promote_weak_ancestors */ + + if (COGL_NODE (strong)->parent == NULL) + return; + + for (n = COGL_NODE (strong)->parent; + /* We can assume that all weak pipelines have a parent */ + COGL_PIPELINE (n)->is_weak; + n = n->parent) + /* 'n' is weak so we unref its parent */ + g_object_unref (n->parent); +} + +static gboolean +destroy_weak_children_cb (CoglNode *node, + void *user_data) +{ + CoglPipeline *pipeline = COGL_PIPELINE (node); + + if (_cogl_pipeline_is_weak (pipeline)) + { + _cogl_pipeline_node_foreach_child (COGL_NODE (pipeline), + destroy_weak_children_cb, + NULL); + + pipeline->destroy_callback (pipeline, pipeline->destroy_data); + _cogl_pipeline_node_unparent_real (COGL_NODE (pipeline)); + } + + return TRUE; +} + +static void +cogl_pipeline_dispose (GObject *object) +{ + CoglPipeline *pipeline = COGL_PIPELINE (object); + + if (!pipeline->is_weak) + _cogl_pipeline_revert_weak_ancestors (pipeline); + + /* Weak pipelines don't take a reference on their parent */ + _cogl_pipeline_node_foreach_child (COGL_NODE (pipeline), + destroy_weak_children_cb, + NULL); + + g_assert (_cogl_list_empty (&COGL_NODE (pipeline)->children)); + + _cogl_pipeline_node_unparent_real (COGL_NODE (pipeline)); + + if (pipeline->differences & COGL_PIPELINE_STATE_USER_SHADER && + pipeline->big_state->user_program) + g_object_unref (pipeline->big_state->user_program); + + if (pipeline->differences & COGL_PIPELINE_STATE_UNIFORMS) + { + CoglPipelineUniformsState *uniforms_state + = &pipeline->big_state->uniforms_state; + int n_overrides = _cogl_bitmask_popcount (&uniforms_state->override_mask); + int i; + + for (i = 0; i < n_overrides; i++) + _cogl_boxed_value_destroy (uniforms_state->override_values + i); + g_free (uniforms_state->override_values); + + _cogl_bitmask_destroy (&uniforms_state->override_mask); + _cogl_bitmask_destroy (&uniforms_state->changed_mask); + } + + if (pipeline->differences & COGL_PIPELINE_STATE_LAYERS) + g_list_free_full (pipeline->layer_differences, g_object_unref); + + if (pipeline->differences & COGL_PIPELINE_STATE_VERTEX_SNIPPETS) + _cogl_pipeline_snippet_list_free (&pipeline->big_state->vertex_snippets); + + if (pipeline->differences & COGL_PIPELINE_STATE_FRAGMENT_SNIPPETS) + _cogl_pipeline_snippet_list_free (&pipeline->big_state->fragment_snippets); + + if (pipeline->differences & COGL_PIPELINE_STATE_NEEDS_BIG_STATE) + g_free (pipeline->big_state); + + recursively_free_layer_caches (pipeline); + + G_OBJECT_CLASS (cogl_pipeline_parent_class)->dispose (object); +} + +static void +cogl_pipeline_class_init (CoglPipelineClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->dispose = cogl_pipeline_dispose; +} + +static void +cogl_pipeline_init (CoglPipeline *pipeline) +{ +} /* * This initializes the first pipeline owned by the Cogl context. All @@ -80,7 +181,7 @@ void _cogl_pipeline_init_default_pipeline (void) { /* Create new - blank - pipeline */ - CoglPipeline *pipeline = g_new0 (CoglPipeline, 1); + CoglPipeline *pipeline = g_object_new (COGL_TYPE_PIPELINE, NULL); /* XXX: NB: It's important that we zero this to avoid polluting * pipeline hash values with un-initialized data */ CoglPipelineBigState *big_state = g_new0 (CoglPipelineBigState, 1); @@ -96,8 +197,6 @@ _cogl_pipeline_init_default_pipeline (void) _cogl_pipeline_progend = &_cogl_pipeline_glsl_progend; _cogl_pipeline_vertend = &_cogl_pipeline_glsl_vertend; - _cogl_pipeline_node_init (COGL_NODE (pipeline)); - pipeline->is_weak = FALSE; pipeline->journal_ref_count = 0; pipeline->differences = COGL_PIPELINE_STATE_ALL_SPARSE; @@ -109,9 +208,10 @@ _cogl_pipeline_init_default_pipeline (void) pipeline->big_state = big_state; pipeline->has_big_state = TRUE; - +#ifdef COGL_DEBUG_ENABLED pipeline->static_breadcrumb = "default pipeline"; pipeline->has_static_breadcrumb = TRUE; +#endif pipeline->age = 0; @@ -145,7 +245,7 @@ _cogl_pipeline_init_default_pipeline (void) _cogl_bitmask_init (&uniforms_state->changed_mask); uniforms_state->override_values = NULL; - ctx->default_pipeline = _cogl_pipeline_object_new (pipeline); + ctx->default_pipeline = pipeline; } @@ -215,28 +315,7 @@ _cogl_pipeline_promote_weak_ancestors (CoglPipeline *strong) COGL_PIPELINE (n)->is_weak; n = n->parent) /* 'n' is weak so we take a reference on its parent */ - cogl_object_ref (n->parent); -} - -static void -_cogl_pipeline_revert_weak_ancestors (CoglPipeline *strong) -{ - CoglNode *n; - - g_return_if_fail (!strong->is_weak); - - /* This reverts the effect of calling - _cogl_pipeline_promote_weak_ancestors */ - - if (COGL_NODE (strong)->parent == NULL) - return; - - for (n = COGL_NODE (strong)->parent; - /* We can assume that all weak pipelines have a parent */ - COGL_PIPELINE (n)->is_weak; - n = n->parent) - /* 'n' is weak so we unref its parent */ - cogl_object_unref (n->parent); + g_object_ref (n->parent); } /* XXX: Always have an eye out for opportunities to lower the cost of @@ -244,9 +323,7 @@ _cogl_pipeline_revert_weak_ancestors (CoglPipeline *strong) static CoglPipeline * _cogl_pipeline_copy (CoglPipeline *src, gboolean is_weak) { - CoglPipeline *pipeline = g_new0 (CoglPipeline, 1); - - _cogl_pipeline_node_init (COGL_NODE (pipeline)); + CoglPipeline *pipeline = g_object_new (COGL_TYPE_PIPELINE, NULL); pipeline->is_weak = is_weak; @@ -271,7 +348,9 @@ _cogl_pipeline_copy (CoglPipeline *src, gboolean is_weak) pipeline->layers_cache_dirty = TRUE; +#ifdef COGL_DEBUG_ENABLED pipeline->has_static_breadcrumb = FALSE; +#endif pipeline->age = 0; @@ -283,7 +362,7 @@ _cogl_pipeline_copy (CoglPipeline *src, gboolean is_weak) if (!is_weak) _cogl_pipeline_promote_weak_ancestors (pipeline); - return _cogl_pipeline_object_new (pipeline); + return pipeline; } CoglPipeline * @@ -320,80 +399,10 @@ cogl_pipeline_new (CoglContext *context) return new; } -static gboolean -destroy_weak_children_cb (CoglNode *node, - void *user_data) -{ - CoglPipeline *pipeline = COGL_PIPELINE (node); - - if (_cogl_pipeline_is_weak (pipeline)) - { - _cogl_pipeline_node_foreach_child (COGL_NODE (pipeline), - destroy_weak_children_cb, - NULL); - - pipeline->destroy_callback (pipeline, pipeline->destroy_data); - _cogl_pipeline_node_unparent_real (COGL_NODE (pipeline)); - } - - return TRUE; -} - -static void -_cogl_pipeline_free (CoglPipeline *pipeline) -{ - if (!pipeline->is_weak) - _cogl_pipeline_revert_weak_ancestors (pipeline); - - /* Weak pipelines don't take a reference on their parent */ - _cogl_pipeline_node_foreach_child (COGL_NODE (pipeline), - destroy_weak_children_cb, - NULL); - - g_assert (_cogl_list_empty (&COGL_NODE (pipeline)->children)); - - _cogl_pipeline_node_unparent_real (COGL_NODE (pipeline)); - - if (pipeline->differences & COGL_PIPELINE_STATE_USER_SHADER && - pipeline->big_state->user_program) - g_object_unref (pipeline->big_state->user_program); - - if (pipeline->differences & COGL_PIPELINE_STATE_UNIFORMS) - { - CoglPipelineUniformsState *uniforms_state - = &pipeline->big_state->uniforms_state; - int n_overrides = _cogl_bitmask_popcount (&uniforms_state->override_mask); - int i; - - for (i = 0; i < n_overrides; i++) - _cogl_boxed_value_destroy (uniforms_state->override_values + i); - g_free (uniforms_state->override_values); - - _cogl_bitmask_destroy (&uniforms_state->override_mask); - _cogl_bitmask_destroy (&uniforms_state->changed_mask); - } - - if (pipeline->differences & COGL_PIPELINE_STATE_LAYERS) - g_list_free_full (pipeline->layer_differences, cogl_object_unref); - - if (pipeline->differences & COGL_PIPELINE_STATE_VERTEX_SNIPPETS) - _cogl_pipeline_snippet_list_free (&pipeline->big_state->vertex_snippets); - - if (pipeline->differences & COGL_PIPELINE_STATE_FRAGMENT_SNIPPETS) - _cogl_pipeline_snippet_list_free (&pipeline->big_state->fragment_snippets); - - if (pipeline->differences & COGL_PIPELINE_STATE_NEEDS_BIG_STATE) - g_free (pipeline->big_state); - - recursively_free_layer_caches (pipeline); - - g_free (pipeline); -} - gboolean _cogl_pipeline_get_real_blend_enabled (CoglPipeline *pipeline) { - g_return_val_if_fail (cogl_is_pipeline (pipeline), FALSE); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), FALSE); return pipeline->real_blend_enable; } @@ -805,7 +814,7 @@ _cogl_pipeline_copy_differences (CoglPipeline *dest, if (dest->differences & COGL_PIPELINE_STATE_LAYERS && dest->layer_differences) - g_list_free_full (dest->layer_differences, cogl_object_unref); + g_list_free_full (dest->layer_differences, g_object_unref); for (l = src->layer_differences; l; l = l->next) { @@ -815,7 +824,7 @@ _cogl_pipeline_copy_differences (CoglPipeline *dest, * originals instead. */ CoglPipelineLayer *copy = _cogl_pipeline_layer_copy (l->data); _cogl_pipeline_add_layer_difference (dest, copy, FALSE); - cogl_object_unref (copy); + g_object_unref (copy); } /* Note: we initialize n_layers after adding the layer differences @@ -1198,7 +1207,7 @@ _cogl_pipeline_pre_change_notify (CoglPipeline *pipeline, /* The children will keep the new authority alive so drop the * reference we got when copying... */ - cogl_object_unref (new_authority); + g_object_unref (new_authority); } /* At this point we know we have a pipeline with no strong @@ -1259,7 +1268,7 @@ _cogl_pipeline_add_layer_difference (CoglPipeline *pipeline, g_return_if_fail (layer->owner == NULL); layer->owner = pipeline; - cogl_object_ref (layer); + g_object_ref (layer); /* - Flush journal primitives referencing the current state. * - Make sure the pipeline has no dependants so it may be modified. @@ -1320,7 +1329,7 @@ _cogl_pipeline_remove_layer_difference (CoglPipeline *pipeline, if (layer->owner == pipeline) { layer->owner = NULL; - cogl_object_unref (layer); + g_object_unref (layer); pipeline->layer_differences = g_list_remove (pipeline->layer_differences, layer); @@ -1636,7 +1645,7 @@ _cogl_pipeline_get_layer_with_flags (CoglPipeline *pipeline, _cogl_pipeline_add_layer_difference (pipeline, layer, TRUE); - cogl_object_unref (layer); + g_object_unref (layer); return layer; } @@ -1662,10 +1671,10 @@ _cogl_pipeline_prune_empty_layer_difference (CoglPipeline *layers_authority, if (layer_parent->index == layer->index && layer_parent->owner == NULL && _cogl_pipeline_layer_get_parent (layer_parent) != NULL) { - cogl_object_ref (layer_parent); + g_object_ref (layer_parent); layer_parent->owner = layers_authority; link->data = layer_parent; - cogl_object_unref (layer); + g_object_unref (layer); recursively_free_layer_caches (layers_authority); return; } @@ -2224,7 +2233,7 @@ _cogl_pipeline_update_authority (CoglPipeline *pipeline, unsigned long _cogl_pipeline_get_age (CoglPipeline *pipeline) { - g_return_val_if_fail (cogl_is_pipeline (pipeline), 0); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), 0); return pipeline->age; } @@ -2236,7 +2245,7 @@ cogl_pipeline_remove_layer (CoglPipeline *pipeline, int layer_index) CoglPipelineLayerInfo layer_info; int i; - g_return_if_fail (cogl_is_pipeline (pipeline)); + g_return_if_fail (COGL_IS_PIPELINE (pipeline)); authority = _cogl_pipeline_get_authority (pipeline, COGL_PIPELINE_STATE_LAYERS); @@ -2286,7 +2295,7 @@ cogl_pipeline_get_n_layers (CoglPipeline *pipeline) { CoglPipeline *authority; - g_return_val_if_fail (cogl_is_pipeline (pipeline), 0); + g_return_val_if_fail (COGL_IS_PIPELINE (pipeline), 0); authority = _cogl_pipeline_get_authority (pipeline, COGL_PIPELINE_STATE_LAYERS); @@ -2309,14 +2318,14 @@ CoglPipeline * _cogl_pipeline_journal_ref (CoglPipeline *pipeline) { pipeline->journal_ref_count++; - return cogl_object_ref (pipeline); + return g_object_ref (pipeline); } void _cogl_pipeline_journal_unref (CoglPipeline *pipeline) { pipeline->journal_ref_count--; - cogl_object_unref (pipeline); + g_object_unref (pipeline); } #ifdef COGL_DEBUG_ENABLED diff --git a/cogl/cogl/cogl-pipeline.h b/cogl/cogl/cogl-pipeline.h index 3397bdd51..483f8e20a 100644 --- a/cogl/cogl/cogl-pipeline.h +++ b/cogl/cogl/cogl-pipeline.h @@ -48,9 +48,9 @@ typedef struct _CoglPipeline CoglPipeline; G_BEGIN_DECLS /** - * SECTION:cogl-pipeline - * @short_description: Functions for creating and manipulating the GPU - * pipeline + * CoglPipeline: + * + * Functions for creating and manipulating the GPU pipeline * * Cogl allows creating and manipulating objects representing the full * configuration of the GPU pipeline. In simplified terms the GPU @@ -60,16 +60,21 @@ G_BEGIN_DECLS * performs fragment processing including depth testing and texture * mapping. Finally it blends the result with the framebuffer. */ +#define COGL_TYPE_PIPELINE (cogl_pipeline_get_type ()) +#define COGL_PIPELINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_PIPELINE, CoglPipeline)) +#define COGL_PIPELINE_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COGL_TYPE_PIPELINE, CoglPipeline const)) +#define COGL_PIPELINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COGL_TYPE_PIPELINE, CoglPipelineClass)) +#define COGL_IS_PIPELINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COGL_TYPE_PIPELINE)) +#define COGL_IS_PIPELINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COGL_TYPE_PIPELINE)) +#define COGL_PIPELINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COGL_TYPE_PIPELINE, CoglPipelineClass)) -#define COGL_PIPELINE(OBJECT) ((CoglPipeline *)OBJECT) +typedef struct _CoglPipelineClass CoglPipelineClass; +typedef struct _CoglPipeline CoglPipeline; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (CoglPipeline, g_object_unref) -/** - * cogl_pipeline_get_gtype: - * - * Returns: a #GType that can be used with the GLib type system. - */ COGL_EXPORT -GType cogl_pipeline_get_gtype (void); +GType cogl_pipeline_get_type (void) G_GNUC_CONST; /** * cogl_pipeline_new: (constructor) @@ -101,18 +106,6 @@ cogl_pipeline_new (CoglContext *context); COGL_EXPORT CoglPipeline * cogl_pipeline_copy (CoglPipeline *source); -/** - * cogl_is_pipeline: - * @object: A #CoglObject - * - * Gets whether the given @object references an existing pipeline object. - * - * Return value: %TRUE if the @object references a #CoglPipeline, - * %FALSE otherwise - */ -COGL_EXPORT gboolean -cogl_is_pipeline (void *object); - /** * CoglPipelineLayerCallback: * @pipeline: The #CoglPipeline whose layers are being iterated diff --git a/cogl/cogl/cogl-primitives.c b/cogl/cogl/cogl-primitives.c index 3cdc86705..d7d658145 100644 --- a/cogl/cogl/cogl-primitives.c +++ b/cogl/cogl/cogl-primitives.c @@ -280,7 +280,7 @@ _cogl_texture_quad_multiple_primitives (CoglFramebuffer *framebuffer, &state); if (validate_first_layer_state.override_pipeline) - cogl_object_unref (validate_first_layer_state.override_pipeline); + g_object_unref (validate_first_layer_state.override_pipeline); } typedef struct _ValidateTexCoordsState @@ -364,7 +364,7 @@ validate_tex_coords_cb (CoglPipeline *pipeline, } if (state->override_pipeline) - cogl_object_unref (state->override_pipeline); + g_object_unref (state->override_pipeline); state->needs_multiple_primitives = TRUE; return FALSE; } @@ -467,7 +467,7 @@ _cogl_multitexture_quad_single_primitive (CoglFramebuffer *framebuffer, n_layers * 4); if (state.override_pipeline) - cogl_object_unref (state.override_pipeline); + g_object_unref (state.override_pipeline); return TRUE; } @@ -703,7 +703,7 @@ _cogl_framebuffer_draw_multitextured_rectangles ( } if (pipeline != original_pipeline) - cogl_object_unref (pipeline); + g_object_unref (pipeline); } void diff --git a/cogl/cogl/driver/gl/cogl-attribute-gl.c b/cogl/cogl/driver/gl/cogl-attribute-gl.c index 7784fd70e..dce33bbdc 100644 --- a/cogl/cogl/driver/gl/cogl-attribute-gl.c +++ b/cogl/cogl/driver/gl/cogl-attribute-gl.c @@ -231,7 +231,7 @@ _cogl_gl_flush_attributes_state (CoglFramebuffer *framebuffer, * memcmp (&overrides->options, &options, * sizeof (options) != 0) * { - * cogl_object_unref (overrides->weak_pipeline); + * g_object_unref (overrides->weak_pipeline); * g_free (overrides); * overrides = NULL; * } @@ -300,5 +300,5 @@ _cogl_gl_flush_attributes_state (CoglFramebuffer *framebuffer, apply_attribute_enable_updates (ctx, pipeline); if (copy) - cogl_object_unref (copy); + g_object_unref (copy); } diff --git a/cogl/cogl/driver/gl/cogl-pipeline-fragend-glsl.c b/cogl/cogl/driver/gl/cogl-pipeline-fragend-glsl.c index 4d46fb13b..9b530daba 100644 --- a/cogl/cogl/driver/gl/cogl-pipeline-fragend-glsl.c +++ b/cogl/cogl/driver/gl/cogl-pipeline-fragend-glsl.c @@ -101,7 +101,7 @@ typedef struct CoglPipelineCacheEntry *cache_entry; } CoglPipelineFragendShaderState; -static CoglUserDataKey shader_state_key; +static GQuark shader_state_key = 0; static void ensure_layer_generated (CoglPipeline *pipeline, @@ -120,23 +120,41 @@ shader_state_new (int n_layers, return shader_state; } +typedef struct +{ + CoglPipelineFragendShaderState *shader_state; + CoglPipeline *instance; +} CoglPipelineFragendShaderStateCache; + +static GQuark +get_cache_key (void) +{ + if (G_UNLIKELY (shader_state_key == 0)) + shader_state_key = g_quark_from_static_string ("shader-state-key"); + + return shader_state_key; +} static CoglPipelineFragendShaderState * get_shader_state (CoglPipeline *pipeline) { - return cogl_object_get_user_data (COGL_OBJECT (pipeline), &shader_state_key); + CoglPipelineFragendShaderStateCache *cache; + cache = g_object_get_qdata (G_OBJECT (pipeline), get_cache_key ()); + if (cache) + return cache->shader_state; + return NULL; } static void -destroy_shader_state (void *user_data, - void *instance) +destroy_shader_state (void *user_data) { - CoglPipelineFragendShaderState *shader_state = user_data; + CoglPipelineFragendShaderStateCache *cache = user_data; + CoglPipelineFragendShaderState *shader_state = cache->shader_state; _COGL_GET_CONTEXT (ctx, NO_RETVAL); if (shader_state->cache_entry && - shader_state->cache_entry->pipeline != instance) + shader_state->cache_entry->pipeline != cache->instance) shader_state->cache_entry->usage_count--; if (--shader_state->ref_count == 0) @@ -147,6 +165,7 @@ destroy_shader_state (void *user_data, g_free (shader_state->unit_state); g_free (shader_state); + g_free (cache); } } @@ -163,20 +182,23 @@ set_shader_state (CoglPipeline *pipeline, CoglPipelineFragendShaderState *shader shader_state->cache_entry->pipeline != pipeline) shader_state->cache_entry->usage_count++; } + CoglPipelineFragendShaderStateCache *cache = g_new0 (CoglPipelineFragendShaderStateCache, 1); + cache->instance = pipeline; + cache->shader_state = shader_state; - _cogl_object_set_user_data (COGL_OBJECT (pipeline), - &shader_state_key, - shader_state, - destroy_shader_state); + g_object_set_qdata_full (G_OBJECT (pipeline), + get_cache_key (), + cache, + destroy_shader_state); } static void dirty_shader_state (CoglPipeline *pipeline) { - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &shader_state_key, - NULL, - NULL); + g_object_set_qdata_full (G_OBJECT (pipeline), + get_cache_key (), + NULL, + NULL); } GLuint diff --git a/cogl/cogl/driver/gl/cogl-pipeline-opengl.c b/cogl/cogl/driver/gl/cogl-pipeline-opengl.c index 8c9406c50..0cf3acb21 100644 --- a/cogl/cogl/driver/gl/cogl-pipeline-opengl.c +++ b/cogl/cogl/driver/gl/cogl-pipeline-opengl.c @@ -84,7 +84,7 @@ static void texture_unit_free (CoglTextureUnit *unit) { if (unit->layer) - cogl_object_unref (unit->layer); + g_object_unref (unit->layer); g_object_unref (unit->matrix_stack); } @@ -563,9 +563,9 @@ flush_layers_common_gl_state_cb (CoglPipelineLayer *layer, void *user_data) GE( ctx, glBindSampler (unit_index, sampler_state->sampler_object) ); } - cogl_object_ref (layer); + g_object_ref (layer); if (unit->layer != NULL) - cogl_object_unref (unit->layer); + g_object_unref (unit->layer); unit->layer = layer; unit->layer_changes_since_flush = 0; @@ -1088,9 +1088,9 @@ _cogl_pipeline_flush_gl_state (CoglContext *ctx, * XXX: The issue should largely go away when we switch to using * weak pipelines for overrides. */ - cogl_object_ref (pipeline); + g_object_ref (pipeline); if (ctx->current_pipeline != NULL) - cogl_object_unref (ctx->current_pipeline); + g_object_unref (ctx->current_pipeline); ctx->current_pipeline = pipeline; ctx->current_pipeline_changes_since_flush = 0; ctx->current_pipeline_with_color_attrib = with_color_attrib; diff --git a/cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c b/cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c index 6616f14ef..573cf85f5 100644 --- a/cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c +++ b/cogl/cogl/driver/gl/cogl-pipeline-progend-glsl.c @@ -140,12 +140,31 @@ typedef struct CoglPipelineCacheEntry *cache_entry; } CoglPipelineProgramState; -static CoglUserDataKey program_state_key; +static GQuark program_state_key = 0; + +typedef struct +{ + CoglPipelineProgramState *program_state; + CoglPipeline *instance; +} CoglPipelineProgramStateCache; + +static GQuark +get_cache_key (void) +{ + if (G_UNLIKELY (program_state_key == 0)) + program_state_key = g_quark_from_static_string ("program-state-progend-key"); + + return program_state_key; +} static CoglPipelineProgramState * get_program_state (CoglPipeline *pipeline) { - return cogl_object_get_user_data (COGL_OBJECT (pipeline), &program_state_key); + CoglPipelineProgramStateCache *cache; + cache = g_object_get_qdata (G_OBJECT (pipeline), get_cache_key ()); + if (cache) + return cache->program_state; + return NULL; } #define UNIFORM_LOCATION_UNKNOWN -2 @@ -246,10 +265,10 @@ program_state_new (int n_layers, } static void -destroy_program_state (void *user_data, - void *instance) +destroy_program_state (void *user_data) { - CoglPipelineProgramState *program_state = user_data; + CoglPipelineProgramStateCache *cache = user_data; + CoglPipelineProgramState *program_state = cache->program_state; _COGL_GET_CONTEXT (ctx, NO_RETVAL); @@ -257,11 +276,11 @@ destroy_program_state (void *user_data, it so that if same address gets used again for a new pipeline then we won't think it's the same pipeline and avoid updating the uniforms */ - if (program_state->last_used_for_pipeline == instance) + if (program_state->last_used_for_pipeline == cache->instance) program_state->last_used_for_pipeline = NULL; if (program_state->cache_entry && - program_state->cache_entry->pipeline != instance) + program_state->cache_entry->pipeline != cache->instance) program_state->cache_entry->usage_count--; if (--program_state->ref_count == 0) @@ -280,6 +299,7 @@ destroy_program_state (void *user_data, g_array_free (program_state->uniform_locations, TRUE); g_free (program_state); + g_free (cache); } } @@ -298,19 +318,23 @@ set_program_state (CoglPipeline *pipeline, program_state->cache_entry->usage_count++; } - _cogl_object_set_user_data (COGL_OBJECT (pipeline), - &program_state_key, - program_state, - destroy_program_state); + CoglPipelineProgramStateCache *cache = g_new0 (CoglPipelineProgramStateCache, 1); + cache->instance = pipeline; + cache->program_state = program_state; + + g_object_set_qdata_full (G_OBJECT (pipeline), + get_cache_key (), + cache, + destroy_program_state); } static void dirty_program_state (CoglPipeline *pipeline) { - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &program_state_key, - NULL, - NULL); + g_object_set_qdata_full (G_OBJECT (pipeline), + get_cache_key (), + NULL, + NULL); } static void @@ -660,7 +684,7 @@ _cogl_shader_compile_real (CoglShader *shader, if (shader->compilation_pipeline) { - cogl_object_unref (shader->compilation_pipeline); + g_object_unref (shader->compilation_pipeline); shader->compilation_pipeline = NULL; } } @@ -690,7 +714,7 @@ _cogl_shader_compile_real (CoglShader *shader, NULL); GE (ctx, glCompileShader (shader->gl_handle)); - shader->compilation_pipeline = cogl_object_ref (pipeline); + shader->compilation_pipeline = g_object_ref (pipeline); GE (ctx, glGetShaderiv (shader->gl_handle, GL_COMPILE_STATUS, &status)); if (!status) diff --git a/cogl/cogl/driver/gl/cogl-pipeline-vertend-glsl.c b/cogl/cogl/driver/gl/cogl-pipeline-vertend-glsl.c index 052ba8dd4..bd91a3210 100644 --- a/cogl/cogl/driver/gl/cogl-pipeline-vertend-glsl.c +++ b/cogl/cogl/driver/gl/cogl-pipeline-vertend-glsl.c @@ -59,7 +59,7 @@ struct _CoglPipelineVertendShaderState CoglPipelineCacheEntry *cache_entry; }; -static CoglUserDataKey shader_state_key; +static GQuark shader_state_key = 0; static CoglPipelineVertendShaderState * shader_state_new (CoglPipelineCacheEntry *cache_entry) @@ -73,10 +73,29 @@ shader_state_new (CoglPipelineCacheEntry *cache_entry) return shader_state; } +typedef struct +{ + CoglPipelineVertendShaderState *shader_state; + CoglPipeline *instance; +} CoglPipelineVertendShaderStateCache; + +static GQuark +get_cache_key (void) +{ + if (G_UNLIKELY (shader_state_key == 0)) + shader_state_key = g_quark_from_static_string ("shader-vertend-state-key"); + + return shader_state_key; +} + static CoglPipelineVertendShaderState * get_shader_state (CoglPipeline *pipeline) { - return cogl_object_get_user_data (COGL_OBJECT (pipeline), &shader_state_key); + CoglPipelineVertendShaderStateCache * cache; + cache = g_object_get_qdata (G_OBJECT (pipeline), get_cache_key ()); + if (cache) + return cache->shader_state; + return NULL; } CoglPipelineVertendShaderState * @@ -86,15 +105,15 @@ cogl_pipeline_vertend_glsl_get_shader_state (CoglPipeline *pipeline) } static void -destroy_shader_state (void *user_data, - void *instance) +destroy_shader_state (void *user_data) { - CoglPipelineVertendShaderState *shader_state = user_data; + CoglPipelineVertendShaderStateCache *cache = user_data; + CoglPipelineVertendShaderState *shader_state = cache->shader_state; _COGL_GET_CONTEXT (ctx, NO_RETVAL); if (shader_state->cache_entry && - shader_state->cache_entry->pipeline != instance) + shader_state->cache_entry->pipeline != cache->instance) shader_state->cache_entry->usage_count--; if (--shader_state->ref_count == 0) @@ -103,6 +122,7 @@ destroy_shader_state (void *user_data, GE( ctx, glDeleteShader (shader_state->gl_shader) ); g_free (shader_state); + g_free (cache); } } @@ -121,19 +141,22 @@ set_shader_state (CoglPipeline *pipeline, shader_state->cache_entry->usage_count++; } - _cogl_object_set_user_data (COGL_OBJECT (pipeline), - &shader_state_key, - shader_state, - destroy_shader_state); + CoglPipelineVertendShaderStateCache *cache = g_new0 (CoglPipelineVertendShaderStateCache, 1); + cache->instance = pipeline; + cache->shader_state = shader_state; + g_object_set_qdata_full (G_OBJECT (pipeline), + get_cache_key (), + cache, + destroy_shader_state); } static void dirty_shader_state (CoglPipeline *pipeline) { - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &shader_state_key, - NULL, - NULL); + g_object_set_qdata_full (G_OBJECT (pipeline), + get_cache_key (), + NULL, + NULL); } static gboolean diff --git a/src/backends/meta-screen-cast-stream-src.c b/src/backends/meta-screen-cast-stream-src.c index 7d1c2beb3..581c66e26 100644 --- a/src/backends/meta-screen-cast-stream-src.c +++ b/src/backends/meta-screen-cast-stream-src.c @@ -353,7 +353,7 @@ draw_cursor_sprite_via_offscreen (MetaScreenCastStreamSrc *src, cogl_framebuffer_clear (fb, COGL_BUFFER_BIT_COLOR, &clear_color); cogl_framebuffer_draw_rectangle (fb, pipeline, -1, 1, 1, -1); - cogl_object_unref (pipeline); + g_object_unref (pipeline); cogl_framebuffer_read_pixels (fb, 0, 0, diff --git a/src/backends/meta-screen-cast-window-stream-src.c b/src/backends/meta-screen-cast-window-stream-src.c index 5cdbcd2b2..16a0c5aa1 100644 --- a/src/backends/meta-screen-cast-window-stream-src.c +++ b/src/backends/meta-screen-cast-window-stream-src.c @@ -255,7 +255,7 @@ maybe_blit_cursor_sprite (MetaScreenCastWindowStreamSrc *window_src, x, y, x + width, y + height); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static gboolean diff --git a/src/backends/meta-stage.c b/src/backends/meta-stage.c index 90ef10ae5..172a6186f 100644 --- a/src/backends/meta-stage.c +++ b/src/backends/meta-stage.c @@ -87,7 +87,7 @@ static void meta_overlay_free (MetaOverlay *overlay) { if (overlay->pipeline) - cogl_object_unref (overlay->pipeline); + g_object_unref (overlay->pipeline); g_free (overlay); } diff --git a/src/backends/x11/nested/meta-stage-x11-nested.c b/src/backends/x11/nested/meta-stage-x11-nested.c index 485a99525..41b78ec18 100644 --- a/src/backends/x11/nested/meta-stage-x11-nested.c +++ b/src/backends/x11/nested/meta-stage-x11-nested.c @@ -197,7 +197,7 @@ meta_stage_x11_nested_unrealize (ClutterStageWindow *stage_window) { MetaStageX11Nested *stage_nested = META_STAGE_X11_NESTED (stage_window); - g_clear_pointer (&stage_nested->pipeline, cogl_object_unref); + g_clear_object (&stage_nested->pipeline); clutter_stage_window_parent_iface->unrealize (stage_window); } diff --git a/src/compositor/meta-background-content.c b/src/compositor/meta-background-content.c index 4d6cdb51e..f367c5da1 100644 --- a/src/compositor/meta-background-content.c +++ b/src/compositor/meta-background-content.c @@ -410,7 +410,7 @@ setup_pipeline (MetaBackgroundContent *self, pipeline_flags |= PIPELINE_ROUNDED_CLIP | PIPELINE_BLEND; if (pipeline_flags != self->pipeline_flags) - g_clear_pointer (&self->pipeline, cogl_object_unref); + g_clear_object (&self->pipeline); if (self->pipeline == NULL) { @@ -830,7 +830,7 @@ meta_background_content_dispose (GObject *object) set_unobscured_region (self, NULL); meta_background_content_set_background (self, NULL); - g_clear_pointer (&self->pipeline, cogl_object_unref); + g_clear_object (&self->pipeline); G_OBJECT_CLASS (meta_background_content_parent_class)->dispose (object); } diff --git a/src/compositor/meta-background.c b/src/compositor/meta-background.c index 286643b3c..7d56cf6c6 100644 --- a/src/compositor/meta-background.c +++ b/src/compositor/meta-background.c @@ -694,7 +694,7 @@ ensure_wallpaper_texture (MetaBackground *self, cogl_pipeline_set_layer_texture (pipeline, 0, texture); cogl_framebuffer_draw_textured_rectangle (fbo, pipeline, 0, 0, width, height, 0., 0., 1., 1.); - cogl_object_unref (pipeline); + g_object_unref (pipeline); if (texture_has_alpha (texture)) { @@ -703,7 +703,7 @@ ensure_wallpaper_texture (MetaBackground *self, pipeline = create_pipeline (PIPELINE_OVER_REVERSE); cogl_pipeline_set_layer_texture (pipeline, 0, self->color_texture); cogl_framebuffer_draw_rectangle (fbo, pipeline, 0, 0, width, height); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } g_object_unref (fbo); @@ -873,7 +873,7 @@ meta_background_get_texture (MetaBackground *self, texture2, &monitor_area, monitor_scale); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } else { @@ -905,7 +905,7 @@ meta_background_get_texture (MetaBackground *self, texture1, &monitor_area, monitor_scale); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } if (bare_region_visible) @@ -918,7 +918,7 @@ meta_background_get_texture (MetaBackground *self, pipeline, 0, 0, monitor_area.width, monitor_area.height); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } monitor->dirty = FALSE; diff --git a/src/compositor/meta-shadow-factory.c b/src/compositor/meta-shadow-factory.c index dff93032c..738f938c6 100644 --- a/src/compositor/meta-shadow-factory.c +++ b/src/compositor/meta-shadow-factory.c @@ -168,7 +168,7 @@ meta_shadow_unref (MetaShadow *shadow) meta_window_shape_unref (shadow->key.shape); g_object_unref (shadow->texture); - cogl_object_unref (shadow->pipeline); + g_object_unref (shadow->pipeline); g_free (shadow); } diff --git a/src/compositor/meta-shaped-texture.c b/src/compositor/meta-shaped-texture.c index c83b48c58..bf018ee48 100644 --- a/src/compositor/meta-shaped-texture.c +++ b/src/compositor/meta-shaped-texture.c @@ -226,14 +226,14 @@ meta_shaped_texture_set_clip_region (MetaShapedTexture *stex, static void meta_shaped_texture_reset_pipelines (MetaShapedTexture *stex) { - g_clear_pointer (&stex->base_pipeline, cogl_object_unref); - g_clear_pointer (&stex->combined_pipeline, cogl_object_unref); - g_clear_pointer (&stex->unmasked_pipeline, cogl_object_unref); - g_clear_pointer (&stex->unmasked_tower_pipeline, cogl_object_unref); - g_clear_pointer (&stex->masked_pipeline, cogl_object_unref); - g_clear_pointer (&stex->masked_tower_pipeline, cogl_object_unref); - g_clear_pointer (&stex->unblended_pipeline, cogl_object_unref); - g_clear_pointer (&stex->unblended_tower_pipeline, cogl_object_unref); + g_clear_object (&stex->base_pipeline); + g_clear_object (&stex->combined_pipeline); + g_clear_object (&stex->unmasked_pipeline); + g_clear_object (&stex->unmasked_tower_pipeline); + g_clear_object (&stex->masked_pipeline); + g_clear_object (&stex->masked_tower_pipeline); + g_clear_object (&stex->unblended_pipeline); + g_clear_object (&stex->unblended_tower_pipeline); } static void diff --git a/src/compositor/meta-texture-mipmap.c b/src/compositor/meta-texture-mipmap.c index b7558a328..63802aff6 100644 --- a/src/compositor/meta-texture-mipmap.c +++ b/src/compositor/meta-texture-mipmap.c @@ -68,7 +68,7 @@ meta_texture_mipmap_free (MetaTextureMipmap *mipmap) { g_return_if_fail (mipmap != NULL); - cogl_clear_object (&mipmap->pipeline); + g_clear_object (&mipmap->pipeline); g_clear_object (&mipmap->base_texture); g_clear_object (&mipmap->mipmap_texture); g_clear_object (&mipmap->fb); diff --git a/src/tests/clutter/conform/actor-offscreen-redirect.c b/src/tests/clutter/conform/actor-offscreen-redirect.c index d7088beda..f42d00486 100644 --- a/src/tests/clutter/conform/actor-offscreen-redirect.c +++ b/src/tests/clutter/conform/actor-offscreen-redirect.c @@ -65,7 +65,7 @@ foo_actor_paint (ClutterActor *actor, allocation.y1, allocation.x2, allocation.y2); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static gboolean diff --git a/src/tests/clutter/conform/binding-pool.c b/src/tests/clutter/conform/binding-pool.c index 9c355d0c5..77853c5bc 100644 --- a/src/tests/clutter/conform/binding-pool.c +++ b/src/tests/clutter/conform/binding-pool.c @@ -171,7 +171,7 @@ key_group_paint (ClutterActor *actor, clutter_actor_paint (child, paint_context); } - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static void diff --git a/src/tests/clutter/interactive/test-cogl-multitexture.c b/src/tests/clutter/interactive/test-cogl-multitexture.c index c8f55298f..e9de2d2e7 100644 --- a/src/tests/clutter/interactive/test-cogl-multitexture.c +++ b/src/tests/clutter/interactive/test-cogl-multitexture.c @@ -222,8 +222,8 @@ test_cogl_multitexture_main (int argc, char *argv[]) clutter_test_main (); - cogl_object_unref (state->pipeline1); - cogl_object_unref (state->pipeline0); + g_object_unref (state->pipeline1); + g_object_unref (state->pipeline0); g_object_unref (state->alpha_tex); g_object_unref (state->redhand_tex); g_object_unref (state->light_tex0); diff --git a/src/tests/clutter/interactive/test-cogl-offscreen.c b/src/tests/clutter/interactive/test-cogl-offscreen.c index ffc8f43cd..a0a38bc59 100644 --- a/src/tests/clutter/interactive/test-cogl-offscreen.c +++ b/src/tests/clutter/interactive/test-cogl-offscreen.c @@ -53,7 +53,7 @@ test_coglbox_paint (ClutterActor *self, pipeline = cogl_pipeline_new (ctx); cogl_pipeline_set_color4ub (pipeline, 0x66, 0x66, 0xdd, 0xff); cogl_framebuffer_draw_rectangle (framebuffer, pipeline, 0, 0, 400, 400); - cogl_object_unref (pipeline); + g_object_unref (pipeline); pipeline = cogl_pipeline_new (ctx); cogl_pipeline_set_layer_texture (pipeline, 0, coglbox->texhand_id); @@ -62,7 +62,7 @@ test_coglbox_paint (ClutterActor *self, 400, 400, 0, 0, 6, 6); - cogl_object_unref (pipeline); + g_object_unref (pipeline); pipeline = cogl_pipeline_new (ctx); cogl_pipeline_set_color4ub (pipeline, 0xff, 0, 0, 0xff); @@ -72,7 +72,7 @@ test_coglbox_paint (ClutterActor *self, cogl_pipeline_set_color4ub (pipeline, 0, 0xff, 0, 0xff); cogl_framebuffer_draw_rectangle (coglbox->framebuffer, pipeline, 80, 80, 80 + 100, 80 + 100); - cogl_object_unref (pipeline); + g_object_unref (pipeline); pipeline = cogl_pipeline_new (ctx); cogl_pipeline_set_color4ub (pipeline, 0x88, 0x88, 0x88, 0x88); @@ -84,7 +84,7 @@ test_coglbox_paint (ClutterActor *self, texcoords[1], texcoords[2], texcoords[3]); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static void diff --git a/src/tests/clutter/interactive/test-cogl-point-sprites.c b/src/tests/clutter/interactive/test-cogl-point-sprites.c index 82e783018..963f5eeaf 100644 --- a/src/tests/clutter/interactive/test-cogl-point-sprites.c +++ b/src/tests/clutter/interactive/test-cogl-point-sprites.c @@ -272,7 +272,7 @@ test_cogl_point_sprites_main (int argc, char *argv[]) clutter_test_main (); - cogl_object_unref (data.pipeline); + g_object_unref (data.pipeline); g_timer_destroy (data.last_spark_time); for (i = 0; i < N_FIREWORKS; i++) diff --git a/src/tests/clutter/interactive/test-cogl-tex-polygon.c b/src/tests/clutter/interactive/test-cogl-tex-polygon.c index 04a835197..46bf3b956 100644 --- a/src/tests/clutter/interactive/test-cogl-tex-polygon.c +++ b/src/tests/clutter/interactive/test-cogl-tex-polygon.c @@ -211,7 +211,7 @@ test_coglbox_paint (ClutterActor *self, cogl_framebuffer_pop_matrix (framebuffer); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static void diff --git a/src/tests/clutter/interactive/test-cogl-tex-tile.c b/src/tests/clutter/interactive/test-cogl-tex-tile.c index 5dee46367..b46c28947 100644 --- a/src/tests/clutter/interactive/test-cogl-tex-tile.c +++ b/src/tests/clutter/interactive/test-cogl-tex-tile.c @@ -73,7 +73,7 @@ test_coglbox_paint (ClutterActor *self, pipeline = cogl_pipeline_new (ctx); cogl_pipeline_set_color4ub (pipeline, 0x66, 0x66, 0xdd, 0xff); cogl_framebuffer_draw_rectangle (framebuffer, pipeline, 0, 0, 400, 400); - cogl_object_unref (pipeline); + g_object_unref (pipeline); cogl_framebuffer_translate (framebuffer, 100, 100, 0); @@ -83,7 +83,7 @@ test_coglbox_paint (ClutterActor *self, 0, 0, 200, 213, texcoords[0], texcoords[1], texcoords[2], texcoords[3]); - cogl_object_unref (pipeline); + g_object_unref (pipeline); cogl_framebuffer_pop_matrix (framebuffer); } diff --git a/src/tests/cogl/conform/test-alpha-test.c b/src/tests/cogl/conform/test-alpha-test.c index aa611682d..0f820739e 100644 --- a/src/tests/cogl/conform/test-alpha-test.c +++ b/src/tests/cogl/conform/test-alpha-test.c @@ -47,7 +47,7 @@ test_alpha_test (void) -1, -1, 1, 1); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (tex); /* The left side of the framebuffer should use the first pixel from diff --git a/src/tests/cogl/conform/test-alpha-textures.c b/src/tests/cogl/conform/test-alpha-textures.c index 52a71c78a..7b98906d2 100644 --- a/src/tests/cogl/conform/test-alpha-textures.c +++ b/src/tests/cogl/conform/test-alpha-textures.c @@ -78,8 +78,8 @@ test_alpha_textures (void) g_object_unref (tex1); g_object_unref (tex2); - cogl_object_unref (pipeline1); - cogl_object_unref (pipeline2); + g_object_unref (pipeline1); + g_object_unref (pipeline2); /* Unmodified texture */ test_utils_check_pixel (test_fb, diff --git a/src/tests/cogl/conform/test-backface-culling.c b/src/tests/cogl/conform/test-backface-culling.c index 784a7ff95..0d829004d 100644 --- a/src/tests/cogl/conform/test-backface-culling.c +++ b/src/tests/cogl/conform/test-backface-culling.c @@ -158,10 +158,10 @@ paint_test_backface_culling (TestState *state, cogl_framebuffer_pop_matrix (framebuffer); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } - cogl_object_unref (base_pipeline); + g_object_unref (base_pipeline); } static void @@ -248,7 +248,7 @@ paint (TestState *state) 0, TEXTURE_RENDER_SIZE * 8, state->width, state->height + TEXTURE_RENDER_SIZE * 8); - cogl_object_unref (pipeline); + g_object_unref (pipeline); validate_result (test_fb, 0); validate_result (test_fb, 8); diff --git a/src/tests/cogl/conform/test-blend-strings.c b/src/tests/cogl/conform/test-blend-strings.c index eaff48b96..ddc49a454 100644 --- a/src/tests/cogl/conform/test-blend-strings.c +++ b/src/tests/cogl/conform/test-blend-strings.c @@ -68,7 +68,7 @@ test_blend_paint (TestState *state, y * QUAD_WIDTH, x * QUAD_WIDTH + QUAD_WIDTH, y * QUAD_WIDTH + QUAD_WIDTH); - cogl_object_unref (pipeline); + g_object_unref (pipeline); /* * Now blend a rectangle over our well defined destination: @@ -100,7 +100,7 @@ test_blend_paint (TestState *state, y * QUAD_WIDTH, x * QUAD_WIDTH + QUAD_WIDTH, y * QUAD_WIDTH + QUAD_WIDTH); - cogl_object_unref (pipeline); + g_object_unref (pipeline); /* See what we got... */ @@ -216,7 +216,7 @@ test_tex_combine (TestState *state, x * QUAD_WIDTH + QUAD_WIDTH, y * QUAD_WIDTH + QUAD_WIDTH); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (tex0); g_object_unref (tex1); diff --git a/src/tests/cogl/conform/test-copy-replace-texture.c b/src/tests/cogl/conform/test-copy-replace-texture.c index 3e3120084..e61624d1f 100644 --- a/src/tests/cogl/conform/test-copy-replace-texture.c +++ b/src/tests/cogl/conform/test-copy-replace-texture.c @@ -83,7 +83,7 @@ test_copy_replace_texture (void) /* Unref everything but the last pipeline */ for (pipeline_num = 0; pipeline_num < N_PIPELINES - 1; pipeline_num++) - cogl_object_unref (pipelines[pipeline_num]); + g_object_unref (pipelines[pipeline_num]); if (alive_texture_mask && cogl_test_verbose ()) { @@ -110,7 +110,7 @@ test_copy_replace_texture (void) LAST_PIPELINE_MASK); /* Clean up the last pipeline */ - cogl_object_unref (pipelines[N_PIPELINES - 1]); + g_object_unref (pipelines[N_PIPELINES - 1]); /* That should get rid of the last of the textures */ g_assert_cmpint (alive_texture_mask, ==, 0); diff --git a/src/tests/cogl/conform/test-custom-attributes.c b/src/tests/cogl/conform/test-custom-attributes.c index 5094f84f6..32e230d69 100644 --- a/src/tests/cogl/conform/test-custom-attributes.c +++ b/src/tests/cogl/conform/test-custom-attributes.c @@ -254,8 +254,8 @@ test_short_verts (TestState *state, int offset_x, int offset_y) g_object_unref (attributes[0]); - cogl_object_unref (pipeline2); - cogl_object_unref (pipeline); + g_object_unref (pipeline2); + g_object_unref (pipeline); g_object_unref (buffer); test_utils_check_pixel (test_fb, offset_x + 5, offset_y + 5, 0xff0000ff); @@ -293,7 +293,7 @@ test_custom_attributes (void) paint (&state); - cogl_object_unref (state.pipeline); + g_object_unref (state.pipeline); g_object_unref (snippet); if (cogl_test_verbose ()) diff --git a/src/tests/cogl/conform/test-depth-test.c b/src/tests/cogl/conform/test-depth-test.c index cc412d6fb..de04d1ee7 100644 --- a/src/tests/cogl/conform/test-depth-test.c +++ b/src/tests/cogl/conform/test-depth-test.c @@ -58,7 +58,7 @@ draw_rectangle (TestState *state, pipeline = cogl_pipeline_new (test_ctx); if (!cogl_pipeline_set_depth_state (pipeline, &depth_state, NULL)) { - cogl_object_unref (pipeline); + g_object_unref (pipeline); return FALSE; } @@ -95,10 +95,10 @@ draw_rectangle (TestState *state, y * QUAD_WIDTH + QUAD_WIDTH); cogl_framebuffer_pop_matrix (test_fb); - cogl_object_unref (legacy_pipeline); + g_object_unref (legacy_pipeline); } - cogl_object_unref (pipeline); + g_object_unref (pipeline); return TRUE; } diff --git a/src/tests/cogl/conform/test-journal.c b/src/tests/cogl/conform/test-journal.c index f0d2c9c1a..aa3c15224 100644 --- a/src/tests/cogl/conform/test-journal.c +++ b/src/tests/cogl/conform/test-journal.c @@ -30,7 +30,7 @@ test_journal_unref_flush (void) cogl_framebuffer_draw_rectangle (COGL_FRAMEBUFFER (offscreen), pipeline, -1, -1, 1, 1); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (offscreen); g_assert_null (offscreen); diff --git a/src/tests/cogl/conform/test-just-vertex-shader.c b/src/tests/cogl/conform/test-just-vertex-shader.c index d2f346096..5841b728b 100644 --- a/src/tests/cogl/conform/test-just-vertex-shader.c +++ b/src/tests/cogl/conform/test-just-vertex-shader.c @@ -86,7 +86,7 @@ paint (TestState *state) 50, 0, 100, 50); cogl_pipeline_set_user_program (pipeline, NULL); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static void diff --git a/src/tests/cogl/conform/test-layer-remove.c b/src/tests/cogl/conform/test-layer-remove.c index bfc201c7f..2adae55f7 100644 --- a/src/tests/cogl/conform/test-layer-remove.c +++ b/src/tests/cogl/conform/test-layer-remove.c @@ -68,21 +68,21 @@ test_layer_remove (void) * together properly */ pipeline0 = create_two_layer_pipeline (); test_color (pipeline0, 0xffff00ff, pos++); - cogl_object_unref (pipeline0); + g_object_unref (pipeline0); /** TEST 2 **/ /* Check that we can remove the second layer */ pipeline0 = create_two_layer_pipeline (); cogl_pipeline_remove_layer (pipeline0, 1); test_color (pipeline0, 0xff0000ff, pos++); - cogl_object_unref (pipeline0); + g_object_unref (pipeline0); /** TEST 3 **/ /* Check that we can remove the first layer */ pipeline0 = create_two_layer_pipeline (); cogl_pipeline_remove_layer (pipeline0, 0); test_color (pipeline0, 0x00ff00ff, pos++); - cogl_object_unref (pipeline0); + g_object_unref (pipeline0); /** TEST 4 **/ /* Check that we can make a copy and remove a layer from the @@ -92,8 +92,8 @@ test_layer_remove (void) cogl_pipeline_remove_layer (pipeline0, 1); test_color (pipeline0, 0xff0000ff, pos++); test_color (pipeline1, 0xffff00ff, pos++); - cogl_object_unref (pipeline0); - cogl_object_unref (pipeline1); + g_object_unref (pipeline0); + g_object_unref (pipeline1); /** TEST 5 **/ /* Check that we can make a copy and remove the second layer from the @@ -103,8 +103,8 @@ test_layer_remove (void) cogl_pipeline_remove_layer (pipeline1, 1); test_color (pipeline0, 0xffff00ff, pos++); test_color (pipeline1, 0xff0000ff, pos++); - cogl_object_unref (pipeline0); - cogl_object_unref (pipeline1); + g_object_unref (pipeline0); + g_object_unref (pipeline1); /** TEST 6 **/ /* Check that we can make a copy and remove the first layer from the @@ -114,8 +114,8 @@ test_layer_remove (void) cogl_pipeline_remove_layer (pipeline1, 0); test_color (pipeline0, 0xffff00ff, pos++); test_color (pipeline1, 0x00ff00ff, pos++); - cogl_object_unref (pipeline0); - cogl_object_unref (pipeline1); + g_object_unref (pipeline0); + g_object_unref (pipeline1); /** TEST 7 **/ /* Check that we can modify a layer in a child pipeline */ @@ -125,8 +125,8 @@ test_layer_remove (void) cogl_pipeline_set_layer_combine_constant (pipeline1, 0, &color); test_color (pipeline0, 0xffff00ff, pos++); test_color (pipeline1, 0x00ffffff, pos++); - cogl_object_unref (pipeline0); - cogl_object_unref (pipeline1); + g_object_unref (pipeline0); + g_object_unref (pipeline1); /** TEST 8 **/ /* Check that we can modify a layer in a child pipeline but then remove it */ @@ -137,8 +137,8 @@ test_layer_remove (void) cogl_pipeline_remove_layer (pipeline1, 0); test_color (pipeline0, 0xffff00ff, pos++); test_color (pipeline1, 0x00ff00ff, pos++); - cogl_object_unref (pipeline0); - cogl_object_unref (pipeline1); + g_object_unref (pipeline0); + g_object_unref (pipeline1); if (cogl_test_verbose ()) g_print ("OK\n"); diff --git a/src/tests/cogl/conform/test-map-buffer-range.c b/src/tests/cogl/conform/test-map-buffer-range.c index 83db9bc47..df8c6d733 100644 --- a/src/tests/cogl/conform/test-map-buffer-range.c +++ b/src/tests/cogl/conform/test-map-buffer-range.c @@ -121,7 +121,7 @@ test_map_buffer_range (void) g_object_unref (pos_attribute); g_object_unref (tex_coord_attribute); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (tex); if (cogl_test_verbose ()) diff --git a/src/tests/cogl/conform/test-multitexture.c b/src/tests/cogl/conform/test-multitexture.c index 02ef3bf80..571820942 100644 --- a/src/tests/cogl/conform/test-multitexture.c +++ b/src/tests/cogl/conform/test-multitexture.c @@ -151,7 +151,7 @@ on_paint (ClutterActor *actor, cogl_rectangle_with_multitexture_coords (0, 0, QUAD_WIDTH, QUAD_WIDTH, tex_coords, 8); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (tex0); g_object_unref (tex1); diff --git a/src/tests/cogl/conform/test-npot-texture.c b/src/tests/cogl/conform/test-npot-texture.c index 1184d179d..991bf7fb2 100644 --- a/src/tests/cogl/conform/test-npot-texture.c +++ b/src/tests/cogl/conform/test-npot-texture.c @@ -137,7 +137,7 @@ paint (void) (x + 1) / 2.0f, (y + 1) / 2.0f); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (texture); } diff --git a/src/tests/cogl/conform/test-object.c b/src/tests/cogl/conform/test-object.c index 01e1788b8..dbe5c6b9f 100644 --- a/src/tests/cogl/conform/test-object.c +++ b/src/tests/cogl/conform/test-object.c @@ -5,9 +5,9 @@ #include "test-conform-common.h" -CoglUserDataKey private_key0; -CoglUserDataKey private_key1; -CoglUserDataKey private_key2; +static GQuark private_key0 = 0; +static GQuark private_key1 = 0; +static GQuark private_key2 = 0; static int user_data0; static int user_data1; @@ -49,32 +49,36 @@ test_object (TestUtilsGTestFixture *fixture, cogl_pipeline_new (); pipeline = cogl_pipeline_path (); - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &private_key0, - &user_data0, - destroy0_cb); + private_key0 = g_quark_from_static_string ("test-object-private_key0"); + private_key1 = g_quark_from_static_string ("test-object-private_key1"); + private_key2 = g_quark_from_static_string ("test-object-private_key2"); - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &private_key1, - &user_data1, - destroy1_cb); + g_object_set_qdata_full (G_OBJECT (pipeline), + private_key0, + &user_data0, + destroy0_cb); - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &private_key2, - &user_data2, - destroy2_cb); + g_object_set_qdata_full (G_OBJECT (pipeline), + private_key1, + &user_data1, + destroy1_cb); - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &private_key1, - NULL, - destroy1_cb); + g_object_set_qdata_full (G_OBJECT (pipeline), + private_key2, + &user_data2, + destroy2_cb); - cogl_object_set_user_data (COGL_OBJECT (pipeline), - &private_key1, - &user_data1, - destroy1_cb); + g_object_set_qdata_full (G_OBJECT (pipeline), + private_key1, + NULL, + destroy1_cb); - cogl_object_unref (pipeline); + g_object_set_qdata_full (G_OBJECT (pipeline), + private_key1, + &user_data1, + destroy1_cb); + + g_object_unref (pipeline); g_assert_cmpint (destroy0_count, ==, 1); g_assert_cmpint (destroy1_count, ==, 2); diff --git a/src/tests/cogl/conform/test-offscreen-texture-formats.c b/src/tests/cogl/conform/test-offscreen-texture-formats.c index 2127bceca..d3be06c50 100644 --- a/src/tests/cogl/conform/test-offscreen-texture-formats.c +++ b/src/tests/cogl/conform/test-offscreen-texture-formats.c @@ -350,7 +350,7 @@ test_offscreen_texture_formats_paint_rgb10 (void) cogl_framebuffer_draw_rectangle (COGL_FRAMEBUFFER (offscreen_dst), pipeline, -1.0, -1.0, 1.0, 1.0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); cogl_framebuffer_read_pixels (COGL_FRAMEBUFFER (offscreen_dst), 0, 0, 2, 2, formats[j], @@ -476,7 +476,7 @@ test_offscreen_texture_formats_paint_rgb8 (void) cogl_framebuffer_draw_rectangle (COGL_FRAMEBUFFER (offscreen_dst), pipeline, -1.0, -1.0, 1.0, 1.0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); cogl_framebuffer_read_pixels (COGL_FRAMEBUFFER (offscreen_dst), 0, 0, 2, 2, formats[j], diff --git a/src/tests/cogl/conform/test-offscreen.c b/src/tests/cogl/conform/test-offscreen.c index ca86a9b2d..d407069e6 100644 --- a/src/tests/cogl/conform/test-offscreen.c +++ b/src/tests/cogl/conform/test-offscreen.c @@ -98,8 +98,8 @@ test_paint (TestState *state) cogl_pipeline_set_layer_texture (texture_pipeline, 0, tex); cogl_framebuffer_draw_rectangle (test_fb, texture_pipeline, -1, 1, 1, -1); - cogl_object_unref (opaque_pipeline); - cogl_object_unref (texture_pipeline); + g_object_unref (opaque_pipeline); + g_object_unref (texture_pipeline); g_object_unref (tex); cogl_framebuffer_pop_matrix (test_fb); @@ -184,7 +184,7 @@ test_flush (TestState *state) g_object_unref (offscreen); } - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static void diff --git a/src/tests/cogl/conform/test-pipeline-cache-unrefs-texture.c b/src/tests/cogl/conform/test-pipeline-cache-unrefs-texture.c index f0f8227c9..c9c3f1980 100644 --- a/src/tests/cogl/conform/test-pipeline-cache-unrefs-texture.c +++ b/src/tests/cogl/conform/test-pipeline-cache-unrefs-texture.c @@ -76,13 +76,13 @@ test_pipeline_cache_unrefs_texture (void) } cogl_framebuffer_draw_rectangle (test_fb, simple_pipeline, 0, 0, 10, 10); cogl_framebuffer_finish (test_fb); - cogl_object_unref (simple_pipeline); + g_object_unref (simple_pipeline); g_assert_cmpint (destroyed_texture_count, ==, 0); /* Destroy the pipeline. This should immediately cause the textures * to be freed */ - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_assert_cmpint (destroyed_texture_count, ==, N_TEXTURES); diff --git a/src/tests/cogl/conform/test-pipeline-shader-state.c b/src/tests/cogl/conform/test-pipeline-shader-state.c index 1ed1ec1e2..c4dcdc754 100644 --- a/src/tests/cogl/conform/test-pipeline-shader-state.c +++ b/src/tests/cogl/conform/test-pipeline-shader-state.c @@ -52,7 +52,7 @@ test_pipeline_shader_state (void) cogl_framebuffer_draw_rectangle (test_fb, draw_pipeline, 0, 0, width, height); - cogl_object_unref (draw_pipeline); + g_object_unref (draw_pipeline); cogl_framebuffer_finish (test_fb); @@ -85,7 +85,7 @@ test_pipeline_shader_state (void) cogl_framebuffer_draw_rectangle (test_fb, draw_pipeline, 0, 0, width, height); - cogl_object_unref (draw_pipeline); + g_object_unref (draw_pipeline); test_utils_check_region (test_fb, 0, 0, width, height, diff --git a/src/tests/cogl/conform/test-pipeline-uniforms.c b/src/tests/cogl/conform/test-pipeline-uniforms.c index f42475626..26bbca3f7 100644 --- a/src/tests/cogl/conform/test-pipeline-uniforms.c +++ b/src/tests/cogl/conform/test-pipeline-uniforms.c @@ -163,15 +163,15 @@ init_long_pipeline_state (TestState *state) static void destroy_state (TestState *state) { - cogl_object_unref (state->pipeline_red); - cogl_object_unref (state->pipeline_green); - cogl_object_unref (state->pipeline_blue); - cogl_object_unref (state->matrix_pipeline); - cogl_object_unref (state->vector_pipeline); - cogl_object_unref (state->int_pipeline); + g_object_unref (state->pipeline_red); + g_object_unref (state->pipeline_green); + g_object_unref (state->pipeline_blue); + g_object_unref (state->matrix_pipeline); + g_object_unref (state->vector_pipeline); + g_object_unref (state->int_pipeline); if (state->long_pipeline) - cogl_object_unref (state->long_pipeline); + g_object_unref (state->long_pipeline); } static void @@ -211,7 +211,7 @@ paint_color_pipelines (TestState *state) paint_pipeline (temp_pipeline, i + 3); } - cogl_object_unref (temp_pipeline); + g_object_unref (temp_pipeline); } static void diff --git a/src/tests/cogl/conform/test-pipeline-user-matrix.c b/src/tests/cogl/conform/test-pipeline-user-matrix.c index 333e15865..df1dfdfce 100644 --- a/src/tests/cogl/conform/test-pipeline-user-matrix.c +++ b/src/tests/cogl/conform/test-pipeline-user-matrix.c @@ -124,7 +124,7 @@ paint (TestState *state) g_object_unref (tex1); g_object_unref (tex0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static void diff --git a/src/tests/cogl/conform/test-pixel-buffer.c b/src/tests/cogl/conform/test-pixel-buffer.c index 99439112e..7ebfcaadb 100644 --- a/src/tests/cogl/conform/test-pixel-buffer.c +++ b/src/tests/cogl/conform/test-pixel-buffer.c @@ -151,7 +151,7 @@ test_pixel_buffer_map (void) g_object_unref (bitmap); g_object_unref (texture); - cogl_object_unref (pipeline); + g_object_unref (pipeline); check_colours (0x0000ffff, 0x00ff00ff, @@ -196,7 +196,7 @@ test_pixel_buffer_set_data (void) g_object_unref (bitmap); g_object_unref (texture); - cogl_object_unref (pipeline); + g_object_unref (pipeline); check_colours (0x0000ffff, 0x00ff00ff, @@ -257,7 +257,7 @@ test_pixel_buffer_sub_region (void) g_object_unref (bitmap); g_object_unref (texture); - cogl_object_unref (pipeline); + g_object_unref (pipeline); check_colours (0xffffffff, 0xff0000ff, diff --git a/src/tests/cogl/conform/test-point-size-attribute.c b/src/tests/cogl/conform/test-point-size-attribute.c index bed41b9d4..9357e4de4 100644 --- a/src/tests/cogl/conform/test-point-size-attribute.c +++ b/src/tests/cogl/conform/test-point-size-attribute.c @@ -124,7 +124,7 @@ do_test (const char *attribute_name, if (pipeline_setup_func) pipeline_setup_func (pipeline); cogl_primitive_draw (primitive, test_fb, pipeline); - cogl_object_unref (pipeline); + g_object_unref (pipeline); cogl_object_unref (primitive); /* Verify all of the points where drawn at the right size */ diff --git a/src/tests/cogl/conform/test-point-size.c b/src/tests/cogl/conform/test-point-size.c index 54ae07bc2..1c7713811 100644 --- a/src/tests/cogl/conform/test-point-size.c +++ b/src/tests/cogl/conform/test-point-size.c @@ -83,7 +83,7 @@ test_point_size (void) cogl_primitive_draw (prim, test_fb, pipeline); cogl_object_unref (prim); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } /* Verify all of the points where drawn at the right size */ diff --git a/src/tests/cogl/conform/test-point-sprite-known-failure.c b/src/tests/cogl/conform/test-point-sprite-known-failure.c index 3fd42aafd..fbb6b765f 100644 --- a/src/tests/cogl/conform/test-point-sprite-known-failure.c +++ b/src/tests/cogl/conform/test-point-sprite-known-failure.c @@ -134,8 +134,8 @@ do_test (gboolean check_orientation, cogl_framebuffer_pop_matrix (test_fb); cogl_object_unref (prim); - cogl_object_unref (solid_pipeline); - cogl_object_unref (pipeline); + g_object_unref (solid_pipeline); + g_object_unref (pipeline); g_object_unref (tex_2d); test_utils_check_pixel (test_fb, diff --git a/src/tests/cogl/conform/test-point-sprite.c b/src/tests/cogl/conform/test-point-sprite.c index 6c2256a6a..7ad6363c8 100644 --- a/src/tests/cogl/conform/test-point-sprite.c +++ b/src/tests/cogl/conform/test-point-sprite.c @@ -134,8 +134,8 @@ do_test (gboolean check_orientation, cogl_framebuffer_pop_matrix (test_fb); cogl_object_unref (prim); - cogl_object_unref (solid_pipeline); - cogl_object_unref (pipeline); + g_object_unref (solid_pipeline); + g_object_unref (pipeline); g_object_unref (tex_2d); test_utils_check_pixel (test_fb, diff --git a/src/tests/cogl/conform/test-primitive.c b/src/tests/cogl/conform/test-primitive.c index 563dd4fb9..a10b9c025 100644 --- a/src/tests/cogl/conform/test-primitive.c +++ b/src/tests/cogl/conform/test-primitive.c @@ -202,7 +202,7 @@ test_paint (TestState *state) cogl_object_unref (prim); } - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static gboolean diff --git a/src/tests/cogl/conform/test-snippets.c b/src/tests/cogl/conform/test-snippets.c index c523899dd..8b563fcf3 100644 --- a/src/tests/cogl/conform/test-snippets.c +++ b/src/tests/cogl/conform/test-snippets.c @@ -61,7 +61,7 @@ simple_fragment_snippet (TestState *state) cogl_framebuffer_draw_rectangle (test_fb, pipeline, 0, 0, 10, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 5, 5, 0xffff00ff); } @@ -85,7 +85,7 @@ simple_vertex_snippet (TestState *state) cogl_framebuffer_draw_rectangle (test_fb, pipeline, 10, 0, 20, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 15, 5, 0xff00ffff); } @@ -121,7 +121,7 @@ shared_uniform (TestState *state) pipeline, 20, 0, 30, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 25, 5, 0xff0080ff); } @@ -165,7 +165,7 @@ lots_snippets (TestState *state) cogl_framebuffer_draw_rectangle (test_fb, pipeline, 30, 0, 40, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 35, 5, 0x19334cff); } @@ -191,7 +191,7 @@ shared_variable_pre_post (TestState *state) cogl_framebuffer_draw_rectangle (test_fb, pipeline, 40, 0, 50, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 45, 5, 0xff0000ff); } @@ -217,12 +217,12 @@ test_pipeline_caching (TestState *state) pipeline = cogl_pipeline_new (test_ctx); cogl_pipeline_add_snippet (pipeline, snippet); cogl_framebuffer_draw_rectangle (test_fb, pipeline, 50, 0, 60, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); pipeline = cogl_pipeline_new (test_ctx); cogl_pipeline_add_snippet (pipeline, snippet); cogl_framebuffer_draw_rectangle (test_fb, pipeline, 60, 0, 70, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (snippet); @@ -250,7 +250,7 @@ test_replace_string (TestState *state) pipeline = cogl_pipeline_new (test_ctx); cogl_pipeline_add_snippet (pipeline, snippet); cogl_framebuffer_draw_rectangle (test_fb, pipeline, 70, 0, 80, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (snippet); @@ -277,7 +277,7 @@ test_texture_lookup_hook (TestState *state) pipeline, 80, 0, 90, 10, 0, 0, 0, 0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (snippet); @@ -303,7 +303,7 @@ test_multiple_samples (TestState *state) pipeline = create_texture_pipeline (state); cogl_pipeline_add_layer_snippet (pipeline, 0, snippet); cogl_framebuffer_draw_rectangle (test_fb, pipeline, 0, 0, 10, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (snippet); @@ -326,7 +326,7 @@ test_replace_lookup_hook (TestState *state) pipeline, 90, 0, 100, 10, 0, 0, 0, 0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (snippet); @@ -359,7 +359,7 @@ test_replace_snippet (TestState *state) pipeline, 100, 0, 110, 10, 0, 0, 0, 0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 105, 5, 0xff0000ff); } @@ -391,7 +391,7 @@ test_replace_fragment_layer (TestState *state) pipeline, 110, 0, 120, 10, 0, 0, 0, 0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 115, 5, 0xff00ffff); } @@ -420,7 +420,7 @@ test_modify_fragment_layer (TestState *state) pipeline, 120, 0, 130, 10, 0, 0, 0, 0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 125, 5, 0xff80ffff); } @@ -449,7 +449,7 @@ test_modify_vertex_layer (TestState *state) pipeline, 130, 0, 140, 10, 0, 0, 0, 0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 135, 5, 0xffff00ff); } @@ -479,7 +479,7 @@ test_replace_vertex_layer (TestState *state) pipeline, 140, 0, 150, 10, 0, 0, 0, 0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 145, 5, 0x00ff00ff); } @@ -526,7 +526,7 @@ test_vertex_transform_hook (TestState *state) cogl_framebuffer_set_projection_matrix (test_fb, &identity_matrix); cogl_framebuffer_draw_rectangle (test_fb, pipeline, 150, 0, 160, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); /* Restore the projection matrix */ cogl_framebuffer_set_projection_matrix (test_fb, &matrix); @@ -582,7 +582,7 @@ test_global_vertex_hook (TestState *state) 10.0f * 2.0f / state->fb_width - 1.0f, 10.0f * 2.0f / state->fb_height - 1.0f); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 5, 5, 0xff0000ff); } @@ -632,7 +632,7 @@ test_global_fragment_hook (TestState *state) pipeline, 0, 0, 10, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 5, 5, 0xff0000ff); } @@ -670,7 +670,7 @@ test_snippet_order (TestState *state) g_object_unref (snippet); cogl_framebuffer_draw_rectangle (test_fb, pipeline, 160, 0, 170, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); test_utils_check_pixel (test_fb, 165, 5, 0x80ff00ff); } @@ -705,7 +705,7 @@ test_naming_texture_units (TestState *state) cogl_framebuffer_draw_rectangle (test_fb, pipeline, 0, 0, 10, 10); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (snippet); g_object_unref (tex1); g_object_unref (tex2); diff --git a/src/tests/cogl/conform/test-sparse-pipeline.c b/src/tests/cogl/conform/test-sparse-pipeline.c index 95a2b4f30..e33ecefdb 100644 --- a/src/tests/cogl/conform/test-sparse-pipeline.c +++ b/src/tests/cogl/conform/test-sparse-pipeline.c @@ -37,7 +37,7 @@ test_sparse_layer_combine (TestState *state) test_utils_check_pixel (test_fb, 2, 2, 0xffff00ff); - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (tex1); g_object_unref (tex2); } diff --git a/src/tests/cogl/conform/test-sub-texture.c b/src/tests/cogl/conform/test-sub-texture.c index cbf78ec99..5f0a50ac4 100644 --- a/src/tests/cogl/conform/test-sub-texture.c +++ b/src/tests/cogl/conform/test-sub-texture.c @@ -149,7 +149,7 @@ paint (TestState *state) 0.0f, SOURCE_SIZE * 2.0f, 10.0f, SOURCE_SIZE * 2.0f + 10.0f); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } static void diff --git a/src/tests/cogl/conform/test-texture-mipmaps.c b/src/tests/cogl/conform/test-texture-mipmaps.c index 635790619..cb358e3dd 100644 --- a/src/tests/cogl/conform/test-texture-mipmaps.c +++ b/src/tests/cogl/conform/test-texture-mipmaps.c @@ -70,7 +70,7 @@ on_paint (ClutterActor *actor, COGL_PIPELINE_FILTER_NEAREST); cogl_rectangle (1, 0, 2, 1); - cogl_object_unref (pipeline); + g_object_unref (pipeline); /* Read back the two pixels we rendered */ cogl_read_pixels (0, 0, 2, 1, diff --git a/src/tests/cogl/conform/test-texture-rg.c b/src/tests/cogl/conform/test-texture-rg.c index ae59e8a23..59d2345b2 100644 --- a/src/tests/cogl/conform/test-texture-rg.c +++ b/src/tests/cogl/conform/test-texture-rg.c @@ -75,7 +75,7 @@ test_texture_rg (void) 0); } - cogl_object_unref (pipeline); + g_object_unref (pipeline); g_object_unref (tex); } diff --git a/src/tests/cogl/conform/test-wrap-modes.c b/src/tests/cogl/conform/test-wrap-modes.c index e21b5aa19..d433a19e4 100644 --- a/src/tests/cogl/conform/test-wrap-modes.c +++ b/src/tests/cogl/conform/test-wrap-modes.c @@ -95,7 +95,7 @@ draw_tests (TestState *state) (i + 2) * TEX_SIZE, TEX_SIZE * 2, 0, 0, 2, 2); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } } @@ -130,7 +130,7 @@ draw_tests_polygon (TestState *state) vertices); cogl_primitive_draw (primitive, test_fb, pipeline); cogl_object_unref (primitive); - cogl_object_unref (pipeline); + g_object_unref (pipeline); cogl_framebuffer_pop_matrix (test_fb); } } diff --git a/src/tests/cogl/unit/test-pipeline-cache.c b/src/tests/cogl/unit/test-pipeline-cache.c index 01e02be0c..7d8c54cad 100644 --- a/src/tests/cogl/unit/test-pipeline-cache.c +++ b/src/tests/cogl/unit/test-pipeline-cache.c @@ -82,7 +82,7 @@ check_pipeline_pruning (void) * should run the garbage collector again but this time the * pipelines won't be in use so it should free some of them */ for (i = 0; i < 18; i++) - cogl_object_unref (pipelines[i]); + g_object_unref (pipelines[i]); create_pipelines (pipelines, 18); @@ -96,7 +96,7 @@ check_pipeline_pruning (void) g_assert_cmpint (combined_hash->expected_min_size, ==, 17); for (i = 0; i < 18; i++) - cogl_object_unref (pipelines[i]); + g_object_unref (pipelines[i]); } COGL_TEST_SUITE ( diff --git a/src/tests/cogl/unit/test-pipeline-glsl.c b/src/tests/cogl/unit/test-pipeline-glsl.c index 6d2ac214f..ee2fcb7e2 100644 --- a/src/tests/cogl/unit/test-pipeline-glsl.c +++ b/src/tests/cogl/unit/test-pipeline-glsl.c @@ -35,7 +35,7 @@ test_pipeline_opengl_blend_enable (void) * then blending should be disabled */ g_assert_cmpint (test_ctx->gl_blend_enable_cache, ==, 0); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } COGL_TEST_SUITE ( diff --git a/src/tests/cogl/unit/test-pipeline-state-known-failure.c b/src/tests/cogl/unit/test-pipeline-state-known-failure.c index 593d8b98c..7a20e0cff 100644 --- a/src/tests/cogl/unit/test-pipeline-state-known-failure.c +++ b/src/tests/cogl/unit/test-pipeline-state-known-failure.c @@ -23,7 +23,7 @@ test_pipeline_state_uniform_ancestry (void) int uniform_location; tmp_pipeline = cogl_pipeline_copy (pipeline); - cogl_object_unref (pipeline); + g_object_unref (pipeline); pipeline = tmp_pipeline; uniform_location = @@ -37,7 +37,7 @@ test_pipeline_state_uniform_ancestry (void) g_assert_cmpint (pipeline_length, <=, 2); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } COGL_TEST_SUITE ( diff --git a/src/tests/cogl/unit/test-pipeline-state.c b/src/tests/cogl/unit/test-pipeline-state.c index bf2916414..50b421f94 100644 --- a/src/tests/cogl/unit/test-pipeline-state.c +++ b/src/tests/cogl/unit/test-pipeline-state.c @@ -27,7 +27,7 @@ test_pipeline_state_blend_constant_ancestry (void) cogl_color_init_from_4f (&color, i / 20.0f, 0.0f, 0.0f, 1.0f); tmp_pipeline = cogl_pipeline_copy (pipeline); - cogl_object_unref (pipeline); + g_object_unref (pipeline); pipeline = tmp_pipeline; cogl_pipeline_set_blend_constant (pipeline, &color); @@ -38,7 +38,7 @@ test_pipeline_state_blend_constant_ancestry (void) g_assert_cmpint (pipeline_length, <=, 2); - cogl_object_unref (pipeline); + g_object_unref (pipeline); } COGL_TEST_SUITE ( diff --git a/src/tests/cogl/unit/test-pipeline-vertend-glsl.c b/src/tests/cogl/unit/test-pipeline-vertend-glsl.c index 7f0ff59b2..9a64a0db7 100644 --- a/src/tests/cogl/unit/test-pipeline-vertend-glsl.c +++ b/src/tests/cogl/unit/test-pipeline-vertend-glsl.c @@ -61,7 +61,7 @@ test_pipeline_vertend_glsl_point_size_shader (void) g_assert (shader_states[0] == shader_states[3]); for (i = 0; i < G_N_ELEMENTS (pipelines); i++) - cogl_object_unref (pipelines[i]); + g_object_unref (pipelines[i]); } COGL_TEST_SUITE (