[U-Boot] [PATCH] video: fix bug in cfb_console.c code

Fix bug in drawing long version/info strings: U-Boot version string like "U-Boot 2009.03-05647-g7c51e06 (Apr 23 2009 - 12:40:00) MPC83XX" is long and doesn't wrap around correctly while drawing beside the logo. Such long strings partially overwrite the logo. This patch is an attempt to fix it.
Signed-off-by: Anatolij Gustschin agust@denx.de --- drivers/video/cfb_console.c | 36 +++++++++++++++++++++++++++++++++--- include/configs/MPC8360ERDK.h | 2 +- 2 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 0b5a0ee..f2a06b5 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -1188,6 +1188,7 @@ static void *video_logo (void) { char info[128]; extern char version_string; + int space, len, y_off = 0;
#ifdef CONFIG_SPLASH_SCREEN char *s; @@ -1205,7 +1206,19 @@ static void *video_logo (void) logo_plot (video_fb_address, VIDEO_COLS, 0, 0);
sprintf (info, " %s", &version_string); - video_drawstring (VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *)info); + + space = (VIDEO_LINE_LEN / 2 - VIDEO_INFO_X) / VIDEO_FONT_WIDTH; + len = strlen(info); + + if (len > space) { + video_drawchars (VIDEO_INFO_X, VIDEO_INFO_Y, + (uchar *)info, space); + video_drawchars (VIDEO_INFO_X + VIDEO_FONT_WIDTH, + VIDEO_INFO_Y + VIDEO_FONT_HEIGHT, + (uchar *)info + space, len - space); + y_off = 1; + } else + video_drawstring (VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *)info);
#ifdef CONFIG_CONSOLE_EXTRA_INFO { @@ -1213,10 +1226,27 @@ static void *video_logo (void)
for (i = 1; i < n; i++) { video_get_info_str (i, info); - if (*info) + if (!*info) + continue; + + len = strlen(info); + if (len > space) { + video_drawchars (VIDEO_INFO_X, + VIDEO_INFO_Y + + (i + y_off) * VIDEO_FONT_HEIGHT, + (uchar *)info, space); + y_off++; + video_drawchars (VIDEO_INFO_X + VIDEO_FONT_WIDTH, + VIDEO_INFO_Y + + (i + y_off) * VIDEO_FONT_HEIGHT, + (uchar *)info + space, + len - space); + } else { video_drawstring (VIDEO_INFO_X, - VIDEO_INFO_Y + i * VIDEO_FONT_HEIGHT, + VIDEO_INFO_Y + + (i + y_off) * VIDEO_FONT_HEIGHT, (uchar *)info); + } } } #endif

Dear Anatolij Gustschin,
In message 1240485443-16924-1-git-send-email-agust@denx.de you wrote:
Fix bug in drawing long version/info strings: U-Boot version string like "U-Boot 2009.03-05647-g7c51e06 (Apr 23 2009 - 12:40:00) MPC83XX" is long and doesn't wrap around correctly while drawing beside the logo. Such long strings partially overwrite the logo. This patch is an attempt to fix it.
Signed-off-by: Anatolij Gustschin agust@denx.de
drivers/video/cfb_console.c | 36 +++++++++++++++++++++++++++++++++--- include/configs/MPC8360ERDK.h | 2 +- 2 files changed, 34 insertions(+), 4 deletions(-)
Will you send a pull request for this, please?
Best regards,
Wolfgang Denk
participants (2)
-
Anatolij Gustschin
-
Wolfgang Denk