diff options
author | Ray Strode <rstrode@redhat.com> | 2014-01-24 15:08:10 -0500 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2014-01-24 15:14:19 -0500 |
commit | 9255a442e93a4fce835ca6e7e9dc9023be6eaf30 (patch) | |
tree | 1be11d77e5149b147e5e80c5daa4be815db8d885 | |
parent | 382305e4a9f7b4c221968fcba7394b1cc03b454e (diff) |
seat: proceed without renderer if type is AUTO and renderer fails
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.
-rw-r--r-- | src/libply-splash-core/ply-seat.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/libply-splash-core/ply-seat.c b/src/libply-splash-core/ply-seat.c index d9c7a2b3..541b29e6 100644 --- a/src/libply-splash-core/ply-seat.c +++ b/src/libply-splash-core/ply-seat.c @@ -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) |