monitor-config-utils: Use g_list_copy_deep() to clone lists

It makes things a bit more easy to follow.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3596>
This commit is contained in:
Jonas Ådahl 2024-08-09 17:26:24 +02:00 committed by Marge Bot
parent b8394c68f5
commit e5827ea06b
2 changed files with 40 additions and 44 deletions

View File

@ -26,56 +26,52 @@
#include "core/boxes-private.h" #include "core/boxes-private.h"
#include "meta/meta-monitor-manager.h" #include "meta/meta-monitor-manager.h"
static GList * static MetaMonitorConfig *
meta_clone_monitor_config_list (GList *monitor_configs_in) meta_monitor_config_copy (MetaMonitorConfig *monitor_config)
{ {
MetaMonitorConfig *monitor_config_in; MetaMonitorConfig *new_monitor_config;
MetaMonitorConfig *monitor_config_out;
GList *monitor_configs_out = NULL;
GList *l;
for (l = monitor_configs_in; l; l = l->next) new_monitor_config = g_new0 (MetaMonitorConfig, 1);
{ *new_monitor_config = (MetaMonitorConfig) {
monitor_config_in = l->data; .monitor_spec = meta_monitor_spec_clone (monitor_config->monitor_spec),
monitor_config_out = g_new0 (MetaMonitorConfig, 1); .mode_spec = g_memdup2 (monitor_config->mode_spec,
*monitor_config_out = (MetaMonitorConfig) {
.monitor_spec = meta_monitor_spec_clone (monitor_config_in->monitor_spec),
.mode_spec = g_memdup2 (monitor_config_in->mode_spec,
sizeof (MetaMonitorModeSpec)), sizeof (MetaMonitorModeSpec)),
.enable_underscanning = monitor_config_in->enable_underscanning, .enable_underscanning = monitor_config->enable_underscanning,
.has_max_bpc = monitor_config_in->has_max_bpc, .has_max_bpc = monitor_config->has_max_bpc,
.max_bpc = monitor_config_in->max_bpc .max_bpc = monitor_config->max_bpc
}; };
monitor_configs_out =
g_list_append (monitor_configs_out, monitor_config_out); return new_monitor_config;
} }
return monitor_configs_out; static GList *
meta_clone_monitor_config_list (GList *monitor_configs)
{
return g_list_copy_deep (monitor_configs,
(GCopyFunc) meta_monitor_config_copy,
NULL);
}
static MetaLogicalMonitorConfig *
meta_logical_monitor_config_copy (MetaLogicalMonitorConfig *logical_monitor_config)
{
MetaLogicalMonitorConfig *new_logical_monitor_config;
new_logical_monitor_config =
g_memdup2 (logical_monitor_config,
sizeof (MetaLogicalMonitorConfig));
new_logical_monitor_config->monitor_configs =
meta_clone_monitor_config_list (logical_monitor_config->monitor_configs);
return new_logical_monitor_config;
} }
GList * GList *
meta_clone_logical_monitor_config_list (GList *logical_monitor_configs_in) meta_clone_logical_monitor_config_list (GList *logical_monitor_configs)
{ {
MetaLogicalMonitorConfig *logical_monitor_config_in; return g_list_copy_deep (logical_monitor_configs,
MetaLogicalMonitorConfig *logical_monitor_config_out; (GCopyFunc) meta_logical_monitor_config_copy,
GList *logical_monitor_configs_out = NULL; NULL);
GList *l;
for (l = logical_monitor_configs_in; l; l = l->next)
{
logical_monitor_config_in = l->data;
logical_monitor_config_out =
g_memdup2 (logical_monitor_config_in,
sizeof (MetaLogicalMonitorConfig));
logical_monitor_config_out->monitor_configs =
meta_clone_monitor_config_list (logical_monitor_config_in->monitor_configs);
logical_monitor_configs_out =
g_list_append (logical_monitor_configs_out, logical_monitor_config_out);
}
return logical_monitor_configs_out;
} }
static GList * static GList *

View File

@ -21,7 +21,7 @@
#include "backends/meta-monitor-manager-private.h" #include "backends/meta-monitor-manager-private.h"
GList * meta_clone_logical_monitor_config_list (GList *logical_monitor_configs_in); GList * meta_clone_logical_monitor_config_list (GList *logical_monitor_configs);
gboolean meta_verify_logical_monitor_config_list (GList *logical_monitor_configs, gboolean meta_verify_logical_monitor_config_list (GList *logical_monitor_configs,
MetaLogicalMonitorLayoutMode layout_mode, MetaLogicalMonitorLayoutMode layout_mode,