Index: apps/gui/splash.c =================================================================== --- apps/gui/splash.c (revision 21305) +++ apps/gui/splash.c (working copy) @@ -23,6 +23,7 @@ #include "rbunicode.h" #include "stdio.h" #include "kernel.h" +#include "action.h" #include "screen_access.h" #include "lang.h" #include "settings.h" @@ -219,8 +220,20 @@ splash_internal(&(screens[i]), fmt, ap); va_end(ap); } + /* allow the user to dismiss the splash by pressing the usual + * cancel button before the timeout completes. + */ if (ticks) - sleep(ticks); + { + int timeout = current_tick+ticks; + while (TIME_BEFORE(current_tick, timeout)) + { + if (get_action(CONTEXT_STD, timeout-current_tick) + == ACTION_STD_CANCEL) + break; + sleep(1); + } + } } void splash(int ticks, const char *str)