From 6de3e4a07ec2460c8caffa08970b0affb54c67cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Fri, 2 Dec 2016 16:08:59 +0800 Subject: [PATCH] Turn MetaLogicalMonitor into a GObject This will make it easier to move various manually managed data and data now in MetaLogicalMonitor into GObject QData fields. https://bugzilla.gnome.org/show_bug.cgi?id=777732 --- src/backends/meta-monitor-manager-private.h | 7 +++++++ src/backends/meta-monitor-manager.c | 22 +++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h index 3c3565e78..5bc454a8c 100644 --- a/src/backends/meta-monitor-manager-private.h +++ b/src/backends/meta-monitor-manager-private.h @@ -59,6 +59,11 @@ typedef struct _MetaCRTCInfo MetaCRTCInfo; typedef struct _MetaOutputInfo MetaOutputInfo; typedef struct _MetaTileInfo MetaTileInfo; +#define META_TYPE_LOGICAL_MONITOR (meta_logical_monitor_get_type ()) +G_DECLARE_FINAL_TYPE (MetaLogicalMonitor, meta_logical_monitor, + META, LOGICAL_MONITOR, + GObject) + typedef enum { META_MONITOR_TRANSFORM_NORMAL, META_MONITOR_TRANSFORM_90, @@ -208,6 +213,8 @@ struct _MetaMonitorMode */ struct _MetaLogicalMonitor { + GObject parent; + int number; int xinerama_index; MetaRectangle rect; diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 9d473e322..2aacb9d90 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -40,6 +40,8 @@ #include "backends/x11/meta-monitor-manager-xrandr.h" #include "meta-backend-private.h" +G_DEFINE_TYPE (MetaLogicalMonitor, meta_logical_monitor, G_TYPE_OBJECT) + enum { CONFIRM_DISPLAY_CHANGE, SIGNALS_LAST @@ -138,7 +140,7 @@ construct_tile_monitor (MetaMonitorManager *manager, { MetaLogicalMonitor *logical_monitor = NULL; - logical_monitor = g_new0 (MetaLogicalMonitor, 1); + logical_monitor = g_object_new (META_TYPE_LOGICAL_MONITOR, NULL); logical_monitor->tile_group_id = output->tile_info.group_id; logical_monitor->refresh_rate = output->crtc->current_mode->refresh_rate; @@ -226,7 +228,9 @@ make_logical_config (MetaMonitorManager *manager) if (crtc->logical_monitor == NULL) { - MetaLogicalMonitor *logical_monitor = g_new0 (MetaLogicalMonitor, 1); + MetaLogicalMonitor *logical_monitor; + + logical_monitor = g_object_new (META_TYPE_LOGICAL_MONITOR, NULL); logical_monitor->number = monitor_number; logical_monitor->rect = crtc->rect; @@ -452,7 +456,7 @@ meta_monitor_manager_finalize (GObject *object) meta_monitor_manager_free_output_array (manager->outputs, manager->n_outputs); meta_monitor_manager_free_mode_array (manager->modes, manager->n_modes); meta_monitor_manager_free_crtc_array (manager->crtcs, manager->n_crtcs); - g_list_free_full (manager->logical_monitors, g_free); + g_list_free_full (manager->logical_monitors, g_object_unref); G_OBJECT_CLASS (meta_monitor_manager_parent_class)->finalize (object); } @@ -1573,7 +1577,7 @@ meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager) g_signal_emit_by_name (manager, "monitors-changed"); - g_list_free_full (old_logical_monitors, g_free); + g_list_free_full (old_logical_monitors, g_object_unref); } void @@ -1751,3 +1755,13 @@ meta_monitor_manager_get_is_builtin_display_on (MetaMonitorManager *manager) return meta_monitor_config_get_is_builtin_display_on (manager->config); } + +static void +meta_logical_monitor_init (MetaLogicalMonitor *logical_monitor) +{ +} + +static void +meta_logical_monitor_class_init (MetaLogicalMonitorClass *klass) +{ +}