|
@@ -277,8 +277,15 @@ static void notify_update(struct vc_data *vc)
|
|
|
* Low-Level Functions
|
|
|
*/
|
|
|
|
|
|
-#define IS_FG(vc) ((vc)->vc_num == fg_console)
|
|
|
-#define DO_UPDATE(vc) (CON_IS_VISIBLE(vc) && !console_blanked)
|
|
|
+static inline bool con_is_fg(const struct vc_data *vc)
|
|
|
+{
|
|
|
+ return vc->vc_num == fg_console;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool con_should_update(const struct vc_data *vc)
|
|
|
+{
|
|
|
+ return con_is_visible(vc) && !console_blanked;
|
|
|
+}
|
|
|
|
|
|
static inline unsigned short *screenpos(struct vc_data *vc, int offset, int viewed)
|
|
|
{
|
|
@@ -316,7 +323,7 @@ static void scrup(struct vc_data *vc, unsigned int t, unsigned int b, int nr)
|
|
|
nr = b - t - 1;
|
|
|
if (b > vc->vc_rows || t >= b || nr < 1)
|
|
|
return;
|
|
|
- if (CON_IS_VISIBLE(vc) && vc->vc_sw->con_scroll(vc, t, b, SM_UP, nr))
|
|
|
+ if (con_is_visible(vc) && vc->vc_sw->con_scroll(vc, t, b, SM_UP, nr))
|
|
|
return;
|
|
|
d = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t);
|
|
|
s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * (t + nr));
|
|
@@ -334,7 +341,7 @@ static void scrdown(struct vc_data *vc, unsigned int t, unsigned int b, int nr)
|
|
|
nr = b - t - 1;
|
|
|
if (b > vc->vc_rows || t >= b || nr < 1)
|
|
|
return;
|
|
|
- if (CON_IS_VISIBLE(vc) && vc->vc_sw->con_scroll(vc, t, b, SM_DOWN, nr))
|
|
|
+ if (con_is_visible(vc) && vc->vc_sw->con_scroll(vc, t, b, SM_DOWN, nr))
|
|
|
return;
|
|
|
s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t);
|
|
|
step = vc->vc_cols * nr;
|
|
@@ -390,7 +397,7 @@ void update_region(struct vc_data *vc, unsigned long start, int count)
|
|
|
{
|
|
|
WARN_CONSOLE_UNLOCKED();
|
|
|
|
|
|
- if (DO_UPDATE(vc)) {
|
|
|
+ if (con_should_update(vc)) {
|
|
|
hide_cursor(vc);
|
|
|
do_update_region(vc, start, count);
|
|
|
set_cursor(vc);
|
|
@@ -490,7 +497,7 @@ void invert_screen(struct vc_data *vc, int offset, int count, int viewed)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
do_update_region(vc, (unsigned long) p, count);
|
|
|
notify_update(vc);
|
|
|
}
|
|
@@ -507,7 +514,7 @@ void complement_pos(struct vc_data *vc, int offset)
|
|
|
if (old_offset != -1 && old_offset >= 0 &&
|
|
|
old_offset < vc->vc_screenbuf_size) {
|
|
|
scr_writew(old, screenpos(vc, old_offset, 1));
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
vc->vc_sw->con_putc(vc, old, oldy, oldx);
|
|
|
notify_update(vc);
|
|
|
}
|
|
@@ -522,7 +529,7 @@ void complement_pos(struct vc_data *vc, int offset)
|
|
|
old = scr_readw(p);
|
|
|
new = old ^ vc->vc_complement_mask;
|
|
|
scr_writew(new, p);
|
|
|
- if (DO_UPDATE(vc)) {
|
|
|
+ if (con_should_update(vc)) {
|
|
|
oldx = (offset >> 1) % vc->vc_cols;
|
|
|
oldy = (offset >> 1) / vc->vc_cols;
|
|
|
vc->vc_sw->con_putc(vc, new, oldy, oldx);
|
|
@@ -538,7 +545,7 @@ static void insert_char(struct vc_data *vc, unsigned int nr)
|
|
|
scr_memmovew(p + nr, p, (vc->vc_cols - vc->vc_x - nr) * 2);
|
|
|
scr_memsetw(p, vc->vc_video_erase_char, nr * 2);
|
|
|
vc->vc_need_wrap = 0;
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
do_update_region(vc, (unsigned long) p,
|
|
|
vc->vc_cols - vc->vc_x);
|
|
|
}
|
|
@@ -551,7 +558,7 @@ static void delete_char(struct vc_data *vc, unsigned int nr)
|
|
|
scr_memsetw(p + vc->vc_cols - vc->vc_x - nr, vc->vc_video_erase_char,
|
|
|
nr * 2);
|
|
|
vc->vc_need_wrap = 0;
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
do_update_region(vc, (unsigned long) p,
|
|
|
vc->vc_cols - vc->vc_x);
|
|
|
}
|
|
@@ -571,7 +578,7 @@ static void add_softcursor(struct vc_data *vc)
|
|
|
if ((type & 0x20) && ((softcursor_original & 0x7000) == (i & 0x7000))) i ^= 0x7000;
|
|
|
if ((type & 0x40) && ((i & 0x700) == ((i & 0x7000) >> 4))) i ^= 0x0700;
|
|
|
scr_writew(i, (u16 *) vc->vc_pos);
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
vc->vc_sw->con_putc(vc, i, vc->vc_y, vc->vc_x);
|
|
|
}
|
|
|
|
|
@@ -579,7 +586,7 @@ static void hide_softcursor(struct vc_data *vc)
|
|
|
{
|
|
|
if (softcursor_original != -1) {
|
|
|
scr_writew(softcursor_original, (u16 *)vc->vc_pos);
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
vc->vc_sw->con_putc(vc, softcursor_original,
|
|
|
vc->vc_y, vc->vc_x);
|
|
|
softcursor_original = -1;
|
|
@@ -596,8 +603,7 @@ static void hide_cursor(struct vc_data *vc)
|
|
|
|
|
|
static void set_cursor(struct vc_data *vc)
|
|
|
{
|
|
|
- if (!IS_FG(vc) || console_blanked ||
|
|
|
- vc->vc_mode == KD_GRAPHICS)
|
|
|
+ if (!con_is_fg(vc) || console_blanked || vc->vc_mode == KD_GRAPHICS)
|
|
|
return;
|
|
|
if (vc->vc_deccm) {
|
|
|
if (vc == sel_cons)
|
|
@@ -613,7 +619,7 @@ static void set_origin(struct vc_data *vc)
|
|
|
{
|
|
|
WARN_CONSOLE_UNLOCKED();
|
|
|
|
|
|
- if (!CON_IS_VISIBLE(vc) ||
|
|
|
+ if (!con_is_visible(vc) ||
|
|
|
!vc->vc_sw->con_set_origin ||
|
|
|
!vc->vc_sw->con_set_origin(vc))
|
|
|
vc->vc_origin = (unsigned long)vc->vc_screenbuf;
|
|
@@ -661,12 +667,12 @@ void redraw_screen(struct vc_data *vc, int is_switch)
|
|
|
struct vc_data *old_vc = vc_cons[fg_console].d;
|
|
|
if (old_vc == vc)
|
|
|
return;
|
|
|
- if (!CON_IS_VISIBLE(vc))
|
|
|
+ if (!con_is_visible(vc))
|
|
|
redraw = 1;
|
|
|
*vc->vc_display_fg = vc;
|
|
|
fg_console = vc->vc_num;
|
|
|
hide_cursor(old_vc);
|
|
|
- if (!CON_IS_VISIBLE(old_vc)) {
|
|
|
+ if (!con_is_visible(old_vc)) {
|
|
|
save_screen(old_vc);
|
|
|
set_origin(old_vc);
|
|
|
}
|
|
@@ -941,7 +947,7 @@ static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,
|
|
|
tty_do_resize(tty, &ws);
|
|
|
}
|
|
|
|
|
|
- if (CON_IS_VISIBLE(vc))
|
|
|
+ if (con_is_visible(vc))
|
|
|
update_screen(vc);
|
|
|
vt_event_post(VT_EVENT_RESIZE, vc->vc_num, vc->vc_num);
|
|
|
return err;
|
|
@@ -1171,7 +1177,7 @@ static void csi_J(struct vc_data *vc, int vpar)
|
|
|
scr_memsetw(vc->vc_screenbuf, vc->vc_video_erase_char,
|
|
|
vc->vc_screenbuf_size >> 1);
|
|
|
set_origin(vc);
|
|
|
- if (CON_IS_VISIBLE(vc))
|
|
|
+ if (con_is_visible(vc))
|
|
|
update_screen(vc);
|
|
|
/* fall through */
|
|
|
case 2: /* erase whole display */
|
|
@@ -1182,7 +1188,7 @@ static void csi_J(struct vc_data *vc, int vpar)
|
|
|
return;
|
|
|
}
|
|
|
scr_memsetw(start, vc->vc_video_erase_char, 2 * count);
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
do_update_region(vc, (unsigned long) start, count);
|
|
|
vc->vc_need_wrap = 0;
|
|
|
}
|
|
@@ -1210,7 +1216,7 @@ static void csi_K(struct vc_data *vc, int vpar)
|
|
|
}
|
|
|
scr_memsetw(start, vc->vc_video_erase_char, 2 * count);
|
|
|
vc->vc_need_wrap = 0;
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
do_update_region(vc, (unsigned long) start, count);
|
|
|
}
|
|
|
|
|
@@ -1223,7 +1229,7 @@ static void csi_X(struct vc_data *vc, int vpar) /* erase the following vpar posi
|
|
|
count = (vpar > vc->vc_cols - vc->vc_x) ? (vc->vc_cols - vc->vc_x) : vpar;
|
|
|
|
|
|
scr_memsetw((unsigned short *)vc->vc_pos, vc->vc_video_erase_char, 2 * count);
|
|
|
- if (DO_UPDATE(vc))
|
|
|
+ if (con_should_update(vc))
|
|
|
vc->vc_sw->con_clear(vc, vc->vc_y, vc->vc_x, 1, count);
|
|
|
vc->vc_need_wrap = 0;
|
|
|
}
|
|
@@ -2208,7 +2214,7 @@ static int do_con_write(struct tty_struct *tty, const unsigned char *buf, int co
|
|
|
charmask = himask ? 0x1ff : 0xff;
|
|
|
|
|
|
/* undraw cursor first */
|
|
|
- if (IS_FG(vc))
|
|
|
+ if (con_is_fg(vc))
|
|
|
hide_cursor(vc);
|
|
|
|
|
|
param.vc = vc;
|
|
@@ -2380,7 +2386,7 @@ rescan_last_byte:
|
|
|
((vc_attr << 8) & ~himask) + ((tc & 0x100) ? himask : 0) + (tc & 0xff) :
|
|
|
(vc_attr << 8) + tc,
|
|
|
(u16 *) vc->vc_pos);
|
|
|
- if (DO_UPDATE(vc) && draw_x < 0) {
|
|
|
+ if (con_should_update(vc) && draw_x < 0) {
|
|
|
draw_x = vc->vc_x;
|
|
|
draw_from = vc->vc_pos;
|
|
|
}
|
|
@@ -2564,7 +2570,7 @@ static void vt_console_print(struct console *co, const char *b, unsigned count)
|
|
|
goto quit;
|
|
|
|
|
|
/* undraw cursor first */
|
|
|
- if (IS_FG(vc))
|
|
|
+ if (con_is_fg(vc))
|
|
|
hide_cursor(vc);
|
|
|
|
|
|
start = (ushort *)vc->vc_pos;
|
|
@@ -2575,7 +2581,7 @@ static void vt_console_print(struct console *co, const char *b, unsigned count)
|
|
|
c = *b++;
|
|
|
if (c == 10 || c == 13 || c == 8 || vc->vc_need_wrap) {
|
|
|
if (cnt > 0) {
|
|
|
- if (CON_IS_VISIBLE(vc))
|
|
|
+ if (con_is_visible(vc))
|
|
|
vc->vc_sw->con_putcs(vc, start, cnt, vc->vc_y, vc->vc_x);
|
|
|
vc->vc_x += cnt;
|
|
|
if (vc->vc_need_wrap)
|
|
@@ -2607,7 +2613,7 @@ static void vt_console_print(struct console *co, const char *b, unsigned count)
|
|
|
myx++;
|
|
|
}
|
|
|
if (cnt > 0) {
|
|
|
- if (CON_IS_VISIBLE(vc))
|
|
|
+ if (con_is_visible(vc))
|
|
|
vc->vc_sw->con_putcs(vc, start, cnt, vc->vc_y, vc->vc_x);
|
|
|
vc->vc_x += cnt;
|
|
|
if (vc->vc_x == vc->vc_cols) {
|
|
@@ -3154,7 +3160,7 @@ static int do_bind_con_driver(const struct consw *csw, int first, int last,
|
|
|
|
|
|
j = i;
|
|
|
|
|
|
- if (CON_IS_VISIBLE(vc)) {
|
|
|
+ if (con_is_visible(vc)) {
|
|
|
k = i;
|
|
|
save_screen(vc);
|
|
|
}
|