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;