ply_renderer_head_t *head);
static void flush_head (ply_renderer_backend_t *backend,
ply_renderer_head_t *head);
+static void close_device (ply_renderer_backend_t *backend);
static bool
ply_renderer_buffer_map (ply_renderer_backend_t *backend,
if (!ply_terminal_open (backend->terminal)) {
ply_trace ("could not open terminal: %m");
- return false;
+ goto failed;
}
if (!ply_terminal_is_vt (backend->terminal)) {
ply_trace ("terminal is not a VT");
ply_terminal_close (backend->terminal);
- return false;
+ goto failed;
}
ply_terminal_watch_for_active_vt_change (backend->terminal,
backend);
return true;
+
+failed:
+ close_device (backend);
+ return false;
}
static void