]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[script] Add an "on quit" callback to scripted themes
authorCharlie Brej <cbrej@cs.man.ac.uk>
Wed, 28 Oct 2009 20:11:47 +0000 (20:11 +0000)
committerCharlie Brej <cbrej@cs.man.ac.uk>
Wed, 28 Oct 2009 20:11:47 +0000 (20:11 +0000)
The callback is called before the final sprite refresh and quit. This allows
the theme to tidy up the screen before handing over to the X fade and the
destop manager.

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

index 84915e745b5440bd04c49a869c5199c120060c21..3582b84c47e4895f58d9a89883d7255545803601 100644 (file)
@@ -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,
index 8a3fe2e84c46f1d3c80e673d3495341513384aaa..5aef9f78e1bd9a5a3bc1928ed2e366052abf1b16 100644 (file)
@@ -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);
+}
index ff5192736c8d4e564244800785f1833a340aa436..4e505dcaac8af183cd5a724abf702eda0964c7e7 100644 (file)
@@ -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 */
index 4eb85c8061e0498dd554117761fb6f9683f52cc9..171eccf7aa9248055d80f5eb2f65ca5f981dd94c 100644 (file)
@@ -9,4 +9,5 @@ PlymouthSetDisplayNormalFunction = Plymouth.SetDisplayNormalFunction;
 PlymouthSetDisplayPasswordFunction = Plymouth.SetDisplayPasswordFunction;
 PlymouthSetDisplayQuestionFunction = Plymouth.SetDisplayQuestionFunction;
 PlymouthSetMessageFunction = Plymouth.SetMessageFunction;
+PlymouthSetQuitFunction = Plymouth.SetQuitFunction;
 PlymouthGetMode = Plymouth.GetMode;
index 1010a73d4ade09d23b34322aeaf035f3bc7f70fd..897d3c5d26ded85a4b715a95c984fa881fc07e35 100644 (file)
@@ -140,3 +140,12 @@ fun progress_callback (duration, progress)
   }
 
 PlymouthSetBootProgressFunction(progress_callback);
+
+#----------------------------------------- Quit --------------------------------
+
+fun quit_callback ()
+{
+ logo.sprite.SetOpacity (1);
+}
+
+PlymouthSetQuitFunction(quit_callback);