From f71316c8508b3864876fc5ef9fb8e59a97c24f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 25 Feb 2020 18:37:21 +0100 Subject: [PATCH] output: Move configureable state to instance private That is is_presentation, is_primary, is_underscanning and backlight. The first three are set during CRTC assignment as they are only valid when active. The other is set separately, as it is untied to monitor configuration. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1287 --- src/backends/meta-logical-monitor.c | 3 +- src/backends/meta-monitor-manager-dummy.c | 42 ++++--------- src/backends/meta-monitor-manager-private.h | 18 ++++++ src/backends/meta-monitor-manager.c | 16 +++-- src/backends/meta-monitor.c | 4 +- src/backends/meta-output.c | 63 ++++++++++++++++++- src/backends/meta-output.h | 24 ++++--- .../native/meta-monitor-manager-kms.c | 37 +++-------- src/backends/native/meta-output-kms.c | 32 +++++----- .../x11/meta-monitor-manager-xrandr.c | 28 ++++----- src/backends/x11/meta-output-xrandr.c | 44 ++++++++----- src/tests/meta-monitor-manager-test.c | 41 ++++-------- src/tests/monitor-test-utils.c | 18 ++++-- 13 files changed, 215 insertions(+), 155 deletions(-) diff --git a/src/backends/meta-logical-monitor.c b/src/backends/meta-logical-monitor.c index 77d0f15a8..52f4833fc 100644 --- a/src/backends/meta-logical-monitor.c +++ b/src/backends/meta-logical-monitor.c @@ -178,7 +178,8 @@ meta_logical_monitor_add_monitor (MetaLogicalMonitor *logical_monitor, { MetaOutput *output = l_output->data; - is_presentation = is_presentation && output->is_presentation; + is_presentation = (is_presentation && + meta_output_is_presentation (output)); } } diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c index ff96df749..8b803cecc 100644 --- a/src/backends/meta-monitor-manager-dummy.c +++ b/src/backends/meta-monitor-manager-dummy.c @@ -228,7 +228,6 @@ append_monitor (MetaMonitorManager *manager, output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN; output->preferred_mode = g_list_last (*modes)->data; output->n_possible_clones = 0; - output->backlight = -1; output->connector_type = META_CONNECTOR_TYPE_LVDS; output->driver_private = output_dummy; output->driver_notify = @@ -336,7 +335,6 @@ append_tiled_monitor (MetaMonitorManager *manager, output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN; output->preferred_mode = preferred_mode; output->n_possible_clones = 0; - output->backlight = -1; output->connector_type = META_CONNECTOR_TYPE_LVDS; output->tile_info = (MetaTileInfo) { .group_id = tile_group_id, @@ -508,7 +506,6 @@ apply_crtc_assignments (MetaMonitorManager *manager, { g_autoptr (GList) to_configure_outputs = NULL; g_autoptr (GList) to_configure_crtcs = NULL; - GList *l; unsigned i; to_configure_outputs = g_list_copy (meta_gpu_get_outputs (get_gpu (manager))); @@ -527,7 +524,6 @@ apply_crtc_assignments (MetaMonitorManager *manager, } else { - MetaOutput *output; unsigned int j; meta_crtc_set_config (crtc, @@ -537,40 +533,26 @@ apply_crtc_assignments (MetaMonitorManager *manager, for (j = 0; j < crtc_info->outputs->len; j++) { + MetaOutput *output; + MetaOutputInfo *output_info; + output = ((MetaOutput**)crtc_info->outputs->pdata)[j]; to_configure_outputs = g_list_remove (to_configure_outputs, output); - meta_output_assign_crtc (output, crtc); + + output_info = meta_find_output_info (outputs, n_outputs, output); + meta_output_assign_crtc (output, crtc, output_info); } } } - for (i = 0; i < n_outputs; i++) - { - MetaOutputInfo *output_info = outputs[i]; - MetaOutput *output = output_info->output; - - output->is_primary = output_info->is_primary; - output->is_presentation = output_info->is_presentation; - } - - /* Disable CRTCs not mentioned in the list */ - for (l = to_configure_crtcs; l; l = l->next) - { - MetaCrtc *crtc = l->data; - - meta_crtc_unset_config (crtc); - } - - /* Disable outputs not mentioned in the list */ - for (l = to_configure_outputs; l; l = l->next) - { - MetaOutput *output = l->data; - - meta_output_unassign_crtc (output); - output->is_primary = FALSE; - } + g_list_foreach (to_configure_crtcs, + (GFunc) meta_crtc_unset_config, + NULL); + g_list_foreach (to_configure_outputs, + (GFunc) meta_output_unassign_crtc, + NULL); } static void diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h index a0a28b6c2..5dc752a34 100644 --- a/src/backends/meta-monitor-manager-private.h +++ b/src/backends/meta-monitor-manager-private.h @@ -387,4 +387,22 @@ gboolean meta_monitor_has_aspect_as_size (MetaMonitor *monitor); char * meta_monitor_manager_get_vendor_name (MetaMonitorManager *manager, const char *vendor); +static inline MetaOutputInfo * +meta_find_output_info (MetaOutputInfo **outputs, + unsigned int n_outputs, + MetaOutput *output) +{ + unsigned int i; + + for (i = 0; i < n_outputs; i++) + { + MetaOutputInfo *output_info = outputs[i]; + + if (output == output_info->output) + return output_info; + } + + return NULL; +} + #endif /* META_MONITOR_MANAGER_PRIVATE_H */ diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 060e3ed68..224239040 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -1107,18 +1107,18 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton, g_variant_builder_add (&properties, "{sv}", "display-name", g_variant_new_string (output->name)); g_variant_builder_add (&properties, "{sv}", "backlight", - g_variant_new_int32 (output->backlight)); + g_variant_new_int32 (meta_output_get_backlight (output))); g_variant_builder_add (&properties, "{sv}", "min-backlight-step", g_variant_new_int32 ((output->backlight_max - output->backlight_min) ? 100 / (output->backlight_max - output->backlight_min) : -1)); g_variant_builder_add (&properties, "{sv}", "primary", - g_variant_new_boolean (output->is_primary)); + g_variant_new_boolean (meta_output_is_primary (output))); g_variant_builder_add (&properties, "{sv}", "presentation", - g_variant_new_boolean (output->is_presentation)); + g_variant_new_boolean (meta_output_is_presentation (output))); g_variant_builder_add (&properties, "{sv}", "connector-type", g_variant_new_string (get_connector_type_name (output->connector_type))); g_variant_builder_add (&properties, "{sv}", "underscanning", - g_variant_new_boolean (output->is_underscanning)); + g_variant_new_boolean (meta_output_is_underscanning (output))); g_variant_builder_add (&properties, "{sv}", "supports-underscanning", g_variant_new_boolean (output->supports_underscanning)); @@ -2103,6 +2103,7 @@ meta_monitor_manager_handle_change_backlight (MetaDBusDisplayConfig *skeleton, { GList *combined_outputs; MetaOutput *output; + int new_backlight; if (serial != manager->serial) { @@ -2133,7 +2134,7 @@ meta_monitor_manager_handle_change_backlight (MetaDBusDisplayConfig *skeleton, return TRUE; } - if (output->backlight == -1 || + if (meta_output_get_backlight (output) == -1 || (output->backlight_min == 0 && output->backlight_max == 0)) { g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, @@ -2144,7 +2145,10 @@ meta_monitor_manager_handle_change_backlight (MetaDBusDisplayConfig *skeleton, META_MONITOR_MANAGER_GET_CLASS (manager)->change_backlight (manager, output, value); - meta_dbus_display_config_complete_change_backlight (skeleton, invocation, output->backlight); + new_backlight = meta_output_get_backlight (output); + meta_dbus_display_config_complete_change_backlight (skeleton, + invocation, + new_backlight); return TRUE; } diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c index 92184eea7..c6817d470 100644 --- a/src/backends/meta-monitor.c +++ b/src/backends/meta-monitor.c @@ -316,7 +316,7 @@ meta_monitor_is_primary (MetaMonitor *monitor) output = meta_monitor_get_main_output (monitor); - return output->is_primary; + return meta_output_is_primary (output); } gboolean @@ -336,7 +336,7 @@ meta_monitor_is_underscanning (MetaMonitor *monitor) output = meta_monitor_get_main_output (monitor); - return output->is_underscanning; + return meta_output_is_underscanning (output); } gboolean diff --git a/src/backends/meta-output.c b/src/backends/meta-output.c index 6a2ceb71f..8bd396c43 100644 --- a/src/backends/meta-output.c +++ b/src/backends/meta-output.c @@ -41,6 +41,13 @@ typedef struct _MetaOutputPrivate /* The CRTC driving this output, NULL if the output is not enabled */ MetaCrtc *crtc; + + gboolean is_primary; + gboolean is_presentation; + + gboolean is_underscanning; + + int backlight; } MetaOutputPrivate; G_DEFINE_TYPE_WITH_PRIVATE (MetaOutput, meta_output, G_TYPE_OBJECT) @@ -67,15 +74,61 @@ meta_output_get_name (MetaOutput *output) return output->name; } +gboolean +meta_output_is_primary (MetaOutput *output) +{ + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + return priv->is_primary; +} + +gboolean +meta_output_is_presentation (MetaOutput *output) +{ + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + return priv->is_presentation; +} + +gboolean +meta_output_is_underscanning (MetaOutput *output) +{ + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + return priv->is_underscanning; +} + void -meta_output_assign_crtc (MetaOutput *output, - MetaCrtc *crtc) +meta_output_set_backlight (MetaOutput *output, + int backlight) +{ + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + priv->backlight = backlight; +} + +int +meta_output_get_backlight (MetaOutput *output) +{ + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + return priv->backlight; +} + +void +meta_output_assign_crtc (MetaOutput *output, + MetaCrtc *crtc, + const MetaOutputInfo *output_info) { MetaOutputPrivate *priv = meta_output_get_instance_private (output); g_assert (crtc); g_set_object (&priv->crtc, crtc); + + priv->is_primary = output_info->is_primary; + priv->is_presentation = output_info->is_presentation; + priv->is_underscanning = output_info->is_underscanning; } void @@ -84,6 +137,9 @@ meta_output_unassign_crtc (MetaOutput *output) MetaOutputPrivate *priv = meta_output_get_instance_private (output); g_clear_object (&priv->crtc); + + priv->is_primary = FALSE; + priv->is_presentation = FALSE; } MetaCrtc * @@ -194,6 +250,9 @@ meta_output_finalize (GObject *object) static void meta_output_init (MetaOutput *output) { + MetaOutputPrivate *priv = meta_output_get_instance_private (output); + + priv->backlight = -1; } static void diff --git a/src/backends/meta-output.h b/src/backends/meta-output.h index 18850baf9..86d338c06 100644 --- a/src/backends/meta-output.h +++ b/src/backends/meta-output.h @@ -85,14 +85,9 @@ struct _MetaOutput MetaOutput **possible_clones; unsigned int n_possible_clones; - int backlight; int backlight_min; int backlight_max; - gboolean is_primary; - gboolean is_presentation; - - gboolean is_underscanning; gboolean supports_underscanning; gpointer driver_private; @@ -121,8 +116,23 @@ MetaGpu * meta_output_get_gpu (MetaOutput *output); const char * meta_output_get_name (MetaOutput *output); META_EXPORT_TEST -void meta_output_assign_crtc (MetaOutput *output, - MetaCrtc *crtc); +gboolean meta_output_is_primary (MetaOutput *output); + +META_EXPORT_TEST +gboolean meta_output_is_presentation (MetaOutput *output); + +META_EXPORT_TEST +gboolean meta_output_is_underscanning (MetaOutput *output); + +void meta_output_set_backlight (MetaOutput *output, + int backlight); + +int meta_output_get_backlight (MetaOutput *output); + +META_EXPORT_TEST +void meta_output_assign_crtc (MetaOutput *output, + MetaCrtc *crtc, + const MetaOutputInfo *output_info); META_EXPORT_TEST void meta_output_unassign_crtc (MetaOutput *output); diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c index 4d1ca7e21..469c5b6e8 100644 --- a/src/backends/native/meta-monitor-manager-kms.c +++ b/src/backends/native/meta-monitor-manager-kms.c @@ -219,40 +219,23 @@ apply_crtc_assignments (MetaMonitorManager *manager, for (j = 0; j < crtc_info->outputs->len; j++) { MetaOutput *output = g_ptr_array_index (crtc_info->outputs, j); + MetaOutputInfo *output_info; to_configure_outputs = g_list_remove (to_configure_outputs, output); - meta_output_assign_crtc (output, crtc); + + output_info = meta_find_output_info (outputs, n_outputs, output); + meta_output_assign_crtc (output, crtc, output_info); } } } - /* Disable CRTCs yet to be configured. */ - for (l = to_configure_crtcs; l; l = l->next) - { - MetaCrtc *crtc = l->data; - - meta_crtc_unset_config (crtc); - } - - for (i = 0; i < n_outputs; i++) - { - MetaOutputInfo *output_info = outputs[i]; - MetaOutput *output = output_info->output; - - output->is_primary = output_info->is_primary; - output->is_presentation = output_info->is_presentation; - output->is_underscanning = output_info->is_underscanning; - } - - /* Disable outputs yet to be configured. */ - for (l = to_configure_outputs; l; l = l->next) - { - MetaOutput *output = l->data; - - meta_output_unassign_crtc (output); - output->is_primary = FALSE; - } + g_list_foreach (to_configure_crtcs, + (GFunc) meta_crtc_unset_config, + NULL); + g_list_foreach (to_configure_outputs, + (GFunc) meta_output_unassign_crtc, + NULL); } static void diff --git a/src/backends/native/meta-output-kms.c b/src/backends/native/meta-output-kms.c index 3b690ec3e..170e63c79 100644 --- a/src/backends/native/meta-output-kms.c +++ b/src/backends/native/meta-output-kms.c @@ -61,7 +61,7 @@ meta_output_kms_set_underscan (MetaOutput *output, if (!output->supports_underscanning) return; - if (output->is_underscanning) + if (meta_output_is_underscanning (output)) { MetaCrtc *crtc; MetaCrtcConfig *crtc_config; @@ -363,7 +363,23 @@ meta_create_kms_output (MetaGpuKms *gpu_kms, if (meta_crtc_get_id (crtc) == connector_state->current_crtc_id) { - meta_output_assign_crtc (output, crtc); + MetaOutputInfo output_info; + + if (old_output) + { + output_info = (MetaOutputInfo) { + .is_primary = meta_output_is_primary (old_output), + .is_presentation = meta_output_is_presentation (old_output), + }; + } + else + { + output_info = (MetaOutputInfo) { + .is_primary = FALSE, + .is_presentation = FALSE, + }; + } + meta_output_assign_crtc (output, crtc, &output_info); break; } } @@ -373,17 +389,6 @@ meta_create_kms_output (MetaGpuKms *gpu_kms, meta_output_unassign_crtc (output); } - if (old_output) - { - output->is_primary = old_output->is_primary; - output->is_presentation = old_output->is_presentation; - } - else - { - output->is_primary = FALSE; - output->is_presentation = FALSE; - } - output->suggested_x = connector_state->suggested_x; output->suggested_y = connector_state->suggested_y; output->hotplug_mode_update = connector_state->hotplug_mode_update; @@ -407,7 +412,6 @@ meta_create_kms_output (MetaGpuKms *gpu_kms, */ output->backlight_min = 0; output->backlight_max = 0; - output->backlight = -1; return output; } diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c index d06f7daff..eab5f55ec 100644 --- a/src/backends/x11/meta-monitor-manager-xrandr.c +++ b/src/backends/x11/meta-monitor-manager-xrandr.c @@ -278,13 +278,15 @@ is_output_assignment_changed (MetaOutput *output, if (output_info->output != output) continue; - if (output->is_primary != output_info->is_primary) + if (meta_output_is_primary (output) != output_info->is_primary) return TRUE; - if (output->is_presentation != output_info->is_presentation) + if (meta_output_is_presentation (output) != + output_info->is_presentation) return TRUE; - if (output->is_underscanning != output_info->is_underscanning) + if (meta_output_is_underscanning (output) != + output_info->is_underscanning) return TRUE; output_is_found = TRUE; @@ -484,12 +486,15 @@ apply_crtc_assignments (MetaMonitorManager *manager, for (j = 0; j < n_output_ids; j++) { MetaOutput *output; + MetaOutputInfo *output_info; output = ((MetaOutput**)crtc_info->outputs->pdata)[j]; to_configure_outputs = g_list_remove (to_configure_outputs, output); - meta_output_assign_crtc (output, crtc); + + output_info = meta_find_output_info (outputs, n_outputs, output); + meta_output_assign_crtc (output, crtc, output_info); output_ids[j] = meta_output_get_id (output); } @@ -528,21 +533,12 @@ apply_crtc_assignments (MetaMonitorManager *manager, MetaOutputInfo *output_info = outputs[i]; MetaOutput *output = output_info->output; - output->is_primary = output_info->is_primary; - output->is_presentation = output_info->is_presentation; - output->is_underscanning = output_info->is_underscanning; - meta_output_xrandr_apply_mode (output); } - /* Disable outputs not mentioned in the list */ - for (l = to_configure_outputs; l; l = l->next) - { - MetaOutput *output = l->data; - - meta_output_unassign_crtc (output); - output->is_primary = FALSE; - } + g_list_foreach (to_configure_outputs, + (GFunc) meta_output_unassign_crtc, + NULL); XUngrabServer (manager_xrandr->xdisplay); XFlush (manager_xrandr->xdisplay); diff --git a/src/backends/x11/meta-output-xrandr.c b/src/backends/x11/meta-output-xrandr.c index 264b3affd..e134a8ab7 100644 --- a/src/backends/x11/meta-output-xrandr.c +++ b/src/backends/x11/meta-output-xrandr.c @@ -132,16 +132,19 @@ meta_output_xrandr_apply_mode (MetaOutput *output) { Display *xdisplay = xdisplay_from_output (output); - if (output->is_primary) + if (meta_output_is_primary (output)) { XRRSetOutputPrimary (xdisplay, DefaultRootWindow (xdisplay), (XID) meta_output_get_id (output)); } - output_set_presentation_xrandr (output, output->is_presentation); + output_set_presentation_xrandr (output, meta_output_is_presentation (output)); if (output->supports_underscanning) - output_set_underscanning_xrandr (output, output->is_underscanning); + { + output_set_underscanning_xrandr (output, + meta_output_is_underscanning (output)); + } } static int @@ -172,7 +175,7 @@ meta_output_xrandr_change_backlight (MetaOutput *output, 1, &hw_value); /* We're not selecting for property notifies, so update the value immediately */ - output->backlight = normalize_backlight (output, hw_value); + meta_output_set_backlight (output, normalize_backlight (output, hw_value)); } static gboolean @@ -730,8 +733,9 @@ output_get_modes (MetaOutput *output, } static void -output_get_crtcs (MetaOutput *output, - XRROutputInfo *xrandr_output) +output_get_crtcs (MetaOutput *output, + XRROutputInfo *xrandr_output, + MetaCrtc **assigned_crtc) { MetaGpu *gpu = meta_output_get_gpu (output); unsigned int i; @@ -764,10 +768,12 @@ output_get_crtcs (MetaOutput *output, if ((XID) meta_crtc_get_id (crtc) == xrandr_output->crtc) { - meta_output_assign_crtc (output, crtc); - break; + *assigned_crtc = crtc; + return; } } + + *assigned_crtc = NULL; } MetaOutput * @@ -778,6 +784,7 @@ meta_create_xrandr_output (MetaGpuXrandr *gpu_xrandr, { MetaOutput *output; GBytes *edid; + MetaCrtc *assigned_crtc; unsigned int i; output = g_object_new (META_TYPE_OUTPUT, @@ -812,7 +819,19 @@ meta_create_xrandr_output (MetaGpuXrandr *gpu_xrandr, output_get_tile_info (output); output_get_modes (output, xrandr_output); - output_get_crtcs (output, xrandr_output); + output_get_crtcs (output, xrandr_output, &assigned_crtc); + + if (assigned_crtc) + { + MetaOutputInfo output_info; + + output_info = (MetaOutputInfo) { + .is_primary = (XID) meta_output_get_id (output) == primary_output, + .is_presentation = output_get_presentation_xrandr (output), + .is_underscanning = output_get_underscanning_xrandr (output), + }; + meta_output_assign_crtc (output, assigned_crtc, &output_info); + } output->n_possible_clones = xrandr_output->nclone; output->possible_clones = g_new0 (MetaOutput *, @@ -827,17 +846,12 @@ meta_create_xrandr_output (MetaGpuXrandr *gpu_xrandr, output->possible_clones[i] = GINT_TO_POINTER (xrandr_output->clones[i]); } - output->is_primary = (XID) meta_output_get_id (output) == primary_output; - output->is_presentation = output_get_presentation_xrandr (output); - output->is_underscanning = output_get_underscanning_xrandr (output); output->supports_underscanning = output_get_supports_underscanning_xrandr (output); output_get_backlight_limits_xrandr (output); if (!(output->backlight_min == 0 && output->backlight_max == 0)) - output->backlight = output_get_backlight_xrandr (output); - else - output->backlight = -1; + meta_output_set_backlight (output, output_get_backlight_xrandr (output)); if (output->n_modes == 0 || output->n_possible_crtcs == 0) { diff --git a/src/tests/meta-monitor-manager-test.c b/src/tests/meta-monitor-manager-test.c index d76ada57a..b4eada676 100644 --- a/src/tests/meta-monitor-manager-test.c +++ b/src/tests/meta-monitor-manager-test.c @@ -125,7 +125,6 @@ apply_crtc_assignments (MetaMonitorManager *manager, MetaGpu *gpu = meta_backend_test_get_gpu (backend_test); g_autoptr (GList) to_configure_outputs = NULL; g_autoptr (GList) to_configure_crtcs = NULL; - GList *l; unsigned int i; to_configure_outputs = g_list_copy (meta_gpu_get_outputs (gpu)); @@ -144,7 +143,6 @@ apply_crtc_assignments (MetaMonitorManager *manager, } else { - MetaOutput *output; unsigned int j; meta_crtc_set_config (crtc, @@ -154,41 +152,26 @@ apply_crtc_assignments (MetaMonitorManager *manager, for (j = 0; j < crtc_info->outputs->len; j++) { + MetaOutput *output; + MetaOutputInfo *output_info; + output = ((MetaOutput**)crtc_info->outputs->pdata)[j]; to_configure_outputs = g_list_remove (to_configure_outputs, output); - meta_output_assign_crtc (output, crtc); + + output_info = meta_find_output_info (outputs, n_outputs, output); + meta_output_assign_crtc (output, crtc, output_info); } } } - for (i = 0; i < n_outputs; i++) - { - MetaOutputInfo *output_info = outputs[i]; - MetaOutput *output = output_info->output; - - output->is_primary = output_info->is_primary; - output->is_presentation = output_info->is_presentation; - output->is_underscanning = output_info->is_underscanning; - } - - /* Disable CRTCs not mentioned in the list */ - for (l = to_configure_crtcs; l; l = l->next) - { - MetaCrtc *crtc = l->data; - - meta_crtc_unset_config (crtc); - } - - /* Disable outputs not mentioned in the list */ - for (l = to_configure_outputs; l; l = l->next) - { - MetaOutput *output = l->data; - - meta_output_unassign_crtc (output); - output->is_primary = FALSE; - } + g_list_foreach (to_configure_crtcs, + (GFunc) meta_crtc_unset_config, + NULL); + g_list_foreach (to_configure_outputs, + (GFunc) meta_output_unassign_crtc, + NULL); } static void diff --git a/src/tests/monitor-test-utils.c b/src/tests/monitor-test-utils.c index 725c33623..921b8a2ef 100644 --- a/src/tests/monitor-test-utils.c +++ b/src/tests/monitor-test-utils.c @@ -285,7 +285,7 @@ check_logical_monitor (MetaMonitorManager *monitor_manager, MetaOutput *output = l_output->data; MetaCrtc *crtc; - if (output->is_primary) + if (meta_output_is_primary (output)) { g_assert_null (primary_output); primary_output = output; @@ -296,7 +296,7 @@ check_logical_monitor (MetaMonitorManager *monitor_manager, meta_monitor_get_logical_monitor (monitor) == logical_monitor); g_assert_cmpint (logical_monitor->is_presentation, ==, - output->is_presentation); + meta_output_is_presentation (output)); } } @@ -370,7 +370,7 @@ check_monitor_configuration (MonitorTestCaseExpect *expect) g_assert (output == output_from_winsys_id (backend, winsys_id)); g_assert_cmpint (expect->monitors[i].is_underscanning, ==, - output->is_underscanning); + meta_output_is_underscanning (output)); } meta_monitor_get_physical_dimensions (monitor, &width_mm, &height_mm); @@ -655,7 +655,15 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup, NULL); if (crtc) - meta_output_assign_crtc (output, crtc); + { + MetaOutputInfo output_info; + + output_info = (MetaOutputInfo) { + .is_underscanning = setup->outputs[i].is_underscanning, + }; + meta_output_assign_crtc (output, crtc, &output_info); + } + output->name = (is_laptop_panel ? g_strdup_printf ("eDP-%d", ++n_laptop_panels) : g_strdup_printf ("DP-%d", @@ -676,11 +684,9 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup, output->possible_crtcs = possible_crtcs; output->n_possible_clones = 0; output->possible_clones = NULL; - output->backlight = -1; output->connector_type = (is_laptop_panel ? META_CONNECTOR_TYPE_eDP : META_CONNECTOR_TYPE_DisplayPort); output->tile_info = setup->outputs[i].tile_info; - output->is_underscanning = setup->outputs[i].is_underscanning; output->panel_orientation_transform = setup->outputs[i].panel_orientation_transform; output->driver_private = output_test;