diff --git a/gfx/drivers/caca_gfx.c b/gfx/drivers/caca_gfx.c index be669cc498..c62d79d17b 100644 --- a/gfx/drivers/caca_gfx.c +++ b/gfx/drivers/caca_gfx.c @@ -122,10 +122,10 @@ static void caca_font_render_msg( align = TEXT_ALIGN_LEFT; } - if ( !font->caca + if ( !font->caca || !font->caca->cv || !font->caca->display - || !font->caca->cv + || !font->caca->cv || !font->caca->display) return; @@ -165,7 +165,7 @@ font_renderer_t caca_font = { NULL /* get_line_metrics */ }; -/* +/* * VIDEO DRIVER */ static void caca_create(caca_t *caca) @@ -239,7 +239,7 @@ static bool caca_frame(void *data, const void *frame, bool draw = true; caca_t *caca = (caca_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (!frame || !frame_width || !frame_height) diff --git a/gfx/drivers/ctr_gfx.c b/gfx/drivers/ctr_gfx.c index 7155ec0888..51f2fdff4c 100644 --- a/gfx/drivers/ctr_gfx.c +++ b/gfx/drivers/ctr_gfx.c @@ -99,7 +99,7 @@ static void ctr_render_overlay(ctr_video_t *ctr); static void ctr_set_bottom_screen_enable(bool enabled, bool idle); /* - * DISPLAY DRIVER + * DISPLAY DRIVER */ static void gfx_display_ctr_draw(gfx_display_ctx_draw_t *draw, @@ -132,7 +132,7 @@ static void gfx_display_ctr_draw(gfx_display_ctx_draw_t *draw, GPUCMD_AddWrite(GPUREG_GSH_BOOLUNIFORM, 0); ctrGuSetVertexShaderFloatUniform(0, (float*)&scale_vector, 1); - if ((ctr->vertex_cache.size - (ctr->vertex_cache.current + if ((ctr->vertex_cache.size - (ctr->vertex_cache.current - ctr->vertex_cache.buffer)) < 1) ctr->vertex_cache.current = ctr->vertex_cache.buffer; @@ -182,8 +182,8 @@ static void gfx_display_ctr_draw(gfx_display_ctx_draw_t *draw, VIRT_TO_PHYS(texture->data), texture->width, texture->height, - GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) - | GPU_TEXTURE_MIN_FILTER(GPU_LINEAR) + GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) + | GPU_TEXTURE_MIN_FILTER(GPU_LINEAR) | GPU_TEXTURE_WRAP_S(GPU_CLAMP_TO_EDGE) | GPU_TEXTURE_WRAP_T(GPU_CLAMP_TO_EDGE), GPU_RGBA8); @@ -191,8 +191,8 @@ static void gfx_display_ctr_draw(gfx_display_ctx_draw_t *draw, GPU_SetViewport(NULL, VIRT_TO_PHYS(ctr->drawbuffers.top.left), 0, 0, CTR_TOP_FRAMEBUFFER_HEIGHT, - ctr->video_mode == CTR_VIDEO_MODE_2D_800X240 - ? CTR_TOP_FRAMEBUFFER_WIDTH * 2 + ctr->video_mode == CTR_VIDEO_MODE_2D_800X240 + ? CTR_TOP_FRAMEBUFFER_WIDTH * 2 : CTR_TOP_FRAMEBUFFER_WIDTH); GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, 1); @@ -226,7 +226,7 @@ gfx_display_ctx_driver_t gfx_display_ctx_ctr = { }; /* - * FONT DRIVER + * FONT DRIVER */ static void* ctr_font_init(void* data, const char* font_path, @@ -285,14 +285,14 @@ static void* ctr_font_init(void* data, const char* font_path, CTR_SET_SCALE_VECTOR( vec_top, - CTR_TOP_FRAMEBUFFER_WIDTH, + CTR_TOP_FRAMEBUFFER_WIDTH, CTR_TOP_FRAMEBUFFER_HEIGHT, font->texture.width, font->texture.height); CTR_SET_SCALE_VECTOR( vec_bottom, - CTR_BOTTOM_FRAMEBUFFER_WIDTH, + CTR_BOTTOM_FRAMEBUFFER_WIDTH, CTR_BOTTOM_FRAMEBUFFER_HEIGHT, font->texture.width, font->texture.height); @@ -376,7 +376,7 @@ static void ctr_font_render_line( break; case TEXT_ALIGN_CENTER: - x += width / 2 - + x += width / 2 - ctr_font_get_message_width(font, msg, msg_len, scale) / 2; break; } @@ -633,7 +633,7 @@ font_renderer_t ctr_font = }; /* - * VIDEO DRIVER + * VIDEO DRIVER */ static INLINE void ctr_check_3D_slider(ctr_video_t* ctr, ctr_video_mode_enum video_mode) @@ -835,7 +835,7 @@ static const char *ctr_texture_path(unsigned id) static char texture_path[PATH_MAX_LENGTH]; char state_path[PATH_MAX_LENGTH]; - if (!runloop_get_current_savestate_path(state_path, + if (!runloop_get_current_savestate_path(state_path, sizeof(state_path))) return NULL; @@ -851,7 +851,7 @@ static const char *ctr_texture_path(unsigned id) } return NULL; -} +} static void ctr_update_state_date(void *data) { @@ -884,7 +884,7 @@ static bool ctr_update_state_date_from_file(void *data) #else if (sdmc_getmtime( state_path + 5, &mtime) != 0) goto error; -#endif +#endif ctr->state_data_exist = true; @@ -896,7 +896,7 @@ static bool ctr_update_state_date_from_file(void *data) #endif snprintf(ctr->state_date, sizeof(ctr->state_date), "%02d/%02d/%d", t->tm_mon + 1, t->tm_mday, t->tm_year + 1900); - + return true; error: @@ -936,14 +936,14 @@ static void ctr_state_thumbnail_geom(void *data) o->frame_coords->v1 = texture->active_height; x_offset = 184; - y_offset = 46 + + y_offset = 46 + (target_height - texture->active_height * scale) / 2; o->frame_coords->x0 = x_offset; o->frame_coords->y0 = y_offset; - o->frame_coords->x1 = o->frame_coords->x0 + o->frame_coords->x1 = o->frame_coords->x0 + texture->active_width * scale; - o->frame_coords->y1 = o->frame_coords->y0 + o->frame_coords->y1 = o->frame_coords->y0 + texture->active_height * scale; vec = &o->scale_vector; @@ -1058,7 +1058,7 @@ static void bottom_menu_control(void* data, bool lcd_bottom) hidTouchRead(&state_tmp_touch); if (!state_tmp) { - if ( !ctr->bottom_check_idle + if ( !ctr->bottom_check_idle && !ctr->bottom_is_idle) { ctr->idle_timestamp = svcGetSystemTick(); @@ -1115,12 +1115,12 @@ static void bottom_menu_control(void* data, bool lcd_bottom) else if ((state_tmp_touch.px > 8) && (state_tmp_touch.px < 164) && (state_tmp_touch.py > 99) - && (state_tmp_touch.py < 230)) + && (state_tmp_touch.py < 230)) { struct ctr_bottom_texture_data *o = &ctr->bottom_textures[CTR_TEXTURE_STATE_THUMBNAIL]; - ctr_texture_t *texture = + ctr_texture_t *texture = (ctr_texture_t *) o->texture; if (texture) @@ -1139,11 +1139,11 @@ static void bottom_menu_control(void* data, bool lcd_bottom) texture->active_height = ctr->frame_coords->v1; texture->data = linearAlloc( - ctr->texture_width * ctr->texture_height * + ctr->texture_width * ctr->texture_height * (ctr->rgb32? 4:2)); - memcpy(texture->data, ctr->texture_swizzled, - ctr->texture_width * ctr->texture_height * + memcpy(texture->data, ctr->texture_swizzled, + ctr->texture_width * ctr->texture_height * (ctr->rgb32? 4:2)); ctr_state_thumbnail_geom(ctr); @@ -1179,7 +1179,7 @@ static void bottom_menu_control(void* data, bool lcd_bottom) && (state_tmp_touch.px < 311) && (state_tmp_touch.py > 9) && (state_tmp_touch.py < 230) - && ctr->state_data_exist) + && ctr->state_data_exist) { if (!command_event(CMD_EVENT_LOAD_STATE_FROM_RAM, NULL)) command_event(CMD_EVENT_LOAD_STATE, NULL); @@ -1204,7 +1204,7 @@ static void bottom_menu_control(void* data, bool lcd_bottom) save_state_to_file(ctr); ctr->state_slot = config_slot; - o = + o = &ctr->bottom_textures[CTR_TEXTURE_STATE_THUMBNAIL]; texture = (ctr_texture_t *)o->texture; @@ -1338,8 +1338,8 @@ static void ctr_render_bottom_screen(void *data) VIRT_TO_PHYS(texture->data), texture->width, texture->height, - GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) - | GPU_TEXTURE_MIN_FILTER(GPU_LINEAR) + GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) + | GPU_TEXTURE_MIN_FILTER(GPU_LINEAR) | GPU_TEXTURE_WRAP_S(GPU_CLAMP_TO_EDGE) | GPU_TEXTURE_WRAP_T(GPU_CLAMP_TO_EDGE), colorType); @@ -1362,7 +1362,7 @@ static void ctr_render_bottom_screen(void *data) { params.x = 0.266f; params.y = 0.64f; - font_driver_render_msg_bottom(ctr, + font_driver_render_msg_bottom(ctr, msg_hash_to_str( MSG_3DS_BOTTOM_MENU_NO_STATE_THUMBNAIL), ¶ms); @@ -1372,14 +1372,14 @@ static void ctr_render_bottom_screen(void *data) { params.x = 0.266f; params.y = 0.64f; - font_driver_render_msg_bottom(ctr, + font_driver_render_msg_bottom(ctr, msg_hash_to_str( MSG_3DS_BOTTOM_MENU_NO_STATE_DATA), ¶ms); } /* draw bottom menu */ - o = + o = &ctr->bottom_textures[CTR_TEXTURE_BOTTOM_MENU]; texture = (ctr_texture_t *)o->texture; @@ -1387,9 +1387,9 @@ static void ctr_render_bottom_screen(void *data) VIRT_TO_PHYS(texture->data), texture->width, texture->height, - GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) + GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) | GPU_TEXTURE_MIN_FILTER(GPU_LINEAR) - | GPU_TEXTURE_WRAP_S(GPU_CLAMP_TO_EDGE) + | GPU_TEXTURE_WRAP_S(GPU_CLAMP_TO_EDGE) | GPU_TEXTURE_WRAP_T(GPU_CLAMP_TO_EDGE), GPU_RGBA8); @@ -1603,7 +1603,7 @@ static void ctr_lcd_aptHook(APT_HookType hook, void* param) ctr_set_parallax_layer(*(float*)0x1FF81080 != 0.0); ctr_set_bottom_screen_enable(true, ctr->bottom_is_idle); save_state_to_file(ctr); - break; + break; case APTHOOK_ONRESTORE: case APTHOOK_ONWAKEUP: ctr_set_bottom_screen_enable(false, ctr->bottom_is_idle); @@ -1886,7 +1886,7 @@ static bool ctr_frame(void* data, const void* frame, unsigned custom_vp_width = video_info->custom_vp_width; unsigned custom_vp_height = video_info->custom_vp_height; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; @@ -1943,7 +1943,7 @@ static bool ctr_frame(void* data, const void* frame, /* If we are running at the display refresh rate, * then all is well - just wait on the *current* VBlank0 * event and carry on. - * + * * If we are running at below the display refresh rate, * then we have problems: frame updates will happen * entirely out of sync with VBlank0 events. To elaborate, @@ -1952,7 +1952,7 @@ static bool ctr_frame(void* data, const void* frame, * 'oh good - let's render the current frame', but the next * VBlank0 will occur in less time than it takes to draw the * current frame, resulting in 'overlap' and screen tearing. - * + * * This seems to be a consequence of using the GPU directly. * Other 3DS homebrew typically uses the ctrulib function * gfxSwapBuffers(), which ensures an immediate buffer @@ -1960,19 +1960,19 @@ static bool ctr_frame(void* data, const void* frame, * instead, we use a variant of the ctrulib function * gfxSwapBuffersGpu(), which seems to send a notification, * and the swap happens when it happens... - * + * * I don't know how to fix this 'properly' (probably needs * some low level rewriting, maybe switching to an implementation * based on citro3d), but I can at least implement a hack/workaround * that allows 50Hz content to be run without tearing. This involves * the following: - * + * * If content frame rate is more than 10% lower than the 3DS * display refresh rate, don't wait on the *current* VBlank0 * event (because it is 'tainted'), but instead wait on the * *next* VBlank0 event (which will ensure we have enough time * to write/flush the display buffers). - * + * * This fixes screen tearing, but it has a significant impact on * performance... * */ @@ -2173,8 +2173,8 @@ static bool ctr_frame(void* data, const void* frame, GPU_SetViewport(NULL, VIRT_TO_PHYS(ctr->drawbuffers.top.left), 0, 0, CTR_TOP_FRAMEBUFFER_HEIGHT, - ctr->video_mode == CTR_VIDEO_MODE_2D_800X240 - ? CTR_TOP_FRAMEBUFFER_WIDTH * 2 + ctr->video_mode == CTR_VIDEO_MODE_2D_800X240 + ? CTR_TOP_FRAMEBUFFER_WIDTH * 2 : CTR_TOP_FRAMEBUFFER_WIDTH); if (ctr->video_mode == CTR_VIDEO_MODE_3D) @@ -2270,7 +2270,7 @@ static bool ctr_frame(void* data, const void* frame, #endif #ifndef CONSOLE_LOG - if ( ctr_bottom_screen_enabled + if ( ctr_bottom_screen_enabled && (flags & RUNLOOP_FLAG_CORE_RUNNING)) { if (!ctr->bottom_is_idle) @@ -2360,7 +2360,7 @@ static bool ctr_frame(void* data, const void* frame, { gfxScreenSwapBuffers(GFX_BOTTOM,false); } -#endif +#endif #else topFramebufferInfo. active_framebuf = ctr->current_buffer_top; @@ -2611,7 +2611,7 @@ static uintptr_t ctr_load_texture(void *video_data, void *data, ctr_texture_t *texture = NULL; ctr_video_t *ctr = (ctr_video_t*)video_data; struct texture_image *image = (struct texture_image*)data; - int size = image->width + int size = image->width * image->height * sizeof(uint32_t); if ((size * 3) > linearSpaceFree()) @@ -2647,13 +2647,13 @@ static uintptr_t ctr_load_texture(void *video_data, void *data, { ((uint32_t*)texture->data)[ctrgu_swizzle_coords(i, j, texture->width)] = - ((*src << 8) & 0xFF000000) + ((*src << 8) & 0xFF000000) | ((*src << 8) & 0x00FF0000) | ((*src << 8) & 0x0000FF00) | ((*src >> 24) & 0x000000FF); src++; } - GSPGPU_FlushDataCache(texture->data, texture->width + GSPGPU_FlushDataCache(texture->data, texture->width * texture->height * sizeof(uint32_t)); } else @@ -2662,7 +2662,7 @@ static uintptr_t ctr_load_texture(void *video_data, void *data, uint32_t *src = NULL; uint32_t *dst = NULL; - tmpdata = linearAlloc(image->width + tmpdata = linearAlloc(image->width * image->height * sizeof(uint32_t)); if (!tmpdata) { @@ -2676,8 +2676,8 @@ static uintptr_t ctr_load_texture(void *video_data, void *data, for (i = 0; i < image->width * image->height; i++) { - *dst = - ((*src << 8) & 0xFF000000) + *dst = + ((*src << 8) & 0xFF000000) | ((*src << 8) & 0x00FF0000) | ((*src << 8) & 0x0000FF00) | ((*src >> 24) & 0x000000FF); @@ -2818,8 +2818,8 @@ static bool ctr_overlay_load(void *data, for (j = 0; j < images[i].width * images[i].height; j++) { - *dst = - ((*src << 8) & 0xFF000000) + *dst = + ((*src << 8) & 0xFF000000) | ((*src << 8) & 0x00FF0000) | ((*src << 8) & 0x0000FF00) | ((*src >> 24) & 0x000000FF); diff --git a/gfx/drivers/d3d10.c b/gfx/drivers/d3d10.c index 2c9bf1e47b..bf3fdee4e8 100644 --- a/gfx/drivers/d3d10.c +++ b/gfx/drivers/d3d10.c @@ -2166,7 +2166,7 @@ static bool d3d10_gfx_frame( *osd_params = (struct font_params*) &video_info->osd_stat_params; const char *stat_text = video_info->stat_text; - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; bool overlay_behind_menu = video_info->overlay_behind_menu; #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/d3d11.c b/gfx/drivers/d3d11.c index 999a7a0e6b..71c33d0e52 100644 --- a/gfx/drivers/d3d11.c +++ b/gfx/drivers/d3d11.c @@ -2789,7 +2789,7 @@ static bool d3d11_gfx_frame( unsigned video_height = video_info->height; bool statistics_show = video_info->statistics_show; struct font_params* osd_params = (struct font_params*)&video_info->osd_stat_params; - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; bool overlay_behind_menu = video_info->overlay_behind_menu; #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/d3d12.c b/gfx/drivers/d3d12.c index a1255ce936..099b604cbb 100644 --- a/gfx/drivers/d3d12.c +++ b/gfx/drivers/d3d12.c @@ -3210,7 +3210,7 @@ static bool d3d12_gfx_frame( unsigned video_height = video_info->height; struct font_params *osd_params = (struct font_params*) &video_info->osd_stat_params; - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; bool overlay_behind_menu = video_info->overlay_behind_menu; #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/d3d8.c b/gfx/drivers/d3d8.c index 0547e6d89a..e4d547145a 100644 --- a/gfx/drivers/d3d8.c +++ b/gfx/drivers/d3d8.c @@ -1865,7 +1865,7 @@ static bool d3d8_frame(void *data, const void *frame, bool statistics_show = video_info->statistics_show; unsigned black_frame_insertion = video_info->black_frame_insertion; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (!frame) diff --git a/gfx/drivers/d3d9cg.c b/gfx/drivers/d3d9cg.c index 71d4da296b..12babf29f4 100644 --- a/gfx/drivers/d3d9cg.c +++ b/gfx/drivers/d3d9cg.c @@ -2032,7 +2032,7 @@ static bool d3d9_cg_frame(void *data, const void *frame, struct font_params *osd_params = (struct font_params*) &video_info->osd_stat_params; const char *stat_text = video_info->stat_text; - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; bool overlay_behind_menu = video_info->overlay_behind_menu; #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/d3d9hlsl.c b/gfx/drivers/d3d9hlsl.c index c4ec430268..ad5e24605f 100644 --- a/gfx/drivers/d3d9hlsl.c +++ b/gfx/drivers/d3d9hlsl.c @@ -1616,7 +1616,7 @@ static bool d3d9_hlsl_frame(void *data, const void *frame, struct font_params *osd_params = (struct font_params*) &video_info->osd_stat_params; const char *stat_text = video_info->stat_text; - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; bool overlay_behind_menu = video_info->overlay_behind_menu; #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/dispmanx_gfx.c b/gfx/drivers/dispmanx_gfx.c index 0c39eb4b29..423509dae2 100644 --- a/gfx/drivers/dispmanx_gfx.c +++ b/gfx/drivers/dispmanx_gfx.c @@ -438,14 +438,14 @@ static bool dispmanx_frame(void *data, const void *frame, unsigned width, struct dispmanx_video *_dispvars = data; float aspect = video_driver_get_aspect_ratio(); unsigned max_swapchain_images = video_info->max_swapchain_images; - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; if (!frame) return true; - if ( (width != _dispvars->core_width) || - (height != _dispvars->core_height) || - (_dispvars->aspect_ratio != aspect)) + if ( (width != _dispvars->core_width) + || (height != _dispvars->core_height) + || (_dispvars->aspect_ratio != aspect)) { /* Sanity check. */ if (width == 0 || height == 0) diff --git a/gfx/drivers/drm_gfx.c b/gfx/drivers/drm_gfx.c index 670f365cee..7caa25ce85 100644 --- a/gfx/drivers/drm_gfx.c +++ b/gfx/drivers/drm_gfx.c @@ -746,11 +746,11 @@ static bool drm_frame(void *data, const void *frame, unsigned width, { struct drm_video *_drmvars = data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif - if ( ( width != _drmvars->core_width) || - (height != _drmvars->core_height)) + if ( (width != _drmvars->core_width) + || (height != _drmvars->core_height)) { /* Sanity check. */ if (width == 0 || height == 0) @@ -770,7 +770,7 @@ static bool drm_frame(void *data, const void *frame, unsigned width, pitch, _drmvars->rgb32 ? 4 : 2, _drmvars->rgb32 ? DRM_FORMAT_XRGB8888 : DRM_FORMAT_RGB565, - 255, + 255, _drmvars->current_aspect, 3, 0, diff --git a/gfx/drivers/exynos_gfx.c b/gfx/drivers/exynos_gfx.c index 7de0f96573..552cd57b7e 100644 --- a/gfx/drivers/exynos_gfx.c +++ b/gfx/drivers/exynos_gfx.c @@ -905,7 +905,7 @@ static int exynos_blit_frame( const void *frame, unsigned src_pitch) { - const enum exynos_buffer_type + const enum exynos_buffer_type buf_type = defaults[EXYNOS_IMAGE_FRAME].buf_type; const unsigned size = src_pitch * pdata->blit_params[5]; struct g2d_image *src = pdata->src[EXYNOS_IMAGE_FRAME]; @@ -1282,8 +1282,7 @@ static bool exynos_frame(void *data, const void *frame, unsigned width, struct exynos_video *vid = data; struct exynos_page *page = NULL; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; - + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; /* Check if neither menu nor core framebuffer is to be displayed. */ if (!vid->menu_active && !frame) return true; diff --git a/gfx/drivers/fpga_gfx.c b/gfx/drivers/fpga_gfx.c index 866fba37b4..177624d071 100644 --- a/gfx/drivers/fpga_gfx.c +++ b/gfx/drivers/fpga_gfx.c @@ -1,423 +1,423 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2017 - Daniel De Matteis - * Copyright (C) 2016-2017 - Brad Parker - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include -#include -#include -#include -#include - -#ifdef HAVE_CONFIG_H -#include "../../config.h" -#endif - -#ifdef HAVE_MENU -#include "../../menu/menu_driver.h" -#endif - -#include "../../driver.h" -#include "../../configuration.h" -#include "../../verbosity.h" - -#define NUMBER_OF_WRITE_FRAMES 1 /* XPAR_AXIVDMA_0_NUM_FSTORES */ -#define STORAGE_SIZE NUMBER_OF_WRITE_FRAMES * ((1920*1080)<<2) -#define FRAME_SIZE (STORAGE_SIZE / NUMBER_OF_WRITE_FRAMES) - -#define FB_WIDTH 1920 -#define FB_HEIGHT 1080 - -typedef struct RegOp -{ - void *ptr; - int fd; - int only_mmap; - int only_munmap; -} RegOp; - -typedef struct fpga -{ - RegOp regOp; /* ptr alignment */ - volatile unsigned *framebuffer; - unsigned char *menu_frame; - unsigned menu_width; - unsigned menu_height; - unsigned menu_pitch; - unsigned video_width; - unsigned video_height; - unsigned video_pitch; - unsigned video_bits; - unsigned menu_bits; - bool rgb32; -} fpga_t; - -static unsigned int get_memory_size(void) -{ - unsigned int size; - - /* this file holds the memory range needed to map the framebuffer into - * kernel address space, it is specified in the device tree - */ - FILE *size_fp = fopen("/sys/class/uio/uio0/maps/map0/size", "r"); - - if (!size_fp) - { - RARCH_ERR("unable to open the uio size file\n"); - exit(1); - } - - fscanf(size_fp, "0x%08X", &size); - fclose(size_fp); - - return size; -} - -static void do_mmap_op(RegOp *regOp) -{ - if (regOp->only_munmap == 0) - { - regOp->fd = open("/dev/uio0", O_RDWR); - - if (regOp->fd < 1) - return; - - regOp->ptr = mmap(NULL, get_memory_size(), - PROT_READ|PROT_WRITE, MAP_SHARED, regOp->fd, 0); - - if (regOp->ptr == MAP_FAILED) - { - RARCH_ERR("could not mmap() memory\n"); - exit(1); - } - } - - if (regOp->only_mmap == 0) - { - if (munmap(regOp->ptr, get_memory_size()) == -1) - { - RARCH_ERR("could not munmap() memory\n"); - exit(1); - } - - close(regOp->fd); - } - - return; -} - -static void fpga_create(fpga_t *fpga) -{ - memset(&fpga->regOp, 0, sizeof(fpga->regOp)); - - fpga->regOp.only_mmap = 1; - - do_mmap_op(&fpga->regOp); - - fpga->framebuffer = ((volatile unsigned*)fpga->regOp.ptr); -} - -static void *fpga_init(const video_info_t *video, - const input_driver_t **input, void **input_data) -{ - fpga_t *fpga = (fpga_t*)calloc(1, sizeof(*fpga)); - - *input = NULL; - *input_data = NULL; - - fpga->video_width = video->width; - fpga->video_height = video->height; - fpga->rgb32 = video->rgb32; - - fpga->video_bits = video->rgb32 ? 32 : 16; - - if (video->rgb32) - fpga->video_pitch = video->width * 4; - else - fpga->video_pitch = video->width * 2; - - fpga_create(fpga); - - return fpga; - -error: - if (fpga) - free(fpga); - return NULL; -} - -static bool fpga_frame(void *data, const void *frame, - unsigned frame_width, unsigned frame_height, uint64_t frame_count, - unsigned pitch, const char *msg, video_frame_info_t *video_info) -{ - const void *frame_to_copy = frame; - unsigned width = 0; - unsigned height = 0; - bool draw = true; - fpga_t *fpga = (fpga_t*)data; - unsigned bits = fpga->video_bits; -#ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; -#endif - - if (!frame || !frame_width || !frame_height) - return true; - -#ifdef HAVE_MENU - menu_driver_frame(menu_is_alive, video_info); -#endif - - if ( fpga->video_width != frame_width || - fpga->video_height != frame_height || - fpga->video_pitch != pitch) - { - if (frame_width > 4 && frame_height > 4) - { - fpga->video_width = frame_width; - fpga->video_height = frame_height; - fpga->video_pitch = pitch; - } - } - -#ifdef HAVE_MENU - if (fpga->menu_frame && menu_is_alive) - { - frame_to_copy = fpga->menu_frame; - width = fpga->menu_width; - height = fpga->menu_height; - pitch = fpga->menu_pitch; - bits = fpga->menu_bits; - } - else -#endif - { - width = fpga->video_width; - height = fpga->video_height; - pitch = fpga->video_pitch; - - if (frame_width == 4 && frame_height == 4 && (frame_width < width && frame_height < height)) - draw = false; - -#ifdef HAVE_MENU - if (menu_is_alive) - draw = false; -#endif - } - - if (draw) - { - if (bits == 16) - { - if (frame_to_copy == fpga->menu_frame) - { - /* RGBX4444 color bits for RGUI */ - unsigned x, y; - - for (y = 0; y < FB_HEIGHT; y++) - { - for (x = 0; x < FB_WIDTH; x++) - { - /* scale incoming frame to fit the screen */ - unsigned scaled_x = (width * x) / FB_WIDTH; - unsigned scaled_y = (height * y) / FB_HEIGHT; - unsigned short pixel = ((unsigned short*)frame_to_copy)[width * scaled_y + scaled_x]; - - /* convert RGBX444 to XRGB8888 */ - unsigned r = ((pixel & 0xF000) >> 12); - unsigned g = ((pixel & 0x0F00) >> 8); - unsigned b = ((pixel & 0x00F0) >> 4); - - fpga->framebuffer[FB_WIDTH * y + x] = (r << 20) | (b << 12) | (g << 4); - } - } - } - else - { - /* RGB565 color bits for core */ - unsigned x, y; - - for (y = 0; y < FB_HEIGHT; y++) - { - for (x = 0; x < FB_WIDTH; x++) - { - /* scale incoming frame to fit the screen */ - unsigned scaled_x = (width * x) / FB_WIDTH; - unsigned scaled_y = (height * y) / FB_HEIGHT; - unsigned short pixel = ((unsigned short*)frame_to_copy)[width * scaled_y + scaled_x]; - - /* convert RGB565 to XRBG8888 */ - unsigned r = ((pixel & 0xF800) >> 11); - unsigned g = ((pixel & 0x07E0) >> 5); - unsigned b = ((pixel & 0x001F) >> 0); - - fpga->framebuffer[FB_WIDTH * y + x] = (r << 19) | (b << 11) | (g << 2); - } - } - } - } -#if 0 - else - { - /* TODO/FIXME: handle 32-bit core output */ - } -#endif - } - - return true; -} - -static void fpga_set_nonblock_state(void *a, bool b, bool c, unsigned d) { } -static bool fpga_alive(void *data) { return true; } -static bool fpga_focus(void *data) { return true; } -static bool fpga_suppress_screensaver(void *data, bool enable) { return false; } -static bool fpga_has_windowed(void *data) { return true; } - -static void fpga_free(void *data) -{ - fpga_t *fpga = (fpga_t*)data; - - if (!fpga) - return; - - if (fpga->menu_frame) - free(fpga->menu_frame); - fpga->menu_frame = NULL; - - free(fpga); - - fpga->regOp.only_mmap = 0; - fpga->regOp.only_munmap = 1; - - do_mmap_op(&fpga->regOp); -} - -/* TODO/FIXME - implement */ -static bool fpga_set_shader(void *data, - enum rarch_shader_type type, const char *path) { return false; } -static void fpga_set_rotation(void *data, - unsigned rotation) { } - -static void fpga_set_texture_frame(void *data, - const void *frame, bool rgb32, unsigned width, unsigned height, - float alpha) -{ - fpga_t *fpga = (fpga_t*)data; - unsigned pitch = width * 2; - - if (fpga->rgb32) - pitch = width * 4; - - if (fpga->menu_frame) - free(fpga->menu_frame); - fpga->menu_frame = NULL; - - if ( !fpga->menu_frame || - fpga->menu_width != width || - fpga->menu_height != height || - fpga->menu_pitch != pitch) - if (pitch && height) - fpga->menu_frame = (unsigned char*)malloc(pitch * height); - - if (fpga->menu_frame && frame && pitch && height) - { - memcpy(fpga->menu_frame, frame, pitch * height); - fpga->menu_width = width; - fpga->menu_height = height; - fpga->menu_pitch = pitch; - fpga->menu_bits = fpga->rgb32 ? 32 : 16; - } -} - -/* TODO/FIXME - implement */ -static void fpga_set_osd_msg(void *data, const char *msg, - const struct font_params *params, void *font) { } -static void fpga_get_video_output_size(void *data, - unsigned *width, unsigned *height, char *desc, size_t desc_len) { } -static void fpga_get_video_output_prev(void *data) { } -static void fpga_get_video_output_next(void *data) { } -static void fpga_set_video_mode(void *data, unsigned width, unsigned height, - bool fullscreen) { } - -static const video_poke_interface_t fpga_poke_interface = { - NULL, /* get_flags */ - NULL, /* load_texture */ - NULL, /* unload_texture */ - fpga_set_video_mode, - NULL, /* get_refresh_rate */ - NULL, /* set_filtering */ - fpga_get_video_output_size, - fpga_get_video_output_prev, - fpga_get_video_output_next, - NULL, /* get_current_framebuffer */ - NULL, /* get_proc_address */ - NULL, /* set_aspect_ratio */ - NULL, /* apply_state_changes */ -#ifdef HAVE_MENU - fpga_set_texture_frame, - NULL, /* set_texture_enable */ - fpga_set_osd_msg, - NULL, /* show_mouse */ -#else - NULL, /* set_texture_frame */ - NULL, /* set_texture_enable */ - NULL, /* set_osd_msg */ - NULL, /* show_mouse */ -#endif - NULL, /* grab_mouse_toggle */ - NULL, /* get_current_shader */ - NULL, /* get_current_software_framebuffer */ - NULL, /* get_hw_render_interface */ - NULL, /* set_hdr_max_nits */ - NULL, /* set_hdr_paper_white_nits */ - NULL, /* set_hdr_contrast */ - NULL /* set_hdr_expand_gamut */ -}; - -static void fpga_get_poke_interface(void *data, - const video_poke_interface_t **iface) -{ - (void)data; - *iface = &fpga_poke_interface; -} - -/* TODO/FIXME - implement */ -static void fpga_set_viewport(void *data, unsigned viewport_width, - unsigned viewport_height, bool force_full, bool allow_rotate) { } - -video_driver_t video_fpga = { - fpga_init, - fpga_frame, - fpga_set_nonblock_state, - fpga_alive, - fpga_focus, - fpga_suppress_screensaver, - fpga_has_windowed, - fpga_set_shader, - fpga_free, - "fpga", - fpga_set_viewport, - fpga_set_rotation, - NULL, /* viewport_info */ - NULL, /* read_viewport */ - NULL, /* read_frame_raw */ -#ifdef HAVE_OVERLAY - NULL, /* get_overlay_interface */ -#endif - fpga_get_poke_interface, - NULL, /* wrap_type_to_enum */ -#ifdef HAVE_GFX_WIDGETS - NULL /* gfx_widgets_enabled */ -#endif -}; +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2017 - Daniel De Matteis + * Copyright (C) 2016-2017 - Brad Parker + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include +#include + +#ifdef HAVE_CONFIG_H +#include "../../config.h" +#endif + +#ifdef HAVE_MENU +#include "../../menu/menu_driver.h" +#endif + +#include "../../driver.h" +#include "../../configuration.h" +#include "../../verbosity.h" + +#define NUMBER_OF_WRITE_FRAMES 1 /* XPAR_AXIVDMA_0_NUM_FSTORES */ +#define STORAGE_SIZE NUMBER_OF_WRITE_FRAMES * ((1920*1080)<<2) +#define FRAME_SIZE (STORAGE_SIZE / NUMBER_OF_WRITE_FRAMES) + +#define FB_WIDTH 1920 +#define FB_HEIGHT 1080 + +typedef struct RegOp +{ + void *ptr; + int fd; + int only_mmap; + int only_munmap; +} RegOp; + +typedef struct fpga +{ + RegOp regOp; /* ptr alignment */ + volatile unsigned *framebuffer; + unsigned char *menu_frame; + unsigned menu_width; + unsigned menu_height; + unsigned menu_pitch; + unsigned video_width; + unsigned video_height; + unsigned video_pitch; + unsigned video_bits; + unsigned menu_bits; + bool rgb32; +} fpga_t; + +static unsigned int get_memory_size(void) +{ + unsigned int size; + + /* this file holds the memory range needed to map the framebuffer into + * kernel address space, it is specified in the device tree + */ + FILE *size_fp = fopen("/sys/class/uio/uio0/maps/map0/size", "r"); + + if (!size_fp) + { + RARCH_ERR("unable to open the uio size file\n"); + exit(1); + } + + fscanf(size_fp, "0x%08X", &size); + fclose(size_fp); + + return size; +} + +static void do_mmap_op(RegOp *regOp) +{ + if (regOp->only_munmap == 0) + { + regOp->fd = open("/dev/uio0", O_RDWR); + + if (regOp->fd < 1) + return; + + regOp->ptr = mmap(NULL, get_memory_size(), + PROT_READ|PROT_WRITE, MAP_SHARED, regOp->fd, 0); + + if (regOp->ptr == MAP_FAILED) + { + RARCH_ERR("could not mmap() memory\n"); + exit(1); + } + } + + if (regOp->only_mmap == 0) + { + if (munmap(regOp->ptr, get_memory_size()) == -1) + { + RARCH_ERR("could not munmap() memory\n"); + exit(1); + } + + close(regOp->fd); + } + + return; +} + +static void fpga_create(fpga_t *fpga) +{ + memset(&fpga->regOp, 0, sizeof(fpga->regOp)); + + fpga->regOp.only_mmap = 1; + + do_mmap_op(&fpga->regOp); + + fpga->framebuffer = ((volatile unsigned*)fpga->regOp.ptr); +} + +static void *fpga_init(const video_info_t *video, + const input_driver_t **input, void **input_data) +{ + fpga_t *fpga = (fpga_t*)calloc(1, sizeof(*fpga)); + + *input = NULL; + *input_data = NULL; + + fpga->video_width = video->width; + fpga->video_height = video->height; + fpga->rgb32 = video->rgb32; + + fpga->video_bits = video->rgb32 ? 32 : 16; + + if (video->rgb32) + fpga->video_pitch = video->width * 4; + else + fpga->video_pitch = video->width * 2; + + fpga_create(fpga); + + return fpga; + +error: + if (fpga) + free(fpga); + return NULL; +} + +static bool fpga_frame(void *data, const void *frame, + unsigned frame_width, unsigned frame_height, uint64_t frame_count, + unsigned pitch, const char *msg, video_frame_info_t *video_info) +{ + const void *frame_to_copy = frame; + unsigned width = 0; + unsigned height = 0; + bool draw = true; + fpga_t *fpga = (fpga_t*)data; + unsigned bits = fpga->video_bits; +#ifdef HAVE_MENU + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; +#endif + + if (!frame || !frame_width || !frame_height) + return true; + +#ifdef HAVE_MENU + menu_driver_frame(menu_is_alive, video_info); +#endif + + if ( (fpga->video_width != frame_width) + || (fpga->video_height != frame_height) + || (fpga->video_pitch != pitch)) + { + if (frame_width > 4 && frame_height > 4) + { + fpga->video_width = frame_width; + fpga->video_height = frame_height; + fpga->video_pitch = pitch; + } + } + +#ifdef HAVE_MENU + if (fpga->menu_frame && menu_is_alive) + { + frame_to_copy = fpga->menu_frame; + width = fpga->menu_width; + height = fpga->menu_height; + pitch = fpga->menu_pitch; + bits = fpga->menu_bits; + } + else +#endif + { + width = fpga->video_width; + height = fpga->video_height; + pitch = fpga->video_pitch; + + if (frame_width == 4 && frame_height == 4 && (frame_width < width && frame_height < height)) + draw = false; + +#ifdef HAVE_MENU + if (menu_is_alive) + draw = false; +#endif + } + + if (draw) + { + if (bits == 16) + { + if (frame_to_copy == fpga->menu_frame) + { + /* RGBX4444 color bits for RGUI */ + unsigned x, y; + + for (y = 0; y < FB_HEIGHT; y++) + { + for (x = 0; x < FB_WIDTH; x++) + { + /* scale incoming frame to fit the screen */ + unsigned scaled_x = (width * x) / FB_WIDTH; + unsigned scaled_y = (height * y) / FB_HEIGHT; + unsigned short pixel = ((unsigned short*)frame_to_copy)[width * scaled_y + scaled_x]; + + /* convert RGBX444 to XRGB8888 */ + unsigned r = ((pixel & 0xF000) >> 12); + unsigned g = ((pixel & 0x0F00) >> 8); + unsigned b = ((pixel & 0x00F0) >> 4); + + fpga->framebuffer[FB_WIDTH * y + x] = (r << 20) | (b << 12) | (g << 4); + } + } + } + else + { + /* RGB565 color bits for core */ + unsigned x, y; + + for (y = 0; y < FB_HEIGHT; y++) + { + for (x = 0; x < FB_WIDTH; x++) + { + /* scale incoming frame to fit the screen */ + unsigned scaled_x = (width * x) / FB_WIDTH; + unsigned scaled_y = (height * y) / FB_HEIGHT; + unsigned short pixel = ((unsigned short*)frame_to_copy)[width * scaled_y + scaled_x]; + + /* convert RGB565 to XRBG8888 */ + unsigned r = ((pixel & 0xF800) >> 11); + unsigned g = ((pixel & 0x07E0) >> 5); + unsigned b = ((pixel & 0x001F) >> 0); + + fpga->framebuffer[FB_WIDTH * y + x] = (r << 19) | (b << 11) | (g << 2); + } + } + } + } +#if 0 + else + { + /* TODO/FIXME: handle 32-bit core output */ + } +#endif + } + + return true; +} + +static void fpga_set_nonblock_state(void *a, bool b, bool c, unsigned d) { } +static bool fpga_alive(void *data) { return true; } +static bool fpga_focus(void *data) { return true; } +static bool fpga_suppress_screensaver(void *data, bool enable) { return false; } +static bool fpga_has_windowed(void *data) { return true; } + +static void fpga_free(void *data) +{ + fpga_t *fpga = (fpga_t*)data; + + if (!fpga) + return; + + if (fpga->menu_frame) + free(fpga->menu_frame); + fpga->menu_frame = NULL; + + free(fpga); + + fpga->regOp.only_mmap = 0; + fpga->regOp.only_munmap = 1; + + do_mmap_op(&fpga->regOp); +} + +/* TODO/FIXME - implement */ +static bool fpga_set_shader(void *data, + enum rarch_shader_type type, const char *path) { return false; } +static void fpga_set_rotation(void *data, + unsigned rotation) { } + +static void fpga_set_texture_frame(void *data, + const void *frame, bool rgb32, unsigned width, unsigned height, + float alpha) +{ + fpga_t *fpga = (fpga_t*)data; + unsigned pitch = width * 2; + + if (fpga->rgb32) + pitch = width * 4; + + if (fpga->menu_frame) + free(fpga->menu_frame); + fpga->menu_frame = NULL; + + if ( !fpga->menu_frame || + fpga->menu_width != width || + fpga->menu_height != height || + fpga->menu_pitch != pitch) + if (pitch && height) + fpga->menu_frame = (unsigned char*)malloc(pitch * height); + + if (fpga->menu_frame && frame && pitch && height) + { + memcpy(fpga->menu_frame, frame, pitch * height); + fpga->menu_width = width; + fpga->menu_height = height; + fpga->menu_pitch = pitch; + fpga->menu_bits = fpga->rgb32 ? 32 : 16; + } +} + +/* TODO/FIXME - implement */ +static void fpga_set_osd_msg(void *data, const char *msg, + const struct font_params *params, void *font) { } +static void fpga_get_video_output_size(void *data, + unsigned *width, unsigned *height, char *desc, size_t desc_len) { } +static void fpga_get_video_output_prev(void *data) { } +static void fpga_get_video_output_next(void *data) { } +static void fpga_set_video_mode(void *data, unsigned width, unsigned height, + bool fullscreen) { } + +static const video_poke_interface_t fpga_poke_interface = { + NULL, /* get_flags */ + NULL, /* load_texture */ + NULL, /* unload_texture */ + fpga_set_video_mode, + NULL, /* get_refresh_rate */ + NULL, /* set_filtering */ + fpga_get_video_output_size, + fpga_get_video_output_prev, + fpga_get_video_output_next, + NULL, /* get_current_framebuffer */ + NULL, /* get_proc_address */ + NULL, /* set_aspect_ratio */ + NULL, /* apply_state_changes */ +#ifdef HAVE_MENU + fpga_set_texture_frame, + NULL, /* set_texture_enable */ + fpga_set_osd_msg, + NULL, /* show_mouse */ +#else + NULL, /* set_texture_frame */ + NULL, /* set_texture_enable */ + NULL, /* set_osd_msg */ + NULL, /* show_mouse */ +#endif + NULL, /* grab_mouse_toggle */ + NULL, /* get_current_shader */ + NULL, /* get_current_software_framebuffer */ + NULL, /* get_hw_render_interface */ + NULL, /* set_hdr_max_nits */ + NULL, /* set_hdr_paper_white_nits */ + NULL, /* set_hdr_contrast */ + NULL /* set_hdr_expand_gamut */ +}; + +static void fpga_get_poke_interface(void *data, + const video_poke_interface_t **iface) +{ + (void)data; + *iface = &fpga_poke_interface; +} + +/* TODO/FIXME - implement */ +static void fpga_set_viewport(void *data, unsigned viewport_width, + unsigned viewport_height, bool force_full, bool allow_rotate) { } + +video_driver_t video_fpga = { + fpga_init, + fpga_frame, + fpga_set_nonblock_state, + fpga_alive, + fpga_focus, + fpga_suppress_screensaver, + fpga_has_windowed, + fpga_set_shader, + fpga_free, + "fpga", + fpga_set_viewport, + fpga_set_rotation, + NULL, /* viewport_info */ + NULL, /* read_viewport */ + NULL, /* read_frame_raw */ +#ifdef HAVE_OVERLAY + NULL, /* get_overlay_interface */ +#endif + fpga_get_poke_interface, + NULL, /* wrap_type_to_enum */ +#ifdef HAVE_GFX_WIDGETS + NULL /* gfx_widgets_enabled */ +#endif +}; diff --git a/gfx/drivers/gdi_gfx.c b/gfx/drivers/gdi_gfx.c index 6bd81630db..c19a4d945e 100644 --- a/gfx/drivers/gdi_gfx.c +++ b/gfx/drivers/gdi_gfx.c @@ -597,7 +597,7 @@ static bool gdi_frame(void *data, const void *frame, unsigned bits = gdi->video_bits; HWND hwnd = win32_get_window(); #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif /* FIXME: Force these settings off as they interfere with the rendering */ @@ -612,9 +612,9 @@ static bool gdi_frame(void *data, const void *frame, menu_driver_frame(menu_is_alive, video_info); #endif - if ( gdi->video_width != frame_width || - gdi->video_height != frame_height || - gdi->video_pitch != pitch) + if ( (gdi->video_width != frame_width) + || (gdi->video_height != frame_height) + || (gdi->video_pitch != pitch)) { if (frame_width > 4 && frame_height > 4) { diff --git a/gfx/drivers/gl1.c b/gfx/drivers/gl1.c index 6f3e58153f..e5ff26c47c 100644 --- a/gfx/drivers/gl1.c +++ b/gfx/drivers/gl1.c @@ -15,13 +15,13 @@ * If not, see . */ -/* OpenGL 1.x driver. +/* OpenGL 1.x driver. * * Minimum version : OpenGL 1.1 (1997) * - * We are targeting a minimum of OpenGL 1.1 and the Microsoft + * We are targeting a minimum of OpenGL 1.1 and the Microsoft * "GDI Generic" * software GL implementation. - * Any additional features added for later 1.x versions should only be + * Any additional features added for later 1.x versions should only be * enabled if they are detected at runtime. */ #include @@ -260,7 +260,7 @@ static void gfx_display_gl1_draw(gfx_display_ctx_draw_t *draw, sizeof(float) * 2); vertices3[i * 3 + 2] = 0.0f; } - glVertexPointer(3, GL_FLOAT, 0, vertices3); + glVertexPointer(3, GL_FLOAT, 0, vertices3); } #else glVertexPointer(2, GL_FLOAT, 0, draw->coords->vertex); @@ -503,7 +503,7 @@ static void gl1_raster_font_draw_vertices( vertices3[i*3+2] = 0.0f; } } - glVertexPointer(3, GL_FLOAT, 0, vertices3); + glVertexPointer(3, GL_FLOAT, 0, vertices3); #else glVertexPointer(2, GL_FLOAT, 0, coords->vertex); #endif @@ -1171,7 +1171,7 @@ static void *gl1_init(const video_info_t *video, memcpy(gl1->tex_info.coord, gl1_tex_coords, sizeof(gl1->tex_info.coord)); gl1->vertex_ptr = hwr->bottom_left_origin - ? gl1_vertexes + ? gl1_vertexes : gl1_vertexes_flipped; gl1->textures = 4; gl1->white_color_ptr = gl1_white_color; @@ -1347,14 +1347,14 @@ static void gl1_draw_tex(gl1_t *gl1, int pot_width, int pot_height, int width, i float norm_width = (1.0f / (float)pot_width) * (float)width; float norm_height = (1.0f / (float)pot_height) * (float)height; - + float texcoords[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; - + texcoords[1] = texcoords[5] = norm_height; texcoords[4] = texcoords[6] = norm_width; @@ -1447,17 +1447,17 @@ static void gl1_draw_tex(gl1_t *gl1, int pot_width, int pot_height, int width, i if (gl1->rotation && tex == gl1->tex) glRotatef(gl1->rotation, 0.0f, 0.0f, 1.0f); - + glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); - + glColorPointer(4, GL_FLOAT, 0, colors); glVertexPointer(3, GL_FLOAT, 0, vertices); glTexCoordPointer(2, GL_FLOAT, 0, texcoords); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - + glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); @@ -1500,7 +1500,7 @@ static bool gl1_frame(void *data, const void *frame, unsigned video_width = video_info->width; unsigned video_height = video_info->height; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; @@ -1539,7 +1539,7 @@ static bool gl1_frame(void *data, const void *frame, && (frame_width < width && frame_height < height)) ) draw = false; - + do_swap = frame || draw; if ( (gl1->video_width != frame_width) @@ -1554,7 +1554,7 @@ static bool gl1_frame(void *data, const void *frame, pot_width = GET_POT(frame_width); pot_height = GET_POT(frame_height); - + if (draw) { if (gl1->video_buf) @@ -1606,7 +1606,7 @@ static bool gl1_frame(void *data, const void *frame, { glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - + if (frame_to_copy) gl1_draw_tex(gl1, pot_width, pot_height, width, height, gl1->tex, frame_to_copy); @@ -1730,22 +1730,22 @@ static bool gl1_frame(void *data, const void *frame, video_info->black_frame_insertion && !video_info->input_driver_nonblock_state && !video_info->runloop_is_slowmotion - && !video_info->runloop_is_paused + && !video_info->runloop_is_paused && !(gl1->flags & GL1_FLAG_MENU_TEXTURE_ENABLE)) { int n; for (n = 0; n < (int)video_info->black_frame_insertion; ++n) { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT); if (gl1->ctx_driver->swap_buffers) gl1->ctx_driver->swap_buffers(gl1->ctx_data); - } - } -#endif + } + } +#endif - /* check if we are fast forwarding or in menu, + /* check if we are fast forwarding or in menu, if we are ignore hard sync */ if ( hard_sync && !video_info->input_driver_nonblock_state @@ -1962,9 +1962,9 @@ static void gl1_set_texture_frame(void *data, if (gl1->menu_frame) free(gl1->menu_frame); - /* FIXME? We have to assume the pitch has no - * extra padding in it because that will - * mess up the POT calculation when we don't + /* FIXME? We have to assume the pitch has no + * extra padding in it because that will + * mess up the POT calculation when we don't * know how many bpp there are. */ gl1->menu_frame = (unsigned char*)malloc(pitch * height); } @@ -2062,20 +2062,20 @@ static void gl1_load_texture_data( glTexImage2D(GL_TEXTURE_2D, 0, - (use_rgba || !rgb32) - ? GL_RGBA + (use_rgba || !rgb32) + ? GL_RGBA : RARCH_GL1_INTERNAL_FORMAT32, width, height, 0, - (use_rgba || !rgb32) - ? GL_RGBA + (use_rgba || !rgb32) + ? GL_RGBA : RARCH_GL1_TEXTURE_TYPE32, #ifdef MSB_FIRST GL_UNSIGNED_INT_8_8_8_8_REV, #else rgb32 - ? RARCH_GL1_FORMAT32 + ? RARCH_GL1_FORMAT32 : GL_UNSIGNED_BYTE, #endif frame); @@ -2155,7 +2155,7 @@ static void gl1_set_aspect_ratio(void *data, unsigned aspect_ratio_idx) gl1->flags |= (GL1_FLAG_KEEP_ASPECT | GL1_FLAG_SHOULD_RESIZE); } -static void gl1_unload_texture(void *data, +static void gl1_unload_texture(void *data, bool threaded, uintptr_t id) { GLuint glid; diff --git a/gfx/drivers/gl2.c b/gfx/drivers/gl2.c index 0de4d98ce4..e28919f3ef 100644 --- a/gfx/drivers/gl2.c +++ b/gfx/drivers/gl2.c @@ -3440,7 +3440,7 @@ static bool gl2_frame(void *data, const void *frame, &video_info->osd_stat_params; const char *stat_text = video_info->stat_text; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/gl3.c b/gfx/drivers/gl3.c index ba0754daf7..21c7727bbb 100644 --- a/gfx/drivers/gl3.c +++ b/gfx/drivers/gl3.c @@ -2519,7 +2519,7 @@ static bool gl3_frame(void *data, const void *frame, bool runloop_is_slowmotion = video_info->runloop_is_slowmotion; bool input_driver_nonblock_state = video_info->input_driver_nonblock_state; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index 5ecf519ae5..48e9c6eca6 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -375,7 +375,7 @@ static void gfx_display_wiiu_draw(gfx_display_ctx_draw_t *draw, v = wiiu->vertex_cache.v + wiiu->vertex_cache.current; v->pos.x = draw->x; - v->pos.y = wiiu->color_buffer.surface.height - + v->pos.y = wiiu->color_buffer.surface.height - draw->y - draw->height; v->pos.width = draw->width; v->pos.height = draw->height; @@ -410,7 +410,7 @@ static void gfx_display_wiiu_draw(gfx_display_ctx_draw_t *draw, GX2SetVertexUniformBlock(sprite_shader.vs.uniformBlocks[1].offset, sprite_shader.vs.uniformBlocks[1].size, wiiu->ubo_tex); - GX2SetAttribBuffer(0, wiiu->vertex_cache.size + GX2SetAttribBuffer(0, wiiu->vertex_cache.size * sizeof(*wiiu->vertex_cache.v), sizeof(*wiiu->vertex_cache.v), wiiu->vertex_cache.v); @@ -555,7 +555,7 @@ static void* gx2_font_init(void* data, const char* font_path, font->texture.surface.alignment); for (i = 0; (i < font->atlas->height) && (i < font->texture.surface.height); i++) - memcpy((uint8_t*)font->texture.surface.image + memcpy((uint8_t*)font->texture.surface.image + (i * font->texture.surface.pitch), font->atlas->buffer + (i * font->atlas->width), font->atlas->width); @@ -702,7 +702,7 @@ static void gx2_font_render_line( if (font->atlas->dirty) { for (i = 0; (i < font->atlas->height) && (i < font->texture.surface.height); i++) - memcpy(font->texture.surface.image + memcpy(font->texture.surface.image + (i * font->texture.surface.pitch), font->atlas->buffer + (i * font->atlas->width), font->atlas->width); @@ -748,7 +748,7 @@ static void gx2_font_render_message( size_t msg_len = delim ? (delim - msg) : strlen(msg); /* Draw the line */ - if ((wiiu->vertex_cache.current + (msg_len * 4) + if ((wiiu->vertex_cache.current + (msg_len * 4) <= wiiu->vertex_cache.size)) gx2_font_render_line(wiiu, font, @@ -1310,7 +1310,7 @@ static void *gx2_init(const video_info_t *video, gx2_fake_context.get_flags = gx2_get_flags; - video_context_driver_set(&gx2_fake_context); + video_context_driver_set(&gx2_fake_context); shader_preset = video_shader_get_current_shader_preset(); type = video_shader_parse_type(shader_preset); @@ -1655,7 +1655,7 @@ static bool wiiu_init_frame_textures(wiiu_video_t *wiiu, unsigned width, unsigne #if 0 wiiu->pass[i].texture.surface.mipLevels = 1; #endif - wiiu->pass[i].texture.surface.format = + wiiu->pass[i].texture.surface.format = (pass->fbo.flags & FBO_SCALE_FLAG_FP_FBO) ? GX2_SURFACE_FORMAT_FLOAT_R32_G32_B32_A32 : (pass->fbo.flags & FBO_SCALE_FLAG_SRGB_FBO) @@ -1880,7 +1880,7 @@ static bool gx2_frame(void *data, const void *frame, uint32_t i; wiiu_video_t *wiiu = (wiiu_video_t *) data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; @@ -2204,11 +2204,11 @@ static bool gx2_frame(void *data, const void *frame, GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->vertex_cache.v, - wiiu->vertex_cache.current + wiiu->vertex_cache.current * sizeof(*wiiu->vertex_cache.v)); GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->vertex_cache_tex.v, - wiiu->vertex_cache_tex.current + wiiu->vertex_cache_tex.current * sizeof(*wiiu->vertex_cache_tex.v)); if (wiiu->menu.enable) @@ -2300,7 +2300,7 @@ static uintptr_t gx2_load_texture(void *video_data, void *data, texture->surface.imageSize, texture->surface.alignment); for (i = 0; (i < image->height) && (i < texture->surface.height); i++) - memcpy((uint32_t *)texture->surface.image + memcpy((uint32_t *)texture->surface.image + (i * texture->surface.pitch), image->pixels + (i * image->width), image->width * sizeof(image->pixels)); @@ -2312,7 +2312,7 @@ static uintptr_t gx2_load_texture(void *video_data, void *data, return (uintptr_t)texture; } -static void gx2_unload_texture(void *data, +static void gx2_unload_texture(void *data, bool threaded, uintptr_t handle) { GX2Texture *texture = (GX2Texture *)handle; diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index 9e9c721902..1140bc392d 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -463,8 +463,8 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines, while (gx_is_valid_yorigin(gx_mode.viYOrigin+(gx->yOriginPos+1))) gx->yOriginPos++; - gx_mode.xfbMode = (modetype == VI_INTERLACE) - ? VI_XFBMODE_DF + gx_mode.xfbMode = (modetype == VI_INTERLACE) + ? VI_XFBMODE_DF : VI_XFBMODE_SF; gx_mode.field_rendering = GX_FALSE; gx_mode.aa = GX_FALSE; @@ -671,9 +671,9 @@ static void init_texture(gx_video_t *gx, unsigned width, unsigned height, fb_pitch = p_disp->framebuf_pitch; GX_InitTexObj(fb_ptr, g_tex.data, width, height, - (gx->rgb32) - ? GX_TF_RGBA8 - : gx->menu_texture_enable + (gx->rgb32) + ? GX_TF_RGBA8 + : gx->menu_texture_enable ? GX_TF_RGB5A3 : GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); @@ -1072,7 +1072,7 @@ static void gx_resize(gx_video_t *gx, || (overscan_corr_bottom > 0)) { float current_aspect = (float)width / (float)height; - int new_height = height - + int new_height = height - (overscan_corr_top + overscan_corr_bottom); int new_width = (int)((new_height * current_aspect) + 0.5f); @@ -1247,7 +1247,7 @@ static void gx_set_rotation(void *data, unsigned orientation) if (!gx) return; - + gx->orientation = orientation; gx->should_resize = true; } @@ -1465,7 +1465,7 @@ static bool gx_overlay_load(void *data, static void gx_overlay_enable(void *data, bool state) { gx_video_t *gx = (gx_video_t*)data; - + if (gx) gx->overlay_enable = state; } @@ -1473,7 +1473,7 @@ static void gx_overlay_enable(void *data, bool state) static void gx_overlay_full_screen(void *data, bool enable) { gx_video_t *gx = (gx_video_t*)data; - + if (gx) gx->overlay_full_screen = enable; } @@ -1492,7 +1492,7 @@ static void gx_render_overlay(void *data) gx_video_t *gx = (gx_video_t*)data; if (!gx) return; - + GX_SetCurrentMtx(GX_PNMTX1); GX_SetVtxDesc(GX_VA_POS, GX_DIRECT); GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); @@ -1589,7 +1589,7 @@ static bool gx_frame(void *data, const void *frame, bool video_smooth = settings->bools.video_smooth; unsigned video_aspect_ratio_idx = settings->uints.video_aspect_ratio_idx; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif bool fps_show = video_info->fps_show; diff --git a/gfx/drivers/metal.m b/gfx/drivers/metal.m index 4506ef1dfc..ed5d72549f 100644 --- a/gfx/drivers/metal.m +++ b/gfx/drivers/metal.m @@ -1062,7 +1062,7 @@ font_renderer_t metal_raster_font = { - (void)_drawMenu:(video_frame_info_t *)video_info { - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; if (!_menu.enabled) return; diff --git a/gfx/drivers/network_gfx.c b/gfx/drivers/network_gfx.c index 69140c77f7..9aac2cdb70 100644 --- a/gfx/drivers/network_gfx.c +++ b/gfx/drivers/network_gfx.c @@ -171,7 +171,7 @@ static bool network_gfx_frame(void *data, const void *frame, bool draw = true; network_video_t *network = (network_video_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (!frame || !frame_width || !frame_height) @@ -233,8 +233,8 @@ static bool network_gfx_frame(void *data, const void *frame, network_video_temp_buf = (unsigned*) malloc( - network->screen_width - * network->screen_height + network->screen_width + * network->screen_height * sizeof(unsigned)); } @@ -257,14 +257,14 @@ static bool network_gfx_frame(void *data, const void *frame, unsigned short pixel = ((unsigned short*)frame_to_copy)[width * scaled_y + scaled_x]; /* convert RGBX4444 to RGBX8888 */ - unsigned r = ((pixel & 0xF000) << 8) + unsigned r = ((pixel & 0xF000) << 8) | ((pixel & 0xF000) << 4); - unsigned g = ((pixel & 0x0F00) << 4) + unsigned g = ((pixel & 0x0F00) << 4) | ((pixel & 0x0F00) << 0); - unsigned b = ((pixel & 0x00F0) << 0) + unsigned b = ((pixel & 0x00F0) << 0) | ((pixel & 0x00F0) >> 4); - network_video_temp_buf[network->screen_width * y + x] + network_video_temp_buf[network->screen_width * y + x] = 0xFF000000 | b | g | r; } } diff --git a/gfx/drivers/oga_gfx.c b/gfx/drivers/oga_gfx.c index 99c435decd..bb71b27159 100644 --- a/gfx/drivers/oga_gfx.c +++ b/gfx/drivers/oga_gfx.c @@ -547,10 +547,13 @@ static bool oga_frame(void *data, const void *frame, unsigned width, unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, video_frame_info_t *video_info) { - oga_video_t *vid = (oga_video_t*)data; - oga_framebuf_t* page = vid->pages[vid->cur_page]; + oga_video_t *vid = (oga_video_t*)data; + oga_framebuf_t* page = vid->pages[vid->cur_page]; oga_surface_t *page_surface = page->surface; - float aspect_ratio = video_driver_get_aspect_ratio(); + float aspect_ratio = video_driver_get_aspect_ratio(); +#ifdef HAVE_MENU + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; +#endif if (unlikely(!frame || width == 0 || height == 0)) return true; @@ -569,7 +572,22 @@ static bool oga_frame(void *data, const void *frame, unsigned width, rga_clear_surface(page_surface, 0); - if (likely(!video_info->menu_is_alive)) +#ifdef HAVE_MENU + if (menu_is_alive) + { + oga_rect_t r; + menu_driver_frame(true, video_info); + + width = vid->menu_surface->width; + height = vid->menu_surface->height; + aspect_ratio = (float)width / height; + + oga_calc_bounds(&r, vid->drm_width, vid->drm_height, width, height, aspect_ratio, vid->display_ar); + oga_blit(vid->menu_surface, 0, 0, width, height, + page_surface, r.y, r.x, r.h, r.w, HAL_TRANSFORM_ROT_270, vid->scale_mode, 0); + } + else +#endif { uint8_t* src = (uint8_t*)frame; uint8_t* dst = (uint8_t*)vid->frame_surface->map; @@ -581,7 +599,8 @@ static bool oga_frame(void *data, const void *frame, unsigned width, int dst_pitch = vid->frame_surface->pitch; int yy = height; - while (yy > 0) { + while (yy > 0) + { memcpy(dst, src, pitch); src += pitch; dst += dst_pitch; @@ -593,22 +612,6 @@ static bool oga_frame(void *data, const void *frame, unsigned width, oga_blit(vid->frame_surface, 0, 0, width, height, page_surface, r.y, r.x, r.h, r.w, vid->rotation, vid->scale_mode, blend); } -#ifdef HAVE_MENU - else - { - menu_driver_frame(true, video_info); - - width = vid->menu_surface->width; - height = vid->menu_surface->height; - - aspect_ratio = (float)width / height; - - oga_rect_t r; - oga_calc_bounds(&r, vid->drm_width, vid->drm_height, width, height, aspect_ratio, vid->display_ar); - oga_blit(vid->menu_surface, 0, 0, width, height, - page_surface, r.y, r.x, r.h, r.w, HAL_TRANSFORM_ROT_270, vid->scale_mode, 0); - } -#endif if (msg) { diff --git a/gfx/drivers/omap_gfx.c b/gfx/drivers/omap_gfx.c index 3bf5d3f19d..517f4b410e 100644 --- a/gfx/drivers/omap_gfx.c +++ b/gfx/drivers/omap_gfx.c @@ -979,7 +979,7 @@ static bool omap_frame(void *data, const void *frame, unsigned width, { omap_video_t *vid = (omap_video_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (!frame) @@ -1019,7 +1019,7 @@ static bool omap_frame(void *data, const void *frame, unsigned width, return true; } -static void omap_set_nonblock_state(void *data, bool state, +static void omap_set_nonblock_state(void *data, bool state, bool adaptive_vsync_enabled, unsigned swap_interval) { omap_video_t *vid; diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c index 6e07b2b0cd..10b8ae5ae7 100644 --- a/gfx/drivers/psp1_gfx.c +++ b/gfx/drivers/psp1_gfx.c @@ -429,7 +429,7 @@ static void *psp_init(const video_info_t *video, else { u16 i; - video_driver_state_t *video_st = video_state_get_ptr(); + video_driver_state_t *video_st = video_state_get_ptr(); uint16_t* LUT_r_local = (uint16_t*)(SCEGU_VRAM_BP_2); uint16_t* LUT_b_local = (uint16_t*)(SCEGU_VRAM_BP_2) + (1 << 5); @@ -550,9 +550,9 @@ static bool psp_frame(void *data, const void *frame, unsigned width, unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, video_frame_info_t *video_info) { - psp1_video_t *psp = (psp1_video_t*)data; + psp1_video_t *psp = (psp1_video_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (!width || !height) @@ -566,7 +566,7 @@ static bool psp_frame(void *data, const void *frame, if (!psp->hw_render) sceGuSync(0, 0); /* let the core decide when to sync when HW_RENDER */ - if (msg) + if (msg) { pspDebugScreenSetBase(psp->draw_buffer); pspDebugScreenSetXY(0,0); diff --git a/gfx/drivers/rsx_gfx.c b/gfx/drivers/rsx_gfx.c index dccc542475..f108c1924c 100644 --- a/gfx/drivers/rsx_gfx.c +++ b/gfx/drivers/rsx_gfx.c @@ -698,7 +698,7 @@ static void rsx_font_render_message(rsx_t *rsx, } static void rsx_font_setup_viewport( - rsx_t *rsx, rsx_font_t *font, + rsx_t *rsx, rsx_font_t *font, unsigned width, unsigned height, bool full_screen) { @@ -787,7 +787,7 @@ static void rsx_font_render_msg( rsx_font_setup_viewport(rsx, font, width, height, full_screen); if ( !string_is_empty(msg) - && font->font_data + && font->font_data && font->font_driver) { if (drop_x || drop_y) @@ -902,11 +902,11 @@ static void rsx_load_texture_data(rsx_t* rsx, rsx_texture_t *texture, texbuffer = (u8*)texture->data; memcpy(texbuffer, data, height * pitch); - texture->tex.format = (rgb32 + texture->tex.format = (rgb32 ? GCM_TEXTURE_FORMAT_A8R8G8B8 : (menu) - ? GCM_TEXTURE_FORMAT_A4R4G4B4 - : GCM_TEXTURE_FORMAT_R5G6B5) + ? GCM_TEXTURE_FORMAT_A4R4G4B4 + : GCM_TEXTURE_FORMAT_R5G6B5) | GCM_TEXTURE_FORMAT_LIN; texture->tex.mipmap = 1; texture->tex.dimension = GCM_TEXTURE_DIMS_2D; @@ -1094,7 +1094,7 @@ static const gfx_ctx_driver_t* rsx_get_context(rsx_t* rsx) enum gfx_ctx_api api = GFX_CTX_RSX_API; rsx->shared_context_use = (video_shared_context && (hwr->context_type != RETRO_HW_CONTEXT_NONE)); - + if ((runloop_get_flags() & RUNLOOP_FLAG_CORE_SET_SHARED_CONTEXT) && (hwr->context_type != RETRO_HW_CONTEXT_NONE)) rsx->shared_context_use = true; @@ -1102,7 +1102,7 @@ static const gfx_ctx_driver_t* rsx_get_context(rsx_t* rsx) gfx_ctx = video_context_driver_init_first(rsx, settings->arrays.video_context_driver, api, 1, 0, rsx->shared_context_use, &ctx_data); - + if (ctx_data) rsx->ctx_data = ctx_data; @@ -1204,7 +1204,7 @@ static gcmContextData *rsx_init_screen(rsx_t* gcm) if (!host_addr) goto error; - /* Initialise Reality, which sets up the + /* Initialise Reality, which sets up the * command buffer and shared I/O memory */ #ifdef NV40TCL_RENDER_ENABLE /* There was an API breakage on 2020-07-10, let's @@ -1254,7 +1254,7 @@ static gcmContextData *rsx_init_screen(rsx_t* gcm) gcm->depth_pitch = res.width * sizeof(u32); gcm->depth_buffer = (u32 *)rsxMemalign(64, (res.height * gcm->depth_pitch)); /* Beware, if was (res.height * gcm->depth_pitch) * 2 */ - + rsxAddressToOffset(gcm->depth_buffer, &gcm->depth_offset); gcmResetFlipStatus(); @@ -2163,7 +2163,7 @@ static bool rsx_frame(void* data, const void* frame, bool statistics_show = video_info->statistics_show; struct font_params *osd_params = (struct font_params*) &video_info->osd_stat_params; - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; @@ -2195,10 +2195,10 @@ static bool rsx_frame(void* data, const void* frame, rsx_load_texture_data(gcm, &gcm->texture[gcm->tex_index], frame, width, height, pitch, gcm->rgb32, false, - gcm->smooth - ? TEXTURE_FILTER_LINEAR + gcm->smooth + ? TEXTURE_FILTER_LINEAR : TEXTURE_FILTER_NEAREST); - /* TODO/FIXME - pipeline ID being used here is RSX_SHADER_MENU, + /* TODO/FIXME - pipeline ID being used here is RSX_SHADER_MENU, * shouldn't this be RSX_SHADER_STOCK_BLEND instead? */ rsx_set_texture(gcm, &gcm->texture[gcm->tex_index]); rsx_draw_vertices(gcm); @@ -2211,7 +2211,7 @@ static bool rsx_frame(void* data, const void* frame, menu_driver_frame(menu_is_alive, video_info); if (gcm->menu_texture.data) { - /* TODO/FIXME - pipeline ID being used here + /* TODO/FIXME - pipeline ID being used here * is RSX_SHADER_STOCK_BLEND, shouldn't * this be RSX_SHADER_MENU instead? */ rsx_set_menu_texture(gcm, &gcm->menu_texture); diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c index 4e68f47753..58c56ad26f 100644 --- a/gfx/drivers/sdl2_gfx.c +++ b/gfx/drivers/sdl2_gfx.c @@ -476,9 +476,9 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width, unsigned pitch, const char *msg, video_frame_info_t *video_info) { char title[128]; - sdl2_video_t *vid = (sdl2_video_t*)data; + sdl2_video_t *vid = (sdl2_video_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (vid->flags & SDL2_FLAG_SHOULD_RESIZE) diff --git a/gfx/drivers/sdl_dingux_gfx.c b/gfx/drivers/sdl_dingux_gfx.c index abb0742e9c..ce4128448f 100644 --- a/gfx/drivers/sdl_dingux_gfx.c +++ b/gfx/drivers/sdl_dingux_gfx.c @@ -422,9 +422,9 @@ static void *sdl_dingux_gfx_init(const video_info_t *video, settings->uints.video_dingux_ipu_filter_type; const char *input_drv_name = settings->arrays.input_driver; const char *joypad_drv_name = settings->arrays.input_joypad_driver; - uint32_t surface_flags = (video->vsync) ? - (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) : - (SDL_HWSURFACE | SDL_FULLSCREEN); + uint32_t surface_flags = (video->vsync) + ? (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) + : (SDL_HWSURFACE | SDL_FULLSCREEN); /* Initialise graphics subsystem, if required */ if (sdl_subsystem_flags == 0) @@ -445,13 +445,15 @@ static void *sdl_dingux_gfx_init(const video_info_t *video, dingux_ipu_set_downscaling_enable(true); dingux_ipu_set_scaling_mode(ipu_keep_aspect, ipu_integer_scaling); dingux_ipu_set_filter_type(ipu_filter_type); + + vid->ff_frame_time_min = 16667; #if defined(DINGUX_BETA) /* Get current refresh rate */ - refresh_rate_valid = dingux_get_video_refresh_rate(¤t_refresh_rate); + refresh_rate_valid = dingux_get_video_refresh_rate(¤t_refresh_rate); /* Check if refresh rate needs to be updated */ - if (!refresh_rate_valid || - (current_refresh_rate != target_refresh_rate)) + if ( !refresh_rate_valid + || (current_refresh_rate != target_refresh_rate)) hw_refresh_rate = dingux_set_video_refresh_rate(target_refresh_rate); else { @@ -475,19 +477,9 @@ static void *sdl_dingux_gfx_init(const video_info_t *video, } vid->refresh_rate = target_refresh_rate; - switch (target_refresh_rate) - { - case DINGUX_REFRESH_RATE_50HZ: - vid->ff_frame_time_min = 20000; - break; - default: - vid->ff_frame_time_min = 16667; - break; - } - + if (target_refresh_rate == DINGUX_REFRESH_RATE_50HZ) + vid->ff_frame_time_min = 20000; driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &hw_refresh_rate); -#else - vid->ff_frame_time_min = 16667; #endif vid->screen = SDL_SetVideoMode( @@ -524,8 +516,8 @@ static void *sdl_dingux_gfx_init(const video_info_t *video, vid->osd_font = bitmapfont_get_lut(); - if (!vid->osd_font || - vid->osd_font->glyph_max < + if ( !vid->osd_font + || vid->osd_font->glyph_max < (SDL_DINGUX_NUM_FONT_GLYPHS - 1)) { RARCH_ERR("[SDL1]: Failed to init OSD font\n"); @@ -621,9 +613,9 @@ static void sdl_dingux_set_output( { unsigned sanitized_width; unsigned sanitized_height; - uint32_t surface_flags = (vid->vsync) ? - (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) : - (SDL_HWSURFACE | SDL_FULLSCREEN); + uint32_t surface_flags = (vid->vsync) + ? (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) + : (SDL_HWSURFACE | SDL_FULLSCREEN); /* Cache set parameters */ vid->frame_width = width; @@ -765,6 +757,9 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame, unsigned pitch, const char *msg, video_frame_info_t *video_info) { sdl_dingux_video_t* vid = (sdl_dingux_video_t*)data; +#ifdef HAVE_MENU + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; +#endif /* Return early if: * - Input sdl_dingux_video_t struct is NULL @@ -796,7 +791,7 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame, } #ifdef HAVE_MENU - menu_driver_frame(video_info->menu_is_alive, video_info); + menu_driver_frame(menu_is_alive, video_info); #endif if (likely(!vid->menu_active)) @@ -804,9 +799,9 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame, /* Update video mode if we were in the menu on * the previous frame, or width/height have changed */ if (unlikely( - vid->was_in_menu || - (vid->frame_width != width) || - (vid->frame_height != height))) + vid->was_in_menu + || (vid->frame_width != width) + || (vid->frame_height != height))) sdl_dingux_set_output(vid, width, height, vid->rgb32); /* Must always lock SDL surface before @@ -878,11 +873,8 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame, static void sdl_dingux_set_texture_enable(void *data, bool state, bool full_screen) { sdl_dingux_video_t *vid = (sdl_dingux_video_t*)data; - - if (unlikely(!vid)) - return; - - vid->menu_active = state; + if (vid) + vid->menu_active = state; } static void sdl_dingux_set_texture_frame(void *data, const void *frame, bool rgb32, @@ -891,10 +883,10 @@ static void sdl_dingux_set_texture_frame(void *data, const void *frame, bool rgb sdl_dingux_video_t *vid = (sdl_dingux_video_t*)data; if (unlikely( - !vid || - rgb32 || - (width > SDL_DINGUX_MENU_WIDTH) || - (height > SDL_DINGUX_MENU_HEIGHT))) + !vid + || rgb32 + || (width > SDL_DINGUX_MENU_WIDTH) + || (height > SDL_DINGUX_MENU_HEIGHT))) return; memcpy(vid->menu_texture, frame, width * height * sizeof(uint16_t)); @@ -972,21 +964,13 @@ static bool sdl_dingux_gfx_alive(void *data) return !vid->quitting; } -static bool sdl_dingux_gfx_focus(void *data) -{ - return true; -} - +static bool sdl_dingux_gfx_focus(void *data) { return true; } +static bool sdl_dingux_gfx_has_windowed(void *data) { return false; } static bool sdl_dingux_gfx_suppress_screensaver(void *data, bool enable) { return false; } -static bool sdl_dingux_gfx_has_windowed(void *data) -{ - return false; -} - static void sdl_dingux_gfx_viewport_info(void *data, struct video_viewport *vp) { sdl_dingux_video_t *vid = (sdl_dingux_video_t*)data; @@ -1050,15 +1034,15 @@ static void sdl_dingux_apply_state_changes(void *data) return; /* Update IPU scaling mode, if required */ - if ((vid->keep_aspect != ipu_keep_aspect) || - (vid->integer_scaling != ipu_integer_scaling)) + if ( (vid->keep_aspect != ipu_keep_aspect) + || (vid->integer_scaling != ipu_integer_scaling)) { + unsigned sanitized_width; + unsigned sanitized_height; unsigned current_width = vid->frame_width; unsigned current_height = vid->frame_height; unsigned screen_width = vid->screen->w; unsigned screen_height = vid->screen->h; - unsigned sanitized_width; - unsigned sanitized_height; dingux_ipu_set_scaling_mode(ipu_keep_aspect, ipu_integer_scaling); vid->keep_aspect = ipu_keep_aspect; @@ -1071,17 +1055,14 @@ static void sdl_dingux_apply_state_changes(void *data) current_width, current_height, &sanitized_width, &sanitized_height); - if ((screen_width != sanitized_width) || - (screen_height != sanitized_height)) + if ( (screen_width != sanitized_width) + || (screen_height != sanitized_height)) sdl_dingux_set_output(vid, current_width, current_height, vid->rgb32); } } -static uint32_t sdl_dingux_get_flags(void *data) -{ - return 0; -} +static uint32_t sdl_dingux_get_flags(void *data) { return 0; } static const video_poke_interface_t sdl_dingux_poke_interface = { sdl_dingux_get_flags, diff --git a/gfx/drivers/sdl_gfx.c b/gfx/drivers/sdl_gfx.c index 62e76d9bcb..3ed89646d9 100644 --- a/gfx/drivers/sdl_gfx.c +++ b/gfx/drivers/sdl_gfx.c @@ -187,7 +187,7 @@ static void sdl_render_msg( if (glyph_height > max_height) glyph_height = max_height; - out = (uint32_t*)buffer->pixels + base_y + out = (uint32_t*)buffer->pixels + base_y * (buffer->pitch >> 2) + base_x; for (y = 0; y < glyph_height; y++, src += atlas->width, out += buffer->pitch >> 2) @@ -203,7 +203,7 @@ static void sdl_render_msg( unsigned out_r = (r * (256 - blend) + vid->font_r * blend) >> 8; unsigned out_g = (g * (256 - blend) + vid->font_g * blend) >> 8; unsigned out_b = (b * (256 - blend) + vid->font_b * blend) >> 8; - out[x] = (out_r << rshift) | + out[x] = (out_r << rshift) | (out_g << gshift) | (out_b << bshift); } @@ -363,9 +363,9 @@ static bool sdl_gfx_frame(void *data, const void *frame, unsigned width, unsigned pitch, const char *msg, video_frame_info_t *video_info) { char title[128]; - sdl_video_t *vid = (sdl_video_t*)data; + sdl_video_t *vid = (sdl_video_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (!vid) @@ -397,12 +397,12 @@ static bool sdl_gfx_frame(void *data, const void *frame, unsigned width, vid->screen->pitch, width, height, - pitch); + pitch); if (SDL_MUSTLOCK(vid->screen)) SDL_UnlockSurface(vid->screen); - + if (msg) sdl_render_msg(vid, vid->screen, msg, vid->screen->w, vid->screen->h, vid->screen->format, diff --git a/gfx/drivers/sdl_rs90_gfx.c b/gfx/drivers/sdl_rs90_gfx.c index faa6ddc976..8bf49aacc8 100644 --- a/gfx/drivers/sdl_rs90_gfx.c +++ b/gfx/drivers/sdl_rs90_gfx.c @@ -1069,6 +1069,9 @@ static bool sdl_rs90_gfx_frame(void *data, const void *frame, unsigned pitch, const char *msg, video_frame_info_t *video_info) { sdl_rs90_video_t* vid = (sdl_rs90_video_t*)data; +#ifdef HAVE_MENU + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; +#endif /* Return early if: * - Input sdl_rs90_video_t struct is NULL @@ -1100,7 +1103,7 @@ static bool sdl_rs90_gfx_frame(void *data, const void *frame, } #ifdef HAVE_MENU - menu_driver_frame(video_info->menu_is_alive, video_info); + menu_driver_frame(menu_is_alive, video_info); #endif if (likely(!vid->menu_active)) diff --git a/gfx/drivers/sixel_gfx.c b/gfx/drivers/sixel_gfx.c index 71f23f55bb..d533379181 100644 --- a/gfx/drivers/sixel_gfx.c +++ b/gfx/drivers/sixel_gfx.c @@ -326,7 +326,7 @@ static bool sixel_gfx_frame(void *data, const void *frame, bool draw = true; sixel_t *sixel = (sixel_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (!frame || !frame_width || !frame_height) diff --git a/gfx/drivers/sunxi_gfx.c b/gfx/drivers/sunxi_gfx.c index 50eb723ebe..47ceef4c53 100644 --- a/gfx/drivers/sunxi_gfx.c +++ b/gfx/drivers/sunxi_gfx.c @@ -772,7 +772,7 @@ static bool sunxi_frame(void *data, const void *frame, unsigned width, { struct sunxi_video *_dispvars = (struct sunxi_video*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (_dispvars->src_width != width || _dispvars->src_height != height) diff --git a/gfx/drivers/switch_nx_gfx.c b/gfx/drivers/switch_nx_gfx.c index 3aabdac1f9..5a7920bec8 100644 --- a/gfx/drivers/switch_nx_gfx.c +++ b/gfx/drivers/switch_nx_gfx.c @@ -55,7 +55,7 @@ #include "../../tasks/tasks_internal.h" #endif -/* +/* * DISPLAY DRIVER */ @@ -90,7 +90,7 @@ gfx_display_ctx_driver_t gfx_display_ctx_switch = { NULL /* scissor_end */ }; -/* +/* * FONT DRIVER */ @@ -363,7 +363,7 @@ font_renderer_t switch_font = switch_font_get_line_metrics }; -/* +/* * VIDEO DRIVER */ @@ -670,9 +670,9 @@ static bool switch_frame(void *data, const void *frame, uint32_t *out_buffer = NULL; bool ffwd_mode = video_info->input_driver_nonblock_state; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif - struct font_params + struct font_params *osd_params = (struct font_params *)&video_info->osd_stat_params; bool statistics_show = video_info->statistics_show; @@ -686,8 +686,8 @@ static bool switch_frame(void *data, const void *frame, return true; } - if ( sw->should_resize || - width != sw->last_width || + if ( sw->should_resize || + width != sw->last_width || height != sw->last_height) { switch_update_viewport(sw, video_info); @@ -701,8 +701,8 @@ static bool switch_frame(void *data, const void *frame, sw->scaler.in_width = width; sw->scaler.in_height = height; sw->scaler.in_stride = pitch; - sw->scaler.in_fmt = sw->rgb32 - ? SCALER_FMT_ARGB8888 + sw->scaler.in_fmt = sw->rgb32 + ? SCALER_FMT_ARGB8888 : SCALER_FMT_RGB565; if (!sw->smooth) diff --git a/gfx/drivers/vg.c b/gfx/drivers/vg.c index a77453ed22..0599267478 100644 --- a/gfx/drivers/vg.c +++ b/gfx/drivers/vg.c @@ -411,10 +411,10 @@ static bool vg_frame(void *data, const void *frame, unsigned width = video_info->width; unsigned height = video_info->height; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif - if ( frame_width != vg->mRenderWidth + if ( frame_width != vg->mRenderWidth || frame_height != vg->mRenderHeight || vg->should_resize) { diff --git a/gfx/drivers/vga_gfx.c b/gfx/drivers/vga_gfx.c index 124c7a35b9..687ea0b812 100644 --- a/gfx/drivers/vga_gfx.c +++ b/gfx/drivers/vga_gfx.c @@ -220,7 +220,7 @@ static bool vga_gfx_frame(void *data, const void *frame, bool draw = true; vga_t *vga = (vga_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif if (!frame || !frame_width || !frame_height) @@ -230,9 +230,9 @@ static bool vga_gfx_frame(void *data, const void *frame, menu_driver_frame(menu_is_alive, video_info); #endif - if ( vga->vga_video_width != frame_width || - vga->vga_video_height != frame_height || - vga->vga_video_pitch != pitch) + if ( (vga->vga_video_width != frame_width) + || (vga->vga_video_height != frame_height) + || (vga->vga_video_pitch != pitch)) { if (frame_width > 4 && frame_height > 4) { diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 5eae03b93c..9b66811aed 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -624,21 +624,18 @@ static bool vita2d_frame(void *data, const void *frame, unsigned pitch, const char *msg, video_frame_info_t *video_info) { void *tex_p; - vita_video_t *vita = (vita_video_t *)data; + vita_video_t *vita = (vita_video_t *)data; unsigned temp_width = PSP_FB_WIDTH; unsigned temp_height = PSP_FB_HEIGHT; vita2d_video_mode_data video_mode_data = {0}; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif #ifdef HAVE_GFX_WIDGETS - bool widgets_active = video_info->widgets_active; + bool widgets_active = video_info->widgets_active; #endif - bool statistics_show = video_info->statistics_show; - struct font_params - *osd_params = (struct font_params*) - &video_info->osd_stat_params; - + bool statistics_show = video_info->statistics_show; + struct font_params *osd_params = (struct font_params*)&video_info->osd_stat_params; if (frame) { diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 033e83e2d5..3b3b092f25 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -4072,7 +4072,7 @@ static bool vulkan_frame(void *data, const void *frame, struct font_params *osd_params = (struct font_params*) &video_info->osd_stat_params; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/xenon360_gfx.c b/gfx/drivers/xenon360_gfx.c index 805b067039..a76c777653 100644 --- a/gfx/drivers/xenon360_gfx.c +++ b/gfx/drivers/xenon360_gfx.c @@ -200,16 +200,14 @@ static bool xenon360_frame(void *data, unsigned stride_in, stride_out, copy_size; xenos_t *xenos = (xenos_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif - DrawVerticeFormats *Rect = NULL; - - ScreenUv[UV_TOP] = ((float) (width) / (float) XE_W)*2; - ScreenUv[UV_LEFT] = ((float) (height) / (float) XE_H)*2; - - Rect = Xe_VB_Lock(xenos->device, xenos->vb, + DrawVerticeFormats *Rect = Xe_VB_Lock(xenos->device, xenos->vb, 0, 3 * sizeof(DrawVerticeFormats), XE_LOCK_WRITE); + ScreenUv[UV_TOP] = ((float)(width) / (float)XE_W) * 2; + ScreenUv[UV_LEFT] = ((float)(height) / (float)XE_H) * 2; + /* Bottom left */ Rect[1].v = ScreenUv[UV_LEFT]; Rect[2].u = ScreenUv[UV_TOP]; diff --git a/gfx/drivers/xshm_gfx.c b/gfx/drivers/xshm_gfx.c index 32986f90ce..2330ec1c64 100644 --- a/gfx/drivers/xshm_gfx.c +++ b/gfx/drivers/xshm_gfx.c @@ -117,7 +117,7 @@ static void *xshm_init(const video_info_t *video, if (input && input_data) { settings_t *settings = config_get_ptr(); - void *xinput = input_driver_init_wrap(&input_x, + void *xinput = input_driver_init_wrap(&input_x, settings->arrays.input_joypad_driver); if (xinput) { @@ -141,7 +141,7 @@ static bool xshm_frame(void *data, const void *frame, unsigned width, unsigned y; xshm_t *xshm = (xshm_t*)data; #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; #endif for (y = 0; y < height; y++) diff --git a/gfx/drivers/xvideo.c b/gfx/drivers/xvideo.c index 39e338003a..fd1b4d1d16 100644 --- a/gfx/drivers/xvideo.c +++ b/gfx/drivers/xvideo.c @@ -1017,19 +1017,18 @@ static bool xv_frame(void *data, const void *frame, unsigned width, XWindowAttributes target; xv_t *xv = (xv_t*)data; bool rgb32 = video_info->use_rgba; - #ifdef HAVE_MENU - bool menu_is_alive = video_info->menu_is_alive; + bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; menu_driver_frame(menu_is_alive, video_info); if (menu_is_alive && xv->tex_frame) { - frame = xv->tex_frame; - width = xv->tex_width; + frame = xv->tex_frame; + width = xv->tex_width; height = xv->tex_height; - pitch = xv->tex_pitch; - rgb32 = xv->tex_rgb32; + pitch = xv->tex_pitch; + rgb32 = xv->tex_rgb32; } #endif diff --git a/gfx/gfx_widgets.c b/gfx/gfx_widgets.c index 698fdf3ad6..d9893ab603 100644 --- a/gfx/gfx_widgets.c +++ b/gfx/gfx_widgets.c @@ -32,6 +32,10 @@ #include "gfx_widgets.h" #include "font_driver.h" +#ifdef HAVE_MENU +#include "../menu/menu_defines.h" +#endif + #include "../configuration.h" #include "../file_path_special.h" #include "../msg_hash.h" @@ -44,7 +48,7 @@ #define MSG_QUEUE_FONT_SIZE (BASE_FONT_SIZE * 0.69f) /* Icons */ -static const char +static const char *gfx_widgets_icons_names[MENU_WIDGETS_ICON_LAST] = { "menu_pause.png", "menu_frameskip.png", @@ -111,7 +115,7 @@ static float gfx_display_get_widget_pixel_scale( float menu_widget_scale_factor_fullscreen = settings->floats.menu_widget_scale_factor; float menu_widget_scale_factor_windowed = settings->floats.menu_widget_scale_factor_windowed; float menu_widget_scale_factor = fullscreen - ? menu_widget_scale_factor_fullscreen + ? menu_widget_scale_factor_fullscreen : menu_widget_scale_factor_windowed; #endif float menu_scale_factor = menu_widget_scale_factor; @@ -265,13 +269,13 @@ void gfx_widgets_msg_queue_push( else { /* Compute rect width, wrap if necessary */ - /* Single line text > two lines text > two lines + /* Single line text > two lines text > two lines * text with expanded width */ size_t title_length = strlen(title); char *msg = NULL; size_t msg_len = 0; - unsigned width = menu_is_alive - ? p_dispwidget->msg_queue_default_rect_width_menu_alive + unsigned width = menu_is_alive + ? p_dispwidget->msg_queue_default_rect_width_menu_alive : p_dispwidget->msg_queue_default_rect_width; unsigned text_width = font_driver_get_message_width( p_dispwidget->gfx_widget_fonts.msg_queue.font, @@ -308,7 +312,7 @@ void gfx_widgets_msg_queue_push( msg_widget->msg = msg; msg_widget->msg_len = strlen(msg); - msg_widget->width = width + + msg_widget->width = width + p_dispwidget->simple_widget_padding / 2; } @@ -429,7 +433,7 @@ static void gfx_widgets_msg_queue_move(dispgfx_widget_t *p_dispwidget) int i; float y = 0; /* there should always be one and only one unfolded message */ - disp_widget_msg_t *unfold = NULL; + disp_widget_msg_t *unfold = NULL; #ifdef HAVE_THREADS slock_lock(p_dispwidget->current_msgs_lock); @@ -442,7 +446,7 @@ static void gfx_widgets_msg_queue_move(dispgfx_widget_t *p_dispwidget) if (!msg || (msg->flags & DISPWIDG_FLAG_DYING)) continue; - y += p_dispwidget->msg_queue_height + y += p_dispwidget->msg_queue_height / (msg->task_ptr ? 2 : 1) + p_dispwidget->msg_queue_spacing; if (!(msg->flags & DISPWIDG_FLAG_UNFOLDED)) @@ -483,8 +487,8 @@ static void gfx_widgets_msg_queue_free( /* remove the reference the task has of ourself only if the task is not finished already (finished tasks are freed before the widget) */ - if ( !(msg->flags & DISPWIDG_FLAG_TASK_FINISHED) - && !(msg->flags & DISPWIDG_FLAG_TASK_ERROR) + if ( !(msg->flags & DISPWIDG_FLAG_TASK_FINISHED) + && !(msg->flags & DISPWIDG_FLAG_TASK_ERROR) && !(msg->flags & DISPWIDG_FLAG_TASK_CANCELLED)) msg->task_ptr->frontend_userdata = NULL; @@ -566,7 +570,7 @@ static void gfx_widgets_msg_queue_kill( entry.tag = (uintptr_t)msg; entry.userdata = NULL; entry.subject = &msg->offset_y; - entry.target_value = msg->offset_y - + entry.target_value = msg->offset_y - p_dispwidget->msg_queue_height / 4; gfx_animation_push(&entry); @@ -741,7 +745,7 @@ static void gfx_widgets_font_init( bool is_threaded, char *font_path, float font_size) { int glyph_width = 0; - float scaled_size = font_size * + float scaled_size = font_size * p_dispwidget->last_scale_factor; /* Free existing font */ @@ -836,7 +840,7 @@ static void gfx_widgets_layout( if (p_dispwidget->flags & DISPGFX_WIDGET_FLAG_MSG_QUEUE_HAS_ICONS) { #if 0 - p_dispwidget->msg_queue_icon_size_y = p_dispwidget->msg_queue_height + p_dispwidget->msg_queue_icon_size_y = p_dispwidget->msg_queue_height * 1.2347826087f; /* original image is 280x284 */ p_dispwidget->msg_queue_icon_size_x = 0.98591549295f * p_dispwidget->msg_queue_icon_size_y; #else @@ -867,7 +871,7 @@ static void gfx_widgets_layout( p_dispwidget->msg_queue_task_text_start_x = p_dispwidget->msg_queue_task_rect_start_x + p_dispwidget->msg_queue_height / 2; if (!p_dispwidget->gfx_widgets_icons_textures[MENU_WIDGETS_ICON_HOURGLASS]) - p_dispwidget->msg_queue_task_text_start_x -= + p_dispwidget->msg_queue_task_text_start_x -= p_dispwidget->gfx_widget_fonts.msg_queue.glyph_width * 2.0f; p_dispwidget->msg_queue_regular_text_start = p_dispwidget->msg_queue_rect_start_x; @@ -878,7 +882,7 @@ static void gfx_widgets_layout( p_dispwidget->msg_queue_default_rect_width_menu_alive = p_dispwidget ->gfx_widget_fonts.msg_queue.glyph_width * 40.0f; - p_dispwidget->msg_queue_default_rect_width = p_dispwidget->last_video_width + p_dispwidget->msg_queue_default_rect_width = p_dispwidget->last_video_width - p_dispwidget->msg_queue_regular_text_start - (2 * p_dispwidget->simple_widget_padding); p_dispwidget->divider_width_1px = 1; @@ -1026,8 +1030,8 @@ void gfx_widgets_iterate( if (!msg_widget) continue; - if (msg_widget->task_ptr - && ((msg_widget->flags & DISPWIDG_FLAG_TASK_FINISHED) + if (msg_widget->task_ptr + && ((msg_widget->flags & DISPWIDG_FLAG_TASK_FINISHED) || (msg_widget->flags & DISPWIDG_FLAG_TASK_CANCELLED))) if (!(msg_widget->flags & DISPWIDG_FLAG_EXPIRATION_TIMER_STARTED)) gfx_widgets_start_msg_expiration_timer(msg_widget, TASK_FINISHED_DURATION); @@ -1046,10 +1050,10 @@ static int gfx_widgets_draw_indicator( dispgfx_widget_t *p_dispwidget, gfx_display_t *p_disp, gfx_display_ctx_driver_t *dispctx, - void *userdata, + void *userdata, unsigned video_width, unsigned video_height, - uintptr_t icon, int y, int top_right_x_advance, + uintptr_t icon, int y, int top_right_x_advance, enum msg_hash_enums msg) { unsigned width; @@ -1101,7 +1105,7 @@ static int gfx_widgets_draw_indicator( width = font_driver_get_message_width( p_dispwidget->gfx_widget_fonts.regular.font, txt, - strlen(txt), 1.0f) + strlen(txt), 1.0f) + p_dispwidget->simple_widget_padding * 2; gfx_display_draw_quad( @@ -1117,9 +1121,9 @@ static int gfx_widgets_draw_indicator( gfx_widgets_draw_text(&p_dispwidget->gfx_widget_fonts.regular, txt, - top_right_x_advance - width + top_right_x_advance - width + p_dispwidget->simple_widget_padding, - y + (height / 2.0f) + + y + (height / 2.0f) + p_dispwidget->gfx_widget_fonts.regular.line_centre_offset, video_width, video_height, 0xFFFFFFFF, TEXT_ALIGN_LEFT, @@ -1139,11 +1143,11 @@ static void gfx_widgets_draw_task_msg( unsigned video_height) { /* Color of first progress bar in a task message */ - static float msg_queue_task_progress_1[16] = + static float msg_queue_task_progress_1[16] = COLOR_HEX_TO_FLOAT(0x397869, 1.0f); - /* Color of second progress bar in a task message + /* Color of second progress bar in a task message * (for multiple tasks with same message) */ - static float msg_queue_task_progress_2[16] = + static float msg_queue_task_progress_2[16] = COLOR_HEX_TO_FLOAT(0x317198, 1.0f); unsigned text_color; unsigned bar_width; @@ -1164,9 +1168,9 @@ static void gfx_widgets_draw_task_msg( if (msg->msg_new) draw_msg_new = !string_is_equal(msg->msg_new, msg->msg); - task_percentage_offset = - p_dispwidget->gfx_widget_fonts.msg_queue.glyph_width - * ((msg->flags & DISPWIDG_FLAG_TASK_ERROR) ? 12 : 5) + task_percentage_offset = + p_dispwidget->gfx_widget_fonts.msg_queue.glyph_width + * ((msg->flags & DISPWIDG_FLAG_TASK_ERROR) ? 12 : 5) + p_dispwidget->simple_widget_padding * 1.25f; /*11 = STRLEN_CONST("Task failed") + 1 */ if (msg->flags & DISPWIDG_FLAG_TASK_FINISHED) @@ -1178,8 +1182,8 @@ static void gfx_widgets_draw_task_msg( snprintf(task_percentage, sizeof(task_percentage), "%i%%", msg->task_progress); - rect_width = p_dispwidget->simple_widget_padding - + msg->width + rect_width = p_dispwidget->simple_widget_padding + + msg->width + task_percentage_offset; bar_width = rect_width * msg->task_progress/100.0f; text_color = COLOR_TEXT_ALPHA(0xFFFFFF00, (unsigned)(msg->alpha*255.0f)); @@ -1214,7 +1218,7 @@ static void gfx_widgets_draw_task_msg( /* Progress bar */ if ( !(msg->flags & DISPWIDG_FLAG_TASK_FINISHED) - && (msg->task_progress >= 0) + && (msg->task_progress >= 0) && (msg->task_progress <= 100)) { if (msg->task_count == 1) @@ -1254,7 +1258,7 @@ static void gfx_widgets_draw_task_msg( p_dispwidget->msg_queue_height / 2, p_dispwidget->gfx_widgets_icons_textures[ (msg->flags & DISPWIDG_FLAG_TASK_FINISHED) - ? MENU_WIDGETS_ICON_CHECK + ? MENU_WIDGETS_ICON_CHECK : MENU_WIDGETS_ICON_HOURGLASS], p_dispwidget->msg_queue_task_hourglass_x, video_height - msg->offset_y, @@ -1267,9 +1271,9 @@ static void gfx_widgets_draw_task_msg( dispctx->blend_end(userdata); /* Text */ - text_y_base = video_height - - msg->offset_y - + p_dispwidget->msg_queue_height / 4.0f + text_y_base = video_height + - msg->offset_y + + p_dispwidget->msg_queue_height / 4.0f + p_dispwidget->gfx_widget_fonts.msg_queue.line_centre_offset; if (draw_msg_new) @@ -1285,8 +1289,8 @@ static void gfx_widgets_draw_task_msg( gfx_widgets_draw_text(&p_dispwidget->gfx_widget_fonts.msg_queue, msg->msg_new, p_dispwidget->msg_queue_task_text_start_x, - text_y_base - - p_dispwidget->msg_queue_height / 2.0f + text_y_base + - p_dispwidget->msg_queue_height / 2.0f + msg->msg_transition_animation, video_width, video_height, text_color, @@ -1316,7 +1320,7 @@ static void gfx_widgets_draw_task_msg( text_color = COLOR_TEXT_ALPHA(0xFFFFFF00, (unsigned)(msg->alpha/2*255.0f)); gfx_widgets_draw_text(&p_dispwidget->gfx_widget_fonts.msg_queue, task_percentage, - p_dispwidget->msg_queue_rect_start_x - p_dispwidget->msg_queue_icon_size_x + rect_width - + p_dispwidget->msg_queue_rect_start_x - p_dispwidget->msg_queue_icon_size_x + rect_width - p_dispwidget->gfx_widget_fonts.msg_queue.glyph_width, text_y_base, video_width, video_height, @@ -1353,7 +1357,7 @@ static void gfx_widgets_draw_regular_msg( last_alpha = msg->alpha; } - if ( !(msg->flags & DISPWIDG_FLAG_UNFOLDED) + if ( !(msg->flags & DISPWIDG_FLAG_UNFOLDED) || (msg->flags & DISPWIDG_FLAG_UNFOLDING)) { gfx_widgets_flush_text(video_width, video_height, @@ -1367,8 +1371,8 @@ static void gfx_widgets_draw_regular_msg( userdata, video_width, video_height, p_dispwidget->msg_queue_scissor_start_x, 0, - (p_dispwidget->msg_queue_scissor_start_x + msg->width - - p_dispwidget->simple_widget_padding * 2) + (p_dispwidget->msg_queue_scissor_start_x + msg->width - + p_dispwidget->simple_widget_padding * 2) * msg->unfold, video_height); } @@ -1418,7 +1422,7 @@ static void gfx_widgets_draw_regular_msg( TEXT_ALIGN_LEFT, true); - if ( !(msg->flags & DISPWIDG_FLAG_UNFOLDED) + if ( !(msg->flags & DISPWIDG_FLAG_UNFOLDED) || (msg->flags & DISPWIDG_FLAG_UNFOLDING)) { gfx_widgets_flush_text(video_width, video_height, &p_dispwidget->gfx_widget_fonts.regular); @@ -1486,15 +1490,21 @@ void gfx_widgets_frame(void *data) bool widgets_is_fastforwarding = video_info->widgets_is_fast_forwarding; bool widgets_is_rewinding = video_info->widgets_is_rewinding; bool runloop_is_slowmotion = video_info->runloop_is_slowmotion; - bool menu_screensaver_active = video_info->menu_screensaver_active; - bool notifications_hidden = video_info->notifications_hidden || - video_info->msg_queue_delay; +#ifdef HAVE_MENU + bool menu_screensaver_active = (video_info->menu_st_flags & MENU_ST_FLAG_SCREENSAVER_ACTIVE) ? true : false; +#endif + bool notifications_hidden = video_info->notifications_hidden || video_info->msg_queue_delay; int top_right_x_advance = video_width; p_dispwidget->gfx_widgets_frame_count++; - /* If menu screensaver is active or notifications are hidden, draw nothing */ - if (menu_screensaver_active || notifications_hidden) +#ifdef HAVE_MENU + /* If menu screensaver is active, draw nothing */ + if (menu_screensaver_active) + return; +#endif + /* If notifications are hidden, draw nothing */ + if (notifications_hidden) return; if (video_st->current_video && video_st->current_video->set_viewport) @@ -1666,8 +1676,8 @@ void gfx_widgets_frame(void *data) video_height, p_dispwidget->gfx_widgets_icons_textures[ MENU_WIDGETS_ICON_PAUSED], - (fps_show - ? p_dispwidget->simple_widget_height + (fps_show + ? p_dispwidget->simple_widget_height : 0), top_right_x_advance, MSG_PAUSED); @@ -1910,7 +1920,7 @@ static void gfx_widgets_context_reset( NULL, NULL); - if ( p_dispwidget->msg_queue_icon + if ( p_dispwidget->msg_queue_icon && p_dispwidget->msg_queue_icon_outline && p_dispwidget->msg_queue_icon_rect) p_dispwidget->flags |= DISPGFX_WIDGET_FLAG_MSG_QUEUE_HAS_ICONS; @@ -2124,8 +2134,8 @@ bool gfx_widgets_ai_service_overlay_load( if (p_dispwidget->ai_service_overlay_state == 0) { if (!gfx_display_reset_textures_list_buffer( - &p_dispwidget->ai_service_overlay_texture, - TEXTURE_FILTER_MIPMAP_LINEAR, + &p_dispwidget->ai_service_overlay_texture, + TEXTURE_FILTER_MIPMAP_LINEAR, (void *) buffer, buffer_len, image_type, &p_dispwidget->ai_service_overlay_width, &p_dispwidget->ai_service_overlay_height)) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 0a0fdc570c..29d2de4575 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -2609,8 +2609,7 @@ void video_driver_build_info(video_frame_info_t *video_info) video_info->memory_update_interval = settings->uints.memory_update_interval; #ifdef HAVE_MENU - video_info->menu_is_alive = (menu_st->flags & MENU_ST_FLAG_ALIVE) ? true : false; - video_info->menu_screensaver_active = (menu_st->flags & MENU_ST_FLAG_SCREENSAVER_ACTIVE) ? true : false; + video_info->menu_st_flags = menu_st->flags; video_info->menu_footer_opacity = settings->floats.menu_footer_opacity; video_info->menu_header_opacity = settings->floats.menu_header_opacity; video_info->materialui_color_theme = settings->uints.menu_materialui_color_theme; @@ -2627,8 +2626,7 @@ void video_driver_build_info(video_frame_info_t *video_info) video_info->overlay_behind_menu = settings->bools.input_overlay_behind_menu; video_info->libretro_running = (runloop_st->current_core.flags & RETRO_CORE_FLAG_GAME_LOADED) ? true : false; #else - video_info->menu_is_alive = false; - video_info->menu_screensaver_active = false; + video_info->menu_st_flags = 0; video_info->menu_footer_opacity = 0.0f; video_info->menu_header_opacity = 0.0f; video_info->materialui_color_theme = 0; @@ -3428,7 +3426,7 @@ void video_driver_frame(const void *data, unsigned width, * that the next frame update is captured) */ if ( video_info.input_driver_nonblock_state && video_info.fastforward_frameskip - && !(video_info.menu_is_alive + && !((video_info.menu_st_flags & MENU_ST_FLAG_ALIVE) || (last_frame_duped && !!data))) { retro_time_t frame_time_accumulator_prev = frame_time_accumulator; @@ -3739,7 +3737,7 @@ void video_driver_frame(const void *data, unsigned width, msg_entry.category, msg_entry.prio, false, - video_info.menu_is_alive + (video_info.menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false ); } /* ...otherwise, just output message via @@ -3901,7 +3899,8 @@ void video_driver_frame(const void *data, unsigned width, if (video_st->current_video->frame( video_st->data, data, width, height, video_st->frame_count, (unsigned)pitch, - video_info.menu_screensaver_active || video_info.notifications_hidden ? "" : video_driver_msg, + ((video_info.menu_st_flags & MENU_ST_FLAG_SCREENSAVER_ACTIVE) > 0) + || video_info.notifications_hidden ? "" : video_driver_msg, &video_info)) video_st->flags |= VIDEO_FLAG_ACTIVE; else @@ -3916,7 +3915,7 @@ void video_driver_frame(const void *data, unsigned width, || video_info.memory_show || video_info.core_status_msg_show ) - && !video_info.menu_screensaver_active + && !((video_info.menu_st_flags & MENU_ST_FLAG_SCREENSAVER_ACTIVE)) && !video_info.notifications_hidden ) { diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 5659bd4bff..2ddc1b2e43 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -450,6 +450,8 @@ typedef struct video_frame_info bool full_screen; } osd_stat_params; + uint16_t menu_st_flags; + char stat_text[1024]; bool widgets_active; @@ -483,8 +485,6 @@ typedef struct video_frame_info bool runloop_is_slowmotion; bool runloop_is_paused; bool fastforward_frameskip; - bool menu_is_alive; - bool menu_screensaver_active; bool msg_bgcolor_enable; bool crt_switch_hires_menu; bool hdr_enable; diff --git a/menu/menu_defines.h b/menu/menu_defines.h index 07c3cd1e1f..ac806a7847 100644 --- a/menu/menu_defines.h +++ b/menu/menu_defines.h @@ -25,6 +25,54 @@ RETRO_BEGIN_DECLS #define MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS (AUDIO_MIXER_MAX_SYSTEM_STREAMS-1) +enum menu_state_flags +{ + MENU_ST_FLAG_ALIVE = (1 << 0), + MENU_ST_FLAG_IS_BINDING = (1 << 1), + MENU_ST_FLAG_INP_DLG_KB_DISPLAY = (1 << 2), + /* When enabled, on next iteration the 'Quick Menu' + * list will be pushed onto the stack */ + MENU_ST_FLAG_PENDING_QUICK_MENU = (1 << 3), + MENU_ST_FLAG_PREVENT_POPULATE = (1 << 4), + /* The menu driver owns the userdata */ + MENU_ST_FLAG_DATA_OWN = (1 << 5), + /* Flagged when menu entries need to be refreshed */ + MENU_ST_FLAG_ENTRIES_NEED_REFRESH = (1 << 6), + MENU_ST_FLAG_ENTRIES_NONBLOCKING_REFRESH = (1 << 7), + /* 'Close Content'-hotkey menu resetting */ + MENU_ST_FLAG_PENDING_CLOSE_CONTENT = (1 << 8), + /* Flagged when a core calls RETRO_ENVIRONMENT_SHUTDOWN, + * requiring the menu to be flushed on the next iteration */ + MENU_ST_FLAG_PENDING_ENV_SHUTDOWN_FLUSH = (1 << 9), + /* Screensaver status + * - Does menu driver support screensaver functionality? + * - Is screensaver currently active? */ + MENU_ST_FLAG_SCREENSAVER_SUPPORTED = (1 << 10), + MENU_ST_FLAG_SCREENSAVER_ACTIVE = (1 << 11) +}; + +enum menu_scroll_mode +{ + MENU_SCROLL_PAGE = 0, + MENU_SCROLL_START_LETTER +}; + +enum contentless_core_runtime_status +{ + CONTENTLESS_CORE_RUNTIME_UNKNOWN = 0, + CONTENTLESS_CORE_RUNTIME_MISSING, + CONTENTLESS_CORE_RUNTIME_VALID +}; + +enum action_iterate_type +{ + ITERATE_TYPE_DEFAULT = 0, + ITERATE_TYPE_HELP, + ITERATE_TYPE_INFO, + ITERATE_TYPE_BIND +}; + + enum menu_image_type { MENU_IMAGE_NONE = 0, @@ -309,7 +357,7 @@ enum xmb_shader_pipeline XMB_SHADER_PIPELINE_SNOW, XMB_SHADER_PIPELINE_BOKEH, XMB_SHADER_PIPELINE_SNOWFLAKE -#endif +#endif }; enum rgui_thumbnail_scaler diff --git a/menu/menu_driver.h b/menu/menu_driver.h index a970f35343..19bf4aa4d5 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -308,53 +308,6 @@ enum menu_settings_type MENU_SETTINGS_LAST }; -enum menu_state_flags -{ - MENU_ST_FLAG_ALIVE = (1 << 0), - MENU_ST_FLAG_IS_BINDING = (1 << 1), - MENU_ST_FLAG_INP_DLG_KB_DISPLAY = (1 << 2), - /* When enabled, on next iteration the 'Quick Menu' - * list will be pushed onto the stack */ - MENU_ST_FLAG_PENDING_QUICK_MENU = (1 << 3), - MENU_ST_FLAG_PREVENT_POPULATE = (1 << 4), - /* The menu driver owns the userdata */ - MENU_ST_FLAG_DATA_OWN = (1 << 5), - /* Flagged when menu entries need to be refreshed */ - MENU_ST_FLAG_ENTRIES_NEED_REFRESH = (1 << 6), - MENU_ST_FLAG_ENTRIES_NONBLOCKING_REFRESH = (1 << 7), - /* 'Close Content'-hotkey menu resetting */ - MENU_ST_FLAG_PENDING_CLOSE_CONTENT = (1 << 8), - /* Flagged when a core calls RETRO_ENVIRONMENT_SHUTDOWN, - * requiring the menu to be flushed on the next iteration */ - MENU_ST_FLAG_PENDING_ENV_SHUTDOWN_FLUSH = (1 << 9), - /* Screensaver status - * - Does menu driver support screensaver functionality? - * - Is screensaver currently active? */ - MENU_ST_FLAG_SCREENSAVER_SUPPORTED = (1 << 10), - MENU_ST_FLAG_SCREENSAVER_ACTIVE = (1 << 11) -}; - -enum menu_scroll_mode -{ - MENU_SCROLL_PAGE = 0, - MENU_SCROLL_START_LETTER -}; - -enum contentless_core_runtime_status -{ - CONTENTLESS_CORE_RUNTIME_UNKNOWN = 0, - CONTENTLESS_CORE_RUNTIME_MISSING, - CONTENTLESS_CORE_RUNTIME_VALID -}; - -enum action_iterate_type -{ - ITERATE_TYPE_DEFAULT = 0, - ITERATE_TYPE_HELP, - ITERATE_TYPE_INFO, - ITERATE_TYPE_BIND -}; - struct menu_list { file_list_t **menu_stack; @@ -798,12 +751,9 @@ size_t menu_driver_get_thumbnail_system(void *data, char *s, size_t len); extern const menu_ctx_driver_t *menu_ctx_drivers[]; extern menu_ctx_driver_t menu_ctx_ozone; -extern menu_ctx_driver_t menu_ctx_xui; extern menu_ctx_driver_t menu_ctx_rgui; extern menu_ctx_driver_t menu_ctx_mui; extern menu_ctx_driver_t menu_ctx_xmb; -extern menu_ctx_driver_t menu_ctx_stripes; - RETRO_END_DECLS