[mutter] cogl/gl-framebuffer: Make it a GObject
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] cogl/gl-framebuffer: Make it a GObject
- Date: Sat, 30 Jan 2021 09:39:48 +0000 (UTC)
commit f56b0abaeff110616a23f2cc8e8ef0191632fdf2
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Sun Oct 18 20:04:46 2020 +0200
cogl/gl-framebuffer: Make it a GObject
This way we can have separate types per modes of operation (e.g. if it's
backed by an EGLSurface or single texture), instead of being dependent
on a certain type (onscreen vs offscreen).
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1514>
cogl/cogl/driver/gl/cogl-framebuffer-gl-private.h | 5 +++++
cogl/cogl/driver/gl/cogl-framebuffer-gl.c | 23 +++++++++++++++++++----
2 files changed, 24 insertions(+), 4 deletions(-)
---
diff --git a/cogl/cogl/driver/gl/cogl-framebuffer-gl-private.h
b/cogl/cogl/driver/gl/cogl-framebuffer-gl-private.h
index 3e9333a241..301bd8aba3 100644
--- a/cogl/cogl/driver/gl/cogl-framebuffer-gl-private.h
+++ b/cogl/cogl/driver/gl/cogl-framebuffer-gl-private.h
@@ -34,6 +34,11 @@
#ifndef __COGL_FRAMEBUFFER_GL_PRIVATE_H__
#define __COGL_FRAMEBUFFER_GL_PRIVATE_H__
+#define COGL_TYPE_GL_FRAMEBUFFER (cogl_gl_framebuffer_get_type ())
+G_DECLARE_FINAL_TYPE (CoglGlFramebuffer, cogl_gl_framebuffer,
+ COGL, GL_FRAMEBUFFER,
+ GObject)
+
gboolean
_cogl_offscreen_gl_allocate (CoglOffscreen *offscreen,
GError **error);
diff --git a/cogl/cogl/driver/gl/cogl-framebuffer-gl.c b/cogl/cogl/driver/gl/cogl-framebuffer-gl.c
index a3801e664c..a6b2aa583a 100644
--- a/cogl/cogl/driver/gl/cogl-framebuffer-gl.c
+++ b/cogl/cogl/driver/gl/cogl-framebuffer-gl.c
@@ -127,11 +127,16 @@
#define GL_STENCIL 0x1802
#endif
-typedef struct _CoglGlFramebuffer
+struct _CoglGlFramebuffer
{
+ GObject parent;
+
gboolean dirty_bitmasks;
CoglFramebufferBits bits;
-} CoglGlFramebuffer;
+};
+
+G_DEFINE_TYPE (CoglGlFramebuffer, cogl_gl_framebuffer,
+ G_TYPE_OBJECT)
static void
_cogl_framebuffer_gl_flush_viewport_state (CoglFramebuffer *framebuffer)
@@ -957,10 +962,10 @@ ensure_gl_framebuffer (CoglFramebuffer *framebuffer)
gl_framebuffer = cogl_framebuffer_get_driver_private (framebuffer);
if (!gl_framebuffer)
{
- gl_framebuffer = g_new0 (CoglGlFramebuffer, 1);
+ gl_framebuffer = g_object_new (COGL_TYPE_GL_FRAMEBUFFER, NULL);
cogl_framebuffer_set_driver_private (framebuffer,
gl_framebuffer,
- g_free);
+ g_object_unref);
gl_framebuffer->dirty_bitmasks = TRUE;
}
@@ -1465,3 +1470,13 @@ EXIT:
return status;
}
+
+static void
+cogl_gl_framebuffer_init (CoglGlFramebuffer *gl_framebuffer)
+{
+}
+
+static void
+cogl_gl_framebuffer_class_init (CoglGlFramebufferClass *klass)
+{
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]