From 6113b2824f8d43af8b5cccc74133e9e3a405e32f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 25 Mar 2025 23:59:50 +0100 Subject: [PATCH] monitor-config-utils: Add monitors config copy function Part-of: --- src/backends/meta-monitor-config-utils.c | 30 ++++++++++++++++++++++++ src/backends/meta-monitor-config-utils.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/src/backends/meta-monitor-config-utils.c b/src/backends/meta-monitor-config-utils.c index f1b1a569a..c9c0b7e1b 100644 --- a/src/backends/meta-monitor-config-utils.c +++ b/src/backends/meta-monitor-config-utils.c @@ -74,6 +74,36 @@ meta_clone_logical_monitor_config_list (GList *logical_monitor_configs) NULL); } +MetaMonitorsConfig * +meta_monitors_config_copy (MetaMonitorsConfig *monitors_config) +{ + MetaMonitorsConfig *new_monitors_config; + GList *logical_monitor_configs; + GList *disabled_monitor_specs; + GList *for_lease_monitor_specs; + + logical_monitor_configs = + meta_clone_logical_monitor_config_list (monitors_config->logical_monitor_configs); + disabled_monitor_specs = + g_list_copy_deep (monitors_config->disabled_monitor_specs, + (GCopyFunc) meta_monitor_spec_clone, + NULL); + for_lease_monitor_specs = + g_list_copy_deep (monitors_config->for_lease_monitor_specs, + (GCopyFunc) meta_monitor_spec_clone, + NULL); + + new_monitors_config = + meta_monitors_config_new_full (logical_monitor_configs, + disabled_monitor_specs, + for_lease_monitor_specs, + monitors_config->layout_mode, + monitors_config->flags); + new_monitors_config->switch_config = monitors_config->switch_config; + + return new_monitors_config; +} + static GList * find_adjacent_neighbours (GList *logical_monitor_configs, MetaLogicalMonitorConfig *logical_monitor_config) diff --git a/src/backends/meta-monitor-config-utils.h b/src/backends/meta-monitor-config-utils.h index 6e1348931..2b2b9042b 100644 --- a/src/backends/meta-monitor-config-utils.h +++ b/src/backends/meta-monitor-config-utils.h @@ -23,6 +23,8 @@ GList * meta_clone_logical_monitor_config_list (GList *logical_monitor_configs); +MetaMonitorsConfig * meta_monitors_config_copy (MetaMonitorsConfig *monitors_config); + gboolean meta_verify_logical_monitor_config_list (GList *logical_monitor_configs, MetaLogicalMonitorLayoutMode layout_mode, MetaMonitorManager *monitor_manager,