Blame SOURCES/dont-block-show-splash.patch

ff86aa
From a54df38f86a534b28c1b664bc283e9b8d17be8a1 Mon Sep 17 00:00:00 2001
ff86aa
From: Ray Strode <rstrode@redhat.com>
ff86aa
Date: Thu, 16 Jan 2014 15:44:50 -0500
ff86aa
Subject: [PATCH 1/2] main: don't rely on show_trigger to cancel show delay
ff86aa
ff86aa
We're going to be getting rid of show_trigger in a subsequent
ff86aa
commit, so this commit changes the code to use the is_shown
ff86aa
flag instead.
ff86aa
---
ff86aa
 src/main.c | 29 ++++++++++++++++-------------
ff86aa
 1 file changed, 16 insertions(+), 13 deletions(-)
ff86aa
ff86aa
diff --git a/src/main.c b/src/main.c
ff86aa
index bbd74f9..d9032a5 100644
ff86aa
--- a/src/main.c
ff86aa
+++ b/src/main.c
ff86aa
@@ -482,74 +482,77 @@ show_default_splash (state_t *state)
ff86aa
 
ff86aa
 static void
ff86aa
 cancel_pending_delayed_show (state_t *state)
ff86aa
 {
ff86aa
   bool has_open_seats;
ff86aa
 
ff86aa
   if (isnan (state->splash_delay))
ff86aa
     return;
ff86aa
 
ff86aa
   ply_event_loop_stop_watching_for_timeout (state->loop,
ff86aa
                                             (ply_event_loop_timeout_handler_t)
ff86aa
                                             show_splash,
ff86aa
                                             state);
ff86aa
   state->splash_delay = NAN;
ff86aa
   has_open_seats = ply_device_manager_has_open_seats (state->device_manager);
ff86aa
 
ff86aa
   if (state->is_shown && has_open_seats)
ff86aa
     {
ff86aa
       ply_trace ("splash delay cancelled, showing splash immediately");
ff86aa
       show_splash (state);
ff86aa
     }
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
 on_ask_for_password (state_t      *state,
ff86aa
                      const char   *prompt,
ff86aa
                      ply_trigger_t *answer)
ff86aa
 {
ff86aa
   ply_entry_trigger_t *entry_trigger;
ff86aa
 
ff86aa
-  /* Waiting to be shown, boot splash will
ff86aa
-   * arrive shortly so just sit tight
ff86aa
-   */
ff86aa
-  if (state->show_trigger != NULL)
ff86aa
-    {
ff86aa
-      ply_trace ("splash still coming up, waiting a bit");
ff86aa
-      cancel_pending_delayed_show (state);
ff86aa
-    }
ff86aa
-  else if (state->boot_splash == NULL)
ff86aa
+  if (state->boot_splash == NULL)
ff86aa
     {
ff86aa
-      /* No splash, client will have to get password */
ff86aa
-      ply_trace ("no splash loaded, replying immediately with no password");
ff86aa
-      ply_trigger_pull (answer, NULL);
ff86aa
-      return;
ff86aa
+      /* Waiting to be shown, boot splash will
ff86aa
+       * arrive shortly so just sit tight
ff86aa
+       */
ff86aa
+      if (state->is_shown)
ff86aa
+        {
ff86aa
+          ply_trace ("splash still coming up, waiting a bit");
ff86aa
+          cancel_pending_delayed_show (state);
ff86aa
+        }
ff86aa
+      else
ff86aa
+        {
ff86aa
+          /* No splash, client will have to get password */
ff86aa
+          ply_trace ("no splash loaded, replying immediately with no password");
ff86aa
+          ply_trigger_pull (answer, NULL);
ff86aa
+          return;
ff86aa
+        }
ff86aa
     }
ff86aa
 
ff86aa
   entry_trigger = calloc (1, sizeof (ply_entry_trigger_t));
ff86aa
   entry_trigger->type = PLY_ENTRY_TRIGGER_TYPE_PASSWORD;
ff86aa
   entry_trigger->prompt = prompt;
ff86aa
   entry_trigger->trigger = answer;
ff86aa
   ply_trace ("queuing password request with boot splash");
ff86aa
   ply_list_append_data (state->entry_triggers, entry_trigger);
ff86aa
   update_display (state);
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
 on_ask_question (state_t      *state,
ff86aa
                  const char   *prompt,
ff86aa
                  ply_trigger_t *answer)
ff86aa
 {
ff86aa
   ply_entry_trigger_t *entry_trigger;
ff86aa
 
ff86aa
   entry_trigger = calloc (1, sizeof (ply_entry_trigger_t));
ff86aa
   entry_trigger->type = PLY_ENTRY_TRIGGER_TYPE_QUESTION;
ff86aa
   entry_trigger->prompt = prompt;
ff86aa
   entry_trigger->trigger = answer;
ff86aa
   ply_trace ("queuing question with boot splash");
ff86aa
   ply_list_append_data (state->entry_triggers, entry_trigger);
ff86aa
   update_display (state);
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
 on_display_message (state_t       *state,
ff86aa
                     const char    *message)
ff86aa
-- 
ff86aa
1.8.3.1
ff86aa
ff86aa
ff86aa
From cdff09d1a2297501f294141182d8d8efcaf6fff3 Mon Sep 17 00:00:00 2001
ff86aa
From: Ray Strode <rstrode@redhat.com>
ff86aa
Date: Thu, 16 Jan 2014 15:38:05 -0500
ff86aa
Subject: [PATCH 2/2] Revert "boot-server: defer show-splash reply until splash
ff86aa
 shown"
ff86aa
ff86aa
This reverts commit 126345af8704a9b10481657d79d66cbea93e1647.
ff86aa
ff86aa
If plymouth show-splash blocks until the splash screen is shown,
ff86aa
then systemd-ask-for-password-plymouth will block for 5 seconds
ff86aa
before asking for the password (which would have canceled the 5
ff86aa
second delay if it weren't for the dependency on plymouth-start.service)
ff86aa
---
ff86aa
 src/main.c            | 12 +-----------
ff86aa
 src/ply-boot-server.c | 28 +---------------------------
ff86aa
 src/ply-boot-server.h |  1 -
ff86aa
 3 files changed, 2 insertions(+), 39 deletions(-)
ff86aa
ff86aa
diff --git a/src/main.c b/src/main.c
ff86aa
index d9032a5..db1fd0a 100644
ff86aa
--- a/src/main.c
ff86aa
+++ b/src/main.c
ff86aa
@@ -74,61 +74,60 @@ typedef struct
ff86aa
   const char    *keys;
ff86aa
   ply_trigger_t *trigger;
ff86aa
 } ply_keystroke_watch_t;
ff86aa
 
ff86aa
 typedef struct 
ff86aa
 {
ff86aa
   enum {PLY_ENTRY_TRIGGER_TYPE_PASSWORD,
ff86aa
         PLY_ENTRY_TRIGGER_TYPE_QUESTION}
ff86aa
         type;
ff86aa
   const char    *prompt;
ff86aa
   ply_trigger_t *trigger;
ff86aa
 } ply_entry_trigger_t;
ff86aa
 
ff86aa
 typedef struct
ff86aa
 {
ff86aa
   ply_event_loop_t *loop;
ff86aa
   ply_boot_server_t *boot_server;
ff86aa
   ply_boot_splash_t *boot_splash;
ff86aa
   ply_terminal_session_t *session;
ff86aa
   ply_buffer_t *boot_buffer;
ff86aa
   ply_progress_t *progress;
ff86aa
   ply_list_t *keystroke_triggers;
ff86aa
   ply_list_t *entry_triggers;
ff86aa
   ply_buffer_t *entry_buffer;
ff86aa
   ply_list_t *messages;
ff86aa
   ply_command_parser_t *command_parser;
ff86aa
   ply_mode_t mode;
ff86aa
   ply_terminal_t *local_console_terminal;
ff86aa
   ply_device_manager_t *device_manager;
ff86aa
 
ff86aa
-  ply_trigger_t *show_trigger;
ff86aa
   ply_trigger_t *deactivate_trigger;
ff86aa
   ply_trigger_t *quit_trigger;
ff86aa
 
ff86aa
   double start_time;
ff86aa
   double splash_delay;
ff86aa
 
ff86aa
   char kernel_command_line[PLY_MAX_COMMAND_LINE_SIZE];
ff86aa
   uint32_t kernel_command_line_is_set : 1;
ff86aa
   uint32_t no_boot_log : 1;
ff86aa
   uint32_t showing_details : 1;
ff86aa
   uint32_t system_initialized : 1;
ff86aa
   uint32_t is_redirected : 1;
ff86aa
   uint32_t is_attached : 1;
ff86aa
   uint32_t should_be_attached : 1;
ff86aa
   uint32_t should_retain_splash : 1;
ff86aa
   uint32_t is_inactive : 1;
ff86aa
   uint32_t is_shown : 1;
ff86aa
   uint32_t should_force_details : 1;
ff86aa
 
ff86aa
   char *override_splash_path;
ff86aa
   char *system_default_splash_path;
ff86aa
   char *distribution_default_splash_path;
ff86aa
   const char *default_tty;
ff86aa
 
ff86aa
   int number_of_errors;
ff86aa
 } state_t;
ff86aa
 
ff86aa
 static void show_splash (state_t *state);
ff86aa
 static ply_boot_splash_t *load_built_in_theme (state_t *state);
ff86aa
 static ply_boot_splash_t *load_theme (state_t    *state,
ff86aa
@@ -848,85 +847,83 @@ plymouth_should_show_default_splash (state_t *state)
ff86aa
 
ff86aa
   if (command_line_has_argument (state->kernel_command_line, "splash=verbose"))
ff86aa
     {
ff86aa
       ply_trace ("no default splash because kernel command line has option \"splash=verbose\"");
ff86aa
       return false;
ff86aa
     }
ff86aa
 
ff86aa
   if (command_line_has_argument (state->kernel_command_line, "rhgb"))
ff86aa
     {
ff86aa
       ply_trace ("using default splash because kernel command line has option \"rhgb\"");
ff86aa
       return true;
ff86aa
     }
ff86aa
 
ff86aa
   if (command_line_has_argument (state->kernel_command_line, "splash"))
ff86aa
     {
ff86aa
       ply_trace ("using default splash because kernel command line has option \"splash\"");
ff86aa
       return true;
ff86aa
     }
ff86aa
 
ff86aa
   if (command_line_has_argument (state->kernel_command_line, "splash=silent"))
ff86aa
     {
ff86aa
       ply_trace ("using default splash because kernel command line has option \"splash=slient\"");
ff86aa
       return true;
ff86aa
     }
ff86aa
 
ff86aa
   ply_trace ("no default splash because kernel command line lacks \"splash\" or \"rhgb\"");
ff86aa
   return false;
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
-on_show_splash (state_t       *state,
ff86aa
-                ply_trigger_t *show_trigger)
ff86aa
+on_show_splash (state_t *state)
ff86aa
 {
ff86aa
   bool has_open_seats;
ff86aa
 
ff86aa
   if (state->is_shown)
ff86aa
     {
ff86aa
       ply_trace ("show splash called while already shown");
ff86aa
       return;
ff86aa
     }
ff86aa
 
ff86aa
   if (state->is_inactive)
ff86aa
     {
ff86aa
       ply_trace ("show splash called while inactive");
ff86aa
       return;
ff86aa
     }
ff86aa
 
ff86aa
   if (plymouth_should_ignore_show_splash_calls (state))
ff86aa
     {
ff86aa
       ply_trace ("show splash called while ignoring show splash calls");
ff86aa
       dump_details_and_quit_splash (state);
ff86aa
       return;
ff86aa
     }
ff86aa
 
ff86aa
-  state->show_trigger = show_trigger;
ff86aa
   state->is_shown = true;
ff86aa
   has_open_seats = ply_device_manager_has_open_seats (state->device_manager);
ff86aa
 
ff86aa
   if (!state->is_attached && state->should_be_attached && has_open_seats)
ff86aa
     attach_to_running_session (state);
ff86aa
 
ff86aa
   if (has_open_seats)
ff86aa
     {
ff86aa
       ply_trace ("at least one seat already open, so loading splash");
ff86aa
       show_splash (state);
ff86aa
     }
ff86aa
   else
ff86aa
     {
ff86aa
       ply_trace ("no seats available to show splash on, waiting...");
ff86aa
     }
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
 on_seat_removed (state_t    *state,
ff86aa
                  ply_seat_t *seat)
ff86aa
 {
ff86aa
   ply_keyboard_t *keyboard;
ff86aa
 
ff86aa
   keyboard = ply_seat_get_keyboard (seat);
ff86aa
 
ff86aa
   ply_trace ("no longer listening for keystrokes");
ff86aa
   ply_keyboard_remove_input_handler (keyboard,
ff86aa
                                      (ply_keyboard_input_handler_t)
ff86aa
                                      on_keyboard_input);
ff86aa
   ply_trace ("no longer listening for escape");
ff86aa
@@ -960,67 +957,60 @@ show_splash (state_t *state)
ff86aa
       running_time = now - state->start_time;
ff86aa
       if (state->splash_delay > running_time)
ff86aa
         {
ff86aa
           double time_left = state->splash_delay - running_time;
ff86aa
 
ff86aa
           ply_trace ("delaying show splash for %lf seconds",
ff86aa
                      time_left);
ff86aa
           ply_event_loop_stop_watching_for_timeout (state->loop,
ff86aa
                                                     (ply_event_loop_timeout_handler_t)
ff86aa
                                                     show_splash,
ff86aa
                                                     state);
ff86aa
           ply_event_loop_watch_for_timeout (state->loop,
ff86aa
                                             time_left,
ff86aa
                                             (ply_event_loop_timeout_handler_t)
ff86aa
                                             show_splash,
ff86aa
                                             state);
ff86aa
           return;
ff86aa
         }
ff86aa
     }
ff86aa
 
ff86aa
   if (plymouth_should_show_default_splash (state))
ff86aa
     {
ff86aa
       show_default_splash (state);
ff86aa
       state->showing_details = false;
ff86aa
     }
ff86aa
   else
ff86aa
     {
ff86aa
       show_detailed_splash (state);
ff86aa
       state->showing_details = true;
ff86aa
     }
ff86aa
-
ff86aa
-  if (state->show_trigger != NULL)
ff86aa
-    {
ff86aa
-      ply_trace ("telling boot server about completed show operation");
ff86aa
-      ply_trigger_pull (state->show_trigger, NULL);
ff86aa
-      state->show_trigger = NULL;
ff86aa
-    }
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
 on_seat_added (state_t    *state,
ff86aa
                ply_seat_t *seat)
ff86aa
 {
ff86aa
   ply_keyboard_t *keyboard;
ff86aa
 
ff86aa
   if (state->is_shown)
ff86aa
     {
ff86aa
       if (state->boot_splash == NULL)
ff86aa
         {
ff86aa
           ply_trace ("seat added before splash loaded, so loading splash now");
ff86aa
           show_splash (state);
ff86aa
         }
ff86aa
       else
ff86aa
         {
ff86aa
           ply_trace ("seat added after splash loaded, so attaching to splash");
ff86aa
           ply_boot_splash_attach_to_seat (state->boot_splash, seat);
ff86aa
         }
ff86aa
     }
ff86aa
 
ff86aa
   keyboard = ply_seat_get_keyboard (seat);
ff86aa
 
ff86aa
   ply_trace ("listening for keystrokes");
ff86aa
   ply_keyboard_add_input_handler (keyboard,
ff86aa
                                   (ply_keyboard_input_handler_t)
ff86aa
                                   on_keyboard_input, state);
ff86aa
   ply_trace ("listening for escape");
ff86aa
   ply_keyboard_add_escape_handler (keyboard,
ff86aa
diff --git a/src/ply-boot-server.c b/src/ply-boot-server.c
ff86aa
index 78c9c52..3e67bfb 100644
ff86aa
--- a/src/ply-boot-server.c
ff86aa
+++ b/src/ply-boot-server.c
ff86aa
@@ -283,72 +283,60 @@ ply_boot_connection_send_answer (ply_boot_connection_t *connection,
ff86aa
     {
ff86aa
       size = strlen (answer);
ff86aa
 
ff86aa
       if (!ply_write (connection->fd,
ff86aa
                       PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ANSWER,
ff86aa
                       strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ANSWER)) ||
ff86aa
           !ply_write_uint32 (connection->fd,
ff86aa
                              size) ||
ff86aa
           !ply_write (connection->fd,
ff86aa
                       answer, size))
ff86aa
           ply_trace ("could not finish writing answer: %m");
ff86aa
 
ff86aa
     }
ff86aa
 
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
 ply_boot_connection_on_password_answer (ply_boot_connection_t *connection,
ff86aa
                                         const char            *password)
ff86aa
 {
ff86aa
   ply_trace ("got password answer");
ff86aa
 
ff86aa
   ply_boot_connection_send_answer (connection, password);
ff86aa
   if (password != NULL)
ff86aa
     ply_list_append_data (connection->server->cached_passwords,
ff86aa
                           strdup (password));
ff86aa
 
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
-ply_boot_connection_on_splash_shown (ply_boot_connection_t *connection)
ff86aa
-{
ff86aa
-  ply_trace ("shown");
ff86aa
-  if (!ply_write (connection->fd,
ff86aa
-                  PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK,
ff86aa
-                  strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK)))
ff86aa
-    {
ff86aa
-      ply_trace ("could not finish writing deactivate reply: %m");
ff86aa
-    }
ff86aa
-}
ff86aa
-
ff86aa
-static void
ff86aa
 ply_boot_connection_on_deactivated (ply_boot_connection_t *connection)
ff86aa
 {
ff86aa
   ply_trace ("deactivated");
ff86aa
   if (!ply_write (connection->fd,
ff86aa
                   PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK,
ff86aa
                   strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK)))
ff86aa
     {
ff86aa
       ply_trace ("could not finish writing deactivate reply: %m");
ff86aa
     }
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
 ply_boot_connection_on_quit_complete (ply_boot_connection_t *connection)
ff86aa
 {
ff86aa
   ply_trace ("quit complete");
ff86aa
   if (!ply_write (connection->fd,
ff86aa
                   PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK,
ff86aa
                   strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK)))
ff86aa
     {
ff86aa
       ply_trace ("could not finish writing quit reply: %m");
ff86aa
     }
ff86aa
 }
ff86aa
 
ff86aa
 static void
ff86aa
 ply_boot_connection_on_question_answer (ply_boot_connection_t *connection,
ff86aa
                                         const char             *answer)
ff86aa
 {
ff86aa
   ply_trace ("got question answer: %s", answer);
ff86aa
   ply_boot_connection_send_answer (connection, answer);
ff86aa
 }
ff86aa
@@ -462,77 +450,63 @@ ply_boot_connection_on_request (ply_boot_connection_t *connection)
ff86aa
           ply_error ("failed to parse percentage %s", argument);
ff86aa
           value = 0;
ff86aa
         }
ff86aa
 
ff86aa
       ply_trace ("got system-update notification %li%%", value);
ff86aa
       if (!ply_write (connection->fd,
ff86aa
                       PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK,
ff86aa
                       strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK)))
ff86aa
         ply_trace ("could not finish writing update reply: %m");
ff86aa
 
ff86aa
       if (server->system_update_handler != NULL)
ff86aa
         server->system_update_handler (server->user_data, value, server);
ff86aa
       free (argument);
ff86aa
       free (command);
ff86aa
       return;
ff86aa
     }
ff86aa
   else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_SYSTEM_INITIALIZED) == 0)
ff86aa
     {
ff86aa
       ply_trace ("got system initialized notification");
ff86aa
       if (server->system_initialized_handler != NULL)
ff86aa
         server->system_initialized_handler (server->user_data, server);
ff86aa
     }
ff86aa
   else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_ERROR) == 0)
ff86aa
     {
ff86aa
       ply_trace ("got error notification");
ff86aa
       if (server->error_handler != NULL)
ff86aa
         server->error_handler (server->user_data, server);
ff86aa
     }
ff86aa
   else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_SHOW_SPLASH) == 0)
ff86aa
     {
ff86aa
-      ply_trigger_t *show_trigger;
ff86aa
-
ff86aa
       ply_trace ("got show splash request");
ff86aa
-
ff86aa
-      show_trigger = ply_trigger_new (NULL);
ff86aa
-
ff86aa
-      ply_trigger_add_handler (show_trigger,
ff86aa
-                               (ply_trigger_handler_t)
ff86aa
-                               ply_boot_connection_on_splash_shown,
ff86aa
-                               connection);
ff86aa
-
ff86aa
       if (server->show_splash_handler != NULL)
ff86aa
-        server->show_splash_handler (server->user_data, show_trigger, server);
ff86aa
-
ff86aa
-      free (argument);
ff86aa
-      free (command);
ff86aa
-      return;
ff86aa
+        server->show_splash_handler (server->user_data, server);
ff86aa
     }
ff86aa
   else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_HIDE_SPLASH) == 0)
ff86aa
     {
ff86aa
       ply_trace ("got hide splash request");
ff86aa
       if (server->hide_splash_handler != NULL)
ff86aa
         server->hide_splash_handler (server->user_data, server);
ff86aa
     }
ff86aa
   else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_DEACTIVATE) == 0)
ff86aa
     {
ff86aa
       ply_trigger_t *deactivate_trigger;
ff86aa
 
ff86aa
       ply_trace ("got deactivate request");
ff86aa
 
ff86aa
       deactivate_trigger = ply_trigger_new (NULL);
ff86aa
 
ff86aa
       ply_trigger_add_handler (deactivate_trigger,
ff86aa
                                (ply_trigger_handler_t)
ff86aa
                                ply_boot_connection_on_deactivated,
ff86aa
                                connection);
ff86aa
 
ff86aa
       if (server->deactivate_handler != NULL)
ff86aa
         server->deactivate_handler (server->user_data, deactivate_trigger, server);
ff86aa
 
ff86aa
       free (argument);
ff86aa
       free (command);
ff86aa
       return;
ff86aa
     }
ff86aa
   else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_REACTIVATE) == 0)
ff86aa
     {
ff86aa
       ply_trace ("got reactivate request");
ff86aa
diff --git a/src/ply-boot-server.h b/src/ply-boot-server.h
ff86aa
index 4436be8..b885a81 100644
ff86aa
--- a/src/ply-boot-server.h
ff86aa
+++ b/src/ply-boot-server.h
ff86aa
@@ -22,61 +22,60 @@
ff86aa
 #ifndef PLY_BOOT_SERVER_H
ff86aa
 #define PLY_BOOT_SERVER_H
ff86aa
 
ff86aa
 #include <stdbool.h>
ff86aa
 #include <stdint.h>
ff86aa
 #include <unistd.h>
ff86aa
 
ff86aa
 #include "ply-trigger.h"
ff86aa
 #include "ply-boot-protocol.h"
ff86aa
 #include "ply-event-loop.h"
ff86aa
 
ff86aa
 typedef struct _ply_boot_server ply_boot_server_t;
ff86aa
 
ff86aa
 typedef void (* ply_boot_server_update_handler_t) (void              *user_data,
ff86aa
                                                    const char        *status,
ff86aa
                                                    ply_boot_server_t *server);
ff86aa
 
ff86aa
 typedef void (* ply_boot_server_change_mode_handler_t) (void              *user_data,
ff86aa
                                                         const char        *mode,
ff86aa
                                                         ply_boot_server_t *server);
ff86aa
 
ff86aa
 typedef void (* ply_boot_server_system_update_handler_t) (void              *user_data,
ff86aa
                                                           int                progress,
ff86aa
                                                           ply_boot_server_t *server);
ff86aa
 
ff86aa
 typedef void (* ply_boot_server_newroot_handler_t) (void              *user_data,
ff86aa
                                                     const char        *root_dir,
ff86aa
                                                     ply_boot_server_t *server);
ff86aa
 
ff86aa
 typedef void (* ply_boot_server_show_splash_handler_t) (void              *user_data,
ff86aa
-                                                        ply_trigger_t     *show_trigger,
ff86aa
                                                         ply_boot_server_t *server);
ff86aa
 
ff86aa
 typedef void (* ply_boot_server_hide_splash_handler_t) (void              *user_data,
ff86aa
                                                         ply_boot_server_t *server);
ff86aa
 
ff86aa
 typedef void (* ply_boot_server_password_answer_handler_t) (void              *answer_data,
ff86aa
                                                             const char        *password,
ff86aa
                                                             ply_boot_server_t *server);
ff86aa
 typedef void (* ply_boot_server_ask_for_password_handler_t) (void              *user_data,
ff86aa
                                                              const char        *prompt,
ff86aa
                                                              ply_trigger_t     *answer,
ff86aa
                                                              ply_boot_server_t *server);
ff86aa
 typedef void (* ply_boot_server_question_answer_handler_t) (void               *answer_data,
ff86aa
                                                             const char         *answer,
ff86aa
                                                             ply_boot_server_t  *server);
ff86aa
 typedef void (* ply_boot_server_ask_question_handler_t)      (void              *user_data,
ff86aa
                                                               const char        *prompt,
ff86aa
                                                               ply_trigger_t     *answer,
ff86aa
                                                               ply_boot_server_t *server);
ff86aa
 typedef void (* ply_boot_server_display_message_handler_t)   (void              *user_data,
ff86aa
                                                               const char        *message,
ff86aa
                                                               ply_boot_server_t *server);
ff86aa
 typedef void (* ply_boot_server_hide_message_handler_t)   (void              *user_data,
ff86aa
                                                            const char        *message,
ff86aa
                                                            ply_boot_server_t *server);
ff86aa
 typedef void (* ply_boot_server_watch_for_keystroke_handler_t) (void              *user_data,
ff86aa
                                                                 const char        *keys,
ff86aa
                                                                 ply_trigger_t     *answer,
ff86aa
                                                                 ply_boot_server_t *server);
ff86aa
 typedef void (* ply_boot_server_ignore_keystroke_handler_t) (void              *user_data,
ff86aa
-- 
ff86aa
1.8.3.1
ff86aa