]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
seat: proceed without renderer if type is AUTO and renderer fails
authorRay Strode <rstrode@redhat.com>
Fri, 24 Jan 2014 20:08:10 +0000 (15:08 -0500)
committerRay Strode <rstrode@redhat.com>
Fri, 24 Jan 2014 20:14:19 +0000 (15:14 -0500)
If a seat gets opened with a renderer type of AUTO, and the renderer
fails to open, then it's okay and expected to proceed without a
renderer (and just use the terminal). The code attempted to do this
but failed to nullify the seat->renderer object, so it ended up
going down the renderer-active code path.

This commit fixes that.

src/libply-splash-core/ply-seat.c

index d9c7a2b37fef8a596c87d1ceebce975d351a0586..541b29e643b609c1cc44cb3bf01c04f9bcb04060 100644 (file)
@@ -117,15 +117,22 @@ ply_seat_open (ply_seat_t          *seat,
 
       renderer = ply_renderer_new (renderer_type, device, seat->terminal);
 
-      if (!ply_renderer_open (renderer) && renderer_type != PLY_RENDERER_TYPE_AUTO)
+      if (!ply_renderer_open (renderer))
         {
           ply_trace ("could not open renderer for %s", device);
           ply_renderer_free (renderer);
-          return false;
-        }
 
-      seat->renderer = renderer;
-      seat->renderer_active = true;
+          seat->renderer = NULL;
+          seat->renderer_active = false;
+
+          if (renderer_type != PLY_RENDERER_TYPE_AUTO)
+            return false;
+        }
+      else
+        {
+          seat->renderer = renderer;
+          seat->renderer_active = true;
+        }
     }
 
   if (seat->renderer != NULL)