uint32_t lines_x;
uint32_t lines_y;
struct kmscon_cell *cells;
+
+ struct kmscon_font *font;
};
int kmscon_console_new(struct kmscon_console **out)
free(con->surf_buf);
}
+ kmscon_font_unref(con->font);
console_free_cells(con);
glDeleteTextures(1, &con->tex);
free(con);
int kmscon_console_resize(struct kmscon_console *con, uint32_t x, uint32_t y)
{
struct kmscon_cell *cells;
+ struct kmscon_font *font;
uint32_t size, i, j;
int ret;
if (!con || !size || size < x || size < y)
return -EINVAL;
+ ret = kmscon_font_new(&font);
+ if (ret)
+ return ret;
+
cells = malloc(sizeof(*cells) * size);
- if (!cells)
- return -ENOMEM;
+ if (!cells) {
+ ret = -ENOMEM;
+ goto err_font;
+ }
memset(cells, 0, sizeof(*cells) * size);
}
}
+ kmscon_font_unref(con->font);
+ con->font = font;
+
console_free_cells(con);
con->lines_x = x;
con->lines_y = y;
err_free:
free(cells);
+err_font:
+ kmscon_font_unref(font);
return ret;
}