[script] Add PlymouthGetMode to get boot/shutdown mode

PlymouthGetMode replies the mode as a string of "boot" or "shutdown".
This commit is contained in:
Charlie Brej 2009-09-03 16:25:01 +01:00
parent a65e402dcc
commit 74f4711e77
3 changed files with 46 additions and 14 deletions

View file

@ -177,7 +177,8 @@ start_animation (ply_boot_splash_plugin_t *plugin)
plugin->image_dir);
plugin->script_sprite_lib = script_lib_sprite_setup (plugin->script_state,
plugin->window);
plugin->script_plymouth_lib = script_lib_plymouth_setup (plugin->script_state);
plugin->script_plymouth_lib = script_lib_plymouth_setup (plugin->script_state,
plugin->mode);
plugin->script_math_lib = script_lib_math_setup (plugin->script_state);
ply_trace ("executing script file");

View file

@ -20,6 +20,7 @@
* Written by: Charlie Brej <cbrej@cs.man.ac.uk>
*/
#define _GNU_SOURCE
#include "ply-boot-splash-plugin.h"
#include "ply-utils.h"
#include "script.h"
#include "script-parse.h"
@ -54,7 +55,28 @@ static script_return_t plymouth_set_function (script_state_t *state,
return script_return_obj_null ();
}
script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state)
static script_return_t plymouth_get_mode (script_state_t *state,
void *user_data)
{
script_lib_plymouth_data_t *data = user_data;
script_obj_t *obj;
switch (data->mode)
{
case PLY_BOOT_SPLASH_MODE_BOOT_UP:
obj = script_obj_new_string ("boot");
break;
case PLY_BOOT_SPLASH_MODE_SHUTDOWN:
obj = script_obj_new_string ("shutdown");
break;
default:
obj = script_obj_new_string ("unknown");
break;
}
return script_return_obj (obj);
}
script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state,
ply_boot_splash_mode_t mode)
{
script_lib_plymouth_data_t *data = malloc (sizeof (script_lib_plymouth_data_t));
@ -67,7 +89,8 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state)
data->script_display_password_func = script_obj_new_null ();
data->script_display_question_func = script_obj_new_null ();
data->script_message_func = script_obj_new_null ();
data->mode = mode;
script_add_native_function (state->global,
"PlymouthSetRefreshFunction",
plymouth_set_function,
@ -122,6 +145,11 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state)
&data->script_message_func,
"function",
NULL);
script_add_native_function (state->global,
"PlymouthGetMode",
plymouth_get_mode,
data,
NULL);
data->script_main_op = script_parse_string (script_lib_plymouth_string, "script-lib-plymouth.script");
script_return_t ret = script_execute (state, data->script_main_op);
script_obj_unref (ret.object); /* Throw anything sent back away */

View file

@ -22,23 +22,26 @@
#ifndef SCRIPT_LIB_PLYMOUTH
#define SCRIPT_LIB_PLYMOUTH
#include "ply-boot-splash-plugin.h"
#include "script.h"
typedef struct
{
script_op_t *script_main_op;
script_obj_t *script_refresh_func;
script_obj_t *script_boot_progress_func;
script_obj_t *script_root_mounted_func;
script_obj_t *script_keyboard_input_func;
script_obj_t *script_update_status_func;
script_obj_t *script_display_normal_func;
script_obj_t *script_display_password_func;
script_obj_t *script_display_question_func;
script_obj_t *script_message_func;
script_op_t *script_main_op;
script_obj_t *script_refresh_func;
script_obj_t *script_boot_progress_func;
script_obj_t *script_root_mounted_func;
script_obj_t *script_keyboard_input_func;
script_obj_t *script_update_status_func;
script_obj_t *script_display_normal_func;
script_obj_t *script_display_password_func;
script_obj_t *script_display_question_func;
script_obj_t *script_message_func;
ply_boot_splash_mode_t mode;
} script_lib_plymouth_data_t;
script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state);
script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *state,
ply_boot_splash_mode_t mode);
void script_lib_plymouth_destroy (script_lib_plymouth_data_t *data);
void script_lib_plymouth_on_refresh (script_state_t *state,