[mutter] barrier: Modernize type implementation



commit 27b75d3c968e1452122dbb09f76d506583963bec
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Fri Mar 18 15:48:23 2022 +0100

    barrier: Modernize type implementation
    
    This means using G_DECLARE*() to declare the type, using
    `_get_private_instance()` everywhere, and other smaller cleanups.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2442>

 src/backends/meta-barrier-private.h       |  9 +---
 src/backends/meta-barrier.c               | 46 +++++++++++++++------
 src/backends/native/meta-barrier-native.c | 36 ++++++++--------
 src/backends/x11/meta-barrier-x11.c       | 19 +++++----
 src/meta/barrier.h                        | 69 ++++++++-----------------------
 5 files changed, 82 insertions(+), 97 deletions(-)
---
diff --git a/src/backends/meta-barrier-private.h b/src/backends/meta-barrier-private.h
index 16bfcdcd0d..ebe22cb54f 100644
--- a/src/backends/meta-barrier-private.h
+++ b/src/backends/meta-barrier-private.h
@@ -56,13 +56,8 @@ void meta_barrier_event_unref (MetaBarrierEvent *event);
 
 MetaBackend * meta_barrier_get_backend (MetaBarrier *barrier);
 
-G_END_DECLS
+MetaBorder * meta_barrier_get_border (MetaBarrier *barrier);
 
-struct _MetaBarrierPrivate
-{
-  MetaBackend *backend;
-  MetaBorder border;
-  MetaBarrierImpl *impl;
-};
+G_END_DECLS
 
 #endif /* META_BARRIER_PRIVATE_H */
diff --git a/src/backends/meta-barrier.c b/src/backends/meta-barrier.c
index 777287cc99..45ccd99f9f 100644
--- a/src/backends/meta-barrier.c
+++ b/src/backends/meta-barrier.c
@@ -23,6 +23,18 @@
 #include "backends/native/meta-barrier-native.h"
 #endif
 
+struct _MetaBarrier
+{
+  GObject parent;
+};
+
+typedef struct _MetaBarrierPrivate
+{
+  MetaBackend *backend;
+  MetaBorder border;
+  MetaBarrierImpl *impl;
+} MetaBarrierPrivate;
+
 G_DEFINE_TYPE_WITH_PRIVATE (MetaBarrier, meta_barrier, G_TYPE_OBJECT)
 G_DEFINE_TYPE (MetaBarrierImpl, meta_barrier_impl, G_TYPE_OBJECT)
 
@@ -86,7 +98,7 @@ meta_barrier_get_property (GObject    *object,
                            GParamSpec *pspec)
 {
   MetaBarrier *barrier = META_BARRIER (object);
-  MetaBarrierPrivate *priv = barrier->priv;
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
 
   switch (prop_id)
     {
@@ -125,7 +137,8 @@ meta_barrier_set_property (GObject      *object,
                            GParamSpec   *pspec)
 {
   MetaBarrier *barrier = META_BARRIER (object);
-  MetaBarrierPrivate *priv = barrier->priv;
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
+
   switch (prop_id)
     {
     case PROP_BACKEND:
@@ -166,7 +179,7 @@ static void
 meta_barrier_dispose (GObject *object)
 {
   MetaBarrier *barrier = META_BARRIER (object);
-  MetaBarrierPrivate *priv = barrier->priv;
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
 
   if (meta_barrier_is_active (barrier))
     {
@@ -182,7 +195,8 @@ meta_barrier_dispose (GObject *object)
 gboolean
 meta_barrier_is_active (MetaBarrier *barrier)
 {
-  MetaBarrierImpl *impl = barrier->priv->impl;
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
+  MetaBarrierImpl *impl = priv->impl;
 
   if (impl)
     return META_BARRIER_IMPL_GET_CLASS (impl)->is_active (impl);
@@ -204,7 +218,8 @@ void
 meta_barrier_release (MetaBarrier      *barrier,
                       MetaBarrierEvent *event)
 {
-  MetaBarrierImpl *impl = barrier->priv->impl;
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
+  MetaBarrierImpl *impl = priv->impl;
 
   if (impl)
     META_BARRIER_IMPL_GET_CLASS (impl)->release (impl, event);
@@ -213,7 +228,7 @@ meta_barrier_release (MetaBarrier      *barrier,
 static void
 init_barrier_impl (MetaBarrier *barrier)
 {
-  MetaBarrierPrivate *priv = barrier->priv;
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
 
   g_return_if_fail (priv->backend);
   g_return_if_fail (priv->border.line.a.x == priv->border.line.b.x ||
@@ -364,7 +379,8 @@ meta_barrier_class_init (MetaBarrierClass *klass)
 void
 meta_barrier_destroy (MetaBarrier *barrier)
 {
-  MetaBarrierImpl *impl = barrier->priv->impl;
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
+  MetaBarrierImpl *impl = priv->impl;
 
   if (impl)
     META_BARRIER_IMPL_GET_CLASS (impl)->destroy (impl);
@@ -375,7 +391,6 @@ meta_barrier_destroy (MetaBarrier *barrier)
 static void
 meta_barrier_init (MetaBarrier *barrier)
 {
-  barrier->priv = meta_barrier_get_instance_private (barrier);
 }
 
 void
@@ -395,15 +410,22 @@ meta_barrier_emit_left_signal (MetaBarrier      *barrier,
 MetaBackend *
 meta_barrier_get_backend (MetaBarrier *barrier)
 {
-  return barrier->priv->backend;
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
+
+  return priv->backend;
+}
+
+MetaBorder *
+meta_barrier_get_border (MetaBarrier *barrier)
+{
+  MetaBarrierPrivate *priv = meta_barrier_get_instance_private (barrier);
+
+  return &priv->border;
 }
 
 static void
 meta_barrier_impl_class_init (MetaBarrierImplClass *klass)
 {
-  klass->is_active = NULL;
-  klass->release = NULL;
-  klass->destroy = NULL;
 }
 
 static void
diff --git a/src/backends/native/meta-barrier-native.c b/src/backends/native/meta-barrier-native.c
index 63acb6a796..0b325b846d 100644
--- a/src/backends/native/meta-barrier-native.c
+++ b/src/backends/native/meta-barrier-native.c
@@ -102,18 +102,20 @@ next_serial (void)
 static gboolean
 is_barrier_horizontal (MetaBarrier *barrier)
 {
-  return meta_border_is_horizontal (&barrier->priv->border);
+  MetaBorder *border = meta_barrier_get_border (barrier);
+
+  return meta_border_is_horizontal (border);
 }
 
 static gboolean
 is_barrier_blocking_directions (MetaBarrier         *barrier,
                                 MetaBarrierDirection directions)
 {
+  MetaBorder *border = meta_barrier_get_border (barrier);
   MetaBorderMotionDirection border_motion_directions =
     (MetaBorderMotionDirection) directions;
 
-  return meta_border_is_blocking_directions (&barrier->priv->border,
-                                             border_motion_directions);
+  return meta_border_is_blocking_directions (border, border_motion_directions);
 }
 
 static void
@@ -131,7 +133,8 @@ dismiss_pointer (MetaBarrierImplNative *self)
 static MetaLine2
 calculate_barrier_hit_box (MetaBarrier *barrier)
 {
-  MetaLine2 hit_box = barrier->priv->border.line;
+  MetaBorder *border = meta_barrier_get_border (barrier);
+  MetaLine2 hit_box = border->line;
 
   if (is_barrier_horizontal (barrier))
     {
@@ -170,6 +173,7 @@ maybe_release_barrier (gpointer key,
 {
   MetaBarrierImplNative *self = key;
   MetaBarrier *barrier = self->barrier;
+  MetaBorder *border = meta_barrier_get_border (barrier);
   MetaLine2 *motion = user_data;
   MetaLine2 hit_box;
 
@@ -179,10 +183,8 @@ maybe_release_barrier (gpointer key,
   /* Release if we end up outside barrier end points. */
   if (is_barrier_horizontal (barrier))
     {
-      if (motion->b.x > MAX (barrier->priv->border.line.a.x,
-                             barrier->priv->border.line.b.x) ||
-          motion->b.x < MIN (barrier->priv->border.line.a.x,
-                             barrier->priv->border.line.b.x))
+      if (motion->b.x > MAX (border->line.a.x, border->line.b.x) ||
+          motion->b.x < MIN (border->line.a.x, border->line.b.x))
         {
           dismiss_pointer (self);
           return;
@@ -190,10 +192,8 @@ maybe_release_barrier (gpointer key,
     }
   else
     {
-      if (motion->b.y > MAX (barrier->priv->border.line.a.y,
-                             barrier->priv->border.line.b.y) ||
-          motion->b.y < MIN (barrier->priv->border.line.a.y,
-                             barrier->priv->border.line.b.y))
+      if (motion->b.y > MAX (border->line.a.y, border->line.b.y) ||
+          motion->b.y < MIN (border->line.a.y, border->line.b.y))
         {
           dismiss_pointer (self);
           return;
@@ -254,6 +254,7 @@ update_closest_barrier (gpointer key,
 {
   MetaBarrierImplNative *self = key;
   MetaBarrier *barrier = self->barrier;
+  MetaBorder *border = meta_barrier_get_border (barrier);
   MetaClosestBarrierData *data = user_data;
   MetaVector2 intersection;
   float dx, dy;
@@ -274,7 +275,7 @@ update_closest_barrier (gpointer key,
 
   /* Check if the motion intersects with the barrier, and retrieve the
    * intersection point if any. */
-  if (!meta_line2_intersects_with (&barrier->priv->border.line,
+  if (!meta_line2_intersects_with (&border->line,
                                    &data->in.motion,
                                    &intersection))
     return;
@@ -473,13 +474,14 @@ clamp_to_barrier (MetaBarrierImplNative *self,
                   float *y)
 {
   MetaBarrier *barrier = self->barrier;
+  MetaBorder *border = meta_barrier_get_border (barrier);
 
   if (is_barrier_horizontal (barrier))
     {
       if (*motion_dir & META_BARRIER_DIRECTION_POSITIVE_Y)
-        *y = barrier->priv->border.line.a.y;
+        *y = border->line.a.y;
       else if (*motion_dir & META_BARRIER_DIRECTION_NEGATIVE_Y)
-        *y = barrier->priv->border.line.a.y;
+        *y = border->line.a.y;
 
       self->blocked_dir = *motion_dir & (META_BARRIER_DIRECTION_POSITIVE_Y |
                                          META_BARRIER_DIRECTION_NEGATIVE_Y);
@@ -489,9 +491,9 @@ clamp_to_barrier (MetaBarrierImplNative *self,
   else
     {
       if (*motion_dir & META_BARRIER_DIRECTION_POSITIVE_X)
-        *x = barrier->priv->border.line.a.x;
+        *x = border->line.a.x;
       else if (*motion_dir & META_BARRIER_DIRECTION_NEGATIVE_X)
-        *x = barrier->priv->border.line.a.x;
+        *x = border->line.a.x;
 
       self->blocked_dir = *motion_dir & (META_BARRIER_DIRECTION_POSITIVE_X |
                                          META_BARRIER_DIRECTION_NEGATIVE_X);
diff --git a/src/backends/x11/meta-barrier-x11.c b/src/backends/x11/meta-barrier-x11.c
index 8be0c97188..45ea1421b6 100644
--- a/src/backends/x11/meta-barrier-x11.c
+++ b/src/backends/x11/meta-barrier-x11.c
@@ -71,7 +71,7 @@ meta_barrier_impl_x11_release (MetaBarrierImpl  *impl,
                                MetaBarrierEvent *event)
 {
   MetaBarrierImplX11 *self = META_BARRIER_IMPL_X11 (impl);
-  MetaBackend *backend = self->barrier->priv->backend;
+  MetaBackend *backend = meta_barrier_get_backend (self->barrier);
   MetaBackendX11 *backend_x11 = META_BACKEND_X11 (backend);
   Display *xdisplay = meta_backend_x11_get_xdisplay (backend_x11);
 
@@ -84,7 +84,7 @@ static void
 meta_barrier_impl_x11_destroy (MetaBarrierImpl *impl)
 {
   MetaBarrierImplX11 *self = META_BARRIER_IMPL_X11 (impl);
-  MetaBackend *backend = self->barrier->priv->backend;
+  MetaBackend *backend = meta_barrier_get_backend (self->barrier);
   MetaBackendX11 *backend_x11 = META_BACKEND_X11 (backend);
   MetaX11Barriers *barriers = meta_backend_x11_get_barriers (backend_x11);
   Display *xdisplay = meta_backend_x11_get_xdisplay (backend_x11);
@@ -106,23 +106,24 @@ meta_barrier_impl_x11_new (MetaBarrier *barrier)
   MetaX11Barriers *barriers;
   Display *xdisplay;
   Window root;
+  MetaBorder *border;
   unsigned int allowed_motion_dirs;
 
   self = g_object_new (META_TYPE_BARRIER_IMPL_X11, NULL);
   self->barrier = barrier;
 
-  backend = self->barrier->priv->backend;
+  backend = meta_barrier_get_backend (self->barrier);
   backend_x11 = META_BACKEND_X11 (backend);
   xdisplay = meta_backend_x11_get_xdisplay (backend_x11);
   root = DefaultRootWindow (xdisplay);
 
-  allowed_motion_dirs =
-    meta_border_get_allows_directions (&barrier->priv->border);
+  border = meta_barrier_get_border (barrier);
+  allowed_motion_dirs = meta_border_get_allows_directions (border);
   self->xbarrier = XFixesCreatePointerBarrier (xdisplay, root,
-                                               barrier->priv->border.line.a.x,
-                                               barrier->priv->border.line.a.y,
-                                               barrier->priv->border.line.b.x,
-                                               barrier->priv->border.line.b.y,
+                                               border->line.a.x,
+                                               border->line.a.y,
+                                               border->line.b.x,
+                                               border->line.b.y,
                                                allowed_motion_dirs,
                                                0, NULL);
 
diff --git a/src/meta/barrier.h b/src/meta/barrier.h
index 72ed33cfc7..a73bcd25bc 100644
--- a/src/meta/barrier.h
+++ b/src/meta/barrier.h
@@ -9,58 +9,6 @@
 
 G_BEGIN_DECLS
 
-#define META_TYPE_BARRIER            (meta_barrier_get_type ())
-#define META_BARRIER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_BARRIER, MetaBarrier))
-#define META_BARRIER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  META_TYPE_BARRIER, 
MetaBarrierClass))
-#define META_IS_BARRIER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_BARRIER))
-#define META_IS_BARRIER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  META_TYPE_BARRIER))
-#define META_BARRIER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  META_TYPE_BARRIER, 
MetaBarrierClass))
-
-typedef struct _MetaBarrier        MetaBarrier;
-typedef struct _MetaBarrierClass   MetaBarrierClass;
-typedef struct _MetaBarrierPrivate MetaBarrierPrivate;
-
-typedef struct _MetaBarrierEvent   MetaBarrierEvent;
-
-/**
- * MetaBarrier:
- *
- * The <structname>MetaBarrier</structname> structure contains
- * only private data and should be accessed using the provided API
- *
- **/
-struct _MetaBarrier
-{
-  GObject parent;
-
-  MetaBarrierPrivate *priv;
-};
-
-/**
- * MetaBarrierClass:
- *
- * The <structname>MetaBarrierClass</structname> structure contains only
- * private data.
- */
-struct _MetaBarrierClass
-{
-  /*< private >*/
-  GObjectClass parent_class;
-};
-
-META_EXPORT
-GType meta_barrier_get_type (void) G_GNUC_CONST;
-
-META_EXPORT
-gboolean meta_barrier_is_active (MetaBarrier *barrier);
-
-META_EXPORT
-void meta_barrier_destroy (MetaBarrier *barrier);
-
-META_EXPORT
-void meta_barrier_release (MetaBarrier      *barrier,
-                           MetaBarrierEvent *event);
-
 /**
  * MetaBarrierDirection:
  * @META_BARRIER_DIRECTION_POSITIVE_X: Positive direction in the X axis
@@ -78,6 +26,23 @@ typedef enum
   META_BARRIER_DIRECTION_NEGATIVE_Y = 1 << 3,
 } MetaBarrierDirection;
 
+#define META_TYPE_BARRIER (meta_barrier_get_type ())
+META_EXPORT
+G_DECLARE_FINAL_TYPE (MetaBarrier, meta_barrier,
+                      META, BARRIER, GObject)
+
+typedef struct _MetaBarrierEvent MetaBarrierEvent;
+
+META_EXPORT
+gboolean meta_barrier_is_active (MetaBarrier *barrier);
+
+META_EXPORT
+void meta_barrier_destroy (MetaBarrier *barrier);
+
+META_EXPORT
+void meta_barrier_release (MetaBarrier      *barrier,
+                           MetaBarrierEvent *event);
+
 /**
  * MetaBarrierEvent:
  * @event_id: A unique integer ID identifying a


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]