summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ã…dahl <jadahl@gmail.com>2022-03-18 15:48:23 +0100
committerMarge Bot <marge-bot@gnome.org>2022-07-26 20:27:24 +0000
commit27b75d3c968e1452122dbb09f76d506583963bec (patch)
tree388ccbc51b009f7d5595c3dd553179dfe5b38c65
parent1992aa1567939a507fef647c702599620a4b010e (diff)
downloadmutter-27b75d3c968e1452122dbb09f76d506583963bec.tar.gz
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>
-rw-r--r--src/backends/meta-barrier-private.h9
-rw-r--r--src/backends/meta-barrier.c46
-rw-r--r--src/backends/native/meta-barrier-native.c36
-rw-r--r--src/backends/x11/meta-barrier-x11.c19
-rw-r--r--src/meta/barrier.h69
5 files changed, 82 insertions, 97 deletions
diff --git a/src/backends/meta-barrier-private.h b/src/backends/meta-barrier-private.h
index 16bfcdcd0..ebe22cb54 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 777287cc9..45ccd99f9 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 63acb6a79..0b325b846 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 8be0c9718..45ea1421b 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 72ed33cfc..a73bcd25b 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