]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
script support system update events
authorjohnv-valve <johnv@valvesoftware.com>
Wed, 15 Oct 2014 23:18:44 +0000 (16:18 -0700)
committerRay Strode <rstrode@redhat.com>
Fri, 17 Oct 2014 19:19:13 +0000 (15:19 -0400)
Add new script function, SetSystemUpdateFunction to allow scripts
to register a callback for system update progress notifications.

src/plugins/splash/script/script-lib-plymouth.c
src/plugins/splash/script/script-lib-plymouth.h

index 57050791f18f53730db69e7be5b4abc78d13bdc9..16806cdf840e181a4485e722ce8cc633f6e1583d 100644 (file)
@@ -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)
 {
index dafdec3c421c0811312b2e960a6320fd67e32224..bf8c96e4c46d6859ba16f5c2eefbe36fee13be74 100644 (file)
@@ -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 */