}
}
+static void
+on_reactivate (state_t *state)
+{
+ if (!state->is_inactive)
+ return;
+
+ if (state->terminal != NULL)
+ {
+ ply_terminal_watch_for_vt_changes (state->terminal);
+ ply_terminal_set_unbuffered_input (state->terminal);
+ ply_terminal_ignore_mode_changes (state->terminal, false);
+ }
+
+ if ((state->session != NULL) && state->should_be_attached)
+ {
+ ply_trace ("reactivating terminal session");
+ attach_to_running_session (state);
+ }
+
+ if (state->keyboard != NULL)
+ {
+ ply_trace ("activating keyboard");
+ ply_keyboard_watch_for_input (state->keyboard);
+ }
+
+ if (state->renderer != NULL)
+ {
+ ply_trace ("activating renderer");
+ ply_renderer_activate (state->renderer);
+ }
+
+ state->is_inactive = false;
+}
+
static void
on_quit (state_t *state,
bool retain_splash,
(ply_boot_server_system_initialized_handler_t) on_system_initialized,
(ply_boot_server_error_handler_t) on_error,
(ply_boot_server_deactivate_handler_t) on_deactivate,
+ (ply_boot_server_reactivate_handler_t) on_reactivate,
(ply_boot_server_quit_handler_t) on_quit,
state);
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_UPDATE "U"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_SYSTEM_INITIALIZED "S"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_DEACTIVATE "D"
+#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_REACTIVATE "r"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_QUIT "Q"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_PASSWORD "*"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_CACHED_PASSWORD "c"
ply_boot_server_progress_pause_handler_t progress_pause_handler;
ply_boot_server_progress_unpause_handler_t progress_unpause_handler;
ply_boot_server_deactivate_handler_t deactivate_handler;
+ ply_boot_server_reactivate_handler_t reactivate_handler;
ply_boot_server_quit_handler_t quit_handler;
void *user_data;
ply_boot_server_hide_splash_handler_t hide_splash_handler,
ply_boot_server_newroot_handler_t newroot_handler,
ply_boot_server_system_initialized_handler_t initialized_handler,
- ply_boot_server_error_handler_t error_handler,
- ply_boot_server_deactivate_handler_t deactivate_handler,
+ ply_boot_server_error_handler_t error_handler,
+ ply_boot_server_deactivate_handler_t deactivate_handler,
+ ply_boot_server_reactivate_handler_t reactivate_handler,
ply_boot_server_quit_handler_t quit_handler,
void *user_data)
{
server->show_splash_handler = show_splash_handler;
server->hide_splash_handler = hide_splash_handler;
server->deactivate_handler = deactivate_handler;
+ server->reactivate_handler = reactivate_handler;
server->quit_handler = quit_handler;
server->user_data = user_data;
free (command);
return;
}
+ else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_REACTIVATE) == 0)
+ {
+ ply_trace ("got reactivate request");
+ if (server->reactivate_handler != NULL)
+ server->reactivate_handler (server->user_data, server);
+ }
else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_QUIT) == 0)
{
bool retain_splash;
printf ("got deactivate request\n");
}
+static void
+on_reactivate (ply_event_loop_t *loop)
+{
+ printf ("got reactivate request\n");
+}
+
static void
on_quit (ply_event_loop_t *loop)
{
(ply_boot_server_system_initialized_handler_t) on_system_initialized,
(ply_boot_server_error_handler_t) on_error,
(ply_boot_server_deactivate_handler_t) on_deactivate,
+ (ply_boot_server_reactivate_handler_t) on_reactivate,
(ply_boot_server_quit_handler_t) on_quit,
loop);
typedef void (* ply_boot_server_deactivate_handler_t) (void *user_data,
ply_trigger_t *deactivate_trigger,
ply_boot_server_t *server);
+typedef void (* ply_boot_server_reactivate_handler_t) (void *user_data,
+ ply_boot_server_t *server);
typedef void (* ply_boot_server_quit_handler_t) (void *user_data,
bool retain_splash,
ply_trigger_t *quit_trigger,
ply_boot_server_system_initialized_handler_t initialized_handler,
ply_boot_server_error_handler_t error_handler,
ply_boot_server_deactivate_handler_t deactivate_handler,
+ ply_boot_server_reactivate_handler_t reactivate_handler,
ply_boot_server_quit_handler_t quit_handler,
void *user_data);