video: Adjust rotated console to start at right edge
At present when the console is rotated 180 degrees it starts almost a whole character to the left of the right edge (typically 7 pixels with an 8-pixel-wide font). On a display which aligns with the font width, this just wastes space. On a display that does not this can result in x_frac going negative for the final character (the one on the left side) and the overflow -EAGAIN check at the start of the function failing. Change the function to start at the rightmost pixel to fix these problems. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Anatolij Gustschin <agust@denx.de> Tested-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
a254d11dda
commit
9beb364a28
@ -212,7 +212,7 @@ static int console_putc_xy_2(struct udevice *dev, uint x_frac, uint y, char ch)
|
||||
if (x_frac + VID_TO_POS(vc_priv->x_charsize) > vc_priv->xsize_frac)
|
||||
return -EAGAIN;
|
||||
linenum = vid_priv->ysize - y - 1;
|
||||
x = vid_priv->xsize - VID_TO_PIXEL(x_frac) - VIDEO_FONT_WIDTH - 1;
|
||||
x = vid_priv->xsize - VID_TO_PIXEL(x_frac) - 1;
|
||||
line = vid_priv->fb + linenum * vid_priv->line_length + x * pbytes;
|
||||
|
||||
for (row = 0; row < VIDEO_FONT_HEIGHT; row++) {
|
||||
|
@ -251,7 +251,7 @@ DM_TEST(dm_test_video_rotation1, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
|
||||
/* Test rotated text output through the console uclass */
|
||||
static int dm_test_video_rotation2(struct unit_test_state *uts)
|
||||
{
|
||||
ut_assertok(check_vidconsole_output(uts, 2, 785, 446));
|
||||
ut_assertok(check_vidconsole_output(uts, 2, 783, 445));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user