forked from mirrors/linux
		
	vt/fbcon: fix background color on line feed
Another addendum to commit c9e587abfd
("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>
			
			
This commit is contained in:
		
							parent
							
								
									7fe3915a49
								
							
						
					
					
						commit
						d850a2fac1
					
				
					 1 changed files with 16 additions and 5 deletions
				
			
		|  | @ -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; | ||||
|  | @ -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 */ | ||||
|  | @ -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: | ||||
|  | @ -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; | ||||
| 
 | ||||
|  | @ -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: | ||||
|  | @ -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; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jan Engelhardt
						Jan Engelhardt