* Give boot stages a more meaningful name, make the max stage count known.
* Calculate icon offset from stage in splash.cpp, remove hard coded placement values. Draw only icon, not the whole image from top/left to right of icon. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24439 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
48e299e2ef
commit
7d85665d0f
@ -35,13 +35,15 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
BOOT_SPLASH_STAGE_1 = 0,
|
BOOT_SPLASH_STAGE_1_INIT_MODULES = 0,
|
||||||
BOOT_SPLASH_STAGE_2,
|
BOOT_SPLASH_STAGE_2_BOOTSTRAP_FS,
|
||||||
BOOT_SPLASH_STAGE_3,
|
BOOT_SPLASH_STAGE_3_INIT_DEVICES,
|
||||||
BOOT_SPLASH_STAGE_4,
|
BOOT_SPLASH_STAGE_4_MOUNT_BOOT_FS,
|
||||||
BOOT_SPLASH_STAGE_5,
|
BOOT_SPLASH_STAGE_5_INIT_CPU_MODULES,
|
||||||
BOOT_SPLASH_STAGE_6,
|
BOOT_SPLASH_STAGE_6_INIT_VM_MODULES,
|
||||||
BOOT_SPLASH_STAGE_7
|
BOOT_SPLASH_STAGE_7_RUN_BOOT_SCRIPT,
|
||||||
|
|
||||||
|
BOOT_SPLASH_STAGE_MAX // keep this at the end
|
||||||
};
|
};
|
||||||
|
|
||||||
status_t boot_splash_fb_init(struct kernel_args *args);
|
status_t boot_splash_fb_init(struct kernel_args *args);
|
||||||
|
@ -226,7 +226,7 @@ main2(void *unused)
|
|||||||
boot_splash_fb_init(&sKernelArgs);
|
boot_splash_fb_init(&sKernelArgs);
|
||||||
|
|
||||||
TRACE("Init modules\n");
|
TRACE("Init modules\n");
|
||||||
boot_splash_set_stage(BOOT_SPLASH_STAGE_1);
|
boot_splash_set_stage(BOOT_SPLASH_STAGE_1_INIT_MODULES);
|
||||||
module_init(&sKernelArgs);
|
module_init(&sKernelArgs);
|
||||||
|
|
||||||
// ToDo: the preloaded image debug data is placed in the kernel args, and
|
// ToDo: the preloaded image debug data is placed in the kernel args, and
|
||||||
@ -250,11 +250,11 @@ main2(void *unused)
|
|||||||
|
|
||||||
/* bootstrap all the filesystems */
|
/* bootstrap all the filesystems */
|
||||||
TRACE("Bootstrap file systems\n");
|
TRACE("Bootstrap file systems\n");
|
||||||
boot_splash_set_stage(BOOT_SPLASH_STAGE_2);
|
boot_splash_set_stage(BOOT_SPLASH_STAGE_2_BOOTSTRAP_FS);
|
||||||
vfs_bootstrap_file_systems();
|
vfs_bootstrap_file_systems();
|
||||||
|
|
||||||
TRACE("Init Device Manager\n");
|
TRACE("Init Device Manager\n");
|
||||||
boot_splash_set_stage(BOOT_SPLASH_STAGE_3);
|
boot_splash_set_stage(BOOT_SPLASH_STAGE_3_INIT_DEVICES);
|
||||||
device_manager_init(&sKernelArgs);
|
device_manager_init(&sKernelArgs);
|
||||||
|
|
||||||
TRACE("Add preloaded old-style drivers\n");
|
TRACE("Add preloaded old-style drivers\n");
|
||||||
@ -266,15 +266,15 @@ main2(void *unused)
|
|||||||
int_init_post_device_manager(&sKernelArgs);
|
int_init_post_device_manager(&sKernelArgs);
|
||||||
|
|
||||||
TRACE("Mount boot file system\n");
|
TRACE("Mount boot file system\n");
|
||||||
boot_splash_set_stage(BOOT_SPLASH_STAGE_4);
|
boot_splash_set_stage(BOOT_SPLASH_STAGE_4_MOUNT_BOOT_FS);
|
||||||
vfs_mount_boot_file_system(&sKernelArgs);
|
vfs_mount_boot_file_system(&sKernelArgs);
|
||||||
|
|
||||||
// CPU specific modules may now be available
|
// CPU specific modules may now be available
|
||||||
boot_splash_set_stage(BOOT_SPLASH_STAGE_5);
|
boot_splash_set_stage(BOOT_SPLASH_STAGE_5_INIT_CPU_MODULES);
|
||||||
cpu_init_post_modules(&sKernelArgs);
|
cpu_init_post_modules(&sKernelArgs);
|
||||||
|
|
||||||
TRACE("vm_init_post_modules\n");
|
TRACE("vm_init_post_modules\n");
|
||||||
boot_splash_set_stage(BOOT_SPLASH_STAGE_6);
|
boot_splash_set_stage(BOOT_SPLASH_STAGE_6_INIT_VM_MODULES);
|
||||||
vm_init_post_modules(&sKernelArgs);
|
vm_init_post_modules(&sKernelArgs);
|
||||||
|
|
||||||
TRACE("debug_init_post_modules\n");
|
TRACE("debug_init_post_modules\n");
|
||||||
@ -283,7 +283,7 @@ main2(void *unused)
|
|||||||
TRACE("device_manager_init_post_modules\n");
|
TRACE("device_manager_init_post_modules\n");
|
||||||
device_manager_init_post_modules(&sKernelArgs);
|
device_manager_init_post_modules(&sKernelArgs);
|
||||||
|
|
||||||
boot_splash_set_stage(BOOT_SPLASH_STAGE_7);
|
boot_splash_set_stage(BOOT_SPLASH_STAGE_7_RUN_BOOT_SCRIPT);
|
||||||
// start the init process
|
// start the init process
|
||||||
{
|
{
|
||||||
const char *shellArgs[] = {"/bin/sh", "/boot/beos/system/boot/Bootscript", NULL};
|
const char *shellArgs[] = {"/bin/sh", "/boot/beos/system/boot/Bootscript", NULL};
|
||||||
|
@ -335,37 +335,17 @@ boot_splash_set_stage(int stage)
|
|||||||
if (!sBootSplash.enabled)
|
if (!sBootSplash.enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (stage < 0 || stage >= BOOT_SPLASH_STAGE_MAX)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// TODO: Use placement info from images.h
|
||||||
int x = sBootSplash.width / 2 - iconsWidth / 2;
|
int x = sBootSplash.width / 2 - iconsWidth / 2;
|
||||||
int y = sBootSplash.height / 2 - splashHeight / 2;
|
int y = sBootSplash.height / 2 - splashHeight / 2;
|
||||||
y = y + splashHeight;
|
y = y + splashHeight;
|
||||||
|
|
||||||
int stageOffset = 0;
|
int stageLeftEdge = iconsWidth * stage / BOOT_SPLASH_STAGE_MAX;
|
||||||
switch (stage) {
|
int stageRightEdge = iconsWidth * (stage + 1) / BOOT_SPLASH_STAGE_MAX;
|
||||||
case BOOT_SPLASH_STAGE_1:
|
boot_splash_fb_blit_cropped(iconsImage, stageLeftEdge, 0,
|
||||||
stageOffset = 32;
|
stageRightEdge, 32, iconsWidth, iconsHeight, iconsPalette, x, y );
|
||||||
break;
|
|
||||||
case BOOT_SPLASH_STAGE_2:
|
|
||||||
stageOffset = 74;
|
|
||||||
break;
|
|
||||||
case BOOT_SPLASH_STAGE_3:
|
|
||||||
stageOffset = 116;
|
|
||||||
break;
|
|
||||||
case BOOT_SPLASH_STAGE_4:
|
|
||||||
stageOffset = 158;
|
|
||||||
break;
|
|
||||||
case BOOT_SPLASH_STAGE_5:
|
|
||||||
stageOffset = 200;
|
|
||||||
break;
|
|
||||||
case BOOT_SPLASH_STAGE_6:
|
|
||||||
stageOffset = 242;
|
|
||||||
break;
|
|
||||||
case BOOT_SPLASH_STAGE_7:
|
|
||||||
default:
|
|
||||||
stageOffset = iconsWidth;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
boot_splash_fb_blit_cropped(iconsImage, 0, 0, stageOffset, 32,
|
|
||||||
iconsWidth, iconsHeight, iconsPalette, x, y );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user