|
@@ -376,37 +376,33 @@ static void fb_rotate_logo(struct fb_info *info, u8 *dst,
|
|
|
}
|
|
|
|
|
|
static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
|
|
|
- int rotate)
|
|
|
+ int rotate, unsigned int num)
|
|
|
{
|
|
|
- int x;
|
|
|
+ unsigned int x;
|
|
|
|
|
|
if (rotate == FB_ROTATE_UR) {
|
|
|
- for (x = 0; x < num_online_cpus() &&
|
|
|
- x * (fb_logo.logo->width + 8) <=
|
|
|
- info->var.xres - fb_logo.logo->width; x++) {
|
|
|
+ for (x = 0;
|
|
|
+ x < num && image->dx + image->width <= info->var.xres;
|
|
|
+ x++) {
|
|
|
info->fbops->fb_imageblit(info, image);
|
|
|
- image->dx += fb_logo.logo->width + 8;
|
|
|
+ image->dx += image->width + 8;
|
|
|
}
|
|
|
} else if (rotate == FB_ROTATE_UD) {
|
|
|
- for (x = 0; x < num_online_cpus() &&
|
|
|
- x * (fb_logo.logo->width + 8) <=
|
|
|
- info->var.xres - fb_logo.logo->width; x++) {
|
|
|
+ for (x = 0; x < num && image->dx >= 0; x++) {
|
|
|
info->fbops->fb_imageblit(info, image);
|
|
|
- image->dx -= fb_logo.logo->width + 8;
|
|
|
+ image->dx -= image->width + 8;
|
|
|
}
|
|
|
} else if (rotate == FB_ROTATE_CW) {
|
|
|
- for (x = 0; x < num_online_cpus() &&
|
|
|
- x * (fb_logo.logo->width + 8) <=
|
|
|
- info->var.yres - fb_logo.logo->width; x++) {
|
|
|
+ for (x = 0;
|
|
|
+ x < num && image->dy + image->height <= info->var.yres;
|
|
|
+ x++) {
|
|
|
info->fbops->fb_imageblit(info, image);
|
|
|
- image->dy += fb_logo.logo->width + 8;
|
|
|
+ image->dy += image->height + 8;
|
|
|
}
|
|
|
} else if (rotate == FB_ROTATE_CCW) {
|
|
|
- for (x = 0; x < num_online_cpus() &&
|
|
|
- x * (fb_logo.logo->width + 8) <=
|
|
|
- info->var.yres - fb_logo.logo->width; x++) {
|
|
|
+ for (x = 0; x < num && image->dy >= 0; x++) {
|
|
|
info->fbops->fb_imageblit(info, image);
|
|
|
- image->dy -= fb_logo.logo->width + 8;
|
|
|
+ image->dy -= image->height + 8;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -532,7 +528,7 @@ int fb_show_logo(struct fb_info *info, int rotate)
|
|
|
fb_rotate_logo(info, logo_rotate, &image, rotate);
|
|
|
}
|
|
|
|
|
|
- fb_do_show_logo(info, &image, rotate);
|
|
|
+ fb_do_show_logo(info, &image, rotate, num_online_cpus());
|
|
|
|
|
|
kfree(palette);
|
|
|
if (saved_pseudo_palette != NULL)
|