diff --git a/src/plugins/controls/label/plugin.c b/src/plugins/controls/label/plugin.c index 54917b18..5f1d1679 100644 --- a/src/plugins/controls/label/plugin.c +++ b/src/plugins/controls/label/plugin.c @@ -211,12 +211,21 @@ draw_control (ply_label_plugin_control_t *label, void set_text_for_control (ply_label_plugin_control_t *label, - const char *text) + const char *text) { + ply_rectangle_t dirty_area; + if (label->text != text) { + dirty_area = label->area; free (label->text); label->text = strdup (text); + size_control (label); + if (!label->is_hidden) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, + dirty_area.width, dirty_area.height); + } } @@ -226,6 +235,9 @@ show_control (ply_label_plugin_control_t *label, long x, long y) { + ply_rectangle_t dirty_area; + + dirty_area = label->area; label->display = display; label->area.x = x; label->area.y = y; @@ -234,6 +246,13 @@ show_control (ply_label_plugin_control_t *label, size_control (label); + if (!label->is_hidden) + ply_pixel_display_draw_area (label->display, + dirty_area.x, dirty_area.y, + dirty_area.width, dirty_area.height); + + label->is_hidden = false; + return true; } diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c index 07397ccc..967eac9c 100644 --- a/src/plugins/splash/two-step/plugin.c +++ b/src/plugins/splash/two-step/plugin.c @@ -99,7 +99,6 @@ struct _ply_boot_splash_plugin double animation_horizontal_alignment; double animation_vertical_alignment; char *animation_dir; - char *message; ply_progress_animation_transition_t transition; double transition_duration; @@ -144,6 +143,8 @@ view_new (ply_boot_splash_plugin_t *plugin, view->label = ply_label_new (); view->message_label = ply_label_new (); + ply_label_set_text (view->message_label, ""); + ply_label_show (view->message_label, view->display, 10, 10); return view; } @@ -429,7 +430,6 @@ create_plugin (ply_key_file_t *key_file) free (image_path); plugin->animation_dir = image_dir; - plugin->message = NULL; alignment = ply_key_file_get_value (key_file, "two-step", "HorizontalAlignment"); if (alignment != NULL) @@ -536,12 +536,6 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin) ply_image_free (plugin->corner_image); free_views (plugin); - if (plugin->message != NULL) - { - free (plugin->message); - plugin->message = NULL; - } - free (plugin); } @@ -1039,8 +1033,6 @@ show_message (ply_boot_splash_plugin_t *plugin, ply_label_set_text (view->message_label, message); - ply_label_show (view->message_label, view->display, 10, 10); - ply_pixel_display_draw_area (view->display, 10, 10, ply_label_get_width (view->message_label), ply_label_get_height(view->message_label)); @@ -1059,9 +1051,6 @@ display_normal (ply_boot_splash_plugin_t *plugin) start_progress_animation (plugin); redraw_views (plugin); - if (plugin->message) - display_message (plugin, plugin->message); - } unpause_views (plugin); } @@ -1100,10 +1089,7 @@ static void display_message (ply_boot_splash_plugin_t *plugin, const char *message) { - if (plugin->message != NULL) - free (plugin->message); - plugin->message = strdup (message); - show_message (plugin, plugin->message); + show_message (plugin, message); } ply_boot_splash_plugin_interface_t *