]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
script: Add SetRefreshRate function
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>
Thu, 13 Nov 2014 12:09:34 +0000 (13:09 +0100)
committerRay Strode <rstrode@redhat.com>
Thu, 13 Nov 2014 13:58:22 +0000 (08:58 -0500)
The script plugin hardcodes an FPS value of 50, which for some themes
and various devices is a bit much.  Add a new function
(Plymouth.SetRefreshRate) which sets the rate at which the
RefreshFunction gets called so each script theme can determine their most
appropriate rate.

https://bugs.freedesktop.org/show_bug.cgi?id=86247

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

index 1612efde4d68ff94593682f8f67ecd5e9ddedfee..64847661c6c7074b0298fc51cbc70292f829767f 100644 (file)
@@ -220,7 +220,7 @@ on_timeout (ply_boot_splash_plugin_t *plugin)
 {
         double sleep_time;
 
-        sleep_time = 1.0 / FRAMES_PER_SECOND;
+        sleep_time = 1.0 / plugin->script_plymouth_lib->refresh_rate;
         ply_event_loop_watch_for_timeout (plugin->loop,
                                           sleep_time,
                                           (ply_event_loop_timeout_handler_t)
@@ -272,7 +272,8 @@ start_script_animation (ply_boot_splash_plugin_t *plugin)
         plugin->script_sprite_lib = script_lib_sprite_setup (plugin->script_state,
                                                              plugin->displays);
         plugin->script_plymouth_lib = script_lib_plymouth_setup (plugin->script_state,
-                                                                 plugin->mode);
+                                                                 plugin->mode,
+                                                                 FRAMES_PER_SECOND);
         plugin->script_math_lib = script_lib_math_setup (plugin->script_state);
         plugin->script_string_lib = script_lib_string_setup (plugin->script_state);
 
index 16806cdf840e181a4485e722ce8cc633f6e1583d..857792b540d248d0afd90da306b091b94f4a0083 100644 (file)
@@ -48,6 +48,15 @@ static script_return_t plymouth_set_function (script_state_t *state,
         return script_return_obj_null ();
 }
 
+static script_return_t plymouth_set_refresh_rate (script_state_t *state,
+                                                  void           *user_data)
+{
+      script_lib_plymouth_data_t *data = user_data;
+      data->refresh_rate = script_obj_hash_get_number (state->local, "value");
+
+      return script_return_obj_null ();
+}
+
 static script_return_t plymouth_get_mode (script_state_t *state,
                                           void           *user_data)
 {
@@ -73,7 +82,8 @@ static script_return_t plymouth_get_mode (script_state_t *state,
 }
 
 script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t        *state,
-                                                       ply_boot_splash_mode_t mode)
+                                                       ply_boot_splash_mode_t mode,
+                                                       int refresh_rate)
 {
         script_lib_plymouth_data_t *data = malloc (sizeof(script_lib_plymouth_data_t));
 
@@ -90,6 +100,7 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t        *st
         data->script_quit_func = script_obj_new_null ();
         data->script_system_update_func = script_obj_new_null ();
         data->mode = mode;
+        data->refresh_rate = refresh_rate;
 
         script_obj_t *plymouth_hash = script_obj_hash_get_element (state->global, "Plymouth");
         script_add_native_function (plymouth_hash,
@@ -98,6 +109,12 @@ script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t        *st
                                     &data->script_refresh_func,
                                     "function",
                                     NULL);
+        script_add_native_function (plymouth_hash,
+                                    "SetRefreshRate",
+                                    plymouth_set_refresh_rate,
+                                    data,
+                                    "value",
+                                    NULL);
         script_add_native_function (plymouth_hash,
                                     "SetBootProgressFunction",
                                     plymouth_set_function,
index bf8c96e4c46d6859ba16f5c2eefbe36fee13be74..0d3fe66bd3378507dfabe02221cf4f92e7fa258f 100644 (file)
@@ -41,10 +41,12 @@ typedef struct
         script_obj_t          *script_quit_func;
         script_obj_t           *script_system_update_func;
         ply_boot_splash_mode_t mode;
+        int                    refresh_rate;
 } script_lib_plymouth_data_t;
 
 script_lib_plymouth_data_t *script_lib_plymouth_setup (script_state_t        *state,
-                                                       ply_boot_splash_mode_t mode);
+                                                       ply_boot_splash_mode_t mode,
+                                                       int refresh_rate);
 void script_lib_plymouth_destroy (script_lib_plymouth_data_t *data);
 
 void script_lib_plymouth_on_refresh (script_state_t             *state,