diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 37fe4a0aac..3cbab0f57c 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -84,7 +84,7 @@ static void glui_blit_line(float x, float y, } static void glui_render_quad(gl_t *gl, int x, int y, int w, int h, - float r, float g, float b, float a) + float r, float g, float b, float a, GRfloat *coord_color) { unsigned width, height; struct gfx_coords coords; @@ -110,24 +110,27 @@ static void glui_render_quad(gl_t *gl, int x, int y, int w, int h, tex_coord[6] = 1; tex_coord[7] = 0; - color[ 0] = r; - color[ 1] = g; - color[ 2] = b; - color[ 3] = a; - color[ 4] = r; - color[ 5] = g; - color[ 6] = b; - color[ 7] = a; - color[ 8] = r; - color[ 9] = g; - color[10] = b; - color[11] = a; - color[12] = r; - color[13] = g; - color[14] = b; - color[15] = a; + if (!coord_color) + { + color[ 0] = r; + color[ 1] = g; + color[ 2] = b; + color[ 3] = a; + color[ 4] = r; + color[ 5] = g; + color[ 6] = b; + color[ 7] = a; + color[ 8] = r; + color[ 9] = g; + color[10] = b; + color[11] = a; + color[12] = r; + color[13] = g; + color[14] = b; + color[15] = a; + } - video_driver_get_size(&width, &height); + video_driver_get_size(NULL, &height); glViewport(x, height - y - h, w, h); @@ -135,7 +138,7 @@ static void glui_render_quad(gl_t *gl, int x, int y, int w, int h, coords.vertex = vertex; coords.tex_coord = tex_coord; coords.lut_tex_coord = tex_coord; - coords.color = color; + coords.color = coord_color ? (const float*)coord_color : color; menu_video_draw_frame(gl->shader, &coords, &gl->mvp_no_rot, true, glui->textures.white); @@ -145,7 +148,7 @@ static void glui_render_quad(gl_t *gl, int x, int y, int w, int h, static void glui_draw_cursor(gl_t *gl, float x, float y) { - glui_render_quad(gl, x-5, y-5, 10, 10, 1, 1, 1, 1); + glui_render_quad(gl, x-5, y-5, 10, 10, 1, 1, 1, 1, NULL); } static void glui_draw_scrollbar(gl_t *gl) @@ -176,7 +179,7 @@ static void glui_draw_scrollbar(gl_t *gl) disp->header_height + y, scrollbar_width, scrollbar_height, - 1, 1, 1, 1); + 1, 1, 1, 1, NULL); } static void glui_get_message(const char *message) @@ -374,6 +377,7 @@ static void glui_frame(void) { unsigned i; GRfloat coord_color[16]; + GRfloat black_bg[16]; unsigned width, height, ticker_limit; char title[PATH_MAX_LENGTH]; char title_buf[PATH_MAX_LENGTH]; @@ -419,10 +423,13 @@ static void glui_frame(void) for (i = 0; i < 16; i++) { coord_color[i] = 0; + black_bg[i] = 0; if (i == 3 || i == 7 || i == 11 || i == 15) + { + black_bg[i] = 0.75f; coord_color[i] = 0.75f; + } } - menu_video_frame_background(menu, settings, gl, glui->textures.bg.id, 0.75f, false, &coord_color[0]); @@ -438,12 +445,14 @@ static void glui_frame(void) glui_render_quad(gl, 0, disp->header_height - menu->scroll_y + glui->line_height * - menu_navigation_get_selection(nav), width, glui->line_height, 1, 1, 1, 0.1); + menu_navigation_get_selection(nav), width, glui->line_height, 1, 1, 1, 0.1, + NULL); menu_animation_set_active(anim); glui_render_quad(gl, 0, 0, width, - disp->header_height, 0.2, 0.2, 0.2, 1); + disp->header_height, 0.2, 0.2, 0.2, 1, + NULL); ticker_limit = (width - glui->margin*2) / glui->glyph_width - strlen(menu_hash_to_str(MENU_VALUE_BACK)) * 2; @@ -461,7 +470,7 @@ static void glui_frame(void) height - disp->header_height, width, disp->header_height, - 0.2, 0.2, 0.2, 1); + 0.2, 0.2, 0.2, 1, NULL); glui_draw_scrollbar(gl); @@ -486,14 +495,14 @@ static void glui_frame(void) if (!str) str = ""; - glui_render_quad(gl, 0, 0, width, height, 0, 0, 0, 0.75); + glui_render_quad(gl, 0, 0, width, height, 0, 0, 0, 0.75, &black_bg[0]); snprintf(msg, sizeof(msg), "%s\n%s", menu_input->keyboard.label, str); glui_render_messagebox(msg); } if (glui->box_message[0] != '\0') { - glui_render_quad(gl, 0, 0, width, height, 0, 0, 0, 0.75); + glui_render_quad(gl, 0, 0, width, height, 0, 0, 0, 0.75, &black_bg[0]); glui_render_messagebox(glui->box_message); glui->box_message[0] = '\0'; }