Skip to content
Snippets Groups Projects
Commit 420334dc authored by Guido Gunther's avatar Guido Gunther :zzz:
Browse files

monitor-manager: Ignore uninitialized displays

Only add outputs to the list of displays that are fully configured
(that received wl_output's done event). This prevents us to from
accessing half initialized monitors.
parent 9d79a62a
No related branches found
No related tags found
No related merge requests found
...@@ -57,6 +57,9 @@ phosh_monitor_manager_handle_get_resources ( ...@@ -57,6 +57,9 @@ phosh_monitor_manager_handle_get_resources (
PhoshMonitor *monitor = g_ptr_array_index (self->monitors, i); PhoshMonitor *monitor = g_ptr_array_index (self->monitors, i);
GVariantBuilder transforms; GVariantBuilder transforms;
if (!monitor->done)
continue;
/* TODO: add transforms */ /* TODO: add transforms */
g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au")); g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au"));
g_variant_builder_add (&transforms, "u", 0); g_variant_builder_add (&transforms, "u", 0);
...@@ -80,6 +83,9 @@ phosh_monitor_manager_handle_get_resources ( ...@@ -80,6 +83,9 @@ phosh_monitor_manager_handle_get_resources (
GVariantBuilder crtcs, modes, clones, properties; GVariantBuilder crtcs, modes, clones, properties;
g_autofree gchar *output_name = NULL; g_autofree gchar *output_name = NULL;
if (!monitor->done)
continue;
g_variant_builder_init (&crtcs, G_VARIANT_TYPE ("au")); g_variant_builder_init (&crtcs, G_VARIANT_TYPE ("au"));
g_variant_builder_add (&crtcs, "u", i /* possible_crtc_index */); g_variant_builder_add (&crtcs, "u", i /* possible_crtc_index */);
g_variant_builder_init (&modes, G_VARIANT_TYPE ("au")); g_variant_builder_init (&modes, G_VARIANT_TYPE ("au"));
...@@ -113,6 +119,9 @@ phosh_monitor_manager_handle_get_resources ( ...@@ -113,6 +119,9 @@ phosh_monitor_manager_handle_get_resources (
PhoshMonitor *monitor = g_ptr_array_index (self->monitors, i); PhoshMonitor *monitor = g_ptr_array_index (self->monitors, i);
GArray *modes = monitor->modes; GArray *modes = monitor->modes;
if (!monitor->done)
continue;
for (int k = 0; k < modes->len; k++) { for (int k = 0; k < modes->len; k++) {
PhoshMonitorMode *mode = &g_array_index (modes, PhoshMonitorMode, k); PhoshMonitorMode *mode = &g_array_index (modes, PhoshMonitorMode, k);
g_variant_builder_add (&mode_builder, "(uxuudu)", g_variant_builder_add (&mode_builder, "(uxuudu)",
...@@ -376,6 +385,9 @@ phosh_monitor_manager_handle_get_current_state ( ...@@ -376,6 +385,9 @@ phosh_monitor_manager_handle_get_current_state (
g_autofree gchar *serial = NULL; g_autofree gchar *serial = NULL;
g_autofree gchar *connector = NULL; g_autofree gchar *connector = NULL;
if (!monitor->done)
continue;
g_variant_builder_init (&modes_builder, G_VARIANT_TYPE (MODES_FORMAT)); g_variant_builder_init (&modes_builder, G_VARIANT_TYPE (MODES_FORMAT));
for (int k = 0; k < monitor->modes->len; k++) { for (int k = 0; k < monitor->modes->len; k++) {
...@@ -434,6 +446,9 @@ phosh_monitor_manager_handle_get_current_state ( ...@@ -434,6 +446,9 @@ phosh_monitor_manager_handle_get_current_state (
g_autofree gchar *serial = NULL; g_autofree gchar *serial = NULL;
g_autofree gchar *connector = NULL; g_autofree gchar *connector = NULL;
if (!monitor->done)
continue;
connector = g_strdup_printf ("DP%d", i); connector = g_strdup_printf ("DP%d", i);
serial = g_strdup_printf ("00%d", i); serial = g_strdup_printf ("00%d", i);
g_variant_builder_init (&logical_monitor_monitors_builder, g_variant_builder_init (&logical_monitor_monitors_builder,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment