* Re: [PATCH 1/7] fbdev: Don't show logo if driver or
@ 2007-04-09 15:29 Jean Delvare
0 siblings, 0 replies; only message in thread
From: Jean Delvare @ 2007-04-09 15:29 UTC (permalink / raw)
To: Antonino Daplas; +Cc: Andrew Morton, Linux Fbdev development list
(Sorry for the referenceless reply, but I am not subscribed to
linux-fbdev-devel.)
> It was always intended for the logo to be drawn only if both fbcon and the
> driver that is mapped to it are both compiled statically. Currently, if fbcon
> is loaded prior to the driver, the logo is not shown. Reverse the order, and
> the code may attempt to draw the logo which is __initdata. By accident, this
> bug is rarely seen because this method of loading the modules is not common
> and secondly, a code in fb_prepare_logo() that checks the height of the logo
> (now a random value) rarely succeeds.
>
> Fix by drawing the logo only if both fbcon and the driver are statically
> compiled.
>
> Signed-off-by: Antonino Daplas <adaplas@gmail.com>
> ---
>
> drivers/video/console/fbcon.c | 17 +++++++++++++++++
> drivers/video/fbmem.c | 6 ++++--
> 2 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
> index f1e3e3c..0d8e107 100644
> --- a/drivers/video/console/fbcon.c
> +++ b/drivers/video/console/fbcon.c
> @@ -107,7 +107,9 @@ static struct display fb_display[MAX_NR_
>
> static signed char con2fb_map[MAX_NR_CONSOLES];
> static signed char con2fb_map_boot[MAX_NR_CONSOLES];
> +#ifndef MODULE
> static int logo_height;
> +#endif
> static int logo_lines;
> /* logo_shown is an index to vc_cons when >= 0; otherwise follows FBCON_LOGO
> enums. */
> @@ -576,6 +578,13 @@ static int fbcon_takeover(int show_logo)
> return err;
> }
>
> +#ifdef MODULE
> +static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
> + int cols, int rows, int new_cols, int new_rows)
> +{
> + logo_shown = FBCON_LOGO_DONTSHOW;
> +}
> +#else
> static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
> int cols, int rows, int new_cols, int new_rows)
> {
> @@ -584,6 +593,11 @@ static void fbcon_prepare_logo(struct vc
> int cnt, erase = vc->vc_video_erase_char, step;
> unsigned short *save = NULL, *r, *q;
>
> + if (info->flags & FBINFO_MODULE) {
> + logo_shown = FBCON_LOGO_DONTSHOW;
> + goto done;
> + }
> +
> /*
> * remove underline attribute from erase character
> * if black and white framebuffer.
> @@ -654,7 +668,10 @@ static void fbcon_prepare_logo(struct vc
> logo_shown = FBCON_LOGO_DRAW;
> vc->vc_top = logo_lines;
> }
> +
> +done:
> }
> +#endif /* MODULE */
This fails to compile here:
drivers/video/console/fbcon.c: In function 'fbcon_prepare_logo':
drivers/video/console/fbcon.c:668: error: label at end of compound statement
And indeed, a simple "return" instead of "goto done" sounds more
logical.
>
> #ifdef CONFIG_FB_TILEBLITTING
> static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
> diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
> index 45f3839..08c292d 100644
> --- a/drivers/video/fbmem.c
> +++ b/drivers/video/fbmem.c
> @@ -418,7 +418,8 @@ int fb_prepare_logo(struct fb_info *info
>
> memset(&fb_logo, 0, sizeof(struct logo_data));
>
> - if (info->flags & FBINFO_MISC_TILEBLITTING)
> + if (info->flags & FBINFO_MISC_TILEBLITTING ||
> + info->flags & FBINFO_MODULE)
> return 0;
>
> if (info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
> @@ -483,7 +484,8 @@ int fb_show_logo(struct fb_info *info, i
> struct fb_image image;
>
> /* Return if the frame buffer is not mapped or suspended */
> - if (fb_logo.logo == NULL || info->state != FBINFO_STATE_RUNNING)
> + if (fb_logo.logo == NULL || info->state != FBINFO_STATE_RUNNING ||
> + info->flags & FBINFO_MODULE)
> return 0;
>
> image.depth = 8;
--
Jean Delvare
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-04-09 15:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-04-09 15:29 [PATCH 1/7] fbdev: Don't show logo if driver or Jean Delvare
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).