diff --git a/cogl/cogl/cogl-frame-info-private.h b/cogl/cogl/cogl-frame-info-private.h index a44ddad2e..8871377ab 100644 --- a/cogl/cogl/cogl-frame-info-private.h +++ b/cogl/cogl/cogl-frame-info-private.h @@ -31,7 +31,6 @@ #pragma once #include "cogl/cogl-frame-info.h" -#include "cogl/cogl-object-private.h" #include "cogl/cogl-context.h" typedef enum _CoglFrameInfoFlag @@ -60,7 +59,7 @@ typedef enum _CoglFrameInfoFlag struct _CoglFrameInfo { - CoglObject _parent; + GObject parent_instance; CoglContext *context; diff --git a/cogl/cogl/cogl-frame-info.c b/cogl/cogl/cogl-frame-info.c index 81ad0166a..aada9b717 100644 --- a/cogl/cogl/cogl-frame-info.c +++ b/cogl/cogl/cogl-frame-info.c @@ -31,13 +31,33 @@ #include "cogl-config.h" #include "cogl/cogl-frame-info-private.h" -#include "cogl/cogl-gtype-private.h" #include "cogl/cogl-context-private.h" -static void _cogl_frame_info_free (CoglFrameInfo *info); +G_DEFINE_TYPE (CoglFrameInfo, cogl_frame_info, G_TYPE_OBJECT); -COGL_OBJECT_DEFINE (FrameInfo, frame_info); -COGL_GTYPE_DEFINE_CLASS (FrameInfo, frame_info); +static void +cogl_frame_info_dispose (GObject *object) +{ + CoglFrameInfo *info = COGL_FRAME_INFO (object); + + if (info->timestamp_query) + cogl_context_free_timestamp_query (info->context, info->timestamp_query); + + G_OBJECT_CLASS (cogl_frame_info_parent_class)->dispose (object); +} + +static void +cogl_frame_info_init (CoglFrameInfo *info) +{ +} + +static void +cogl_frame_info_class_init (CoglFrameInfoClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + + object_class->dispose = cogl_frame_info_dispose; +} CoglFrameInfo * cogl_frame_info_new (CoglContext *context, @@ -45,20 +65,11 @@ cogl_frame_info_new (CoglContext *context, { CoglFrameInfo *info; - info = g_new0 (CoglFrameInfo, 1); + info = g_object_new (COGL_TYPE_FRAME_INFO, NULL); info->context = context; info->global_frame_counter = global_frame_counter; - return _cogl_frame_info_object_new (info); -} - -static void -_cogl_frame_info_free (CoglFrameInfo *info) -{ - if (info->timestamp_query) - cogl_context_free_timestamp_query (info->context, info->timestamp_query); - - g_free (info); + return info; } int64_t diff --git a/cogl/cogl/cogl-frame-info.h b/cogl/cogl/cogl-frame-info.h index 84bf4209c..1079be20b 100644 --- a/cogl/cogl/cogl-frame-info.h +++ b/cogl/cogl/cogl-frame-info.h @@ -51,27 +51,15 @@ G_BEGIN_DECLS * Frame information. */ typedef struct _CoglFrameInfo CoglFrameInfo; -#define COGL_FRAME_INFO(X) ((CoglFrameInfo *)(X)) -/** - * cogl_frame_info_get_gtype: - * - * Returns: a #GType that can be used with the GLib type system. - */ +#define COGL_TYPE_FRAME_INFO (cogl_frame_info_get_type ()) + COGL_EXPORT -GType cogl_frame_info_get_gtype (void); - -/** - * cogl_is_frame_info: - * @object: A #CoglObject pointer - * - * Gets whether the given object references a #CoglFrameInfo. - * - * Return value: %TRUE if the object references a #CoglFrameInfo - * and %FALSE otherwise. - */ -COGL_EXPORT gboolean -cogl_is_frame_info (void *object); +G_DECLARE_FINAL_TYPE (CoglFrameInfo, + cogl_frame_info, + COGL, + FRAME_INFO, + GObject) /** * cogl_frame_info_get_frame_counter: diff --git a/cogl/cogl/cogl-onscreen.c b/cogl/cogl/cogl-onscreen.c index 73425e498..a80471bd5 100644 --- a/cogl/cogl/cogl-onscreen.c +++ b/cogl/cogl/cogl-onscreen.c @@ -141,7 +141,7 @@ cogl_onscreen_dispose (GObject *object) _cogl_closure_list_disconnect_all (&priv->dirty_closures); while ((frame_info = g_queue_pop_tail (&priv->pending_frame_infos))) - cogl_object_unref (frame_info); + g_object_unref (frame_info); g_queue_clear (&priv->pending_frame_infos); G_OBJECT_CLASS (cogl_onscreen_parent_class)->dispose (object); @@ -202,7 +202,7 @@ _cogl_dispatch_onscreen_cb (CoglContext *context) notify_event (onscreen, event->type, info); g_object_unref (onscreen); - cogl_object_unref (info); + g_object_unref (info); g_free (event); } @@ -286,7 +286,7 @@ _cogl_onscreen_queue_event (CoglOnscreen *onscreen, CoglOnscreenEvent *event = g_new0 (CoglOnscreenEvent, 1); event->onscreen = g_object_ref (onscreen); - event->info = cogl_object_ref (info); + event->info = g_object_ref (info); event->type = type; _cogl_list_insert (ctx->onscreen_events_queue.prev, &event->link); @@ -355,7 +355,7 @@ cogl_onscreen_swap_buffers_with_damage (CoglOnscreen *onscreen, _cogl_onscreen_queue_event (onscreen, COGL_FRAME_EVENT_SYNC, info); _cogl_onscreen_queue_event (onscreen, COGL_FRAME_EVENT_COMPLETE, info); - cogl_object_unref (info); + g_object_unref (info); } priv->frame_counter++; @@ -415,7 +415,7 @@ cogl_onscreen_swap_region (CoglOnscreen *onscreen, _cogl_onscreen_queue_event (onscreen, COGL_FRAME_EVENT_SYNC, info); _cogl_onscreen_queue_event (onscreen, COGL_FRAME_EVENT_COMPLETE, info); - cogl_object_unref (info); + g_object_unref (info); } priv->frame_counter++; diff --git a/cogl/cogl/winsys/cogl-onscreen-glx.c b/cogl/cogl/winsys/cogl-onscreen-glx.c index 7c9b4df64..54f319ab1 100644 --- a/cogl/cogl/winsys/cogl-onscreen-glx.c +++ b/cogl/cogl/winsys/cogl-onscreen-glx.c @@ -591,7 +591,7 @@ cogl_onscreen_glx_flush_notification (CoglOnscreen *onscreen) info = cogl_onscreen_pop_head_frame_info (onscreen); _cogl_onscreen_notify_complete (onscreen, info); - cogl_object_unref (info); + g_object_unref (info); onscreen_glx->pending_complete_notify--; } } diff --git a/src/backends/meta-stage-impl.c b/src/backends/meta-stage-impl.c index 0101affce..eb40e1707 100644 --- a/src/backends/meta-stage-impl.c +++ b/src/backends/meta-stage-impl.c @@ -747,7 +747,7 @@ meta_stage_impl_scanout_view (MetaStageImpl *stage_impl, frame, error)) { - cogl_object_unref (frame_info); + g_object_unref (frame_info); return FALSE; } diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c index 2388a44a2..f439cc811 100644 --- a/src/backends/native/meta-onscreen-native.c +++ b/src/backends/native/meta-onscreen-native.c @@ -197,7 +197,7 @@ meta_onscreen_native_notify_frame_complete (CoglOnscreen *onscreen) _cogl_onscreen_notify_frame_sync (onscreen, info); _cogl_onscreen_notify_complete (onscreen, info); - cogl_object_unref (info); + g_object_unref (info); } static void