summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjohnv-valve <johnv@valvesoftware.com>2014-10-15 16:18:44 -0700
committerRay Strode <rstrode@redhat.com>2014-10-17 15:19:13 -0400
commitb5739c6c9929401866916aa2db49c48a5c33332d (patch)
tree0c750c2b2072f7a5c42bc6e7987bc968fb64c965
parent6525ae6017e707728cd4fd0e625da9c6a8e00ab3 (diff)
script support system update events
Add new script function, SetSystemUpdateFunction to allow scripts to register a callback for system update progress notifications.
-rw-r--r--src/plugins/splash/script/script-lib-plymouth.c21
-rw-r--r--src/plugins/splash/script/script-lib-plymouth.h5
2 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/splash/script/script-lib-plymouth.c b/src/plugins/splash/script/script-lib-plymouth.c
index 57050791..16806cdf 100644
--- a/src/plugins/splash/script/script-lib-plymouth.c
+++ b/src/plugins/splash/script/script-lib-plymouth.c
@@ -88,6 +88,7 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *st
data->script_display_message_func = script_obj_new_null ();
data->script_hide_message_func = script_obj_new_null ();
data->script_quit_func = script_obj_new_null ();
+ data->script_system_update_func = script_obj_new_null ();
data->mode = mode;
script_obj_t *plymouth_hash = script_obj_hash_get_element (state->global, "Plymouth");
@@ -162,6 +163,12 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *st
plymouth_get_mode,
data,
NULL);
+ script_add_native_function (plymouth_hash,
+ "SetSystemUpdateFunction",
+ plymouth_set_function,
+ &data->script_system_update_func,
+ "function",
+ NULL);
script_obj_unref (plymouth_hash);
data->script_main_op = script_parse_string (script_lib_plymouth_string, "script-lib-plymouth.script");
@@ -338,6 +345,20 @@ void script_lib_plymouth_on_hide_message (script_state_t *state,
script_obj_unref (ret.object);
}
+void script_lib_plymouth_on_system_update (script_state_t *state,
+ script_lib_plymouth_data_t *data,
+ int progress)
+{
+ script_obj_t *new_status_obj = script_obj_new_number (progress);
+ script_return_t ret = script_execute_object (state,
+ data->script_system_update_func,
+ NULL,
+ new_status_obj,
+ NULL);
+ script_obj_unref (new_status_obj);
+ script_obj_unref (ret.object);
+}
+
void script_lib_plymouth_on_quit (script_state_t *state,
script_lib_plymouth_data_t *data)
{
diff --git a/src/plugins/splash/script/script-lib-plymouth.h b/src/plugins/splash/script/script-lib-plymouth.h
index dafdec3c..bf8c96e4 100644
--- a/src/plugins/splash/script/script-lib-plymouth.h
+++ b/src/plugins/splash/script/script-lib-plymouth.h
@@ -39,6 +39,7 @@ typedef struct
script_obj_t *script_display_message_func;
script_obj_t *script_hide_message_func;
script_obj_t *script_quit_func;
+ script_obj_t *script_system_update_func;
ply_boot_splash_mode_t mode;
} script_lib_plymouth_data_t;
@@ -78,5 +79,9 @@ void script_lib_plymouth_on_hide_message (script_state_t *state,
const char *new_message);
void script_lib_plymouth_on_quit (script_state_t *state,
script_lib_plymouth_data_t *data);
+void script_lib_plymouth_on_system_update (script_state_t *state,
+ script_lib_plymouth_data_t *data,
+ int progress);
+
#endif /* SCRIPT_LIB_PLYMOUTH_H */