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 fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; | ||||||
| 	struct display *p = &fb_display[vc->vc_num]; | 	struct display *p = &fb_display[vc->vc_num]; | ||||||
| 	int scroll_partial = info->flags & FBINFO_PARTIAL_PAN_OK; | 	int scroll_partial = info->flags & FBINFO_PARTIAL_PAN_OK; | ||||||
|  | 	unsigned short saved_ec; | ||||||
|  | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	if (fbcon_is_inactive(vc, info)) | 	if (fbcon_is_inactive(vc, info)) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
|  | @ -1865,6 +1867,11 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | ||||||
| 	 *           whole screen (prevents flicker). | 	 *           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) { | 	switch (dir) { | ||||||
| 	case SM_UP: | 	case SM_UP: | ||||||
| 		if (count > vc->vc_rows)	/* Maximum realistic size */ | 		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)), | 							(b - count)), | ||||||
| 				    vc->vc_scrl_erase_char, | 				    vc->vc_scrl_erase_char, | ||||||
| 				    vc->vc_size_row * count); | 				    vc->vc_size_row * count); | ||||||
| 			return 1; | 			ret = 1; | ||||||
| 			break; | 			break; | ||||||
| 
 | 
 | ||||||
| 		case SCROLL_WRAP_MOVE: | 		case SCROLL_WRAP_MOVE: | ||||||
|  | @ -1955,7 +1962,8 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | ||||||
| 							(b - count)), | 							(b - count)), | ||||||
| 				    vc->vc_scrl_erase_char, | 				    vc->vc_scrl_erase_char, | ||||||
| 				    vc->vc_size_row * count); | 				    vc->vc_size_row * count); | ||||||
| 			return 1; | 			ret = 1; | ||||||
|  | 			break; | ||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
| 
 | 
 | ||||||
|  | @ -1974,7 +1982,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | ||||||
| 							t), | 							t), | ||||||
| 				    vc->vc_scrl_erase_char, | 				    vc->vc_scrl_erase_char, | ||||||
| 				    vc->vc_size_row * count); | 				    vc->vc_size_row * count); | ||||||
| 			return 1; | 			ret = 1; | ||||||
| 			break; | 			break; | ||||||
| 
 | 
 | ||||||
| 		case SCROLL_WRAP_MOVE: | 		case SCROLL_WRAP_MOVE: | ||||||
|  | @ -2044,10 +2052,13 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, | ||||||
| 							t), | 							t), | ||||||
| 				    vc->vc_scrl_erase_char, | 				    vc->vc_scrl_erase_char, | ||||||
| 				    vc->vc_size_row * count); | 				    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