Skip to content

Commit

Permalink
vt/fbcon: fix background color on line feed
Browse files Browse the repository at this point in the history
Another addendum to commit c9e587a
("vt: fix background color on line feed").

fbcon still was not doing the right thing (read: continued to do old
behavior).  fbcon_clear() seems to clear the new line (e.g.  where your new
prompt appears after doing echo -en "\e[42mfoo\n"), while scr_memsetw clears
the previous one only (where "foo" appears).  So just temporarily set the
video_erase_char to the scrl_erase_char so that fbcon_clear does the right
thing.

Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Jan Engelhardt authored and Linus Torvalds committed May 13, 2008
1 parent 7fe3915 commit d850a2f
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions drivers/video/console/fbcon.c
Original file line number Diff line number Diff line change
Expand Up @@ -1853,6 +1853,8 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir,
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
struct display *p = &fb_display[vc->vc_num];
int scroll_partial = info->flags & FBINFO_PARTIAL_PAN_OK;
unsigned short saved_ec;
int ret;

if (fbcon_is_inactive(vc, info))
return -EINVAL;
Expand All @@ -1865,6 +1867,11 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir,
* whole screen (prevents flicker).
*/

saved_ec = vc->vc_video_erase_char;
vc->vc_video_erase_char = vc->vc_scrl_erase_char;

ret = 0;

switch (dir) {
case SM_UP:
if (count > vc->vc_rows) /* Maximum realistic size */
Expand All @@ -1883,7 +1890,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir,
(b - count)),
vc->vc_scrl_erase_char,
vc->vc_size_row * count);
return 1;
ret = 1;
break;

case SCROLL_WRAP_MOVE:
Expand Down Expand Up @@ -1955,7 +1962,8 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir,
(b - count)),
vc->vc_scrl_erase_char,
vc->vc_size_row * count);
return 1;
ret = 1;
break;
}
break;

Expand All @@ -1974,7 +1982,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir,
t),
vc->vc_scrl_erase_char,
vc->vc_size_row * count);
return 1;
ret = 1;
break;

case SCROLL_WRAP_MOVE:
Expand Down Expand Up @@ -2044,10 +2052,13 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir,
t),
vc->vc_scrl_erase_char,
vc->vc_size_row * count);
return 1;
ret = 1;
break;
}
break;
}
return 0;
vc->vc_video_erase_char = saved_ec;
return ret;
}


Expand Down

0 comments on commit d850a2f

Please sign in to comment.