diff --git a/src/plugins/splash/script/plugin.c b/src/plugins/splash/script/plugin.c index 84915e74..3582b84c 100644 --- a/src/plugins/splash/script/plugin.c +++ b/src/plugins/splash/script/plugin.c @@ -325,6 +325,9 @@ view_stop_animation (view_t *view) ply_boot_splash_plugin_t *plugin; plugin = view->plugin; + script_lib_plymouth_on_quit (view->script_state, + view->script_plymouth_lib); + script_lib_sprite_refresh (view->script_sprite_lib); if (plugin->loop != NULL) ply_event_loop_stop_watching_for_timeout (plugin->loop, diff --git a/src/plugins/splash/script/script-lib-plymouth.c b/src/plugins/splash/script/script-lib-plymouth.c index 8a3fe2e8..5aef9f78 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 *s 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->script_quit_func = script_obj_new_null (); data->mode = mode; script_obj_t *plymouth_hash = script_obj_hash_get_element (state->global, "Plymouth"); @@ -145,6 +146,12 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t *s &data->script_message_func, "function", NULL); + script_add_native_function (plymouth_hash, + "SetQuitFunction", + plymouth_set_function, + &data->script_quit_func, + "function", + NULL); script_add_native_function (plymouth_hash, "GetMode", plymouth_get_mode, @@ -171,6 +178,7 @@ void script_lib_plymouth_destroy (script_lib_plymouth_data_t *data) script_obj_unref (data->script_display_password_func); script_obj_unref (data->script_display_question_func); script_obj_unref (data->script_message_func); + script_obj_unref (data->script_quit_func); free (data); } @@ -299,3 +307,13 @@ void script_lib_plymouth_on_message (script_state_t *state, script_obj_unref (new_message_obj); script_obj_unref (ret.object); } + +void script_lib_plymouth_on_quit (script_state_t *state, + script_lib_plymouth_data_t *data) +{ + script_return_t ret = script_execute_object (state, + data->script_quit_func, + NULL, + NULL); + script_obj_unref (ret.object); +} diff --git a/src/plugins/splash/script/script-lib-plymouth.h b/src/plugins/splash/script/script-lib-plymouth.h index ff519273..4e505dca 100644 --- a/src/plugins/splash/script/script-lib-plymouth.h +++ b/src/plugins/splash/script/script-lib-plymouth.h @@ -37,6 +37,7 @@ typedef struct script_obj_t *script_display_password_func; script_obj_t *script_display_question_func; script_obj_t *script_message_func; + script_obj_t *script_quit_func; ply_boot_splash_mode_t mode; } script_lib_plymouth_data_t; @@ -71,5 +72,7 @@ void script_lib_plymouth_on_display_question (script_state_t *state, void script_lib_plymouth_on_message (script_state_t *state, script_lib_plymouth_data_t *data, const char *new_message); +void script_lib_plymouth_on_quit (script_state_t *state, + script_lib_plymouth_data_t *data); #endif /* SCRIPT_LIB_PLYMOUTH_H */ diff --git a/src/plugins/splash/script/script-lib-plymouth.script b/src/plugins/splash/script/script-lib-plymouth.script index 4eb85c80..171eccf7 100644 --- a/src/plugins/splash/script/script-lib-plymouth.script +++ b/src/plugins/splash/script/script-lib-plymouth.script @@ -9,4 +9,5 @@ PlymouthSetDisplayNormalFunction = Plymouth.SetDisplayNormalFunction; PlymouthSetDisplayPasswordFunction = Plymouth.SetDisplayPasswordFunction; PlymouthSetDisplayQuestionFunction = Plymouth.SetDisplayQuestionFunction; PlymouthSetMessageFunction = Plymouth.SetMessageFunction; +PlymouthSetQuitFunction = Plymouth.SetQuitFunction; PlymouthGetMode = Plymouth.GetMode; diff --git a/themes/script/script.script b/themes/script/script.script index 1010a73d..897d3c5d 100644 --- a/themes/script/script.script +++ b/themes/script/script.script @@ -140,3 +140,12 @@ fun progress_callback (duration, progress) } PlymouthSetBootProgressFunction(progress_callback); + +#----------------------------------------- Quit -------------------------------- + +fun quit_callback () +{ + logo.sprite.SetOpacity (1); +} + +PlymouthSetQuitFunction(quit_callback);