console: remove cells_x/y cache
We don't need this anymore as we now have direct access to the buffer structure. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
parent
d2786e12d3
commit
4897b4ce68
109
src/console.c
109
src/console.c
@ -104,8 +104,6 @@ struct kmscon_console {
|
||||
|
||||
/* console cells */
|
||||
struct kmscon_buffer *cells;
|
||||
unsigned int cells_x;
|
||||
unsigned int cells_y;
|
||||
unsigned int margin_top; /* idx of first scroll line */
|
||||
unsigned int margin_bottom; /* idx of last scroll line */
|
||||
bool rel_addr; /* is relative addressing used? */
|
||||
@ -822,22 +820,6 @@ static void kmscon_buffer_draw(struct kmscon_buffer *buf,
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int kmscon_buffer_get_width(struct kmscon_buffer *buf)
|
||||
{
|
||||
if (!buf)
|
||||
return 0;
|
||||
|
||||
return buf->size_x;
|
||||
}
|
||||
|
||||
static unsigned int kmscon_buffer_get_height(struct kmscon_buffer *buf)
|
||||
{
|
||||
if (!buf)
|
||||
return 0;
|
||||
|
||||
return buf->size_y;
|
||||
}
|
||||
|
||||
static void kmscon_buffer_write(struct kmscon_buffer *buf, unsigned int x,
|
||||
unsigned int y, kmscon_symbol_t ch)
|
||||
{
|
||||
@ -1050,11 +1032,9 @@ int kmscon_console_new(struct kmscon_console **out,
|
||||
if (ret)
|
||||
goto err_free;
|
||||
|
||||
con->cells_x = kmscon_buffer_get_width(con->cells);
|
||||
con->cells_y = kmscon_buffer_get_height(con->cells);
|
||||
con->margin_top = kmscon_buffer_get_mtop(con->cells);
|
||||
num = kmscon_buffer_get_mbottom(con->cells);
|
||||
con->margin_bottom = con->cells_y - 1 - num;
|
||||
con->margin_bottom = con->cells->size_y - 1 - num;
|
||||
|
||||
log_debug("new console");
|
||||
kmscon_font_factory_ref(con->ff);
|
||||
@ -1099,7 +1079,7 @@ unsigned int kmscon_console_get_width(struct kmscon_console *con)
|
||||
if (!con)
|
||||
return 0;
|
||||
|
||||
return con->cells_x;
|
||||
return con->cells->size_x;
|
||||
}
|
||||
|
||||
unsigned int kmscon_console_get_height(struct kmscon_console *con)
|
||||
@ -1107,7 +1087,7 @@ unsigned int kmscon_console_get_height(struct kmscon_console *con)
|
||||
if (!con)
|
||||
return 0;
|
||||
|
||||
return con->cells_y;
|
||||
return con->cells->size_y;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1140,13 +1120,14 @@ int kmscon_console_resize(struct kmscon_console *con, unsigned int x,
|
||||
return -EINVAL;
|
||||
|
||||
if (!x)
|
||||
x = con->cells_x;
|
||||
x = con->cells->size_x;
|
||||
if (!y)
|
||||
y = con->cells_y;
|
||||
y = con->cells->size_y;
|
||||
if (!height)
|
||||
height = con->res_y;
|
||||
|
||||
if (x == con->cells_x && y == con->cells_y && height == con->res_y)
|
||||
if (x == con->cells->size_x && y == con->cells->size_y &&
|
||||
height == con->res_y)
|
||||
return 0;
|
||||
|
||||
log_debug("resizing to %ux%u:%u", x, y, height);
|
||||
@ -1155,16 +1136,14 @@ int kmscon_console_resize(struct kmscon_console *con, unsigned int x,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
con->cells_x = kmscon_buffer_get_width(con->cells);
|
||||
con->cells_y = kmscon_buffer_get_height(con->cells);
|
||||
con->margin_top = kmscon_buffer_get_mtop(con->cells);
|
||||
num = kmscon_buffer_get_mbottom(con->cells);
|
||||
con->margin_bottom = con->cells_y - 1 - num;
|
||||
con->margin_bottom = con->cells->size_y - 1 - num;
|
||||
|
||||
kmscon_console_move_to(con, con->cursor_x, con->cursor_y);
|
||||
|
||||
ret = kmscon_font_factory_load(con->ff, &font, 0,
|
||||
height / con->cells_y);
|
||||
height / con->cells->size_y);
|
||||
if (ret) {
|
||||
log_err("cannot create new font: %d", ret);
|
||||
return ret;
|
||||
@ -1172,7 +1151,7 @@ int kmscon_console_resize(struct kmscon_console *con, unsigned int x,
|
||||
|
||||
kmscon_font_unref(con->font);
|
||||
con->font = font;
|
||||
con->res_x = con->cells_x * kmscon_font_get_width(con->font);
|
||||
con->res_x = con->cells->size_x * kmscon_font_get_width(con->font);
|
||||
con->res_y = height;
|
||||
log_debug("new resolution %ux%u", con->res_x, con->res_y);
|
||||
|
||||
@ -1199,7 +1178,7 @@ void kmscon_console_write(struct kmscon_console *con, kmscon_symbol_t ch)
|
||||
if (!con)
|
||||
return;
|
||||
|
||||
if (con->cursor_x >= con->cells_x) {
|
||||
if (con->cursor_x >= con->cells->size_x) {
|
||||
if (con->auto_wrap) {
|
||||
con->cursor_x = 0;
|
||||
con->cursor_y++;
|
||||
@ -1208,7 +1187,7 @@ void kmscon_console_write(struct kmscon_console *con, kmscon_symbol_t ch)
|
||||
kmscon_buffer_scroll_up(con->cells, 1);
|
||||
}
|
||||
} else {
|
||||
con->cursor_x = con->cells_x - 1;
|
||||
con->cursor_x = con->cells->size_x - 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1234,12 +1213,12 @@ void kmscon_console_backspace(struct kmscon_console *con)
|
||||
if (!con)
|
||||
return;
|
||||
|
||||
if (con->cursor_x >= con->cells_x) {
|
||||
con->cursor_x = con->cells_x - 2;
|
||||
if (con->cursor_x >= con->cells->size_x) {
|
||||
con->cursor_x = con->cells->size_x - 2;
|
||||
} else if (con->cursor_x > 0) {
|
||||
con->cursor_x--;
|
||||
} else if (con->auto_wrap) {
|
||||
con->cursor_x = con->cells_x - 1;
|
||||
con->cursor_x = con->cells->size_x - 1;
|
||||
kmscon_console_move_up(con, 1, true);
|
||||
}
|
||||
}
|
||||
@ -1251,15 +1230,15 @@ void kmscon_console_move_to(struct kmscon_console *con, unsigned int x,
|
||||
return;
|
||||
|
||||
con->cursor_x = to_abs_x(con, x);
|
||||
if (con->cursor_x >= con->cells_x)
|
||||
con->cursor_x = con->cells_x - 1;
|
||||
if (con->cursor_x >= con->cells->size_x)
|
||||
con->cursor_x = con->cells->size_x - 1;
|
||||
|
||||
con->cursor_y = to_abs_y(con, y);
|
||||
if (con->cursor_y > con->margin_bottom) {
|
||||
if (con->rel_addr)
|
||||
con->cursor_y = con->margin_bottom;
|
||||
else if (con->cursor_y >= con->cells_y)
|
||||
con->cursor_y = con->cells_y - 1;
|
||||
else if (con->cursor_y >= con->cells->size_y)
|
||||
con->cursor_y = con->cells->size_y - 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1271,8 +1250,8 @@ void kmscon_console_move_up(struct kmscon_console *con, unsigned int num,
|
||||
if (!con || !num)
|
||||
return;
|
||||
|
||||
if (num > con->cells_y)
|
||||
num = con->cells_y;
|
||||
if (num > con->cells->size_y)
|
||||
num = con->cells->size_y;
|
||||
|
||||
if (con->rel_addr) {
|
||||
diff = con->cursor_y - con->margin_top;
|
||||
@ -1304,8 +1283,8 @@ void kmscon_console_move_down(struct kmscon_console *con, unsigned int num,
|
||||
if (!con || !num)
|
||||
return;
|
||||
|
||||
if (num > con->cells_y)
|
||||
num = con->cells_y;
|
||||
if (num > con->cells->size_y)
|
||||
num = con->cells->size_y;
|
||||
|
||||
if (con->rel_addr) {
|
||||
diff = con->margin_bottom - con->cursor_y;
|
||||
@ -1318,12 +1297,12 @@ void kmscon_console_move_down(struct kmscon_console *con, unsigned int num,
|
||||
con->cursor_y += num;
|
||||
}
|
||||
} else {
|
||||
diff = con->cells_y - con->cursor_y - 1;
|
||||
diff = con->cells->size_y - con->cursor_y - 1;
|
||||
if (num > diff) {
|
||||
num -= diff;
|
||||
if (scroll)
|
||||
kmscon_buffer_scroll_up(con->cells, num);
|
||||
con->cursor_y = con->cells_y - 1;
|
||||
con->cursor_y = con->cells->size_y - 1;
|
||||
} else {
|
||||
con->cursor_y += num;
|
||||
}
|
||||
@ -1335,11 +1314,11 @@ void kmscon_console_move_left(struct kmscon_console *con, unsigned int num)
|
||||
if (!con || !num)
|
||||
return;
|
||||
|
||||
if (num > con->cells_x)
|
||||
num = con->cells_x;
|
||||
if (num > con->cells->size_x)
|
||||
num = con->cells->size_x;
|
||||
|
||||
if (con->cursor_x >= con->cells_x)
|
||||
con->cursor_x = con->cells_x - 1;
|
||||
if (con->cursor_x >= con->cells->size_x)
|
||||
con->cursor_x = con->cells->size_x - 1;
|
||||
|
||||
if (num > con->cursor_x)
|
||||
con->cursor_x = 0;
|
||||
@ -1352,11 +1331,11 @@ void kmscon_console_move_right(struct kmscon_console *con, unsigned int num)
|
||||
if (!con || !num)
|
||||
return;
|
||||
|
||||
if (num > con->cells_x)
|
||||
num = con->cells_x;
|
||||
if (num > con->cells->size_x)
|
||||
num = con->cells->size_x;
|
||||
|
||||
if (num + con->cursor_x >= con->cells_x)
|
||||
con->cursor_x = con->cells_x - 1;
|
||||
if (num + con->cursor_x >= con->cells->size_x)
|
||||
con->cursor_x = con->cells->size_x - 1;
|
||||
else
|
||||
con->cursor_x += num;
|
||||
}
|
||||
@ -1366,7 +1345,7 @@ void kmscon_console_move_line_end(struct kmscon_console *con)
|
||||
if (!con)
|
||||
return;
|
||||
|
||||
con->cursor_x = con->cells_x - 1;
|
||||
con->cursor_x = con->cells->size_x - 1;
|
||||
}
|
||||
|
||||
void kmscon_console_move_line_home(struct kmscon_console *con)
|
||||
@ -1384,8 +1363,8 @@ void kmscon_console_erase_cursor(struct kmscon_console *con)
|
||||
if (!con)
|
||||
return;
|
||||
|
||||
if (con->cursor_x >= con->cells_x)
|
||||
x = con->cells_x - 1;
|
||||
if (con->cursor_x >= con->cells->size_x)
|
||||
x = con->cells->size_x - 1;
|
||||
else
|
||||
x = con->cursor_x;
|
||||
|
||||
@ -1400,13 +1379,13 @@ void kmscon_console_erase_cursor_to_end(struct kmscon_console *con)
|
||||
if (!con)
|
||||
return;
|
||||
|
||||
if (con->cursor_x >= con->cells_x)
|
||||
x = con->cells_x - 1;
|
||||
if (con->cursor_x >= con->cells->size_x)
|
||||
x = con->cells->size_x - 1;
|
||||
else
|
||||
x = con->cursor_x;
|
||||
|
||||
kmscon_buffer_erase_region(con->cells, x, con->cursor_y,
|
||||
con->cells_x - 1, con->cursor_y);
|
||||
con->cells->size_x - 1, con->cursor_y);
|
||||
}
|
||||
|
||||
void kmscon_console_erase_home_to_cursor(struct kmscon_console *con)
|
||||
@ -1424,7 +1403,7 @@ void kmscon_console_erase_current_line(struct kmscon_console *con)
|
||||
return;
|
||||
|
||||
kmscon_buffer_erase_region(con->cells, 0, con->cursor_y,
|
||||
con->cells_x - 1, con->cursor_y);
|
||||
con->cells->size_x - 1, con->cursor_y);
|
||||
}
|
||||
|
||||
void kmscon_console_erase_screen_to_cursor(struct kmscon_console *con)
|
||||
@ -1443,13 +1422,13 @@ void kmscon_console_erase_cursor_to_screen(struct kmscon_console *con)
|
||||
if (!con)
|
||||
return;
|
||||
|
||||
if (con->cursor_x >= con->cells_x)
|
||||
x = con->cells_x - 1;
|
||||
if (con->cursor_x >= con->cells->size_x)
|
||||
x = con->cells->size_x - 1;
|
||||
else
|
||||
x = con->cursor_x;
|
||||
|
||||
kmscon_buffer_erase_region(con->cells, x, con->cursor_y,
|
||||
con->cells_x - 1, con->cells_y - 1);
|
||||
con->cells->size_x - 1, con->cells->size_y - 1);
|
||||
}
|
||||
|
||||
void kmscon_console_erase_screen(struct kmscon_console *con)
|
||||
@ -1458,5 +1437,5 @@ void kmscon_console_erase_screen(struct kmscon_console *con)
|
||||
return;
|
||||
|
||||
kmscon_buffer_erase_region(con->cells, 0, 0,
|
||||
con->cells_x - 1, con->cells_y - 1);
|
||||
con->cells->size_x - 1, con->cells->size_y - 1);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user