[mutter] tests/wayland: Make display helper a GObject



commit d5367f733228857149afc136283e225d8034aa98
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Wed May 11 23:41:32 2022 +0200

    tests/wayland: Make display helper a GObject
    
    This is in preparation for adding signals.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2416>

 .../wayland-test-clients/invalid-subsurfaces.c     |  4 +---
 .../invalid-xdg-shell-actions.c                    |  2 +-
 src/tests/wayland-test-clients/meson.build         |  1 +
 .../wayland-test-client-utils.c                    | 28 ++++++++++++++++++----
 .../wayland-test-client-utils.h                    |  9 +++++--
 5 files changed, 33 insertions(+), 11 deletions(-)
---
diff --git a/src/tests/wayland-test-clients/invalid-subsurfaces.c 
b/src/tests/wayland-test-clients/invalid-subsurfaces.c
index 843bef1fa1..103456e933 100644
--- a/src/tests/wayland-test-clients/invalid-subsurfaces.c
+++ b/src/tests/wayland-test-clients/invalid-subsurfaces.c
@@ -24,8 +24,6 @@
 
 #include "wayland-test-client-utils.h"
 
-#include "xdg-shell-client-protocol.h"
-
 static WaylandDisplay *display;
 
 static void
@@ -40,7 +38,7 @@ connect_to_display (void)
 static void
 clean_up_display (void)
 {
-  g_clear_pointer (&display, wayland_display_free);
+  g_clear_object (&display);
 }
 
 static void
diff --git a/src/tests/wayland-test-clients/invalid-xdg-shell-actions.c 
b/src/tests/wayland-test-clients/invalid-xdg-shell-actions.c
index 68287d03ba..adcca9567b 100644
--- a/src/tests/wayland-test-clients/invalid-xdg-shell-actions.c
+++ b/src/tests/wayland-test-clients/invalid-xdg-shell-actions.c
@@ -207,7 +207,7 @@ test_empty_window_geometry (void)
 
   g_clear_pointer (&xdg_toplevel, xdg_toplevel_destroy);
   g_clear_pointer (&xdg_surface, xdg_surface_destroy);
-  g_clear_pointer (&display, wayland_display_free);
+  g_clear_object (&display);
 }
 
 int
diff --git a/src/tests/wayland-test-clients/meson.build b/src/tests/wayland-test-clients/meson.build
index 48fad9afbe..92f85f51b4 100644
--- a/src/tests/wayland-test-clients/meson.build
+++ b/src/tests/wayland-test-clients/meson.build
@@ -66,6 +66,7 @@ foreach test : wayland_test_clients
     c_args: tests_c_args,
     dependencies: [
       glib_dep,
+      gobject_dep,
       wayland_client_dep,
     ],
     install: have_installed_tests,
diff --git a/src/tests/wayland-test-clients/wayland-test-client-utils.c 
b/src/tests/wayland-test-clients/wayland-test-client-utils.c
index 7485e5868e..7cb12c6e03 100644
--- a/src/tests/wayland-test-clients/wayland-test-client-utils.c
+++ b/src/tests/wayland-test-clients/wayland-test-client-utils.c
@@ -32,6 +32,8 @@
 #include <string.h>
 #include <unistd.h>
 
+G_DEFINE_TYPE (WaylandDisplay, wayland_display, G_TYPE_OBJECT)
+
 static int
 create_tmpfile_cloexec (char *tmpname)
 {
@@ -107,7 +109,7 @@ handle_registry_global (void               *user_data,
                         const char         *interface,
                         uint32_t            version)
 {
-  WaylandDisplay *display = user_data;
+  WaylandDisplay *display = WAYLAND_DISPLAY (user_data);
 
   if (strcmp (interface, "wl_compositor") == 0)
     {
@@ -159,7 +161,7 @@ wayland_display_new (WaylandDisplayCapabilities capabilities)
 {
   WaylandDisplay *display;
 
-  display = g_new0 (WaylandDisplay, 1);
+  display = g_object_new (wayland_display_get_type (), NULL);
 
   display->capabilities = capabilities;
   display->display = wl_display_connect (NULL);
@@ -182,9 +184,25 @@ wayland_display_new (WaylandDisplayCapabilities capabilities)
   return display;
 }
 
-void
-wayland_display_free (WaylandDisplay *display)
+static void
+wayland_display_finalize (GObject *object)
 {
+  WaylandDisplay *display = WAYLAND_DISPLAY (object);
+
   wl_display_disconnect (display->display);
-  g_free (display);
+
+  G_OBJECT_CLASS (wayland_display_parent_class)->finalize (object);
+}
+
+static void
+wayland_display_class_init (WaylandDisplayClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->finalize = wayland_display_finalize;
+}
+
+static void
+wayland_display_init (WaylandDisplay *display)
+{
 }
diff --git a/src/tests/wayland-test-clients/wayland-test-client-utils.h 
b/src/tests/wayland-test-clients/wayland-test-client-utils.h
index f7f213f718..1f65aea008 100644
--- a/src/tests/wayland-test-clients/wayland-test-client-utils.h
+++ b/src/tests/wayland-test-clients/wayland-test-client-utils.h
@@ -1,6 +1,7 @@
 #ifndef WAYLAND_TEST_CLIENT_UTILS_H
 #define WAYLAND_TEST_CLIENT_UTILS_H
 
+#include <glib-object.h>
 #include <stdio.h>
 #include <wayland-client.h>
 
@@ -15,6 +16,8 @@ typedef enum _WaylandDisplayCapabilities
 
 typedef struct _WaylandDisplay
 {
+  GObject parent;
+
   WaylandDisplayCapabilities capabilities;
 
   struct wl_display *display;
@@ -26,10 +29,12 @@ typedef struct _WaylandDisplay
   struct test_driver *test_driver;
 } WaylandDisplay;
 
+G_DECLARE_FINAL_TYPE (WaylandDisplay, wayland_display,
+                      WAYLAND, DISPLAY,
+                      GObject)
+
 int create_anonymous_file (off_t size);
 
 WaylandDisplay * wayland_display_new (WaylandDisplayCapabilities capabilities);
 
-void wayland_display_free (WaylandDisplay *display);
-
 #endif /* WAYLAND_TEST_CLIENT_UTILS_H */


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