double now;
uint32_t is_animating : 1;
+ uint32_t is_visible : 1;
};
ply_boot_splash_plugin_interface_t *ply_boot_splash_plugin_get_interface (void);
(ply_pixel_display_draw_handler_t)
on_draw, view);
- ply_list_append_data (plugin->views, view);
+ if (plugin->is_visible) {
+ if (view_load (view))
+ ply_list_append_data (plugin->views, view);
+ else
+ view_free (view);
+ } else {
+ ply_list_append_data (plugin->views, view);
+ }
}
static void
return false;
}
+ plugin->is_visible = true;
+
ply_trace ("starting boot animation");
start_animation (plugin);
{
assert (plugin != NULL);
+ plugin->is_visible = false;
+
if (plugin->loop != NULL) {
stop_animation (plugin);
(ply_pixel_display_draw_handler_t)
on_draw, view);
- ply_list_append_data (plugin->views, view);
+ if (plugin->is_visible) {
+ if (view_load (view))
+ ply_list_append_data (plugin->views, view);
+ else
+ view_free (view);
+ } else {
+ ply_list_append_data (plugin->views, view);
+ }
}
static void
(ply_text_display_draw_handler_t)
on_draw, view);
- ply_list_append_data (plugin->views, view);
+ if (plugin->is_animating)
+ view_start_animation (view);
}
static void
(ply_pixel_display_draw_handler_t)
on_draw, view);
- ply_list_append_data (plugin->views, view);
+ if (plugin->is_visible) {
+ if (view_load (view))
+ ply_list_append_data (plugin->views, view);
+ else
+ view_free (view);
+ } else {
+ ply_list_append_data (plugin->views, view);
+ }
}
static void
on_draw, view);
ply_list_append_data (plugin->views, view);
+
+ if (plugin->is_animating)
+ view_start_animation (view);
}
static void
next_node = ply_list_get_next_node (plugin->views, node);
ply_text_progress_bar_set_percent_done (view->progress_bar, percent_done);
- ply_text_progress_bar_draw (view->progress_bar);
+
+ if (plugin->is_animating)
+ ply_text_progress_bar_draw (view->progress_bar);
node = next_node;
}
ply_pixel_display_set_draw_handler (view->display,
(ply_pixel_display_draw_handler_t)
on_draw, view);
- ply_list_append_data (plugin->views, view);
+ if (plugin->is_visible) {
+ if (view_load (view))
+ ply_list_append_data (plugin->views, view);
+ else
+ view_free (view);
+ } else {
+ ply_list_append_data (plugin->views, view);
+ }
}
static void