diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2004-12-20 18:51:31 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2004-12-20 18:51:31 +0000 |
commit | a47038859dc156d832fdae38fff319b6585a5694 (patch) | |
tree | e071847dee82923596891bf167cd3d5f00285146 /mdk-stage1/bootsplash.c | |
parent | 6f768666517680dbfe3bf9b128e6f9a038707140 (diff) | |
download | drakx-a47038859dc156d832fdae38fff319b6585a5694.tar drakx-a47038859dc156d832fdae38fff319b6585a5694.tar.gz drakx-a47038859dc156d832fdae38fff319b6585a5694.tar.bz2 drakx-a47038859dc156d832fdae38fff319b6585a5694.tar.xz drakx-a47038859dc156d832fdae38fff319b6585a5694.zip |
minimal bootsplash stage1 support
Diffstat (limited to 'mdk-stage1/bootsplash.c')
-rw-r--r-- | mdk-stage1/bootsplash.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/mdk-stage1/bootsplash.c b/mdk-stage1/bootsplash.c new file mode 100644 index 000000000..d51deb543 --- /dev/null +++ b/mdk-stage1/bootsplash.c @@ -0,0 +1,70 @@ +/* + * Pixel (pixel@mandrakesoft.com) + * + * Copyright 2004 Mandrakesoft + * + * This software may be freely redistributed under the terms of the GNU + * public license. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include <stdio.h> +#include "bootsplash.h" +#include "frontend.h" +#include "log.h" + +static int total_size; +static float previous; +static FILE* splash = NULL; + +static void update_progression_only(int current_size) +{ + if (splash && total_size) { + float ratio = (float) (current_size + 1) / total_size; + if (ratio > previous + 0.01) { + fprintf(splash, "show %d\n", (int) (ratio * 65534)); + fflush(splash); + previous = ratio; + } + } +} + +static void open_bootsplash(void) +{ + if (!splash) splash = fopen("/proc/splash", "w"); + if (!splash) log_message("opening /proc/splash failed"); +} + +void exit_bootsplash(void) +{ + log_message("exiting bootsplash"); + open_bootsplash(); + if (splash) { + fprintf(splash, "verbose\n"); + fflush(splash); + } +} + + +void init_progression(char *msg, int size) +{ + previous = 0; total_size = size; + open_bootsplash(); + update_progression_only(0); + init_progression_raw(msg, size); +} + +void update_progression(int current_size) +{ + update_progression_only(current_size); + update_progression_raw(current_size); +} + +void end_progression(void) +{ + end_progression_raw(); +} |