提交 67f82cad 编写于 作者: Y Yang Yingliang

Revert "vt: Fix character height handling with VT_RESIZEX"

hulk inclusion
category: bugfix
bugzilla: NA
CVE: NA

--------------------------------

This reverts commit cb173fc2
to avoid kabi broken.
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Reviewed-by: NJian Cheng <cj.chengjian@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 b73ecd88
......@@ -895,17 +895,17 @@ int vt_ioctl(struct tty_struct *tty,
if (vcp) {
int ret;
int save_scan_lines = vcp->vc_scan_lines;
int save_cell_height = vcp->vc_cell_height;
int save_font_height = vcp->vc_font.height;
if (v.v_vlin)
vcp->vc_scan_lines = v.v_vlin;
if (v.v_clin)
vcp->vc_cell_height = v.v_clin;
vcp->vc_font.height = v.v_clin;
vcp->vc_resize_user = 1;
ret = vc_resize(vcp, v.v_cols, v.v_rows);
if (ret) {
vcp->vc_scan_lines = save_scan_lines;
vcp->vc_cell_height = save_cell_height;
vcp->vc_font.height = save_font_height;
console_unlock();
return ret;
}
......
......@@ -384,7 +384,7 @@ static void vgacon_init(struct vc_data *c, int init)
vc_resize(c, vga_video_num_columns, vga_video_num_lines);
c->vc_scan_lines = vga_scan_lines;
c->vc_font.height = c->vc_cell_height = vga_video_font_height;
c->vc_font.height = vga_video_font_height;
c->vc_complement_mask = 0x7700;
if (vga_512_chars)
c->vc_hi_font_mask = 0x0800;
......@@ -517,32 +517,32 @@ static void vgacon_cursor(struct vc_data *c, int mode)
switch (c->vc_cursor_type & 0x0f) {
case CUR_UNDERLINE:
vgacon_set_cursor_size(c->vc_x,
c->vc_cell_height -
(c->vc_cell_height <
c->vc_font.height -
(c->vc_font.height <
10 ? 2 : 3),
c->vc_cell_height -
(c->vc_cell_height <
c->vc_font.height -
(c->vc_font.height <
10 ? 1 : 2));
break;
case CUR_TWO_THIRDS:
vgacon_set_cursor_size(c->vc_x,
c->vc_cell_height / 3,
c->vc_cell_height -
(c->vc_cell_height <
c->vc_font.height / 3,
c->vc_font.height -
(c->vc_font.height <
10 ? 1 : 2));
break;
case CUR_LOWER_THIRD:
vgacon_set_cursor_size(c->vc_x,
(c->vc_cell_height * 2) / 3,
c->vc_cell_height -
(c->vc_cell_height <
(c->vc_font.height * 2) / 3,
c->vc_font.height -
(c->vc_font.height <
10 ? 1 : 2));
break;
case CUR_LOWER_HALF:
vgacon_set_cursor_size(c->vc_x,
c->vc_cell_height / 2,
c->vc_cell_height -
(c->vc_cell_height <
c->vc_font.height / 2,
c->vc_font.height -
(c->vc_font.height <
10 ? 1 : 2));
break;
case CUR_NONE:
......@@ -553,7 +553,7 @@ static void vgacon_cursor(struct vc_data *c, int mode)
break;
default:
vgacon_set_cursor_size(c->vc_x, 1,
c->vc_cell_height);
c->vc_font.height);
break;
}
break;
......@@ -564,13 +564,13 @@ static int vgacon_doresize(struct vc_data *c,
unsigned int width, unsigned int height)
{
unsigned long flags;
unsigned int scanlines = height * c->vc_cell_height;
unsigned int scanlines = height * c->vc_font.height;
u8 scanlines_lo = 0, r7 = 0, vsync_end = 0, mode, max_scan;
raw_spin_lock_irqsave(&vga_lock, flags);
vgacon_xres = width * VGA_FONTWIDTH;
vgacon_yres = height * c->vc_cell_height;
vgacon_yres = height * c->vc_font.height;
if (vga_video_type >= VIDEO_TYPE_VGAC) {
outb_p(VGA_CRTC_MAX_SCAN, vga_video_port_reg);
max_scan = inb_p(vga_video_port_val);
......@@ -625,9 +625,9 @@ static int vgacon_doresize(struct vc_data *c,
static int vgacon_switch(struct vc_data *c)
{
int x = c->vc_cols * VGA_FONTWIDTH;
int y = c->vc_rows * c->vc_cell_height;
int y = c->vc_rows * c->vc_font.height;
int rows = screen_info.orig_video_lines * vga_default_font_height/
c->vc_cell_height;
c->vc_font.height;
/*
* We need to save screen size here as it's the only way
* we can spot the screen has been resized and we need to
......@@ -1058,7 +1058,7 @@ static int vgacon_adjust_height(struct vc_data *vc, unsigned fontheight)
cursor_size_lastto = 0;
c->vc_sw->con_cursor(c, CM_DRAW);
}
c->vc_font.height = c->vc_cell_height = fontheight;
c->vc_font.height = fontheight;
vc_resize(c, 0, rows); /* Adjust console size */
}
}
......@@ -1113,12 +1113,12 @@ static int vgacon_resize(struct vc_data *c, unsigned int width,
*/
screen_info.orig_video_cols = width;
screen_info.orig_video_lines = height;
vga_default_font_height = c->vc_cell_height;
vga_default_font_height = c->vc_font.height;
return 0;
}
if (width % 2 || width > screen_info.orig_video_cols ||
height > (screen_info.orig_video_lines * vga_default_font_height)/
c->vc_cell_height)
c->vc_font.height)
return -EINVAL;
if (con_is_visible(c) && !vga_is_gfx) /* who knows */
......
......@@ -62,7 +62,6 @@ struct vc_data {
unsigned int vc_rows;
unsigned int vc_size_row; /* Bytes per row */
unsigned int vc_scan_lines; /* # of scan lines */
unsigned int vc_cell_height; /* CRTC character cell height */
unsigned long vc_origin; /* [!] Start of real screen */
unsigned long vc_scr_end; /* [!] End of real screen */
unsigned long vc_visible_origin; /* [!] Top of visible window */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册