From 3c72dd09f2da24344fa96cc4854fd409a678d06b Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Thu, 7 Jun 2012 16:17:36 +0100 Subject: [PATCH] space-flares plugin: show messages in the top left corner https://bugs.freedesktop.org/show_bug.cgi?id=50845 --- src/plugins/splash/space-flares/plugin.c | 39 ++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/plugins/splash/space-flares/plugin.c b/src/plugins/splash/space-flares/plugin.c index 32412e0c..fc86c8c7 100644 --- a/src/plugins/splash/space-flares/plugin.c +++ b/src/plugins/splash/space-flares/plugin.c @@ -163,6 +163,7 @@ typedef struct ply_pixel_display_t *display; ply_entry_t *entry; ply_label_t *label; + ply_label_t *message_label; ply_list_t *sprites; ply_rectangle_t box_area, lock_area, logo_area; ply_image_t *scaled_background_image; @@ -217,6 +218,10 @@ view_new (ply_boot_splash_plugin_t *plugin, view->entry = ply_entry_new (plugin->image_dir); 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); + view->sprites = ply_list_new (); return view; @@ -230,6 +235,7 @@ view_free (view_t *view) ply_entry_free (view->entry); ply_label_free (view->label); + ply_label_free (view->message_label); view_free_sprites (view); ply_list_free (view->sprites); @@ -1365,6 +1371,9 @@ on_draw (view_t *view, if (single_pixel){ ply_pixel_buffer_fill_with_color (pixel_buffer, &clip_area, pixel_r, pixel_g, pixel_b, 1.0); } + ply_label_draw_area (view->message_label, + pixel_buffer, + x, y, width, height); } static void @@ -1785,6 +1794,28 @@ become_idle (ply_boot_splash_plugin_t *plugin, ply_trigger_pull (idle_trigger, NULL); } +static void +show_message (ply_boot_splash_plugin_t *plugin, + const char *message) +{ + ply_trace ("Showing message '%s'", message); + ply_list_node_t *node; + node = ply_list_get_first_node (plugin->views); + while (node != NULL) + { + ply_list_node_t *next_node; + view_t *view; + + view = ply_list_node_get_data (node); + next_node = ply_list_get_next_node (plugin->views, node); + ply_label_set_text (view->message_label, message); + ply_pixel_display_draw_area (view->display, 10, 10, + ply_label_get_width (view->message_label), + ply_label_get_height(view->message_label)); + node = next_node; + } +} + static void display_normal (ply_boot_splash_plugin_t *plugin) { @@ -1828,6 +1859,13 @@ display_question (ply_boot_splash_plugin_t *plugin, unpause_views (plugin); } +static void +display_message (ply_boot_splash_plugin_t *plugin, + const char *message) +{ + show_message (plugin, message); +} + ply_boot_splash_plugin_interface_t * ply_boot_splash_plugin_get_interface (void) { @@ -1846,6 +1884,7 @@ ply_boot_splash_plugin_get_interface (void) .display_normal = display_normal, .display_password = display_password, .display_question = display_question, + .display_message = display_message, }; return &plugin_interface; -- 2.47.3