diff --git a/cogl/cogl/cogl-output-private.h b/cogl/cogl/cogl-output-private.h index 6e992152c..818501067 100644 --- a/cogl/cogl/cogl-output-private.h +++ b/cogl/cogl/cogl-output-private.h @@ -31,11 +31,10 @@ #pragma once #include "cogl/cogl-output.h" -#include "cogl/cogl-object-private.h" struct _CoglOutput { - CoglObject _parent; + GObject parent_instance; char *name; diff --git a/cogl/cogl/cogl-output.c b/cogl/cogl/cogl-output.c index 9eeefbde2..e9410f96d 100644 --- a/cogl/cogl/cogl-output.c +++ b/cogl/cogl/cogl-output.c @@ -31,32 +31,43 @@ #include "cogl-config.h" #include "cogl/cogl-output-private.h" -#include "cogl/cogl-gtype-private.h" #include -static void _cogl_output_free (CoglOutput *output); +G_DEFINE_TYPE (CoglOutput, cogl_output, G_TYPE_OBJECT); -COGL_OBJECT_DEFINE (Output, output); -COGL_GTYPE_DEFINE_CLASS (Output, output); +static void +cogl_output_dispose (GObject *object) +{ + CoglOutput *output = COGL_OUTPUT (object); + + g_free (output->name); + + G_OBJECT_CLASS (cogl_output_parent_class)->dispose (object); +} + +static void +cogl_output_init (CoglOutput *output) +{ +} + +static void +cogl_output_class_init (CoglOutputClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + + object_class->dispose = cogl_output_dispose; +} CoglOutput * _cogl_output_new (const char *name) { CoglOutput *output; - output = g_new0 (CoglOutput, 1); + output = g_object_new (COGL_TYPE_OUTPUT, NULL); output->name = g_strdup (name); - return _cogl_output_object_new (output); -} - -static void -_cogl_output_free (CoglOutput *output) -{ - g_free (output->name); - - g_free (output); + return output; } gboolean diff --git a/cogl/cogl/cogl-output.h b/cogl/cogl/cogl-output.h index 7ac93727a..3542755df 100644 --- a/cogl/cogl/cogl-output.h +++ b/cogl/cogl/cogl-output.h @@ -44,8 +44,9 @@ G_BEGIN_DECLS /** - * SECTION:cogl-output - * @short_description: information about an output device + * CoglOutput: + * + * Information about an output device * * The #CoglOutput object holds information about an output device * such as a monitor or laptop display. It can be queried to find @@ -66,15 +67,15 @@ G_BEGIN_DECLS */ typedef struct _CoglOutput CoglOutput; -#define COGL_OUTPUT(X) ((CoglOutput *)(X)) -/** - * cogl_output_get_gtype: - * - * Returns: a #GType that can be used with the GLib type system. - */ +#define COGL_TYPE_OUTPUT (cogl_output_get_type ()) + COGL_EXPORT -GType cogl_output_get_gtype (void); +G_DECLARE_FINAL_TYPE (CoglOutput, + cogl_output, + COGL, + OUTPUT, + GObject) /** * CoglSubpixelOrder: @@ -114,18 +115,6 @@ typedef enum COGL_SUBPIXEL_ORDER_VERTICAL_BGR } CoglSubpixelOrder; -/** - * cogl_is_output: - * @object: A #CoglObject pointer - * - * Gets whether the given object references a #CoglOutput. - * - * Return value: %TRUE if the object references a #CoglOutput - * and %FALSE otherwise. - */ -COGL_EXPORT gboolean -cogl_is_output (void *object); - /** * cogl_output_get_x: * @output: a #CoglOutput diff --git a/cogl/cogl/cogl-xlib-renderer.c b/cogl/cogl/cogl-xlib-renderer.c index 6870e891a..928daf1f7 100644 --- a/cogl/cogl/cogl-xlib-renderer.c +++ b/cogl/cogl/cogl-xlib-renderer.c @@ -293,7 +293,7 @@ update_outputs (CoglRenderer *renderer, renderer->outputs = g_list_remove_link (renderer->outputs, m); renderer->outputs = g_list_insert_before (renderer->outputs, m_next, output_l); - cogl_object_ref (output_l); + g_object_ref (output_l); changed = TRUE; } @@ -305,7 +305,7 @@ update_outputs (CoglRenderer *renderer, { renderer->outputs = g_list_insert_before (renderer->outputs, m, output_l); - cogl_object_ref (output_l); + g_object_ref (output_l); changed = TRUE; l = l->next; } @@ -319,7 +319,7 @@ update_outputs (CoglRenderer *renderer, } } - g_list_free_full (new_outputs, (GDestroyNotify)cogl_object_unref); + g_list_free_full (new_outputs, (GDestroyNotify)g_object_unref); mtk_x11_error_trap_pop (xlib_renderer->xdpy); if (changed) @@ -481,7 +481,7 @@ _cogl_xlib_renderer_disconnect (CoglRenderer *renderer) CoglXlibRenderer *xlib_renderer = _cogl_xlib_renderer_get_data (renderer); - g_list_free_full (renderer->outputs, (GDestroyNotify)cogl_object_unref); + g_list_free_full (renderer->outputs, (GDestroyNotify)g_object_unref); renderer->outputs = NULL; if (!renderer->foreign_xdpy && xlib_renderer->xdpy) diff --git a/cogl/cogl/winsys/cogl-onscreen-glx.c b/cogl/cogl/winsys/cogl-onscreen-glx.c index 54f319ab1..8f2ae3266 100644 --- a/cogl/cogl/winsys/cogl-onscreen-glx.c +++ b/cogl/cogl/winsys/cogl-onscreen-glx.c @@ -224,7 +224,7 @@ cogl_onscreen_glx_dispose (GObject *object) G_OBJECT_CLASS (cogl_onscreen_glx_parent_class)->dispose (object); - cogl_clear_object (&onscreen_glx->output); + g_clear_object (&onscreen_glx->output); if (onscreen_glx->glxwin != None || onscreen_glx->xwin != None) @@ -1028,12 +1028,12 @@ cogl_onscreen_glx_update_output (CoglOnscreen *onscreen) if (onscreen_glx->output != output) { if (onscreen_glx->output) - cogl_object_unref (onscreen_glx->output); + g_object_unref (onscreen_glx->output); onscreen_glx->output = output; if (output) - cogl_object_ref (onscreen_glx->output); + g_object_ref (onscreen_glx->output); } }