]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
Make fade-in plugin provide erase/draw handlers
authorRay Strode <rstrode@redhat.com>
Wed, 16 Jul 2008 20:46:02 +0000 (16:46 -0400)
committerRay Strode <rstrode@redhat.com>
Tue, 29 Jul 2008 19:15:51 +0000 (15:15 -0400)
src/libplybootsplash/ply-throbber.c
src/splash-plugins/fade-in/plugin.c

index 0dd6dc56a838bb23d4dd9c38b6fcea21c876c674..361a24f28589494100a617edd0bd8261a7758bed 100644 (file)
@@ -124,9 +124,10 @@ ply_throbber_free (ply_throbber_t *throbber)
 static void
 draw_background (ply_throbber_t *throbber)
 {
-  ply_frame_buffer_fill_with_gradient (throbber->frame_buffer, &throbber->frame_area,
-                                       PLYMOUTH_BACKGROUND_START_COLOR,
-                                       PLYMOUTH_BACKGROUND_END_COLOR);
+  ply_window_erase_area (throbber->window,
+                         throbber->x, throbber->y,
+                         throbber->frame_area.width,
+                         throbber->frame_area.height);
 }
 
 static void
index 892323e9e8cf693ca462964e88dd939648ebd8b0..d2df37313d9029fe0c4dcd7b84698b9cf5aa6aee 100644 (file)
@@ -196,15 +196,18 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin)
 
 static void
 draw_background (ply_boot_splash_plugin_t *plugin,
-                ply_frame_buffer_area_t  *area)
+                 ply_frame_buffer_area_t  *area)
 {
-#if 0
-  ply_frame_buffer_fill_with_hex_color (plugin->frame_buffer, area,
-                                       PLYMOUTH_BACKGROUND_COLOR);
-#else
-  ply_frame_buffer_fill_with_gradient (plugin->frame_buffer, area,
-                                       0x807c71, 0x3a362f);
-#endif
+  ply_frame_buffer_area_t screen_area;
+
+  if (area == NULL)
+    {
+      ply_frame_buffer_get_size (plugin->frame_buffer, &screen_area);
+      area = &screen_area;
+    }
+
+  ply_window_erase_area (plugin->window, area->x, area->y,
+                         area->width, area->height);
 }
 
 static void
@@ -417,6 +420,46 @@ on_enter (ply_boot_splash_plugin_t *plugin,
   start_animation (plugin);
 }
 
+void
+on_draw (ply_boot_splash_plugin_t *plugin,
+         int                       x,
+         int                       y,
+         int                       width,
+         int                       height)
+{
+  ply_frame_buffer_area_t area;
+
+  area.x = x;
+  area.y = y;
+  area.width = width;
+  area.height = height;
+
+  draw_background (plugin, &area);
+
+  if (plugin->pending_password_answer != NULL)
+    draw_password_entry (plugin);
+  else
+    animate_at_time (plugin, plugin->now);
+}
+
+void
+on_erase (ply_boot_splash_plugin_t *plugin,
+          int                       x,
+          int                       y,
+          int                       width,
+          int                       height)
+{
+  ply_frame_buffer_area_t area;
+
+  area.x = x;
+  area.y = y;
+  area.width = width;
+  area.height = height;
+
+  ply_frame_buffer_fill_with_gradient (plugin->frame_buffer, &area,
+                                       0x807c71, 0x3a362f);
+}
+
 bool
 show_splash_screen (ply_boot_splash_plugin_t *plugin,
                     ply_event_loop_t         *loop,
@@ -436,6 +479,14 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin,
                                 (ply_window_enter_handler_t)
                                 on_enter, plugin);
 
+  ply_window_set_draw_handler (window,
+                               (ply_window_draw_handler_t)
+                               on_draw, plugin);
+
+  ply_window_set_erase_handler (window,
+                               (ply_window_erase_handler_t)
+                               on_erase, plugin);
+
   plugin->loop = loop;
 
   ply_trace ("loading logo image");