From 1fe7898add6e57aff99f632775cd701fc7d0ca5c Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Wed, 8 Jan 2020 14:19:10 +0000 Subject: [PATCH] (Menu Widgets) Prevent 'looping' of task title text --- menu/widgets/menu_widgets.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/menu/widgets/menu_widgets.c b/menu/widgets/menu_widgets.c index efe0a6c1b4..35906867d1 100644 --- a/menu/widgets/menu_widgets.c +++ b/menu/widgets/menu_widgets.c @@ -312,10 +312,13 @@ static void msg_widget_msg_transition_animation_done(void *userdata) { menu_widget_msg_t *msg = (menu_widget_msg_t*) userdata; - free(msg->msg); + if (msg->msg) + free(msg->msg); + msg->msg = NULL; + + if (msg->msg_new) + msg->msg = strdup(msg->msg_new); - msg->msg = msg->msg_new; - msg->msg_new = NULL; msg->msg_transition_animation = 0.0f; } @@ -1035,10 +1038,14 @@ static void menu_widgets_draw_task_msg(menu_widget_msg_t *msg, video_frame_info_ float *msg_queue_current_background; float *msg_queue_current_bar; + bool draw_msg_new = false; unsigned task_percentage_offset = 0; char task_percentage[256] = {0}; settings_t *settings = config_get_ptr(); + if (msg->msg_new) + draw_msg_new = !string_is_equal(msg->msg_new, msg->msg); + task_percentage_offset = glyph_width * (msg->task_error ? 12 : 5) + simple_widget_padding * 1.25f; /*11 = strlen("Task failed")+1 */ if (msg->task_finished) @@ -1113,7 +1120,7 @@ static void menu_widgets_draw_task_msg(menu_widget_msg_t *msg, video_frame_info_ menu_display_blend_end(video_info); /* Text */ - if (msg->msg_new) + if (draw_msg_new) { font_driver_flush(video_info->width, video_info->height, font_regular, video_info); font_raster_regular.carr.coords.vertices = 0; @@ -1146,7 +1153,7 @@ static void menu_widgets_draw_task_msg(menu_widget_msg_t *msg, video_frame_info_ true ); - if (msg->msg_new) + if (draw_msg_new) { font_driver_flush(video_info->width, video_info->height, font_regular, video_info); font_raster_regular.carr.coords.vertices = 0;