splash: remove pixel_display in sprite-lib when notified they are gone

This commit is contained in:
Frederic Crozat 2014-06-19 16:18:12 +02:00
parent 7091fe54a6
commit ad75f014b1
3 changed files with 22 additions and 0 deletions

View file

@ -395,6 +395,7 @@ static void
remove_pixel_display (ply_boot_splash_plugin_t *plugin,
ply_pixel_display_t *display)
{
script_lib_sprite_pixel_display_removed (plugin->script_sprite_lib, display);
ply_list_remove_data (plugin->displays, display);
}

View file

@ -686,6 +686,26 @@ region_add_area (ply_region_t *region,
ply_region_add_rectangle (region, &rectangle);
}
void script_lib_sprite_pixel_display_removed (script_lib_sprite_data_t *data, ply_pixel_display_t *pixel_display)
{
ply_list_node_t *node;
ply_list_node_t *next_node;
script_lib_display_t* display;
node = ply_list_get_first_node (data->displays);
while (node)
{
next_node = ply_list_get_next_node (data->displays, node);
display = ply_list_node_get_data (node);
if (display->pixel_display == pixel_display)
{
ply_list_remove_node (data->displays, node);
}
node = next_node;
}
}
void
script_lib_sprite_refresh (script_lib_sprite_data_t *data)
{

View file

@ -65,6 +65,7 @@ typedef struct
script_lib_sprite_data_t *script_lib_sprite_setup (script_state_t *state,
ply_list_t *displays);
void script_lib_sprite_pixel_display_removed (script_lib_sprite_data_t *data, ply_pixel_display_t *pixel_display);
void script_lib_sprite_refresh (script_lib_sprite_data_t *data);
void script_lib_sprite_destroy (script_lib_sprite_data_t *data);