summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/bootsplash.c
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2004-12-20 18:51:31 +0000
committerPascal Rigaux <pixel@mandriva.com>2004-12-20 18:51:31 +0000
commita47038859dc156d832fdae38fff319b6585a5694 (patch)
treee071847dee82923596891bf167cd3d5f00285146 /mdk-stage1/bootsplash.c
parent6f768666517680dbfe3bf9b128e6f9a038707140 (diff)
downloaddrakx-backup-do-not-use-a47038859dc156d832fdae38fff319b6585a5694.tar
drakx-backup-do-not-use-a47038859dc156d832fdae38fff319b6585a5694.tar.gz
drakx-backup-do-not-use-a47038859dc156d832fdae38fff319b6585a5694.tar.bz2
drakx-backup-do-not-use-a47038859dc156d832fdae38fff319b6585a5694.tar.xz
drakx-backup-do-not-use-a47038859dc156d832fdae38fff319b6585a5694.zip
minimal bootsplash stage1 support
Diffstat (limited to 'mdk-stage1/bootsplash.c')
-rw-r--r--mdk-stage1/bootsplash.c70
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();
+}