]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
drm: ignore non-desktop outputs
authorXaver Hugl <xaver.hugl@gmail.com>
Mon, 22 Aug 2022 19:42:19 +0000 (21:42 +0200)
committerRay Strode <halfline@gmail.com>
Tue, 30 Aug 2022 17:23:19 +0000 (17:23 +0000)
It doesn't make sense to display a boot screen on virtual reality headsets

src/plugins/renderers/drm/plugin.c

index 5796f6d20c73528fadfef580635d93a7d3b4556f..fb0c7e8add0d9eb7d38f715e38008d7be790f556 100644 (file)
@@ -130,6 +130,7 @@ typedef struct
         bool                        tiled;
         bool                        connected;
         bool                        uses_hw_rotation;
+        bool                        is_non_desktop;
 } ply_output_t;
 
 struct _ply_renderer_backend
@@ -504,9 +505,9 @@ connector_orientation_prop_to_rotation (drmModePropertyPtr prop,
 }
 
 static void
-ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *backend,
-                                               drmModeConnector       *connector,
-                                               ply_output_t           *output)
+ply_renderer_connector_get_properties (ply_renderer_backend_t *backend,
+                                       drmModeConnector       *connector,
+                                       ply_output_t           *output)
 {
         int i, primary_id, rotation_prop_id;
         drmModePropertyPtr prop;
@@ -534,6 +535,9 @@ ply_renderer_connector_get_rotation_and_tiled (ply_renderer_backend_t *backend,
                         output->link_status = connector->prop_values[i];
                         ply_trace ("link-status %d", output->link_status);
                 }
+                if (strcmp (prop->name, "non-desktop") == 0) {
+                        output->is_non_desktop = connector->prop_values[i];
+                }
 
                 drmModeFreeProperty (prop);
         }
@@ -1179,7 +1183,10 @@ get_output_info (ply_renderer_backend_t *backend,
                 goto out;
 
         output_get_controller_info (backend, connector, output);
-        ply_renderer_connector_get_rotation_and_tiled (backend, connector, output);
+        ply_renderer_connector_get_properties (backend, connector, output);
+        /* ignore non-desktop outputs */
+        if (output->is_non_desktop)
+                goto out;
         if (output->rotation == PLY_PIXEL_BUFFER_ROTATE_COUNTER_CLOCKWISE ||
             output->rotation == PLY_PIXEL_BUFFER_ROTATE_CLOCKWISE)
                 has_90_rotation = true;