From 35d4405d3ec3de0857f03bc5958bf8358d805313 Mon Sep 17 00:00:00 2001 From: orbea Date: Sat, 1 Jun 2019 07:27:04 -0700 Subject: [PATCH 01/31] qb: Fix the zlib check. This is the correct change to prefer the builtin zlib. Revert "(QB) Bake in zlib by default, make zlib as dynamic library dependency" This reverts commit 2713e792ca0d573516311b280b03df6e5dee23fe. Revert "(QB) Change behavior - if HAVE_ZLIB = no, that doesn't mean" This reverts commit f66fe5e16b0ae25b1c18cfadaacb7f5b470a882a. --- .travis.yml | 2 +- qb/config.libs.sh | 11 ++++------- qb/config.params.sh | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index b2e56f8b73..95192f6c2b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -73,7 +73,7 @@ before_install: script: - | if [ -n "$CROSS_COMPILE" ]; then - ARGS="$ARGS --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12 --enable-builtinzlib" + ARGS="$ARGS --disable-d3d8 --disable-d3d9 --disable-d3d10 --disable-d3d11 --disable-d3d12" fi - | if [ -n "$DISABLE_MENU" ]; then diff --git a/qb/config.libs.sh b/qb/config.libs.sh index e0cceaa66a..ff71f1604d 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -360,7 +360,9 @@ elif [ "$HAVE_OPENGLES" != 'no' ] && [ "$HAVE_OPENGLES3" != 'yes' ]; then HAVE_OPENGL_CORE='no' fi -if [ "$HAVE_BUILTINZLIB" = 'yes' ]; then +if [ "$HAVE_ZLIB" = 'no' ]; then + HAVE_BUILTINZLIB=no +elif [ "$HAVE_BUILTINZLIB" = 'yes' ]; then HAVE_ZLIB=yes else check_val '' ZLIB '-lz' '' zlib '' '' false @@ -526,10 +528,5 @@ if [ "$HAVE_DEBUG" = 'yes' ]; then fi check_enabled MENU MENU_WIDGETS 'menu widgets' 'The menu is' false - -if [ "$HAVE_ZLIB" = 'no' ] && [ "$HAVE_BUILTINZLIB" = 'no' ]; then - eval "HAVE_RPNG=no" - die : "Notice: zlib disabled, rpng support will also be disabled." -fi - +check_enabled ZLIB RPNG RPNG 'zlib is' false check_enabled V4L2 VIDEOPROCESSOR 'video processor' 'Video4linux2 is' true diff --git a/qb/config.params.sh b/qb/config.params.sh index 6157f5b73a..72bbe7f416 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -83,7 +83,7 @@ HAVE_VG=auto # OpenVG support HAVE_CG=auto # Cg shader support HAVE_HLSL=no # HLSL9 shader support (for Direct3D9) HAVE_BUILTINZLIB=yes # Bake in zlib -HAVE_ZLIB=no # zlib support (ZIP extract, PNG decoding/encoding) +HAVE_ZLIB=auto # zlib support (ZIP extract, PNG decoding/encoding) HAVE_ALSA=auto # ALSA support C89_ALSA=no HAVE_TINYALSA=auto # TinyALSA support From 0498f8ba1c954d67e69b2d4c4c19c17079e2f379 Mon Sep 17 00:00:00 2001 From: orbea Date: Sat, 1 Jun 2019 07:46:39 -0700 Subject: [PATCH 02/31] Revert "(EGL) Turn EGL off by default for now until we figure out how" This reverts commit 8076d06c2484e080ef394186d9738fb3b082ccb1. This seems to work again. --- qb/config.params.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qb/config.params.sh b/qb/config.params.sh index 6157f5b73a..a5c5e4439d 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -78,7 +78,7 @@ HAVE_SUNXI=no # Sunxi video support HAVE_WAYLAND=auto # Wayland support C89_WAYLAND=no CXX_WAYLAND=no -HAVE_EGL=no # EGL context support +HAVE_EGL=auto # EGL context support HAVE_VG=auto # OpenVG support HAVE_CG=auto # Cg shader support HAVE_HLSL=no # HLSL9 shader support (for Direct3D9) From a6f042b320d33e9767f3077ec5ee1325709e38aa Mon Sep 17 00:00:00 2001 From: LazyBumHorse Date: Sat, 1 Jun 2019 21:21:45 +0200 Subject: [PATCH 03/31] wgl_ctx: set GFX_CTX_FLAGS_SHADERS_SLANG for glcore --- gfx/drivers_context/wgl_ctx.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gfx/drivers_context/wgl_ctx.c b/gfx/drivers_context/wgl_ctx.c index 1eeb38e804..433d657710 100644 --- a/gfx/drivers_context/wgl_ctx.c +++ b/gfx/drivers_context/wgl_ctx.c @@ -816,7 +816,12 @@ static uint32_t gfx_ctx_wgl_get_flags(void *data) } if (string_is_equal(video_driver_get_ident(), "gl1")) { } - else if (string_is_equal(video_driver_get_ident(), "glcore")) { } + else if (string_is_equal(video_driver_get_ident(), "glcore")) + { +#ifdef HAVE_SLANG + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); +#endif + } else { #ifdef HAVE_CG From 44c62c8a37164f1ec1ada7ef9a3392f64794cffc Mon Sep 17 00:00:00 2001 From: orbea Date: Sat, 1 Jun 2019 13:31:56 -0700 Subject: [PATCH 04/31] Fix shaders init with glcore + kms. See https://github.com/libretro/RetroArch/issues/8834 --- gfx/drivers_context/drm_ctx.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gfx/drivers_context/drm_ctx.c b/gfx/drivers_context/drm_ctx.c index 756b596524..8fa0b4239d 100644 --- a/gfx/drivers_context/drm_ctx.c +++ b/gfx/drivers_context/drm_ctx.c @@ -909,7 +909,12 @@ static uint32_t gfx_ctx_drm_get_flags(void *data) if (drm->core_hw_context_enable) BIT32_SET(flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); - BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_GLSL); + if (string_is_equal(video_driver_get_ident(), "glcore")) +#ifdef HAVE_SLANG + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); +#endif + else + BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_GLSL); return flags; } From 580bb2cf54ba06fd9f7de44e6fd83515fde34a5c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 1 Jun 2019 22:36:27 +0200 Subject: [PATCH 05/31] (dynamic.c) Cleanup --- dynamic.c | 299 +++++++----------------------------------------------- 1 file changed, 35 insertions(+), 264 deletions(-) diff --git a/dynamic.c b/dynamic.c index 94c71b8766..cccf337640 100644 --- a/dynamic.c +++ b/dynamic.c @@ -473,6 +473,33 @@ bool libretro_get_system_info(const char *path, return true; } +#define CORE_SYMBOLS(x) \ + x(retro_init); \ + x(retro_deinit); \ + x(retro_api_version); \ + x(retro_get_system_info); \ + x(retro_get_system_av_info); \ + x(retro_set_environment); \ + x(retro_set_video_refresh); \ + x(retro_set_audio_sample); \ + x(retro_set_audio_sample_batch); \ + x(retro_set_input_poll); \ + x(retro_set_input_state); \ + x(retro_set_controller_port_device); \ + x(retro_reset); \ + x(retro_run); \ + x(retro_serialize_size); \ + x(retro_serialize); \ + x(retro_unserialize); \ + x(retro_cheat_reset); \ + x(retro_cheat_set); \ + x(retro_load_game); \ + x(retro_load_game_special); \ + x(retro_unload_game); \ + x(retro_get_region); \ + x(retro_get_memory_data); \ + x(retro_get_memory_size); + /** * load_symbols: * @type : Type of core to be loaded. @@ -542,296 +569,40 @@ bool init_libretro_sym_custom(enum rarch_core_type type, #endif #endif - SYMBOL(retro_init); - SYMBOL(retro_deinit); - - SYMBOL(retro_api_version); - SYMBOL(retro_get_system_info); - SYMBOL(retro_get_system_av_info); - - SYMBOL(retro_set_environment); - SYMBOL(retro_set_video_refresh); - SYMBOL(retro_set_audio_sample); - SYMBOL(retro_set_audio_sample_batch); - SYMBOL(retro_set_input_poll); - SYMBOL(retro_set_input_state); - - SYMBOL(retro_set_controller_port_device); - - SYMBOL(retro_reset); - SYMBOL(retro_run); - - SYMBOL(retro_serialize_size); - SYMBOL(retro_serialize); - SYMBOL(retro_unserialize); - - SYMBOL(retro_cheat_reset); - SYMBOL(retro_cheat_set); - - SYMBOL(retro_load_game); - SYMBOL(retro_load_game_special); - - SYMBOL(retro_unload_game); - SYMBOL(retro_get_region); - SYMBOL(retro_get_memory_data); - SYMBOL(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL); } break; case CORE_TYPE_DUMMY: - SYMBOL_DUMMY(retro_init); - SYMBOL_DUMMY(retro_deinit); - - SYMBOL_DUMMY(retro_api_version); - SYMBOL_DUMMY(retro_get_system_info); - SYMBOL_DUMMY(retro_get_system_av_info); - - SYMBOL_DUMMY(retro_set_environment); - SYMBOL_DUMMY(retro_set_video_refresh); - SYMBOL_DUMMY(retro_set_audio_sample); - SYMBOL_DUMMY(retro_set_audio_sample_batch); - SYMBOL_DUMMY(retro_set_input_poll); - SYMBOL_DUMMY(retro_set_input_state); - - SYMBOL_DUMMY(retro_set_controller_port_device); - - SYMBOL_DUMMY(retro_reset); - SYMBOL_DUMMY(retro_run); - - SYMBOL_DUMMY(retro_serialize_size); - SYMBOL_DUMMY(retro_serialize); - SYMBOL_DUMMY(retro_unserialize); - - SYMBOL_DUMMY(retro_cheat_reset); - SYMBOL_DUMMY(retro_cheat_set); - - SYMBOL_DUMMY(retro_load_game); - SYMBOL_DUMMY(retro_load_game_special); - - SYMBOL_DUMMY(retro_unload_game); - SYMBOL_DUMMY(retro_get_region); - SYMBOL_DUMMY(retro_get_memory_data); - SYMBOL_DUMMY(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_DUMMY); break; case CORE_TYPE_FFMPEG: #ifdef HAVE_FFMPEG - SYMBOL_FFMPEG(retro_init); - SYMBOL_FFMPEG(retro_deinit); - - SYMBOL_FFMPEG(retro_api_version); - SYMBOL_FFMPEG(retro_get_system_info); - SYMBOL_FFMPEG(retro_get_system_av_info); - - SYMBOL_FFMPEG(retro_set_environment); - SYMBOL_FFMPEG(retro_set_video_refresh); - SYMBOL_FFMPEG(retro_set_audio_sample); - SYMBOL_FFMPEG(retro_set_audio_sample_batch); - SYMBOL_FFMPEG(retro_set_input_poll); - SYMBOL_FFMPEG(retro_set_input_state); - - SYMBOL_FFMPEG(retro_set_controller_port_device); - - SYMBOL_FFMPEG(retro_reset); - SYMBOL_FFMPEG(retro_run); - - SYMBOL_FFMPEG(retro_serialize_size); - SYMBOL_FFMPEG(retro_serialize); - SYMBOL_FFMPEG(retro_unserialize); - - SYMBOL_FFMPEG(retro_cheat_reset); - SYMBOL_FFMPEG(retro_cheat_set); - - SYMBOL_FFMPEG(retro_load_game); - SYMBOL_FFMPEG(retro_load_game_special); - - SYMBOL_FFMPEG(retro_unload_game); - SYMBOL_FFMPEG(retro_get_region); - SYMBOL_FFMPEG(retro_get_memory_data); - SYMBOL_FFMPEG(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_FFMPEG); #endif break; case CORE_TYPE_MPV: #ifdef HAVE_MPV - SYMBOL_MPV(retro_init); - SYMBOL_MPV(retro_deinit); - - SYMBOL_MPV(retro_api_version); - SYMBOL_MPV(retro_get_system_info); - SYMBOL_MPV(retro_get_system_av_info); - - SYMBOL_MPV(retro_set_environment); - SYMBOL_MPV(retro_set_video_refresh); - SYMBOL_MPV(retro_set_audio_sample); - SYMBOL_MPV(retro_set_audio_sample_batch); - SYMBOL_MPV(retro_set_input_poll); - SYMBOL_MPV(retro_set_input_state); - - SYMBOL_MPV(retro_set_controller_port_device); - - SYMBOL_MPV(retro_reset); - SYMBOL_MPV(retro_run); - - SYMBOL_MPV(retro_serialize_size); - SYMBOL_MPV(retro_serialize); - SYMBOL_MPV(retro_unserialize); - - SYMBOL_MPV(retro_cheat_reset); - SYMBOL_MPV(retro_cheat_set); - - SYMBOL_MPV(retro_load_game); - SYMBOL_MPV(retro_load_game_special); - - SYMBOL_MPV(retro_unload_game); - SYMBOL_MPV(retro_get_region); - SYMBOL_MPV(retro_get_memory_data); - SYMBOL_MPV(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_MPV); #endif break; case CORE_TYPE_IMAGEVIEWER: #ifdef HAVE_IMAGEVIEWER - SYMBOL_IMAGEVIEWER(retro_init); - SYMBOL_IMAGEVIEWER(retro_deinit); - - SYMBOL_IMAGEVIEWER(retro_api_version); - SYMBOL_IMAGEVIEWER(retro_get_system_info); - SYMBOL_IMAGEVIEWER(retro_get_system_av_info); - - SYMBOL_IMAGEVIEWER(retro_set_environment); - SYMBOL_IMAGEVIEWER(retro_set_video_refresh); - SYMBOL_IMAGEVIEWER(retro_set_audio_sample); - SYMBOL_IMAGEVIEWER(retro_set_audio_sample_batch); - SYMBOL_IMAGEVIEWER(retro_set_input_poll); - SYMBOL_IMAGEVIEWER(retro_set_input_state); - - SYMBOL_IMAGEVIEWER(retro_set_controller_port_device); - - SYMBOL_IMAGEVIEWER(retro_reset); - SYMBOL_IMAGEVIEWER(retro_run); - - SYMBOL_IMAGEVIEWER(retro_serialize_size); - SYMBOL_IMAGEVIEWER(retro_serialize); - SYMBOL_IMAGEVIEWER(retro_unserialize); - - SYMBOL_IMAGEVIEWER(retro_cheat_reset); - SYMBOL_IMAGEVIEWER(retro_cheat_set); - - SYMBOL_IMAGEVIEWER(retro_load_game); - SYMBOL_IMAGEVIEWER(retro_load_game_special); - - SYMBOL_IMAGEVIEWER(retro_unload_game); - SYMBOL_IMAGEVIEWER(retro_get_region); - SYMBOL_IMAGEVIEWER(retro_get_memory_data); - SYMBOL_IMAGEVIEWER(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_IMAGEVIEWER); #endif break; case CORE_TYPE_NETRETROPAD: #if defined(HAVE_NETWORKING) && defined(HAVE_NETWORKGAMEPAD) - SYMBOL_NETRETROPAD(retro_init); - SYMBOL_NETRETROPAD(retro_deinit); - - SYMBOL_NETRETROPAD(retro_api_version); - SYMBOL_NETRETROPAD(retro_get_system_info); - SYMBOL_NETRETROPAD(retro_get_system_av_info); - - SYMBOL_NETRETROPAD(retro_set_environment); - SYMBOL_NETRETROPAD(retro_set_video_refresh); - SYMBOL_NETRETROPAD(retro_set_audio_sample); - SYMBOL_NETRETROPAD(retro_set_audio_sample_batch); - SYMBOL_NETRETROPAD(retro_set_input_poll); - SYMBOL_NETRETROPAD(retro_set_input_state); - - SYMBOL_NETRETROPAD(retro_set_controller_port_device); - - SYMBOL_NETRETROPAD(retro_reset); - SYMBOL_NETRETROPAD(retro_run); - - SYMBOL_NETRETROPAD(retro_serialize_size); - SYMBOL_NETRETROPAD(retro_serialize); - SYMBOL_NETRETROPAD(retro_unserialize); - - SYMBOL_NETRETROPAD(retro_cheat_reset); - SYMBOL_NETRETROPAD(retro_cheat_set); - - SYMBOL_NETRETROPAD(retro_load_game); - SYMBOL_NETRETROPAD(retro_load_game_special); - - SYMBOL_NETRETROPAD(retro_unload_game); - SYMBOL_NETRETROPAD(retro_get_region); - SYMBOL_NETRETROPAD(retro_get_memory_data); - SYMBOL_NETRETROPAD(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_NETRETROPAD); #endif break; case CORE_TYPE_VIDEO_PROCESSOR: #if defined(HAVE_VIDEOPROCESSOR) - SYMBOL_VIDEOPROCESSOR(retro_init); - SYMBOL_VIDEOPROCESSOR(retro_deinit); - - SYMBOL_VIDEOPROCESSOR(retro_api_version); - SYMBOL_VIDEOPROCESSOR(retro_get_system_info); - SYMBOL_VIDEOPROCESSOR(retro_get_system_av_info); - - SYMBOL_VIDEOPROCESSOR(retro_set_environment); - SYMBOL_VIDEOPROCESSOR(retro_set_video_refresh); - SYMBOL_VIDEOPROCESSOR(retro_set_audio_sample); - SYMBOL_VIDEOPROCESSOR(retro_set_audio_sample_batch); - SYMBOL_VIDEOPROCESSOR(retro_set_input_poll); - SYMBOL_VIDEOPROCESSOR(retro_set_input_state); - - SYMBOL_VIDEOPROCESSOR(retro_set_controller_port_device); - - SYMBOL_VIDEOPROCESSOR(retro_reset); - SYMBOL_VIDEOPROCESSOR(retro_run); - - SYMBOL_VIDEOPROCESSOR(retro_serialize_size); - SYMBOL_VIDEOPROCESSOR(retro_serialize); - SYMBOL_VIDEOPROCESSOR(retro_unserialize); - - SYMBOL_VIDEOPROCESSOR(retro_cheat_reset); - SYMBOL_VIDEOPROCESSOR(retro_cheat_set); - - SYMBOL_VIDEOPROCESSOR(retro_load_game); - SYMBOL_VIDEOPROCESSOR(retro_load_game_special); - - SYMBOL_VIDEOPROCESSOR(retro_unload_game); - SYMBOL_VIDEOPROCESSOR(retro_get_region); - SYMBOL_VIDEOPROCESSOR(retro_get_memory_data); - SYMBOL_VIDEOPROCESSOR(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_VIDEOPROCESSOR); #endif break; case CORE_TYPE_GONG: #ifdef HAVE_EASTEREGG - SYMBOL_GONG(retro_init); - SYMBOL_GONG(retro_deinit); - - SYMBOL_GONG(retro_api_version); - SYMBOL_GONG(retro_get_system_info); - SYMBOL_GONG(retro_get_system_av_info); - - SYMBOL_GONG(retro_set_environment); - SYMBOL_GONG(retro_set_video_refresh); - SYMBOL_GONG(retro_set_audio_sample); - SYMBOL_GONG(retro_set_audio_sample_batch); - SYMBOL_GONG(retro_set_input_poll); - SYMBOL_GONG(retro_set_input_state); - - SYMBOL_GONG(retro_set_controller_port_device); - - SYMBOL_GONG(retro_reset); - SYMBOL_GONG(retro_run); - - SYMBOL_GONG(retro_serialize_size); - SYMBOL_GONG(retro_serialize); - SYMBOL_GONG(retro_unserialize); - - SYMBOL_GONG(retro_cheat_reset); - SYMBOL_GONG(retro_cheat_set); - - SYMBOL_GONG(retro_load_game); - SYMBOL_GONG(retro_load_game_special); - - SYMBOL_GONG(retro_unload_game); - SYMBOL_GONG(retro_get_region); - SYMBOL_GONG(retro_get_memory_data); - SYMBOL_GONG(retro_get_memory_size); + CORE_SYMBOLS(SYMBOL_GONG); #endif break; } From 0d167afc4fbc6603ef2ac1c4745a6b3aabdd15aa Mon Sep 17 00:00:00 2001 From: orbea Date: Sat, 1 Jun 2019 07:52:16 -0700 Subject: [PATCH 06/31] Fix the OpenGLES3 build. This depends on HAVE_EGL. Revert "Remove this Travis test for now" This reverts commit 678089c2dec04e3cdf1aefade73a13fa07bb1d9f. --- .travis.yml | 2 ++ qb/config.libs.sh | 1 + 2 files changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 95192f6c2b..631cd3edea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,6 +31,8 @@ matrix: env: DISABLE_MENU=1 CC=gcc-8 CXX=g++-8 - compiler: gcc env: ENABLE_GLES=1 CC=gcc-8 CXX=g++-8 + - compiler: gcc + env: ENABLE_GLES=1 ENABLE_GLES3=1 CC=gcc-8 CXX=g++-8 - compiler: clang env: CC=clang-6.0 CXX=clang++-6.0 - compiler: clang diff --git a/qb/config.libs.sh b/qb/config.libs.sh index ff71f1604d..8cd062d392 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -348,6 +348,7 @@ else HAVE_OPENGL='no' fi +check_enabled EGL OPENGLES3 OpenGLES3 'EGL is' false check_enabled OPENGL CG Cg 'OpenGL is' false check_enabled OPENGL OSMESA osmesa 'OpenGL is' false check_enabled OPENGL OPENGL1 OpenGL1 'OpenGL is' false From a9c9d0efc3e9ed3f8e3119db42a73a419a83e0a3 Mon Sep 17 00:00:00 2001 From: orbea Date: Sat, 1 Jun 2019 19:06:07 -0700 Subject: [PATCH 07/31] Try using the udev or linuxraw input drivers for khr_display. When using vulkan with a khr_display context while the x input driver is set RA will fail to start. This changes it to try setting the udev and then linuxraw input drivers in such cases. This code is copied from gfx/drivers_context/drm_ctx.c --- gfx/drivers_context/khr_display_ctx.c | 36 ++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/gfx/drivers_context/khr_display_ctx.c b/gfx/drivers_context/khr_display_ctx.c index 7967b6de86..28c4eb5270 100644 --- a/gfx/drivers_context/khr_display_ctx.c +++ b/gfx/drivers_context/khr_display_ctx.c @@ -14,6 +14,7 @@ */ #include +#include #ifdef HAVE_CONFIG_H #include "../../config.h" @@ -154,9 +155,42 @@ error: } static void gfx_ctx_khr_display_input_driver(void *data, - const char *name, + const char *joypad_name, const input_driver_t **input, void **input_data) { +#ifdef HAVE_X11 + settings_t *settings = config_get_ptr(); + + /* We cannot use the X11 input driver for DRM/KMS */ + if (string_is_equal(settings->arrays.input_driver, "x")) + { +#ifdef HAVE_UDEV + { + /* Try to set it to udev instead */ + void *udev = input_udev.init(joypad_name); + if (udev) + { + *input = &input_udev; + *input_data = udev; + return; + } + } +#endif +#if defined(__linux__) && !defined(ANDROID) + { + /* Try to set it to linuxraw instead */ + void *linuxraw = input_linuxraw.init(joypad_name); + if (linuxraw) + { + *input = &input_linuxraw; + *input_data = linuxraw; + return; + } + } +#endif + } +#endif + *input = NULL; *input_data = NULL; } From fbe6639ee1206870a9cedbfea959b94bfc67573d Mon Sep 17 00:00:00 2001 From: orbea Date: Sun, 2 Jun 2019 06:43:16 -0700 Subject: [PATCH 08/31] qb: Log the configure arguments in config.log. --- qb/qb.params.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/qb/qb.params.sh b/qb/qb.params.sh index e280400c07..1834431093 100644 --- a/qb/qb.params.sh +++ b/qb/qb.params.sh @@ -68,6 +68,8 @@ opt_exists() # $opt is returned if exists in OPTS parse_input() # Parse stuff :V { BUILD='' OPTS='' + config_opts='./configure' + while read -r VAR _; do TMPVAR="${VAR%=*}" NEWVAR="${TMPVAR##HAVE_}" @@ -78,6 +80,7 @@ parse_input() # Parse stuff :V #things in opt_exists() while [ $# -gt 0 ]; do + config_opts="${config_opts} $1" case "$1" in --prefix=*) PREFIX=${1##--prefix=};; --global-config-dir=*|--sysconfdir=*) GLOBAL_CONFIG_DIR="${1#*=}";; @@ -110,6 +113,17 @@ parse_input() # Parse stuff :V esac shift done + + cat > config.log << EOF +Command line invocation: + + \$ ${config_opts} + +## ----------- ## +## Core Tests. ## +## ----------- ## + +EOF } . qb/config.params.sh From 5a4294359abc2517408b897cf9f25bb8f913d38f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 2 Jun 2019 17:18:52 +0200 Subject: [PATCH 09/31] (config.def.h) Turn const variables into macros --- config.def.h | 137 ++++++++++++++++++++++---------------------- configuration.c | 104 ++++++++++++++++----------------- menu/menu_setting.c | 94 +++++++++++++++--------------- retroarch.c | 60 +++++++++---------- 4 files changed, 196 insertions(+), 199 deletions(-) diff --git a/config.def.h b/config.def.h index 4efd18cda2..6413a88bb3 100644 --- a/config.def.h +++ b/config.def.h @@ -70,7 +70,7 @@ #endif #ifdef HAVE_MATERIALUI -static bool materialui_icons_enable = true; +#define DEFAULT_MATERIALUI_ICONS_ENABLE true #endif static const unsigned crt_switch_resolution = CRT_SWITCH_NONE; @@ -84,13 +84,13 @@ static const bool def_playlist_entry_rename = true; static const unsigned int def_user_language = 0; #if (defined(_WIN32) && !defined(_XBOX)) || (defined(__linux) && !defined(ANDROID) && !defined(HAVE_LAKKA)) || (defined(__MACH__) && !defined(IOS)) || defined(EMSCRIPTEN) -static const bool def_mouse_enable = true; +#define DEFAULT_MOUSE_ENABLE true #else -static const bool def_mouse_enable = false; +#define DEFAULT_MOUSE_ENABLE false #endif #ifdef HAVE_CHEEVOS -static const bool cheevos_enable = false; +#define DEFAULT_CHEEVOS_ENABLE false #endif /* VIDEO */ @@ -105,34 +105,33 @@ static const bool cheevos_enable = false; * Real x resolution = aspect * base_size * x scale * Real y resolution = base_size * y scale */ -static const float scale = 3.0; +#define DEFAULT_SCALE (3.0) /* Fullscreen */ /* To start in Fullscreen, or not. */ -static const bool fullscreen = false; +#define DEFAULT_FULLSCREEN false /* To use windowed mode or not when going fullscreen. */ -static const bool windowed_fullscreen = true; +#define DEFAULT_WINDOWED_FULLSCREEN true /* Which monitor to prefer. 0 is any monitor, 1 and up selects * specific monitors, 1 being the first monitor. */ -static const unsigned monitor_index = 0; +#define DEFAULT_MONITOR_INDEX 0 /* Window */ /* Window size. A value of 0 uses window scale * multiplied by the core framebuffer size. */ -static const unsigned window_width = 1280; -static const unsigned window_height = 720; +#define DEFAULT_WINDOW_WIDTH 1280 +#define DEFAULT_WINDOW_HEIGHT 720 /* Fullscreen resolution. A value of 0 uses the desktop * resolution. */ -static const unsigned fullscreen_x = 0; -static const unsigned fullscreen_y = 0; +#define DEFAULT_FULLSCREEN_X 0 +#define DEFAULT_FULLSCREEN_Y 0 /* Number of threads to use for video recording */ - -static const unsigned video_record_threads = 2; +#define DEFAULT_VIDEO_RECORD_THREADS 2 /* Amount of transparency to use for the main window. * 1 is the most transparent while 100 is opaque. @@ -148,44 +147,45 @@ static const bool load_dummy_on_core_shutdown = false; static const bool load_dummy_on_core_shutdown = true; #endif static const bool check_firmware_before_loading = false; + /* Forcibly disable composition. * Only valid on Windows Vista/7/8 for now. */ -static const bool disable_composition = false; +#define DEFAULT_DISABLE_COMPOSITION false /* Video VSYNC (recommended) */ -static const bool vsync = true; +#define DEFAULT_VSYNC false -static const unsigned max_swapchain_images = 3; +#define DEFAULT_MAX_SWAPCHAIN_IMAGES 3 -static const bool adaptive_vsync = false; +#define DEFAULT_ADAPTIVE_VSYNC false /* Attempts to hard-synchronize CPU and GPU. * Can reduce latency at cost of performance. */ -static const bool hard_sync = false; +#define DEFAULT_HARD_SYNC false /* Configures how many frames the GPU can run ahead of CPU. * 0: Syncs to GPU immediately. * 1: Syncs to previous frame. * 2: Etc ... */ -static const unsigned hard_sync_frames = 0; +#define DEFAULT_HARD_SYNC_FRAMES 0 /* Sets how many milliseconds to delay after VSync before running the core. * Can reduce latency at cost of higher risk of stuttering. */ -static const unsigned frame_delay = 0; +#define DEFAULT_FRAME_DELAY 0 /* Inserts a black frame inbetween frames. * Useful for 120 Hz monitors who want to play 60 Hz material with eliminated * ghosting. video_refresh_rate should still be configured as if it * is a 60 Hz monitor (divide refresh rate by 2). */ -static bool black_frame_insertion = false; +#define DEFAULT_BLACK_FRAME_INSERTION false /* Uses a custom swap interval for VSync. * Set this to effectively halve monitor refresh rate. */ -static unsigned swap_interval = 1; +#define DEFAULT_SWAP_INTERVAL 1 /* Threaded video. Will possibly increase performance significantly * at the cost of worse synchronization and latency. @@ -219,10 +219,10 @@ static const bool video_vfilter = true; #endif /* Smooths picture. */ -static const bool video_smooth = true; +#define DEFAULT_VIDEO_SMOOTH true /* On resize and fullscreen, rendering area will stay 4:3 */ -static const bool force_aspect = true; +#define DEFAULT_FORCE_ASPECT true /* Enable use of shaders. */ #ifdef RARCH_CONSOLE @@ -239,25 +239,22 @@ static const bool scale_integer = false; /* Controls aspect ratio handling. */ -/* Automatic */ -static const float aspect_ratio = DEFAULT_ASPECT_RATIO; - /* 1:1 PAR */ -static const bool aspect_ratio_auto = false; +#define DEFAULT_ASPECT_RATIO_AUTO false #if defined(__CELLOS_LV2) || defined(_XBOX360) -static unsigned aspect_ratio_idx = ASPECT_RATIO_16_9; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_16_9 #elif defined(PSP) -static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE #elif defined(_3DS) /* Previously defaulted to ASPECT_RATIO_4_3. * Non-4:3 content looks dreadful when stretched * to 4:3 on the 3DS screen... */ -static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE #elif defined(RARCH_CONSOLE) -static unsigned aspect_ratio_idx = ASPECT_RATIO_4_3; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_4_3 #else -static unsigned aspect_ratio_idx = ASPECT_RATIO_CORE; +#define DEFAULT_ASPECT_RATIO_IDX ASPECT_RATIO_CORE #endif /* Save configuration file on exit. */ @@ -460,9 +457,9 @@ static const bool crop_overscan = true; /* Font size for on-screen messages. */ #if defined(HAVE_LIBDBGFONT) -static const float font_size = 1.0f; +#define DEFAULT_FONT_SIZE 1.0f #else -static const float font_size = 32; +#define DEFAULT_FONT_SIZE 32 #endif /* Offset for where messages will be placed on-screen. @@ -536,7 +533,7 @@ static const unsigned video_3ds_display_mode = CTR_VIDEO_MODE_3D; /* AUDIO */ /* Will enable audio or not. */ -static const bool audio_enable = true; +#define DEFAULT_AUDIO_ENABLE true /* Enable menu audio sounds. */ static const bool audio_enable_menu = false; @@ -553,11 +550,11 @@ static const bool menu_enable_widgets = false; /* Output samplerate. */ #ifdef GEKKO -static const unsigned out_rate = 32000; +#define DEFAULT_OUTPUT_RATE 32000 #elif defined(_3DS) -static const unsigned out_rate = 32730; +#define DEFAULT_OUTPUT_RATE 32730 #else -static const unsigned out_rate = 48000; +#define DEFAULT_OUTPUT_RATE 48000 #endif /* Audio device (e.g. hw:0,0 or /dev/audio). If NULL, will use defaults. */ @@ -567,34 +564,34 @@ static const char *audio_device = NULL; * if driver can't provide given latency. */ #if defined(ANDROID) || defined(EMSCRIPTEN) /* For most Android devices, 64ms is way too low. */ -static const int out_latency = 128; +#define DEFAULT_OUT_LATENCY 128 #else -static const int out_latency = 64; +#define DEFAULT_OUT_LATENCY 64 #endif /* Will sync audio. (recommended) */ -static const bool audio_sync = true; +#define DEFAULT_AUDIO_SYNC true /* Audio rate control. */ #if !defined(RARCH_CONSOLE) -static const bool rate_control = true; +#define DEFAULT_RATE_CONTROL true #else -static const bool rate_control = false; +#define DEFAULT_RATE_CONTROL false #endif /* Rate control delta. Defines how much rate_control * is allowed to adjust input rate. */ -static const float rate_control_delta = 0.005; +#define DEFAULT_RATE_CONTROL_DELTA 0.005 /* Maximum timing skew. Defines how much adjust_system_rates * is allowed to adjust input rate. */ -static const float max_timing_skew = 0.05; +#define DEFAULT_MAX_TIMING_SKEW 0.05 /* Default audio volume in dB. (0.0 dB == unity gain). */ -static const float audio_volume = 0.0; +#define DEFAULT_AUDIO_VOLUME 0.0 /* Default audio volume of the audio mixer in dB. (0.0 dB == unity gain). */ -static const float audio_mixer_volume = 0.0; +#define DEFAULT_AUDIO_MIXER_VOLUME 0.0 #ifdef HAVE_WASAPI /* WASAPI defaults */ @@ -606,56 +603,56 @@ static const int wasapi_sh_buffer_length = -16; /* auto */ /* MISC */ /* Enables displaying the current frames per second. */ -static const bool fps_show = false; +#define DEFAULT_FPS_SHOW false /* Enables displaying the current frame count. */ -static const bool framecount_show = false; +#define DEFAULT_FRAMECOUNT_SHOW false /* Includes displaying the current memory usage/total with FPS/Frames. */ -static const bool memory_show = false; +#define DEFAULT_MEMORY_SHOW false /* Enables displaying various timing statistics. */ -static const bool statistics_show = false; +#define DEFAULT_STATISTICS_SHOW false /* Enables use of rewind. This will incur some memory footprint * depending on the save state buffer. */ -static const bool rewind_enable = false; +#define DEFAULT_REWIND_ENABLE false /* When set, any time a cheat is toggled it is immediately applied. */ -static const bool apply_cheats_after_toggle = false; +#define DEFAULT_APPLY_CHEATS_AFTER_TOGGLE false /* When set, all enabled cheats are auto-applied when a game is loaded. */ -static const bool apply_cheats_after_load = false; +#define DEFAULT_APPLY_CHEATS_AFTER_LOAD false /* The buffer size for the rewind buffer. This needs to be about * 15-20MB per minute. Very game dependant. */ -static const unsigned rewind_buffer_size = 20 << 20; /* 20MiB */ +#define DEFAULT_REWIND_BUFFER_SIZE (20 << 20) /* 20MiB */ /* The amount of MB to increase/decrease the rewind_buffer_size when it is changed via the UI. */ -static const unsigned rewind_buffer_size_step = 10; /* 10MB */ +#define DEFAULT_REWIND_BUFFER_SIZE_STEP 10 /* 10MB */ /* How many frames to rewind at a time. */ -static const unsigned rewind_granularity = 1; +#define DEFAULT_REWIND_GRANULARITY 1 /* Pause gameplay when gameplay loses focus. */ #ifdef EMSCRIPTEN -static const bool pause_nonactive = false; +#define DEFAULT_PAUSE_NONACTIVE false #else -static const bool pause_nonactive = true; +#define DEFAULT_PAUSE_NONACTIVE true #endif /* Saves non-volatile SRAM at a regular interval. * It is measured in seconds. A value of 0 disables autosave. */ #if defined(__i386__) || defined(__i486__) || defined(__i686__) || defined(__x86_64__) || defined(_M_X64) || defined(_WIN32) || defined(OSX) || defined(ANDROID) || defined(IOS) /* Flush to file every 10 seconds on modern platforms by default */ -static const unsigned autosave_interval = 10; +#define DEFAULT_AUTOSAVE_INTERVAL 10 #else /* Default to disabled on I/O-constrained platforms */ -static const unsigned autosave_interval = 0; +#define DEFAULT_AUTOSAVE_INTERVAL 0 #endif /* Publicly announce netplay */ -static const bool netplay_public_announce = true; +#define DEFAULT_NETPLAY_PUBLIC_ANNOUNCE true /* Start netplay in spectator mode */ static const bool netplay_start_as_spectator = false; @@ -709,16 +706,16 @@ static const bool savestate_auto_load = false; static const bool savestate_thumbnail_enable = false; /* Slowmotion ratio. */ -static const float slowmotion_ratio = 3.0; +#define DEFAULT_SLOWMOTION_RATIO 3.0 /* Maximum fast forward ratio. */ -static const float fastforward_ratio = 0.0; +#define DEFAULT_FASTFORWARD_RATIO 0.0 /* Enable runloop for variable refresh rate screens. Force x1 speed while handling fast forward too. */ -static const bool vrr_runloop_enable = false; +#define DEFAULT_VRR_RUNLOOP_ENABLE false /* Run core logic one or more frames ahead then load the state back to reduce perceived input lag. */ -static const unsigned run_ahead_frames = 1; +#define DEFAULT_RUN_AHEAD_FRAMES 1 /* When using the Run Ahead feature, use a secondary instance of the core. */ static const bool run_ahead_secondary_instance = true; @@ -858,8 +855,8 @@ static const unsigned midi_volume = 100; /* Only applies to Android 7.0 (API 24) and up */ static const bool sustained_performance_mode = false; -static const bool vibrate_on_keypress = false; -static const bool enable_device_vibration = false; +static const bool vibrate_on_keypress = false; +static const bool enable_device_vibration = false; #if defined(HAKCHI) static char buildbot_server_url[] = "http://hakchicloud.com/Libretro_Cores/"; diff --git a/configuration.c b/configuration.c index cebbe52cdf..be383f6669 100644 --- a/configuration.c +++ b/configuration.c @@ -1357,7 +1357,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("all_users_control_menu", &settings->bools.input_all_users_control_menu, true, all_users_control_menu, false); SETTING_BOOL("menu_swap_ok_cancel_buttons", &settings->bools.input_menu_swap_ok_cancel_buttons, true, menu_swap_ok_cancel_buttons, false); #ifdef HAVE_NETWORKING - SETTING_BOOL("netplay_public_announce", &settings->bools.netplay_public_announce, true, netplay_public_announce, false); + SETTING_BOOL("netplay_public_announce", &settings->bools.netplay_public_announce, true, DEFAULT_NETPLAY_PUBLIC_ANNOUNCE, false); SETTING_BOOL("netplay_start_as_spectator", &settings->bools.netplay_start_as_spectator, false, netplay_start_as_spectator, false); SETTING_BOOL("netplay_allow_slaves", &settings->bools.netplay_allow_slaves, true, netplay_allow_slaves, false); SETTING_BOOL("netplay_require_slaves", &settings->bools.netplay_require_slaves, true, netplay_require_slaves, false); @@ -1388,49 +1388,49 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("check_firmware_before_loading", &settings->bools.check_firmware_before_loading, true, check_firmware_before_loading, false); SETTING_BOOL("builtin_mediaplayer_enable", &settings->bools.multimedia_builtin_mediaplayer_enable, false, false /* TODO */, false); SETTING_BOOL("builtin_imageviewer_enable", &settings->bools.multimedia_builtin_imageviewer_enable, true, true, false); - SETTING_BOOL("fps_show", &settings->bools.video_fps_show, true, fps_show, false); - SETTING_BOOL("statistics_show", &settings->bools.video_statistics_show, true, statistics_show, false); - SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, framecount_show, false); - SETTING_BOOL("memory_show", &settings->bools.video_memory_show, true, memory_show, false); + SETTING_BOOL("fps_show", &settings->bools.video_fps_show, true, DEFAULT_FPS_SHOW, false); + SETTING_BOOL("statistics_show", &settings->bools.video_statistics_show, true, DEFAULT_STATISTICS_SHOW, false); + SETTING_BOOL("framecount_show", &settings->bools.video_framecount_show, true, DEFAULT_FRAMECOUNT_SHOW, false); + SETTING_BOOL("memory_show", &settings->bools.video_memory_show, true, DEFAULT_MEMORY_SHOW, false); SETTING_BOOL("ui_menubar_enable", &settings->bools.ui_menubar_enable, true, true, false); SETTING_BOOL("suspend_screensaver_enable", &settings->bools.ui_suspend_screensaver_enable, true, true, false); - SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, rewind_enable, false); - SETTING_BOOL("vrr_runloop_enable", &settings->bools.vrr_runloop_enable, true, vrr_runloop_enable, false); - SETTING_BOOL("apply_cheats_after_toggle", &settings->bools.apply_cheats_after_toggle, true, apply_cheats_after_toggle, false); - SETTING_BOOL("apply_cheats_after_load", &settings->bools.apply_cheats_after_load, true, apply_cheats_after_load, false); + SETTING_BOOL("rewind_enable", &settings->bools.rewind_enable, true, DEFAULT_REWIND_ENABLE, false); + SETTING_BOOL("vrr_runloop_enable", &settings->bools.vrr_runloop_enable, true, DEFAULT_VRR_RUNLOOP_ENABLE, false); + SETTING_BOOL("apply_cheats_after_toggle", &settings->bools.apply_cheats_after_toggle, true, DEFAULT_APPLY_CHEATS_AFTER_TOGGLE, false); + SETTING_BOOL("apply_cheats_after_load", &settings->bools.apply_cheats_after_load, true, DEFAULT_APPLY_CHEATS_AFTER_LOAD, false); SETTING_BOOL("run_ahead_enabled", &settings->bools.run_ahead_enabled, true, false, false); SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, false, false); SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, false, false); - SETTING_BOOL("audio_sync", &settings->bools.audio_sync, true, audio_sync, false); + SETTING_BOOL("audio_sync", &settings->bools.audio_sync, true, DEFAULT_AUDIO_SYNC, false); SETTING_BOOL("video_shader_enable", &settings->bools.video_shader_enable, true, shader_enable, false); SETTING_BOOL("video_shader_watch_files", &settings->bools.video_shader_watch_files, true, video_shader_watch_files, false); /* Let implementation decide if automatic, or 1:1 PAR. */ - SETTING_BOOL("video_aspect_ratio_auto", &settings->bools.video_aspect_ratio_auto, true, aspect_ratio_auto, false); + SETTING_BOOL("video_aspect_ratio_auto", &settings->bools.video_aspect_ratio_auto, true, DEFAULT_ASPECT_RATIO_AUTO, false); SETTING_BOOL("video_allow_rotate", &settings->bools.video_allow_rotate, true, allow_rotate, false); - SETTING_BOOL("video_windowed_fullscreen", &settings->bools.video_windowed_fullscreen, true, windowed_fullscreen, false); + SETTING_BOOL("video_windowed_fullscreen", &settings->bools.video_windowed_fullscreen, true, DEFAULT_WINDOWED_FULLSCREEN, false); SETTING_BOOL("video_crop_overscan", &settings->bools.video_crop_overscan, true, crop_overscan, false); SETTING_BOOL("video_scale_integer", &settings->bools.video_scale_integer, true, scale_integer, false); - SETTING_BOOL("video_smooth", &settings->bools.video_smooth, true, video_smooth, false); - SETTING_BOOL("video_force_aspect", &settings->bools.video_force_aspect, true, force_aspect, false); + SETTING_BOOL("video_smooth", &settings->bools.video_smooth, true, DEFAULT_VIDEO_SMOOTH, false); + SETTING_BOOL("video_force_aspect", &settings->bools.video_force_aspect, true, DEFAULT_FORCE_ASPECT, false); SETTING_BOOL("video_threaded", video_driver_get_threaded(), true, DEFAULT_VIDEO_THREADED, false); SETTING_BOOL("video_shared_context", &settings->bools.video_shared_context, true, video_shared_context, false); SETTING_BOOL("auto_screenshot_filename", &settings->bools.auto_screenshot_filename, true, auto_screenshot_filename, false); SETTING_BOOL("video_force_srgb_disable", &settings->bools.video_force_srgb_disable, true, false, false); - SETTING_BOOL("video_fullscreen", &settings->bools.video_fullscreen, true, fullscreen, false); + SETTING_BOOL("video_fullscreen", &settings->bools.video_fullscreen, true, DEFAULT_FULLSCREEN, false); SETTING_BOOL("bundle_assets_extract_enable", &settings->bools.bundle_assets_extract_enable, true, DEFAULT_BUNDLE_ASSETS_EXTRACT_ENABLE, false); - SETTING_BOOL("video_vsync", &settings->bools.video_vsync, true, vsync, false); - SETTING_BOOL("video_adaptive_vsync", &settings->bools.video_adaptive_vsync, true, adaptive_vsync, false); - SETTING_BOOL("video_hard_sync", &settings->bools.video_hard_sync, true, hard_sync, false); - SETTING_BOOL("video_black_frame_insertion", &settings->bools.video_black_frame_insertion, true, black_frame_insertion, false); - SETTING_BOOL("video_disable_composition", &settings->bools.video_disable_composition, true, disable_composition, false); - SETTING_BOOL("pause_nonactive", &settings->bools.pause_nonactive, true, pause_nonactive, false); + SETTING_BOOL("video_vsync", &settings->bools.video_vsync, true, DEFAULT_VSYNC, false); + SETTING_BOOL("video_adaptive_vsync", &settings->bools.video_adaptive_vsync, true, DEFAULT_ADAPTIVE_VSYNC, false); + SETTING_BOOL("video_hard_sync", &settings->bools.video_hard_sync, true, DEFAULT_HARD_SYNC, false); + SETTING_BOOL("video_black_frame_insertion", &settings->bools.video_black_frame_insertion, true, DEFAULT_BLACK_FRAME_INSERTION, false); + SETTING_BOOL("video_disable_composition", &settings->bools.video_disable_composition, true, DEFAULT_DISABLE_COMPOSITION, false); + SETTING_BOOL("pause_nonactive", &settings->bools.pause_nonactive, true, DEFAULT_PAUSE_NONACTIVE, false); SETTING_BOOL("video_gpu_screenshot", &settings->bools.video_gpu_screenshot, true, gpu_screenshot, false); SETTING_BOOL("video_post_filter_record", &settings->bools.video_post_filter_record, true, post_filter_record, false); SETTING_BOOL("keyboard_gamepad_enable", &settings->bools.input_keyboard_gamepad_enable, true, true, false); SETTING_BOOL("core_set_supports_no_game_enable", &settings->bools.set_supports_no_game_enable, true, true, false); - SETTING_BOOL("audio_enable", &settings->bools.audio_enable, true, audio_enable, false); + SETTING_BOOL("audio_enable", &settings->bools.audio_enable, true, DEFAULT_AUDIO_ENABLE, false); SETTING_BOOL("menu_enable_widgets", &settings->bools.menu_enable_widgets, true, menu_enable_widgets, false); SETTING_BOOL("audio_enable_menu", &settings->bools.audio_enable_menu, true, audio_enable_menu, false); SETTING_BOOL("audio_enable_menu_ok", &settings->bools.audio_enable_menu_ok, true, audio_enable_menu_ok, false); @@ -1464,7 +1464,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("menu_horizontal_animation", &settings->bools.menu_horizontal_animation, true, true, false); SETTING_BOOL("dpi_override_enable", &settings->bools.menu_dpi_override_enable, true, menu_dpi_override_enable, false); SETTING_BOOL("menu_pause_libretro", &settings->bools.menu_pause_libretro, true, true, false); - SETTING_BOOL("menu_mouse_enable", &settings->bools.menu_mouse_enable, true, def_mouse_enable, false); + SETTING_BOOL("menu_mouse_enable", &settings->bools.menu_mouse_enable, true, DEFAULT_MOUSE_ENABLE, false); SETTING_BOOL("menu_pointer_enable", &settings->bools.menu_pointer_enable, true, DEFAULT_POINTER_ENABLE, false); SETTING_BOOL("menu_timedate_enable", &settings->bools.menu_timedate_enable, true, true, false); SETTING_BOOL("menu_battery_level_enable", &settings->bools.menu_battery_level_enable, true, true, false); @@ -1536,7 +1536,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, &settings->bools.menu_navigation_browser_filter_supported_extensions_enable, true, true, false); SETTING_BOOL("menu_show_advanced_settings", &settings->bools.menu_show_advanced_settings, true, show_advanced_settings, false); #ifdef HAVE_MATERIALUI - SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, materialui_icons_enable, false); + SETTING_BOOL("materialui_icons_enable", &settings->bools.menu_materialui_icons_enable, true, DEFAULT_MATERIALUI_ICONS_ENABLE, false); #endif #ifdef HAVE_RGUI SETTING_BOOL("rgui_background_filler_thickness_enable", &settings->bools.menu_rgui_background_filler_thickness_enable, true, true, false); @@ -1554,7 +1554,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, #endif #endif #ifdef HAVE_CHEEVOS - SETTING_BOOL("cheevos_enable", &settings->bools.cheevos_enable, true, cheevos_enable, false); + SETTING_BOOL("cheevos_enable", &settings->bools.cheevos_enable, true, DEFAULT_CHEEVOS_ENABLE, false); SETTING_BOOL("cheevos_test_unofficial", &settings->bools.cheevos_test_unofficial, true, false, false); SETTING_BOOL("cheevos_hardcore_mode_enable", &settings->bools.cheevos_hardcore_mode_enable, true, false, false); SETTING_BOOL("cheevos_leaderboards_enable", &settings->bools.cheevos_leaderboards_enable, true, false, false); @@ -1601,7 +1601,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("config_save_on_exit", &settings->bools.config_save_on_exit, true, config_save_on_exit, false); SETTING_BOOL("show_hidden_files", &settings->bools.show_hidden_files, true, show_hidden_files, false); SETTING_BOOL("input_autodetect_enable", &settings->bools.input_autodetect_enable, true, input_autodetect_enable, false); - SETTING_BOOL("audio_rate_control", &settings->bools.audio_rate_control, true, rate_control, false); + SETTING_BOOL("audio_rate_control", &settings->bools.audio_rate_control, true, DEFAULT_RATE_CONTROL, false); #ifdef HAVE_WASAPI SETTING_BOOL("audio_wasapi_exclusive_mode", &settings->bools.audio_wasapi_exclusive_mode, true, wasapi_exclusive_mode, false); SETTING_BOOL("audio_wasapi_float_format", &settings->bools.audio_wasapi_float_format, true, wasapi_float_format, false); @@ -1655,14 +1655,14 @@ static struct config_float_setting *populate_settings_float(settings_t *settings if (!tmp) return NULL; - SETTING_FLOAT("video_aspect_ratio", &settings->floats.video_aspect_ratio, true, aspect_ratio, false); + SETTING_FLOAT("video_aspect_ratio", &settings->floats.video_aspect_ratio, true, DEFAULT_ASPECT_RATIO, false); SETTING_FLOAT("video_scale", &settings->floats.video_scale, false, 0.0f, false); SETTING_FLOAT("crt_video_refresh_rate", &settings->floats.crt_video_refresh_rate, true, crt_refresh_rate, false); SETTING_FLOAT("video_refresh_rate", &settings->floats.video_refresh_rate, true, refresh_rate, false); - SETTING_FLOAT("audio_rate_control_delta", audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), true, rate_control_delta, false); - SETTING_FLOAT("audio_max_timing_skew", &settings->floats.audio_max_timing_skew, true, max_timing_skew, false); - SETTING_FLOAT("audio_volume", &settings->floats.audio_volume, true, audio_volume, false); - SETTING_FLOAT("audio_mixer_volume", &settings->floats.audio_mixer_volume, true, audio_mixer_volume, false); + SETTING_FLOAT("audio_rate_control_delta", audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), true, DEFAULT_RATE_CONTROL_DELTA, false); + SETTING_FLOAT("audio_max_timing_skew", &settings->floats.audio_max_timing_skew, true, DEFAULT_MAX_TIMING_SKEW, false); + SETTING_FLOAT("audio_volume", &settings->floats.audio_volume, true, DEFAULT_AUDIO_VOLUME, false); + SETTING_FLOAT("audio_mixer_volume", &settings->floats.audio_mixer_volume, true, DEFAULT_AUDIO_MIXER_VOLUME, false); #ifdef HAVE_OVERLAY SETTING_FLOAT("input_overlay_opacity", &settings->floats.input_overlay_opacity, true, default_input_overlay_opacity, false); SETTING_FLOAT("input_overlay_scale", &settings->floats.input_overlay_scale, true, 1.0f, false); @@ -1676,9 +1676,9 @@ static struct config_float_setting *populate_settings_float(settings_t *settings #endif SETTING_FLOAT("video_message_pos_x", &settings->floats.video_msg_pos_x, true, message_pos_offset_x, false); SETTING_FLOAT("video_message_pos_y", &settings->floats.video_msg_pos_y, true, message_pos_offset_y, false); - SETTING_FLOAT("video_font_size", &settings->floats.video_font_size, true, font_size, false); - SETTING_FLOAT("fastforward_ratio", &settings->floats.fastforward_ratio, true, fastforward_ratio, false); - SETTING_FLOAT("slowmotion_ratio", &settings->floats.slowmotion_ratio, true, slowmotion_ratio, false); + SETTING_FLOAT("video_font_size", &settings->floats.video_font_size, true, DEFAULT_FONT_SIZE, false); + SETTING_FLOAT("fastforward_ratio", &settings->floats.fastforward_ratio, true, DEFAULT_FASTFORWARD_RATIO, false); + SETTING_FLOAT("slowmotion_ratio", &settings->floats.slowmotion_ratio, true, DEFAULT_SLOWMOTION_RATIO, false); SETTING_FLOAT("input_axis_threshold", input_driver_get_float(INPUT_ACTION_AXIS_THRESHOLD), true, axis_threshold, false); SETTING_FLOAT("input_analog_deadzone", &settings->floats.input_analog_deadzone, true, analog_deadzone, false); SETTING_FLOAT("input_analog_sensitivity", &settings->floats.input_analog_sensitivity, true, analog_sensitivity, false); @@ -1713,15 +1713,15 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, #ifdef ANDROID SETTING_UINT("input_block_timeout", &settings->uints.input_block_timeout, true, 1, false); #endif - SETTING_UINT("rewind_granularity", &settings->uints.rewind_granularity, true, rewind_granularity, false); - SETTING_UINT("rewind_buffer_size_step", &settings->uints.rewind_buffer_size_step, true, rewind_buffer_size_step, false); - SETTING_UINT("autosave_interval", &settings->uints.autosave_interval, true, autosave_interval, false); + SETTING_UINT("rewind_granularity", &settings->uints.rewind_granularity, true, DEFAULT_REWIND_GRANULARITY, false); + SETTING_UINT("rewind_buffer_size_step", &settings->uints.rewind_buffer_size_step, true, DEFAULT_REWIND_BUFFER_SIZE_STEP, false); + SETTING_UINT("autosave_interval", &settings->uints.autosave_interval, true, DEFAULT_AUTOSAVE_INTERVAL, false); SETTING_UINT("libretro_log_level", &settings->uints.libretro_log_level, true, libretro_log_level, false); SETTING_UINT("keyboard_gamepad_mapping_type",&settings->uints.input_keyboard_gamepad_mapping_type, true, 1, false); SETTING_UINT("input_poll_type_behavior", &settings->uints.input_poll_type_behavior, true, 2, false); - SETTING_UINT("video_monitor_index", &settings->uints.video_monitor_index, true, monitor_index, false); - SETTING_UINT("video_fullscreen_x", &settings->uints.video_fullscreen_x, true, fullscreen_x, false); - SETTING_UINT("video_fullscreen_y", &settings->uints.video_fullscreen_y, true, fullscreen_y, false); + SETTING_UINT("video_monitor_index", &settings->uints.video_monitor_index, true, DEFAULT_MONITOR_INDEX, false); + SETTING_UINT("video_fullscreen_x", &settings->uints.video_fullscreen_x, true, DEFAULT_FULLSCREEN_X, false); + SETTING_UINT("video_fullscreen_y", &settings->uints.video_fullscreen_y, true, DEFAULT_FULLSCREEN_Y, false); SETTING_UINT("video_window_opacity", &settings->uints.video_window_opacity, true, window_opacity, false); #ifdef HAVE_VIDEO_LAYOUT SETTING_UINT("video_layout_selected_view", &settings->uints.video_layout_selected_view, true, 0, false); @@ -1779,20 +1779,20 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("ozone_menu_color_theme", &settings->uints.menu_ozone_color_theme, true, 1, false); #endif #endif - SETTING_UINT("audio_out_rate", &settings->uints.audio_out_rate, true, out_rate, false); + SETTING_UINT("audio_out_rate", &settings->uints.audio_out_rate, true, DEFAULT_OUTPUT_RATE, false); SETTING_UINT("custom_viewport_width", &settings->video_viewport_custom.width, false, 0 /* TODO */, false); SETTING_UINT("crt_switch_resolution_super", &settings->uints.crt_switch_resolution_super, true, crt_switch_resolution_super, false); SETTING_UINT("custom_viewport_height", &settings->video_viewport_custom.height, false, 0 /* TODO */, false); SETTING_UINT("custom_viewport_x", (unsigned*)&settings->video_viewport_custom.x, false, 0 /* TODO */, false); SETTING_UINT("custom_viewport_y", (unsigned*)&settings->video_viewport_custom.y, false, 0 /* TODO */, false); SETTING_UINT("content_history_size", &settings->uints.content_history_size, true, default_content_history_size, false); - SETTING_UINT("video_hard_sync_frames", &settings->uints.video_hard_sync_frames, true, hard_sync_frames, false); - SETTING_UINT("video_frame_delay", &settings->uints.video_frame_delay, true, frame_delay, false); - SETTING_UINT("video_max_swapchain_images", &settings->uints.video_max_swapchain_images, true, max_swapchain_images, false); - SETTING_UINT("video_swap_interval", &settings->uints.video_swap_interval, true, swap_interval, false); + SETTING_UINT("video_hard_sync_frames", &settings->uints.video_hard_sync_frames, true, DEFAULT_HARD_SYNC_FRAMES, false); + SETTING_UINT("video_frame_delay", &settings->uints.video_frame_delay, true, DEFAULT_FRAME_DELAY, false); + SETTING_UINT("video_max_swapchain_images", &settings->uints.video_max_swapchain_images, true, DEFAULT_MAX_SWAPCHAIN_IMAGES, false); + SETTING_UINT("video_swap_interval", &settings->uints.video_swap_interval, true, DEFAULT_SWAP_INTERVAL, false); SETTING_UINT("video_rotation", &settings->uints.video_rotation, true, ORIENTATION_NORMAL, false); SETTING_UINT("screen_orientation", &settings->uints.screen_orientation, true, ORIENTATION_NORMAL, false); - SETTING_UINT("aspect_ratio_index", &settings->uints.video_aspect_ratio_idx, true, aspect_ratio_idx, false); + SETTING_UINT("aspect_ratio_index", &settings->uints.video_aspect_ratio_idx, true, DEFAULT_ASPECT_RATIO_IDX, false); #ifdef HAVE_NETWORKING SETTING_UINT("netplay_ip_port", &settings->uints.netplay_port, true, RARCH_DEFAULT_PORT, false); SETTING_OVERRIDE(RARCH_OVERRIDE_SETTING_NETPLAY_IP_PORT); @@ -1822,10 +1822,10 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("video_stream_scale_factor", &settings->uints.video_stream_scale_factor, true, 1, false); SETTING_UINT("video_windowed_position_x", &settings->uints.window_position_x, true, 0, false); SETTING_UINT("video_windowed_position_y", &settings->uints.window_position_y, true, 0, false); - SETTING_UINT("video_windowed_position_width", &settings->uints.window_position_width, true, window_width, false); - SETTING_UINT("video_windowed_position_height", &settings->uints.window_position_height, true, window_height, false); + SETTING_UINT("video_windowed_position_width", &settings->uints.window_position_width, true, DEFAULT_WINDOW_WIDTH, false); + SETTING_UINT("video_windowed_position_height", &settings->uints.window_position_height, true, DEFAULT_WINDOW_HEIGHT, false); - SETTING_UINT("video_record_threads", &settings->uints.video_record_threads, true, video_record_threads, false); + SETTING_UINT("video_record_threads", &settings->uints.video_record_threads, true, DEFAULT_VIDEO_RECORD_THREADS, false); #ifdef HAVE_LIBNX SETTING_UINT("libnx_overclock", &settings->uints.libnx_overclock, true, SWITCH_DEFAULT_CPU_PROFILE, false); @@ -1853,7 +1853,7 @@ static struct config_size_setting *populate_settings_size(settings_t *settings, if (!tmp) return NULL; - SETTING_SIZE("rewind_buffer_size", &settings->sizes.rewind_buffer_size, true, rewind_buffer_size, false); + SETTING_SIZE("rewind_buffer_size", &settings->sizes.rewind_buffer_size, true, DEFAULT_REWIND_BUFFER_SIZE, false); *size = count; @@ -2038,7 +2038,7 @@ void config_set_defaults(void) #else configuration_set_bool(settings, settings->bools.multimedia_builtin_mediaplayer_enable, false); #endif - settings->floats.video_scale = scale; + settings->floats.video_scale = DEFAULT_SCALE; if (g_defaults.settings.video_threaded_enable != DEFAULT_VIDEO_THREADED) video_driver_set_threaded(g_defaults.settings.video_threaded_enable); @@ -2056,7 +2056,7 @@ void config_set_defaults(void) audio_device, sizeof(settings->arrays.audio_device)); if (!g_defaults.settings.out_latency) - g_defaults.settings.out_latency = out_latency; + g_defaults.settings.out_latency = DEFAULT_OUT_LATENCY; settings->uints.audio_latency = g_defaults.settings.out_latency; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index df6fa76b1f..f11d9f49b6 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -7627,7 +7627,7 @@ static bool setting_append_list( &settings->uints.autosave_interval, MENU_ENUM_LABEL_AUTOSAVE_INTERVAL, MENU_ENUM_LABEL_VALUE_AUTOSAVE_INTERVAL, - autosave_interval, + DEFAULT_AUTOSAVE_INTERVAL, &group_info, &subgroup_info, parent_group, @@ -7703,7 +7703,7 @@ static bool setting_append_list( &settings->bools.rewind_enable, MENU_ENUM_LABEL_REWIND_ENABLE, MENU_ENUM_LABEL_VALUE_REWIND_ENABLE, - rewind_enable, + DEFAULT_REWIND_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -7719,7 +7719,7 @@ static bool setting_append_list( &settings->uints.rewind_granularity, MENU_ENUM_LABEL_REWIND_GRANULARITY, MENU_ENUM_LABEL_VALUE_REWIND_GRANULARITY, - rewind_granularity, + DEFAULT_REWIND_GRANULARITY, &group_info, &subgroup_info, parent_group, @@ -7734,7 +7734,7 @@ static bool setting_append_list( &settings->sizes.rewind_buffer_size, MENU_ENUM_LABEL_REWIND_BUFFER_SIZE, MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE, - rewind_buffer_size, + DEFAULT_REWIND_BUFFER_SIZE, &group_info, &subgroup_info, parent_group, @@ -7748,7 +7748,7 @@ static bool setting_append_list( &settings->uints.rewind_buffer_size_step, MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP, MENU_ENUM_LABEL_VALUE_REWIND_BUFFER_SIZE_STEP, - rewind_buffer_size_step, + DEFAULT_REWIND_BUFFER_SIZE_STEP, &group_info, &subgroup_info, parent_group, @@ -7774,7 +7774,7 @@ static bool setting_append_list( &settings->bools.apply_cheats_after_load, MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD, MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_LOAD, - apply_cheats_after_load, + DEFAULT_APPLY_CHEATS_AFTER_LOAD, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -7789,7 +7789,7 @@ static bool setting_append_list( &settings->bools.apply_cheats_after_toggle, MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE, MENU_ENUM_LABEL_VALUE_CHEAT_APPLY_AFTER_TOGGLE, - apply_cheats_after_toggle, + DEFAULT_APPLY_CHEATS_AFTER_TOGGLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8220,7 +8220,7 @@ static bool setting_append_list( &settings->bools.video_fps_show, MENU_ENUM_LABEL_FPS_SHOW, MENU_ENUM_LABEL_VALUE_FPS_SHOW, - fps_show, + DEFAULT_FPS_SHOW, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8235,7 +8235,7 @@ static bool setting_append_list( &settings->bools.video_memory_show, MENU_ENUM_LABEL_MEMORY_SHOW, MENU_ENUM_LABEL_VALUE_MEMORY_SHOW, - memory_show, + DEFAULT_MEMORY_SHOW, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8250,7 +8250,7 @@ static bool setting_append_list( &settings->bools.video_statistics_show, MENU_ENUM_LABEL_STATISTICS_SHOW, MENU_ENUM_LABEL_VALUE_STATISTICS_SHOW, - statistics_show, + DEFAULT_STATISTICS_SHOW, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8265,7 +8265,7 @@ static bool setting_append_list( &settings->bools.video_framecount_show, MENU_ENUM_LABEL_FRAMECOUNT_SHOW, MENU_ENUM_LABEL_VALUE_FRAMECOUNT_SHOW, - framecount_show, + DEFAULT_FRAMECOUNT_SHOW, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8290,7 +8290,7 @@ static bool setting_append_list( &settings->uints.video_monitor_index, MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX, MENU_ENUM_LABEL_VALUE_VIDEO_MONITOR_INDEX, - monitor_index, + DEFAULT_MONITOR_INDEX, &group_info, &subgroup_info, parent_group, @@ -8308,7 +8308,7 @@ static bool setting_append_list( &settings->bools.video_fullscreen, MENU_ENUM_LABEL_VIDEO_FULLSCREEN, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN, - fullscreen, + DEFAULT_FULLSCREEN, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8327,7 +8327,7 @@ static bool setting_append_list( &settings->bools.video_windowed_fullscreen, MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN, - windowed_fullscreen, + DEFAULT_WINDOWED_FULLSCREEN, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8343,7 +8343,7 @@ static bool setting_append_list( &settings->uints.video_fullscreen_x, MENU_ENUM_LABEL_VIDEO_FULLSCREEN_X, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_X, - fullscreen_x, + DEFAULT_FULLSCREEN_X, &group_info, &subgroup_info, parent_group, @@ -8358,7 +8358,7 @@ static bool setting_append_list( &settings->uints.video_fullscreen_y, MENU_ENUM_LABEL_VIDEO_FULLSCREEN_Y, MENU_ENUM_LABEL_VALUE_VIDEO_FULLSCREEN_Y, - fullscreen_y, + DEFAULT_FULLSCREEN_Y, &group_info, &subgroup_info, parent_group, @@ -8453,7 +8453,7 @@ static bool setting_append_list( &settings->uints.video_aspect_ratio_idx, MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX, MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX, - aspect_ratio_idx, + DEFAULT_ASPECT_RATIO_IDX, &group_info, &subgroup_info, parent_group, @@ -8602,7 +8602,7 @@ static bool setting_append_list( &settings->floats.video_scale, MENU_ENUM_LABEL_VIDEO_SCALE, MENU_ENUM_LABEL_VALUE_VIDEO_SCALE, - scale, + DEFAULT_SCALE, "%.1fx", &group_info, &subgroup_info, @@ -8617,7 +8617,7 @@ static bool setting_append_list( &settings->uints.window_position_width, MENU_ENUM_LABEL_VIDEO_WINDOW_WIDTH, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_WIDTH, - window_width, + DEFAULT_WINDOW_WIDTH, &group_info, &subgroup_info, parent_group, @@ -8631,7 +8631,7 @@ static bool setting_append_list( &settings->uints.window_position_height, MENU_ENUM_LABEL_VIDEO_WINDOW_HEIGHT, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_HEIGHT, - window_height, + DEFAULT_WINDOW_HEIGHT, &group_info, &subgroup_info, parent_group, @@ -8742,7 +8742,7 @@ static bool setting_append_list( &settings->bools.video_smooth, MENU_ENUM_LABEL_VIDEO_SMOOTH, MENU_ENUM_LABEL_VALUE_VIDEO_SMOOTH, - video_smooth, + DEFAULT_VIDEO_SMOOTH, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8822,7 +8822,7 @@ static bool setting_append_list( &settings->bools.video_vsync, MENU_ENUM_LABEL_VIDEO_VSYNC, MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, - vsync, + DEFAULT_VSYNC, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8838,7 +8838,7 @@ static bool setting_append_list( &settings->uints.video_swap_interval, MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL, MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL, - swap_interval, + DEFAULT_SWAP_INTERVAL, &group_info, &subgroup_info, parent_group, @@ -8861,7 +8861,7 @@ static bool setting_append_list( &settings->uints.video_max_swapchain_images, MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES, MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES, - max_swapchain_images, + DEFAULT_MAX_SWAPCHAIN_IMAGES, &group_info, &subgroup_info, parent_group, @@ -8882,7 +8882,7 @@ static bool setting_append_list( &settings->bools.video_hard_sync, MENU_ENUM_LABEL_VIDEO_HARD_SYNC, MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC, - hard_sync, + DEFAULT_HARD_SYNC, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8898,7 +8898,7 @@ static bool setting_append_list( &settings->uints.video_hard_sync_frames, MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES, MENU_ENUM_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES, - hard_sync_frames, + DEFAULT_HARD_SYNC_FRAMES, &group_info, &subgroup_info, parent_group, @@ -8919,7 +8919,7 @@ static bool setting_append_list( &settings->bools.video_adaptive_vsync, MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC, MENU_ENUM_LABEL_VALUE_VIDEO_ADAPTIVE_VSYNC, - false, + DEFAULT_ADAPTIVE_VSYNC, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8937,7 +8937,7 @@ static bool setting_append_list( &settings->uints.video_frame_delay, MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_DELAY, - frame_delay, + DEFAULT_FRAME_DELAY, &group_info, &subgroup_info, parent_group, @@ -8958,7 +8958,7 @@ static bool setting_append_list( &settings->bools.video_black_frame_insertion, MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION, MENU_ENUM_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION, - black_frame_insertion, + DEFAULT_BLACK_FRAME_INSERTION, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9103,7 +9103,7 @@ static bool setting_append_list( &settings->bools.crt_switch_custom_refresh_enable, MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, - audio_enable, + DEFAULT_AUDIO_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9222,7 +9222,7 @@ static bool setting_append_list( &settings->bools.audio_enable, MENU_ENUM_LABEL_AUDIO_ENABLE, MENU_ENUM_LABEL_VALUE_AUDIO_ENABLE, - audio_enable, + DEFAULT_AUDIO_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9270,7 +9270,7 @@ static bool setting_append_list( &settings->floats.audio_volume, MENU_ENUM_LABEL_AUDIO_VOLUME, MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME, - audio_volume, + DEFAULT_AUDIO_VOLUME, "%.1f", &group_info, &subgroup_info, @@ -9285,7 +9285,7 @@ static bool setting_append_list( &settings->floats.audio_mixer_volume, MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME, MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME, - audio_mixer_volume, + DEFAULT_AUDIO_MIXER_VOLUME, "%.1f", &group_info, &subgroup_info, @@ -9313,7 +9313,7 @@ static bool setting_append_list( &settings->bools.audio_sync, MENU_ENUM_LABEL_AUDIO_SYNC, MENU_ENUM_LABEL_VALUE_AUDIO_SYNC, - audio_sync, + DEFAULT_AUDIO_SYNC, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9331,7 +9331,7 @@ static bool setting_append_list( MENU_ENUM_LABEL_AUDIO_LATENCY, MENU_ENUM_LABEL_VALUE_AUDIO_LATENCY, g_defaults.settings.out_latency ? - g_defaults.settings.out_latency : out_latency, + g_defaults.settings.out_latency : DEFAULT_OUT_LATENCY, &group_info, &subgroup_info, parent_group, @@ -9363,7 +9363,7 @@ static bool setting_append_list( audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA, MENU_ENUM_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA, - rate_control_delta, + DEFAULT_RATE_CONTROL_DELTA, "%.3f", &group_info, &subgroup_info, @@ -9385,7 +9385,7 @@ static bool setting_append_list( &settings->floats.audio_max_timing_skew, MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW, MENU_ENUM_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW, - max_timing_skew, + DEFAULT_MAX_TIMING_SKEW, "%.2f", &group_info, &subgroup_info, @@ -9454,7 +9454,7 @@ static bool setting_append_list( &settings->uints.audio_out_rate, MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE, MENU_ENUM_LABEL_VALUE_AUDIO_OUTPUT_RATE, - out_rate, + DEFAULT_OUTPUT_RATE, &group_info, &subgroup_info, parent_group, @@ -10138,7 +10138,7 @@ static bool setting_append_list( &settings->uints.video_record_threads, MENU_ENUM_LABEL_VIDEO_RECORD_THREADS, MENU_ENUM_LABEL_VALUE_VIDEO_RECORD_THREADS, - video_record_threads, + DEFAULT_VIDEO_RECORD_THREADS, &group_info, &subgroup_info, parent_group, @@ -10255,7 +10255,7 @@ static bool setting_append_list( &settings->floats.fastforward_ratio, MENU_ENUM_LABEL_FASTFORWARD_RATIO, MENU_ENUM_LABEL_VALUE_FASTFORWARD_RATIO, - fastforward_ratio, + DEFAULT_FASTFORWARD_RATIO, "%.1fx", &group_info, &subgroup_info, @@ -10287,7 +10287,7 @@ static bool setting_append_list( &settings->floats.slowmotion_ratio, MENU_ENUM_LABEL_SLOWMOTION_RATIO, MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO, - slowmotion_ratio, + DEFAULT_SLOWMOTION_RATIO, "%.1fx", &group_info, &subgroup_info, @@ -10446,7 +10446,7 @@ static bool setting_append_list( &settings->floats.video_font_size, MENU_ENUM_LABEL_VIDEO_FONT_SIZE, MENU_ENUM_LABEL_VALUE_VIDEO_FONT_SIZE, - font_size, + DEFAULT_FONT_SIZE, "%.1f", &group_info, &subgroup_info, @@ -10917,7 +10917,7 @@ static bool setting_append_list( &settings->bools.menu_mouse_enable, MENU_ENUM_LABEL_MOUSE_ENABLE, MENU_ENUM_LABEL_VALUE_MOUSE_ENABLE, - def_mouse_enable, + DEFAULT_MOUSE_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -11997,7 +11997,7 @@ static bool setting_append_list( &settings->bools.menu_materialui_icons_enable, MENU_ENUM_LABEL_MATERIALUI_ICONS_ENABLE, MENU_ENUM_LABEL_VALUE_MATERIALUI_ICONS_ENABLE, - materialui_icons_enable, + DEFAULT_MATERIALUI_ICONS_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -12474,7 +12474,7 @@ static bool setting_append_list( &settings->bools.pause_nonactive, MENU_ENUM_LABEL_PAUSE_NONACTIVE, MENU_ENUM_LABEL_VALUE_PAUSE_NONACTIVE, - pause_nonactive, + DEFAULT_PAUSE_NONACTIVE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -12491,7 +12491,7 @@ static bool setting_append_list( &settings->bools.video_disable_composition, MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION, MENU_ENUM_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION, - disable_composition, + DEFAULT_DISABLE_COMPOSITION, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -13128,7 +13128,7 @@ static bool setting_append_list( &settings->bools.cheevos_enable, MENU_ENUM_LABEL_CHEEVOS_ENABLE, MENU_ENUM_LABEL_VALUE_CHEEVOS_ENABLE, - cheevos_enable, + DEFAULT_CHEEVOS_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, diff --git a/retroarch.c b/retroarch.c index 7cc81635cb..882e1ebcbb 100644 --- a/retroarch.c +++ b/retroarch.c @@ -4606,41 +4606,41 @@ int runloop_iterate(unsigned *sleep_ms) autosave_unlock(); /* Condition for max speed x0.0 when vrr_runloop is off to skip that part */ - if (fastforward_ratio || vrr_runloop_enable) - end: - { - retro_time_t to_sleep_ms; + if (!(fastforward_ratio || vrr_runloop_enable)) + return 0; - if (vrr_runloop_enable) - { - struct retro_system_av_info *av_info = +end: + if (vrr_runloop_enable) + { + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); - /* Sync on video only, block audio later. */ - if (fastforward_after_frames && settings->bools.audio_sync) + /* Sync on video only, block audio later. */ + if (fastforward_after_frames && settings->bools.audio_sync) + { + if (fastforward_after_frames == 1) + command_event(CMD_EVENT_AUDIO_SET_NONBLOCKING_STATE, NULL); + + fastforward_after_frames++; + + if (fastforward_after_frames == 6) { - if (fastforward_after_frames == 1) - command_event(CMD_EVENT_AUDIO_SET_NONBLOCKING_STATE, NULL); - - fastforward_after_frames++; - - if (fastforward_after_frames == 6) - { - command_event(CMD_EVENT_AUDIO_SET_BLOCKING_STATE, NULL); - fastforward_after_frames = 0; - } + command_event(CMD_EVENT_AUDIO_SET_BLOCKING_STATE, NULL); + fastforward_after_frames = 0; } - - /* Fast Forward for max speed x0.0 */ - if (!fastforward_ratio && runloop_fastmotion) - return 0; - - frame_limit_minimum_time = - (retro_time_t)roundf(1000000.0f / (av_info->timing.fps * - (runloop_fastmotion ? fastforward_ratio : 1.0f))); } - to_sleep_ms = ( + /* Fast Forward for max speed x0.0 */ + if (!fastforward_ratio && runloop_fastmotion) + return 0; + + frame_limit_minimum_time = + (retro_time_t)roundf(1000000.0f / (av_info->timing.fps * + (runloop_fastmotion ? fastforward_ratio : 1.0f))); + } + + { + retro_time_t to_sleep_ms = ( (frame_limit_last_time + frame_limit_minimum_time) - cpu_features_get_time_usec()) / 1000; @@ -4651,10 +4651,10 @@ int runloop_iterate(unsigned *sleep_ms) frame_limit_last_time += frame_limit_minimum_time; return 1; } - - frame_limit_last_time = cpu_features_get_time_usec(); } + frame_limit_last_time = cpu_features_get_time_usec(); + return 0; } From 04c184252d5a8f49c4a7fae43c3edc04c703b10c Mon Sep 17 00:00:00 2001 From: orbea Date: Wed, 15 May 2019 21:13:57 -0700 Subject: [PATCH 10/31] qb: Improve X11 checks. --- qb/config.libs.sh | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 8cd062d392..b13af7c5ee 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -425,18 +425,36 @@ else HAVE_OPENGLES=no fi +check_pkgconf DBUS dbus-1 +check_val '' UDEV "-ludev" '' libudev '' '' false check_val '' V4L2 -lv4l2 '' libv4l2 '' '' false check_val '' FREETYPE -lfreetype freetype2 freetype2 '' '' false check_val '' X11 -lX11 '' x11 '' '' false check_val '' XCB -lxcb '' xcb '' '' false + +if [ "$HAVE_X11" != 'no' ]; then + check_val '' XEXT -lXext '' xext '' '' false + check_val '' XF86VM -lXxf86vm '' xxf86vm '' '' false +else + die : 'Notice: X11 not present. Skipping X11 code paths.' +fi + +check_enabled X11 XINERAMA Xinerama 'X11 is' false +check_enabled X11 XSHM XShm 'X11 is' false +check_enabled X11 XRANDR Xrandr 'X11 is' false +check_enabled X11 XVIDEO XVideo 'X11 is' false +check_enabled XEXT XVIDEO XVideo 'Xext is' false +check_enabled XF86VM XVIDEO XVideo 'XF86vm is' false + +check_val '' XVIDEO -lXv '' xv '' '' false +check_val '' XINERAMA -lXinerama '' xinerama '' '' false +check_lib '' XRANDR -lXrandr +check_header XSHM X11/Xlib.h X11/extensions/XShm.h +check_val '' XKBCOMMON -lxkbcommon '' xkbcommon 0.3.2 '' false check_val '' WAYLAND '-lwayland-egl -lwayland-client' '' wayland-egl 10.1.0 '' false check_val '' WAYLAND_CURSOR -lwayland-cursor '' wayland-cursor 1.12 '' false check_pkgconf WAYLAND_PROTOS wayland-protocols 1.15 check_pkgconf WAYLAND_SCANNER wayland-scanner '1.15 1.12' -check_val '' XKBCOMMON -lxkbcommon '' xkbcommon 0.3.2 '' false -check_pkgconf DBUS dbus-1 -check_val '' XEXT -lXext '' xext '' '' false -check_val '' XF86VM -lXxf86vm '' xxf86vm '' '' false if [ "$HAVE_WAYLAND_SCANNER" = yes ] && [ "$HAVE_WAYLAND_CURSOR" = yes ] && @@ -451,24 +469,6 @@ else HAVE_WAYLAND='no' fi -if [ "$HAVE_X11" = 'no' ]; then - HAVE_XEXT=no; HAVE_XF86VM=no; HAVE_XINERAMA=no; HAVE_XSHM=no; HAVE_XRANDR=no -fi - -check_lib '' XRANDR -lXrandr -check_val '' XINERAMA -lXinerama '' xinerama '' '' false - -if [ "$HAVE_X11" = 'yes' ] && [ "$HAVE_XEXT" = 'yes' ] && [ "$HAVE_XF86VM" = 'yes' ]; then - check_val '' XVIDEO -lXv '' xv '' '' false -else - die : 'Notice: X11, Xext or xf86vm not present. Skipping X11 code paths.' - HAVE_X11='no' - HAVE_XVIDEO='no' -fi - -check_val '' UDEV "-ludev" '' libudev '' '' false - -check_header XSHM X11/Xlib.h X11/extensions/XShm.h check_header PARPORT linux/parport.h check_header PARPORT linux/ppdev.h From 8922e96869d3d384ba05869cf0906746150e1062 Mon Sep 17 00:00:00 2001 From: orbea Date: Mon, 13 May 2019 20:11:52 -0700 Subject: [PATCH 11/31] qb: Add check_platform. This allows enabling and disabling features for platforms more robustly. Fixes https://github.com/libretro/RetroArch/issues/8777 v2: Fix D3D configure checks. v3: Cleanup. v4: Update Makefile.msvc and Makefile.win --- Makefile.common | 24 +++++++++++++++--------- Makefile.msvc | 14 ++++++++++++++ Makefile.win | 14 ++++++++++++++ qb/config.libs.sh | 31 ++++++++++++++++++------------- qb/config.params.sh | 5 +++-- qb/qb.libs.sh | 28 ++++++++++++++++++++++++++++ qb/qb.params.sh | 3 ++- 7 files changed, 94 insertions(+), 25 deletions(-) diff --git a/Makefile.common b/Makefile.common index dd25df71ec..786682b785 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1342,15 +1342,14 @@ endif ifeq ($(HAVE_D3D9), 1) HAVE_D3D_COMMON = 1 - HAVE_D3DX = 1 DEFINES += -DHAVE_D3D9 - ifeq ($(HAVE_D3DX), 1) - DEFINES += -DHAVE_D3DX + ifeq ($(HAVE_D3DX9), 1) + HAVE_D3DX_COMMON = 1 endif ifneq ($(HAVE_DYLIB), 1) - LIBS += -ld3d9 - ifeq ($(HAVE_D3DX), 1) - LIBS += -ld3dx9 + LIBS += $(D3D9_LIBS) + ifeq ($(HAVE_D3DX9), 1) + LIBS += $(D3DX9_LIBS) endif endif HAVE_DX_COMMON = 1 @@ -1412,14 +1411,21 @@ ifeq ($(HAVE_D3D8), 1) HAVE_D3D_COMMON = 1 HAVE_DX_COMMON = 1 DEFINES += -DHAVE_D3D8 + ifeq ($(HAVE_D3DX8), 1) + HAVE_D3DX_COMMON = 1 + endif ifneq ($(HAVE_DYLIB), 1) - LIBS += -ld3d8 - ifeq ($(HAVE_D3DX), 1) - LIBS += -ld3dx8 + LIBS += $(D3D8_LIBS) + ifeq ($(HAVE_D3DX8), 1) + LIBS += $(D3DX8_LIBS) endif endif endif +ifeq ($(HAVE_D3DX_COMMON), 1) + DEFINES += -DHAVE_D3DX +endif + ifeq ($(HAVE_DX_COMMON), 1) LIBS += -ldxguid endif diff --git a/Makefile.msvc b/Makefile.msvc index 5eee104a72..90b87b9501 100644 --- a/Makefile.msvc +++ b/Makefile.msvc @@ -60,6 +60,20 @@ HAVE_CHEEVOS := 1 HAVE_SHADERPIPELINE := 1 HAVE_IMAGEVIEWER := 1 +ifeq ($(HAVE_D3D8), 1) + D3D8_LIBS := -ld3d8 + ifeq ($(HAVE_D3DX), 1) + D3DX8_LIBS := -ld3dx8 + endif +endif + +ifeq ($(HAVE_D3D9), 1) + D3D9_LIBS := -ld3d9 + ifeq ($(HAVE_D3DX), 1) + D3DX9_LIBS := -ld3dx9 + endif +endif + include Makefile.common INCLUDE_DIRS := $(patsubst -isystem%,-I%,$(INCLUDE_DIRS)) CFLAGS := $(filter-out -Wno-unknown-pragmas,$(DEF_FLAGS)) diff --git a/Makefile.win b/Makefile.win index 4f54d13426..d9e70bbc95 100644 --- a/Makefile.win +++ b/Makefile.win @@ -56,6 +56,20 @@ SDL2_LIBS := -lSDL2 SDL2_CFLAGS := -ISDL2 -DHAVE_SDL2 endif +ifeq ($(HAVE_D3D8), 1) +D3D8_LIBS := -ld3d8 +ifeq ($(HAVE_D3DX), 1) +D3DX8_LIBS := -ld3dx8 +endif +endif + +ifeq ($(HAVE_D3D9), 1) +D3D9_LIBS := -ld3d9 +ifeq ($(HAVE_D3DX), 1) +D3DX9_LIBS := -ld3dx9 +endif +endif + ifeq ($(HAVE_RSOUND), 1) RSOUND_CFLAGS := -DHAVE_RSOUND RSOUND_LIBS := -lrsound diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 8cd062d392..44e3a2152c 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -128,10 +128,8 @@ add_define MAKEFILE BIN_DIR "${BIN_DIR:-${PREFIX}/bin}" add_define MAKEFILE DOC_DIR "${DOC_DIR:-${SHARE_DIR}/doc/retroarch}" add_define MAKEFILE MAN_DIR "${MAN_DIR:-${SHARE_DIR}/man}" -if [ "$OS" = 'DOS' ]; then - HAVE_SHADERPIPELINE=no - HAVE_LANGEXTRA=no -fi +check_platform DOS SHADERPIPELINE 'Shader-based pipelines are' false +check_platform DOS LANGEXTRA 'Extra languages are' false check_lib '' THREADS "$PTHREADLIB" pthread_create check_enabled THREADS THREAD_STORAGE 'Thread Local Storage' 'Threads are' false @@ -203,10 +201,8 @@ if [ "$HAVE_OSS" != 'no' ]; then check_lib '' OSS_LIB -lossaudio fi -if [ "$OS" = 'Linux' ]; then - HAVE_TINYALSA=yes - HAVE_RPILED=yes -fi +check_platform Linux TINYALSA 'Tinyalsa is' true +check_platform Linux RPILED 'The RPI led driver is' true if [ "$OS" = 'Darwin' ]; then check_lib '' COREAUDIO "-framework AudioUnit" AudioUnitInitialize @@ -234,6 +230,7 @@ if [ "$HAVE_SDL2" = 'yes' ] && [ "$HAVE_SDL" = 'yes' ]; then HAVE_SDL=no fi +check_platform Haiku DISCORD 'Discord is' false check_enabled CXX DISCORD discord 'The C++ compiler is' false check_enabled CXX QT 'Qt companion' 'The C++ compiler is' false @@ -303,9 +300,15 @@ check_val '' LIBUSB -lusb-1.0 libusb-1.0 libusb-1.0 1.0.13 '' false if [ "$OS" = 'Win32' ]; then check_lib '' DINPUT -ldinput8 + check_lib '' D3D8 -ld3d8 check_lib '' D3D9 -ld3d9 check_lib '' DSOUND -ldsound + if [ "$HAVE_D3DX" != 'no' ]; then + check_lib '' D3DX8 -ld3dx8 + check_lib '' D3DX9 -ld3dx9 + fi + if [ "$HAVE_DINPUT" != 'no' ]; then HAVE_XINPUT=yes fi @@ -313,13 +316,15 @@ if [ "$OS" = 'Win32' ]; then HAVE_WASAPI=yes HAVE_XAUDIO=yes HAVE_WINMM=yes -else - HAVE_D3D9=no - HAVE_D3D10=no - HAVE_D3D11=no - HAVE_D3D12=no fi +check_platform Win32 D3D8 'Direct3D 8 is' true +check_platform Win32 D3D9 'Direct3D 9 is' true +check_platform Win32 D3D10 'Direct3D 10 is' true +check_platform Win32 D3D11 'Direct3D 11 is' true +check_platform Win32 D3D12 'Direct3D 12 is' true +check_platform Win32 D3DX 'Direct3DX is' true + if [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_OPENGLES" != 'yes' ]; then if [ "$OS" = 'Darwin' ]; then check_header OPENGL "OpenGL/gl.h" diff --git a/qb/config.params.sh b/qb/config.params.sh index 3e1bf0ad52..2dbe45230a 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -48,7 +48,7 @@ HAVE_MINIUPNPC=auto # Mini UPnP client library (for NAT traversal) HAVE_BUILTINMINIUPNPC=yes # Bake in Mini UPnP client library (for NAT traversal) C89_BUILTINMINIUPNPC=no HAVE_D3D8=no # Direct3D 8 support -HAVE_D3D9=yes # Direct3D 9 support +HAVE_D3D9=auto # Direct3D 9 support C89_D3D9=no HAVE_D3D10=yes # Direct3D 10 support C89_D3D10=no @@ -56,7 +56,7 @@ HAVE_D3D11=yes # Direct3D 11 support C89_D3D11=no HAVE_D3D12=yes # Direct3D 12 support C89_D3D12=no -HAVE_D3DX=yes # Direct3DX support +HAVE_D3DX=auto # Direct3DX support HAVE_OPENGL=auto # OpenGL 2.0 support HAVE_OPENGL_CORE=yes # Modern OpenGL driver support (GLES3+/GL3.2 core+), requires OpenGL. C89_OPENGL_CORE=no @@ -86,6 +86,7 @@ HAVE_BUILTINZLIB=yes # Bake in zlib HAVE_ZLIB=auto # zlib support (ZIP extract, PNG decoding/encoding) HAVE_ALSA=auto # ALSA support C89_ALSA=no +HAVE_RPILED=auto # RPI led support HAVE_TINYALSA=auto # TinyALSA support HAVE_AUDIOIO=auto # AudioIO support HAVE_OSS=auto # OSS support diff --git a/qb/qb.libs.sh b/qb/qb.libs.sh index 30902f99b9..9e56ef5feb 100644 --- a/qb/qb.libs.sh +++ b/qb/qb.libs.sh @@ -79,6 +79,34 @@ check_enabled() die 1 "Error: $4 disabled and forced to build with $3 support." } +# check_platform: +# $1 = OS +# $2 = HAVE_$2 +# $3 = feature +# $4 = enable feature when true [checked only if non-empty] +check_platform() +{ tmpval="$(eval "printf %s \"\$HAVE_$2\"")" + [ "$tmpval" = 'no' ] && return 0 + + setval="$(eval "printf %s \"\$USER_$2\"")" + + if [ "$setval" = 'yes' ]; then + if { [ "$1" != "$OS" ] && [ "${4:-}" = 'true' ]; } || + { [ "$1" = "$OS" ] && + [ "${4:-}" != 'true' ]; }; then + die 1 "Error: $3 not supported for $OS." + fi + elif [ "$1" = "$OS" ]; then + if [ "${4:-}" = 'true' ]; then + eval "HAVE_$2=yes" + else + eval "HAVE_$2=no" + fi + elif [ "${4:-}" = 'true' ]; then + eval "HAVE_$2=" + fi +} + # check_lib: # Compiles a simple test program to check if a library is available. # $1 = language diff --git a/qb/qb.params.sh b/qb/qb.params.sh index e280400c07..a7bd357cab 100644 --- a/qb/qb.params.sh +++ b/qb/qb.params.sh @@ -72,7 +72,7 @@ parse_input() # Parse stuff :V TMPVAR="${VAR%=*}" NEWVAR="${TMPVAR##HAVE_}" OPTS="$OPTS $NEWVAR" - eval "USER_$NEWVAR=no" + eval "USER_$NEWVAR=auto" done < 'qb/config.params.sh' #OPTS contains all available options in config.params.sh - used to speedup #things in opt_exists() @@ -95,6 +95,7 @@ parse_input() # Parse stuff :V --disable-*) opt_exists "${1##--disable-}" "$1" eval "HAVE_$opt=no" + eval "USER_$opt=no" eval "HAVE_NO_$opt=yes" ;; --with-*) From f5106afc0f1a639b86002435ce821d56120c28e8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 2 Jun 2019 18:09:33 +0200 Subject: [PATCH 12/31] (config.def.h) Turn more const variables into macros --- config.def.h | 20 ++++++++++---------- configuration.c | 14 +++++++------- menu/menu_setting.c | 14 +++++++------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/config.def.h b/config.def.h index 6413a88bb3..09e7369d4e 100644 --- a/config.def.h +++ b/config.def.h @@ -136,10 +136,10 @@ static const unsigned int def_user_language = 0; /* Amount of transparency to use for the main window. * 1 is the most transparent while 100 is opaque. */ -static const unsigned window_opacity = 100; +#define DEFAULT_WINDOW_OPACITY 100 /* Whether to show the usual window decorations like border, titlebar etc. */ -static const bool window_decorations = true; +#define DEFAULT_WINDOW_DECORATIONS true #if defined(RARCH_CONSOLE) || defined(__APPLE__) static const bool load_dummy_on_core_shutdown = false; @@ -199,16 +199,16 @@ static const bool check_firmware_before_loading = false; #if defined(HAVE_THREADS) #if defined(GEKKO) || defined(PSP) || defined(PS2) /* For single-core consoles right now it's best to have this be disabled. */ -static const bool threaded_data_runloop_enable = false; +#define DEFAULT_THREADED_DATA_RUNLOOP_ENABLE false #else -static const bool threaded_data_runloop_enable = true; +#define DEFAULT_THREADED_DATA_RUNLOOP_ENABLE true #endif #else -static const bool threaded_data_runloop_enable = false; +#define DEFAULT_THREADED_DATA_RUNLOOP_ENABLE false #endif /* Set to true if HW render cores should get their private context. */ -static const bool video_shared_context = false; +#define DEFAULT_VIDEO_SHARED_CONTEXT false /* Sets GC/Wii screen width. */ static const unsigned video_viwidth = 640; @@ -226,16 +226,16 @@ static const bool video_vfilter = true; /* Enable use of shaders. */ #ifdef RARCH_CONSOLE -static const bool shader_enable = true; +#define DEFAULT_SHADER_ENABLE true #else -static const bool shader_enable = false; +#define DEFAULT_SHADER_ENABLE false #endif /* Only scale in integer steps. * The base size depends on system-reported geometry and aspect ratio. * If video_force_aspect is not set, X/Y will be integer scaled independently. */ -static const bool scale_integer = false; +#define DEFAULT_SCALE_INTEGER false /* Controls aspect ratio handling. */ @@ -453,7 +453,7 @@ static bool default_log_to_file = false; static bool log_to_file_timestamp = false; /* Crop overscanned frames. */ -static const bool crop_overscan = true; +#define DEFAULT_CROP_OVERSCAN true /* Font size for on-screen messages. */ #if defined(HAVE_LIBDBGFONT) diff --git a/configuration.c b/configuration.c index be383f6669..b44580dcc7 100644 --- a/configuration.c +++ b/configuration.c @@ -1402,7 +1402,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, false, false); SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, false, false); SETTING_BOOL("audio_sync", &settings->bools.audio_sync, true, DEFAULT_AUDIO_SYNC, false); - SETTING_BOOL("video_shader_enable", &settings->bools.video_shader_enable, true, shader_enable, false); + SETTING_BOOL("video_shader_enable", &settings->bools.video_shader_enable, true, DEFAULT_SHADER_ENABLE, false); SETTING_BOOL("video_shader_watch_files", &settings->bools.video_shader_watch_files, true, video_shader_watch_files, false); /* Let implementation decide if automatic, or 1:1 PAR. */ @@ -1410,12 +1410,12 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("video_allow_rotate", &settings->bools.video_allow_rotate, true, allow_rotate, false); SETTING_BOOL("video_windowed_fullscreen", &settings->bools.video_windowed_fullscreen, true, DEFAULT_WINDOWED_FULLSCREEN, false); - SETTING_BOOL("video_crop_overscan", &settings->bools.video_crop_overscan, true, crop_overscan, false); - SETTING_BOOL("video_scale_integer", &settings->bools.video_scale_integer, true, scale_integer, false); + SETTING_BOOL("video_crop_overscan", &settings->bools.video_crop_overscan, true, DEFAULT_CROP_OVERSCAN, false); + SETTING_BOOL("video_scale_integer", &settings->bools.video_scale_integer, true, DEFAULT_SCALE_INTEGER, false); SETTING_BOOL("video_smooth", &settings->bools.video_smooth, true, DEFAULT_VIDEO_SMOOTH, false); SETTING_BOOL("video_force_aspect", &settings->bools.video_force_aspect, true, DEFAULT_FORCE_ASPECT, false); SETTING_BOOL("video_threaded", video_driver_get_threaded(), true, DEFAULT_VIDEO_THREADED, false); - SETTING_BOOL("video_shared_context", &settings->bools.video_shared_context, true, video_shared_context, false); + SETTING_BOOL("video_shared_context", &settings->bools.video_shared_context, true, DEFAULT_VIDEO_SHARED_CONTEXT, false); SETTING_BOOL("auto_screenshot_filename", &settings->bools.auto_screenshot_filename, true, auto_screenshot_filename, false); SETTING_BOOL("video_force_srgb_disable", &settings->bools.video_force_srgb_disable, true, false, false); SETTING_BOOL("video_fullscreen", &settings->bools.video_fullscreen, true, DEFAULT_FULLSCREEN, false); @@ -1455,7 +1455,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("video_vfilter", &settings->bools.video_vfilter, true, video_vfilter, false); #endif #ifdef HAVE_THREADS - SETTING_BOOL("threaded_data_runloop_enable", &settings->bools.threaded_data_runloop_enable, true, threaded_data_runloop_enable, false); + SETTING_BOOL("threaded_data_runloop_enable", &settings->bools.threaded_data_runloop_enable, true, DEFAULT_THREADED_DATA_RUNLOOP_ENABLE, false); #endif #ifdef HAVE_MENU SETTING_BOOL("menu_unified_controls", &settings->bools.menu_unified_controls, true, false, false); @@ -1613,7 +1613,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("screenshots_in_content_dir", &settings->bools.screenshots_in_content_dir, true, default_screenshots_in_content_dir, false); SETTING_BOOL("video_msg_bgcolor_enable", &settings->bools.video_msg_bgcolor_enable, true, message_bgcolor_enable, false); - SETTING_BOOL("video_window_show_decorations", &settings->bools.video_window_show_decorations, true, window_decorations, false); + SETTING_BOOL("video_window_show_decorations", &settings->bools.video_window_show_decorations, true, DEFAULT_WINDOW_DECORATIONS, false); SETTING_BOOL("video_window_save_positions", &settings->bools.video_window_save_positions, true, false, false); SETTING_BOOL("sustained_performance_mode", &settings->bools.sustained_performance_mode, true, sustained_performance_mode, false); @@ -1722,7 +1722,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("video_monitor_index", &settings->uints.video_monitor_index, true, DEFAULT_MONITOR_INDEX, false); SETTING_UINT("video_fullscreen_x", &settings->uints.video_fullscreen_x, true, DEFAULT_FULLSCREEN_X, false); SETTING_UINT("video_fullscreen_y", &settings->uints.video_fullscreen_y, true, DEFAULT_FULLSCREEN_Y, false); - SETTING_UINT("video_window_opacity", &settings->uints.video_window_opacity, true, window_opacity, false); + SETTING_UINT("video_window_opacity", &settings->uints.video_window_opacity, true, DEFAULT_WINDOW_OPACITY, false); #ifdef HAVE_VIDEO_LAYOUT SETTING_UINT("video_layout_selected_view", &settings->uints.video_layout_selected_view, true, 0, false); #endif diff --git a/menu/menu_setting.c b/menu/menu_setting.c index f11d9f49b6..abc469b894 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -7293,7 +7293,7 @@ static bool setting_append_list( bool_entries[0].target = &settings->bools.video_shared_context; bool_entries[0].name_enum_idx = MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT; bool_entries[0].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_VIDEO_SHARED_CONTEXT; - bool_entries[0].default_value = video_shared_context; + bool_entries[0].default_value = DEFAULT_VIDEO_SHARED_CONTEXT; bool_entries[0].flags = SD_FLAG_ADVANCED; bool_entries[1].target = &settings->bools.load_dummy_on_core_shutdown; @@ -7413,7 +7413,7 @@ static bool setting_append_list( &settings->bools.video_shader_enable, MENU_ENUM_LABEL_VIDEO_SHADERS_ENABLE, MENU_ENUM_LABEL_VALUE_VIDEO_SHADERS_ENABLE, - shader_enable, + DEFAULT_SHADER_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8645,7 +8645,7 @@ static bool setting_append_list( &settings->uints.video_window_opacity, MENU_ENUM_LABEL_VIDEO_WINDOW_OPACITY, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OPACITY, - window_opacity, + DEFAULT_WINDOW_OPACITY, &group_info, &subgroup_info, parent_group, @@ -8662,7 +8662,7 @@ static bool setting_append_list( &settings->bools.video_window_show_decorations, MENU_ENUM_LABEL_VIDEO_WINDOW_SHOW_DECORATIONS, MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SHOW_DECORATIONS, - window_decorations, + DEFAULT_WINDOW_DECORATIONS, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8693,7 +8693,7 @@ static bool setting_append_list( &settings->bools.video_scale_integer, MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER, MENU_ENUM_LABEL_VALUE_VIDEO_SCALE_INTEGER, - scale_integer, + DEFAULT_SCALE_INTEGER, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -9003,7 +9003,7 @@ static bool setting_append_list( &settings->bools.video_crop_overscan, MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN, MENU_ENUM_LABEL_VALUE_VIDEO_CROP_OVERSCAN, - crop_overscan, + DEFAULT_CROP_OVERSCAN, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -11364,7 +11364,7 @@ static bool setting_append_list( &settings->bools.threaded_data_runloop_enable, MENU_ENUM_LABEL_THREADED_DATA_RUNLOOP_ENABLE, MENU_ENUM_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE, - threaded_data_runloop_enable, + DEFAULT_THREADED_DATA_RUNLOOP_ENABLE, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, From 7ea2034922bf8307e8dee1bb9855edb4c96b4405 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 2 Jun 2019 21:02:59 +0200 Subject: [PATCH 13/31] Cleanups --- config.def.h | 26 +++++++++++++------------- configuration.c | 18 +++++++++--------- menu/menu_setting.c | 12 ++++++------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/config.def.h b/config.def.h index 09e7369d4e..116a1df95c 100644 --- a/config.def.h +++ b/config.def.h @@ -142,11 +142,11 @@ static const unsigned int def_user_language = 0; #define DEFAULT_WINDOW_DECORATIONS true #if defined(RARCH_CONSOLE) || defined(__APPLE__) -static const bool load_dummy_on_core_shutdown = false; +#define DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN false #else -static const bool load_dummy_on_core_shutdown = true; +#define DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN true #endif -static const bool check_firmware_before_loading = false; +#define DEFAULT_CHECK_FIRMWARE_BEFORE_LOADING false /* Forcibly disable composition. * Only valid on Windows Vista/7/8 for now. */ @@ -211,11 +211,11 @@ static const bool check_firmware_before_loading = false; #define DEFAULT_VIDEO_SHARED_CONTEXT false /* Sets GC/Wii screen width. */ -static const unsigned video_viwidth = 640; +#define DEFAULT_VIDEO_VI_WIDTH 640 #ifdef GEKKO /* Removes 480i flicker, smooths picture a little. */ -static const bool video_vfilter = true; +#define DEFAULT_VIDEO_VFILTER true #endif /* Smooths picture. */ @@ -258,25 +258,25 @@ static const bool video_vfilter = true; #endif /* Save configuration file on exit. */ -static bool config_save_on_exit = true; +#define DEFAULT_CONFIG_SAVE_ON_EXIT true -static bool show_hidden_files = false; +#define DEFAULT_SHOW_HIDDEN_FILES false -static const bool overlay_hide_in_menu = true; +#define DEFAULT_OVERLAY_HIDE_IN_MENU true -static const bool display_keyboard_overlay = false; +#define DEFAULT_DISPLAY_KEYBOARD_OVERLAY false #ifdef HAKCHI -static const float default_input_overlay_opacity = 0.5f; +#define DEFAULT_INPUT_OVERLAY_OPACITY 0.5f #else -static const float default_input_overlay_opacity = 0.7f; +#define DEFAULT_INPUT_OVERLAY_OPACITY 0.7f #endif #ifdef HAVE_MENU #include "menu/menu_driver.h" #include "menu/menu_animation.h" -static bool default_block_config_read = true; +#define DEFAULT_BLOCK_CONFIG_READ true #ifdef HAVE_LIBNX static bool menu_use_preferred_system_color_theme = true; @@ -688,7 +688,7 @@ static const unsigned netplay_share_analog = RARCH_NETPLAY_SHARE_ANALOG_NO_PREFE /* On save state load, block SRAM from being overwritten. * This could potentially lead to buggy games. */ -static const bool block_sram_overwrite = false; +#define DEFAULT_BLOCK_SRAM_OVERWRITE false /* When saving savestates, state index is automatically * incremented before saving. diff --git a/configuration.c b/configuration.c index b44580dcc7..28a57ba5bb 100644 --- a/configuration.c +++ b/configuration.c @@ -1384,8 +1384,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, #endif SETTING_BOOL("input_descriptor_label_show", &settings->bools.input_descriptor_label_show, true, input_descriptor_label_show, false); SETTING_BOOL("input_descriptor_hide_unbound", &settings->bools.input_descriptor_hide_unbound, true, input_descriptor_hide_unbound, false); - SETTING_BOOL("load_dummy_on_core_shutdown", &settings->bools.load_dummy_on_core_shutdown, true, load_dummy_on_core_shutdown, false); - SETTING_BOOL("check_firmware_before_loading", &settings->bools.check_firmware_before_loading, true, check_firmware_before_loading, false); + SETTING_BOOL("load_dummy_on_core_shutdown", &settings->bools.load_dummy_on_core_shutdown, true, DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN, false); + SETTING_BOOL("check_firmware_before_loading", &settings->bools.check_firmware_before_loading, true, DEFAULT_CHECK_FIRMWARE_BEFORE_LOADING, false); SETTING_BOOL("builtin_mediaplayer_enable", &settings->bools.multimedia_builtin_mediaplayer_enable, false, false /* TODO */, false); SETTING_BOOL("builtin_imageviewer_enable", &settings->bools.multimedia_builtin_imageviewer_enable, true, true, false); SETTING_BOOL("fps_show", &settings->bools.video_fps_show, true, DEFAULT_FPS_SHOW, false); @@ -1452,7 +1452,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("small_keyboard_enable", &settings->bools.input_small_keyboard_enable, true, false, false); #endif #ifdef GEKKO - SETTING_BOOL("video_vfilter", &settings->bools.video_vfilter, true, video_vfilter, false); + SETTING_BOOL("video_vfilter", &settings->bools.video_vfilter, true, DEFAULT_VIDEO_VFILTER, false); #endif #ifdef HAVE_THREADS SETTING_BOOL("threaded_data_runloop_enable", &settings->bools.threaded_data_runloop_enable, true, DEFAULT_THREADED_DATA_RUNLOOP_ENABLE, false); @@ -1568,7 +1568,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("input_overlay_enable", &settings->bools.input_overlay_enable, true, config_overlay_enable_default(), false); SETTING_BOOL("input_overlay_enable_autopreferred", &settings->bools.input_overlay_enable_autopreferred, true, true, false); SETTING_BOOL("input_overlay_show_physical_inputs", &settings->bools.input_overlay_show_physical_inputs, true, false, false); - SETTING_BOOL("input_overlay_hide_in_menu", &settings->bools.input_overlay_hide_in_menu, true, overlay_hide_in_menu, false); + SETTING_BOOL("input_overlay_hide_in_menu", &settings->bools.input_overlay_hide_in_menu, true, DEFAULT_OVERLAY_HIDE_IN_MENU, false); #endif #ifdef HAVE_VIDEO_LAYOUT SETTING_BOOL("video_layout_enable", &settings->bools.video_layout_enable, true, true, false); @@ -1583,7 +1583,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, #ifdef HAVE_NETWORKING SETTING_BOOL("netplay_nat_traversal", &settings->bools.netplay_nat_traversal, true, true, false); #endif - SETTING_BOOL("block_sram_overwrite", &settings->bools.block_sram_overwrite, true, block_sram_overwrite, false); + SETTING_BOOL("block_sram_overwrite", &settings->bools.block_sram_overwrite, true, DEFAULT_BLOCK_SRAM_OVERWRITE, false); SETTING_BOOL("savestate_auto_index", &settings->bools.savestate_auto_index, true, savestate_auto_index, false); SETTING_BOOL("savestate_auto_save", &settings->bools.savestate_auto_save, true, savestate_auto_save, false); SETTING_BOOL("savestate_auto_load", &settings->bools.savestate_auto_load, true, savestate_auto_load, false); @@ -1598,8 +1598,8 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("scan_without_core_match", &settings->bools.scan_without_core_match, true, scan_without_core_match, false); SETTING_BOOL("sort_savefiles_enable", &settings->bools.sort_savefiles_enable, true, default_sort_savefiles_enable, false); SETTING_BOOL("sort_savestates_enable", &settings->bools.sort_savestates_enable, true, default_sort_savestates_enable, false); - SETTING_BOOL("config_save_on_exit", &settings->bools.config_save_on_exit, true, config_save_on_exit, false); - SETTING_BOOL("show_hidden_files", &settings->bools.show_hidden_files, true, show_hidden_files, false); + SETTING_BOOL("config_save_on_exit", &settings->bools.config_save_on_exit, true, DEFAULT_CONFIG_SAVE_ON_EXIT, false); + SETTING_BOOL("show_hidden_files", &settings->bools.show_hidden_files, true, DEFAULT_SHOW_HIDDEN_FILES, false); SETTING_BOOL("input_autodetect_enable", &settings->bools.input_autodetect_enable, true, input_autodetect_enable, false); SETTING_BOOL("audio_rate_control", &settings->bools.audio_rate_control, true, DEFAULT_RATE_CONTROL, false); #ifdef HAVE_WASAPI @@ -1664,7 +1664,7 @@ static struct config_float_setting *populate_settings_float(settings_t *settings SETTING_FLOAT("audio_volume", &settings->floats.audio_volume, true, DEFAULT_AUDIO_VOLUME, false); SETTING_FLOAT("audio_mixer_volume", &settings->floats.audio_mixer_volume, true, DEFAULT_AUDIO_MIXER_VOLUME, false); #ifdef HAVE_OVERLAY - SETTING_FLOAT("input_overlay_opacity", &settings->floats.input_overlay_opacity, true, default_input_overlay_opacity, false); + SETTING_FLOAT("input_overlay_opacity", &settings->floats.input_overlay_opacity, true, DEFAULT_INPUT_OVERLAY_OPACITY, false); SETTING_FLOAT("input_overlay_scale", &settings->floats.input_overlay_scale, true, 1.0f, false); #endif #ifdef HAVE_MENU @@ -2364,7 +2364,7 @@ void config_set_defaults(void) midi_output, sizeof(settings->arrays.midi_output)); /* Avoid reloading config on every content load */ - if (default_block_config_read) + if (DEFAULT_BLOCK_CONFIG_READ) rarch_ctl(RARCH_CTL_SET_BLOCK_CONFIG_READ, NULL); else rarch_ctl(RARCH_CTL_UNSET_BLOCK_CONFIG_READ, NULL); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index abc469b894..c098bcaea0 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -7299,7 +7299,7 @@ static bool setting_append_list( bool_entries[1].target = &settings->bools.load_dummy_on_core_shutdown; bool_entries[1].name_enum_idx = MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN; bool_entries[1].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN; - bool_entries[1].default_value = load_dummy_on_core_shutdown; + bool_entries[1].default_value = DEFAULT_LOAD_DUMMY_ON_CORE_SHUTDOWN; bool_entries[1].flags = SD_FLAG_ADVANCED; bool_entries[2].target = &settings->bools.set_supports_no_game_enable; @@ -7357,13 +7357,13 @@ static bool setting_append_list( bool_entries[0].target = &settings->bools.config_save_on_exit; bool_entries[0].name_enum_idx = MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT; bool_entries[0].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_CONFIG_SAVE_ON_EXIT; - bool_entries[0].default_value = config_save_on_exit; + bool_entries[0].default_value = DEFAULT_CONFIG_SAVE_ON_EXIT; bool_entries[0].flags = SD_FLAG_NONE; bool_entries[1].target = &settings->bools.show_hidden_files; bool_entries[1].name_enum_idx = MENU_ENUM_LABEL_SHOW_HIDDEN_FILES; bool_entries[1].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_SHOW_HIDDEN_FILES; - bool_entries[1].default_value = show_hidden_files; + bool_entries[1].default_value = DEFAULT_SHOW_HIDDEN_FILES; bool_entries[1].flags = SD_FLAG_NONE; bool_entries[2].target = &settings->bools.game_specific_options; @@ -7552,7 +7552,7 @@ static bool setting_append_list( bool_entries[2].target = &settings->bools.block_sram_overwrite; bool_entries[2].name_enum_idx = MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE; bool_entries[2].SHORT_enum_idx = MENU_ENUM_LABEL_VALUE_BLOCK_SRAM_OVERWRITE; - bool_entries[2].default_value = block_sram_overwrite; + bool_entries[2].default_value = DEFAULT_BLOCK_SRAM_OVERWRITE; bool_entries[2].flags = SD_FLAG_NONE; bool_entries[3].target = &settings->bools.savestate_auto_index; @@ -8713,7 +8713,7 @@ static bool setting_append_list( &settings->uints.video_viwidth, MENU_ENUM_LABEL_VIDEO_VI_WIDTH, MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, - video_viwidth, + DEFAULT_VIDEO_VI_WIDTH, &group_info, &subgroup_info, parent_group, @@ -10660,7 +10660,7 @@ static bool setting_append_list( &settings->bools.input_overlay_hide_in_menu, MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU, - overlay_hide_in_menu, + DEFAULT_OVERLAY_HIDE_IN_MENU, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, From ed1d98d2a2b73ad5c107a44b330c255c46e0e5d0 Mon Sep 17 00:00:00 2001 From: Ryunam Date: Sun, 2 Jun 2019 23:48:01 +0200 Subject: [PATCH 14/31] Add toggle to show/hide mouse cursor with overlays --- config.def.h | 1 + configuration.c | 1 + configuration.h | 1 + input/input_overlay.c | 5 +++++ intl/msg_hash_lbl.h | 2 ++ intl/msg_hash_us.h | 8 ++++++++ menu/cbs/menu_cbs_sublabel.c | 4 ++++ menu/menu_displaylist.c | 1 + menu/menu_setting.c | 16 ++++++++++++++++ msg_hash.h | 1 + 10 files changed, 40 insertions(+) diff --git a/config.def.h b/config.def.h index 116a1df95c..a36b4271f2 100644 --- a/config.def.h +++ b/config.def.h @@ -263,6 +263,7 @@ static const unsigned int def_user_language = 0; #define DEFAULT_SHOW_HIDDEN_FILES false #define DEFAULT_OVERLAY_HIDE_IN_MENU true +#define DEFAULT_OVERLAY_SHOW_MOUSE_CURSOR true #define DEFAULT_DISPLAY_KEYBOARD_OVERLAY false diff --git a/configuration.c b/configuration.c index 28a57ba5bb..6781198ee4 100644 --- a/configuration.c +++ b/configuration.c @@ -1569,6 +1569,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("input_overlay_enable_autopreferred", &settings->bools.input_overlay_enable_autopreferred, true, true, false); SETTING_BOOL("input_overlay_show_physical_inputs", &settings->bools.input_overlay_show_physical_inputs, true, false, false); SETTING_BOOL("input_overlay_hide_in_menu", &settings->bools.input_overlay_hide_in_menu, true, DEFAULT_OVERLAY_HIDE_IN_MENU, false); + SETTING_BOOL("input_overlay_show_mouse_cursor", &settings->bools.input_overlay_show_mouse_cursor, true, DEFAULT_OVERLAY_SHOW_MOUSE_CURSOR, false); #endif #ifdef HAVE_VIDEO_LAYOUT SETTING_BOOL("video_layout_enable", &settings->bools.video_layout_enable, true, true, false); diff --git a/configuration.h b/configuration.h index 5662344110..b4744e8fe1 100644 --- a/configuration.h +++ b/configuration.h @@ -129,6 +129,7 @@ typedef struct settings bool input_overlay_enable_autopreferred; bool input_overlay_hide_in_menu; bool input_overlay_show_physical_inputs; + bool input_overlay_show_mouse_cursor; bool input_descriptor_label_show; bool input_descriptor_hide_unbound; bool input_all_users_control_menu; diff --git a/input/input_overlay.c b/input/input_overlay.c index 6943ef23e2..aa0f26e282 100644 --- a/input/input_overlay.c +++ b/input/input_overlay.c @@ -602,6 +602,7 @@ void input_overlay_loaded(retro_task_t *task, overlay_task_data_t *data = (overlay_task_data_t*)task_data; input_overlay_t *ol = NULL; const video_overlay_interface_t *iface = NULL; + settings_t *settings = config_get_ptr(); if (err) return; @@ -642,6 +643,10 @@ void input_overlay_loaded(retro_task_t *task, overlay_ptr = ol; free(data); + + if (!settings->bools.input_overlay_show_mouse_cursor) + video_driver_hide_mouse(); + return; abort_load: diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index af24385026..cb0a32da8e 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -571,6 +571,8 @@ MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, "overlay_show_physical_inputs") MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, "overlay_show_physical_inputs_port") +MSG_HASH(MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + "overlay_show_mouse_cursor") MSG_HASH(MENU_ENUM_LABEL_INPUT_PLAYER_ANALOG_DPAD_MODE, "input_player%u_analog_dpad_mode") MSG_HASH(MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index a858fea710..35c8dc5f19 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1420,6 +1420,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, "Show Inputs On Overlay" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + "Show Mouse Cursor With Overlay" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, "Show Inputs Listen Port" @@ -5516,6 +5520,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT, "Select the port for the overlay to listen to if Show Inputs On Overlay is enabled." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + "Show the mouse cursor when using an onscreen overlay." + ) MSG_HASH( MENU_ENUM_SUBLABEL_PLAYLISTS_TAB, "Scanned content matching the database will appear here." diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 925c5d2e6d..9bdcb00a1b 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -250,6 +250,7 @@ default_sublabel_macro(action_bind_sublabel_video_message_pos_x, MENU_ default_sublabel_macro(action_bind_sublabel_video_message_pos_y, MENU_ENUM_SUBLABEL_VIDEO_MESSAGE_POS_Y) default_sublabel_macro(action_bind_sublabel_video_font_size, MENU_ENUM_SUBLABEL_VIDEO_FONT_SIZE) default_sublabel_macro(action_bind_sublabel_input_overlay_hide_in_menu, MENU_ENUM_SUBLABEL_INPUT_OVERLAY_HIDE_IN_MENU) +default_sublabel_macro(action_bind_sublabel_input_overlay_show_mouse_cursor, MENU_ENUM_SUBLABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR) default_sublabel_macro(action_bind_sublabel_content_collection_list, MENU_ENUM_SUBLABEL_PLAYLISTS_TAB) default_sublabel_macro(action_bind_sublabel_video_scale_integer, MENU_ENUM_SUBLABEL_VIDEO_SCALE_INTEGER) default_sublabel_macro(action_bind_sublabel_video_gpu_screenshot, MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT) @@ -2018,6 +2019,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_overlay_show_physical_inputs_port); break; + case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_overlay_show_mouse_cursor); + break; case MENU_ENUM_LABEL_VIDEO_FONT_SIZE: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_font_size); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index ba40aa41cc..df572b48fc 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3889,6 +3889,7 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct {MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU, PARSE_ONLY_BOOL }, {MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS, PARSE_ONLY_BOOL }, {MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT,PARSE_ONLY_BOOL }, + {MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, PARSE_ONLY_BOOL }, {MENU_ENUM_LABEL_OVERLAY_PRESET, PARSE_ONLY_PATH }, {MENU_ENUM_LABEL_OVERLAY_OPACITY, PARSE_ONLY_FLOAT }, {MENU_ENUM_LABEL_OVERLAY_SCALE, PARSE_ONLY_FLOAT }, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index c098bcaea0..0aed17c4e2 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -10703,6 +10703,22 @@ static bool setting_append_list( (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; menu_settings_list_current_add_range(list, list_info, 0, MAX_USERS - 1, 1, true, true); + CONFIG_BOOL( + list, list_info, + &settings->bools.input_overlay_show_mouse_cursor, + MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_SHOW_MOUSE_CURSOR, + DEFAULT_OVERLAY_SHOW_MOUSE_CURSOR, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler, + SD_FLAG_NONE + ); + CONFIG_PATH( list, list_info, settings->paths.path_overlay, diff --git a/msg_hash.h b/msg_hash.h index da0531855b..e901ee58fd 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -777,6 +777,7 @@ enum msg_hash_enums MENU_LABEL(INPUT_OVERLAY_HIDE_IN_MENU), MENU_LABEL(INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS), MENU_LABEL(INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT), + MENU_LABEL(INPUT_OVERLAY_SHOW_MOUSE_CURSOR), MENU_LABEL(INPUT_KEYBOARD_GAMEPAD_MAPPING_TYPE), MENU_LABEL(INPUT_SMALL_KEYBOARD_ENABLE), MENU_LABEL(INPUT_TOUCH_ENABLE), From 2e9df1be1148107ec1e665a8fe8b74aafc3d1d2a Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Sun, 2 Jun 2019 20:25:11 -0400 Subject: [PATCH 15/31] typo --- retroarch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/retroarch.c b/retroarch.c index 882e1ebcbb..0a25316386 100644 --- a/retroarch.c +++ b/retroarch.c @@ -5038,7 +5038,7 @@ bool rarch_write_debug_info(void) if (joypad_driver && string_is_equal(joypad_driver->ident, settings->arrays.input_joypad_driver)) filestream_printf(file, " - Joypad: %s\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a"); else - filestream_printf(file, " - Input: %s (configured for %s)\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a", !string_is_empty(settings->arrays.input_joypad_driver) ? settings->arrays.input_joypad_driver : "n/a"); + filestream_printf(file, " - Joypad: %s (configured for %s)\n", !string_is_empty(joypad_driver->ident) ? joypad_driver->ident : "n/a", !string_is_empty(settings->arrays.input_joypad_driver) ? settings->arrays.input_joypad_driver : "n/a"); } filestream_printf(file, "\n"); From fb64183fded542857090f8cce46a3765dff39711 Mon Sep 17 00:00:00 2001 From: orbea Date: Sun, 2 Jun 2019 21:37:09 -0700 Subject: [PATCH 16/31] Fix --disable-menu. --- config.def.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/config.def.h b/config.def.h index 116a1df95c..83a994c9d1 100644 --- a/config.def.h +++ b/config.def.h @@ -367,8 +367,6 @@ static bool xmb_shadows_enable = true; #endif #endif -static bool automatically_add_content_to_playlist = false; - static float menu_framebuffer_opacity = 0.900; static float menu_wallpaper_opacity = 0.300; @@ -399,10 +397,11 @@ static unsigned rgui_particle_effect = RGUI_PARTICLE_EFFECT_NONE; static bool rgui_extended_ascii = false; #else -static bool default_block_config_read = false; -static bool automatically_add_content_to_playlist = false; +#define DEFAULT_BLOCK_CONFIG_READ false #endif +static bool automatically_add_content_to_playlist = false; + static bool default_game_specific_options = true; static bool default_auto_overrides_enable = true; static bool default_auto_remaps_enable = true; From cafc45d7058f0170d244eae441a336f2da6b6fda Mon Sep 17 00:00:00 2001 From: orbea Date: Sun, 2 Jun 2019 22:25:20 -0700 Subject: [PATCH 17/31] Remove duplicate code. --- frontend/drivers/platform_unix.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c index 6c76344be0..d8fea7a599 100644 --- a/frontend/drivers/platform_unix.c +++ b/frontend/drivers/platform_unix.c @@ -1987,21 +1987,12 @@ static int frontend_unix_parse_drive_list(void *data, bool load_content) enum_idx, FILE_TYPE_DIRECTORY, 0, 0); } - - /* this path is not really desirable a user with root permissions could - screw up his system messing with it */ - menu_entries_append_enum(list, "/", - msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), - enum_idx, - FILE_TYPE_DIRECTORY, 0, 0); -#else - menu_entries_append_enum(list, "/", - msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), - enum_idx, - FILE_TYPE_DIRECTORY, 0, 0); #endif - + menu_entries_append_enum(list, "/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + enum_idx, + FILE_TYPE_DIRECTORY, 0, 0); #endif return 0; From ab4ca8cf1b41eb5bdafc91bfdafd4cd27434ff59 Mon Sep 17 00:00:00 2001 From: Ash Logan Date: Mon, 3 Jun 2019 20:35:46 +1000 Subject: [PATCH 18/31] (GX2) Use correct menu coordinates to render menu --- gfx/drivers/gx2_gfx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index 619d7796ed..ba6ff40d84 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -1681,8 +1681,8 @@ static void wiiu_gfx_set_texture_frame(void *data, const void *frame, bool rgb32 wiiu->menu.v->pos.height = height; wiiu->menu.v->coord.u = 0.0f; wiiu->menu.v->coord.v = 0.0f; - wiiu->menu.v->coord.width = (float)width / wiiu->texture.surface.width; - wiiu->menu.v->coord.height = (float)height / wiiu->texture.surface.height; + wiiu->menu.v->coord.width = (float)width / wiiu->menu.texture.surface.width; + wiiu->menu.v->coord.height = (float)height / wiiu->menu.texture.surface.height; GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->menu.v, 4 * sizeof(*wiiu->menu.v)); } From e5be7931fd337378dd7ef6720850400a1989a999 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Mon, 3 Jun 2019 12:07:05 +0100 Subject: [PATCH 19/31] (RGUI) Minor clean-ups --- menu/drivers/rgui.c | 198 +++++++++++++++++++------------------------- 1 file changed, 87 insertions(+), 111 deletions(-) diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index f539fb00e4..57990cdfd4 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -63,18 +63,6 @@ #include #include -#if defined(GEKKO) -#define RGUI_TERM_START_X(fb_width) (fb_width / 21) -#define RGUI_TERM_START_Y(fb_height) (fb_height / 9) -#define RGUI_TERM_WIDTH(fb_width) (((fb_width - RGUI_TERM_START_X(fb_width) - RGUI_TERM_START_X(fb_width)) / (FONT_WIDTH_STRIDE))) -#define RGUI_TERM_HEIGHT(fb_height) (((fb_height - RGUI_TERM_START_Y(fb_height) - RGUI_TERM_START_Y(fb_height)) / (FONT_HEIGHT_STRIDE))) -#else -#define RGUI_TERM_START_X(fb_width) rgui_term_layout.start_x -#define RGUI_TERM_START_Y(fb_height) rgui_term_layout.start_y -#define RGUI_TERM_WIDTH(fb_width) rgui_term_layout.width -#define RGUI_TERM_HEIGHT(fb_height) rgui_term_layout.height -#endif - #define MAX_FB_WIDTH 426 #define RGUI_ENTRY_VALUE_MAXLEN 19 @@ -533,7 +521,7 @@ typedef struct unsigned particle_effect; bool extended_ascii_enable; float scroll_y; - char *msgbox; + char msgbox[1024]; unsigned color_theme; rgui_colors_t colors; bool is_playlist; @@ -761,7 +749,7 @@ typedef struct unsigned width; unsigned height; bool is_valid; - char *path; + char path[PATH_MAX_LENGTH]; uint16_t *data; } thumbnail_t; @@ -771,7 +759,7 @@ static thumbnail_t fs_thumbnail = { 0, 0, false, - NULL, + {0}, NULL }; @@ -781,7 +769,7 @@ static thumbnail_t mini_thumbnail = { 0, 0, false, - NULL, + {0}, NULL }; @@ -791,7 +779,7 @@ static thumbnail_t mini_left_thumbnail = { 0, 0, false, - NULL, + {0}, NULL }; @@ -935,27 +923,27 @@ static uint16_t (*argb32_to_pixel_platform_format)(uint32_t col) = argb32_to_rgb static void rgui_set_pixel_format_function(void) { - const char *driver_ident = video_driver_get_ident(); - - /* Default fallback... */ - if (string_is_empty(driver_ident)) - { - argb32_to_pixel_platform_format = argb32_to_rgba4444; - return; - } - - if ( string_is_equal(driver_ident, "ps2")) /* PS2 */ - argb32_to_pixel_platform_format = argb32_to_abgr1555; - else if (string_is_equal(driver_ident, "gx")) /* GEKKO */ - argb32_to_pixel_platform_format = argb32_to_rgb5a3; - else if (string_is_equal(driver_ident, "psp1")) /* PSP */ - argb32_to_pixel_platform_format = argb32_to_abgr4444; - else if (string_is_equal(driver_ident, "d3d10") || /* D3D10/11/12 */ - string_is_equal(driver_ident, "d3d11") || - string_is_equal(driver_ident, "d3d12")) - argb32_to_pixel_platform_format = argb32_to_bgra4444; - else - argb32_to_pixel_platform_format = argb32_to_rgba4444; + const char *driver_ident = video_driver_get_ident(); + + /* Default fallback... */ + if (string_is_empty(driver_ident)) + { + argb32_to_pixel_platform_format = argb32_to_rgba4444; + return; + } + + if ( string_is_equal(driver_ident, "ps2")) /* PS2 */ + argb32_to_pixel_platform_format = argb32_to_abgr1555; + else if (string_is_equal(driver_ident, "gx")) /* GEKKO */ + argb32_to_pixel_platform_format = argb32_to_rgb5a3; + else if (string_is_equal(driver_ident, "psp1")) /* PSP */ + argb32_to_pixel_platform_format = argb32_to_abgr4444; + else if (string_is_equal(driver_ident, "d3d10") || /* D3D10/11/12 */ + string_is_equal(driver_ident, "d3d11") || + string_is_equal(driver_ident, "d3d12")) + argb32_to_pixel_platform_format = argb32_to_bgra4444; + else + argb32_to_pixel_platform_format = argb32_to_rgba4444; } /* ============================== @@ -1603,13 +1591,12 @@ static bool request_thumbnail( thumbnail->width = 0; thumbnail->height = 0; thumbnail->is_valid = false; - free(thumbnail->path); - thumbnail->path = NULL; + thumbnail->path[0] = '\0'; /* Ensure that new path is valid... */ if (!string_is_empty(path)) { - thumbnail->path = strdup(path); + strlcpy(thumbnail->path, path, sizeof(thumbnail->path)); if (path_is_valid(path)) { /* Would like to cancel any existing image load tasks @@ -1992,25 +1979,25 @@ static void rgui_render_mini_thumbnail(rgui_t *rgui, thumbnail_t *thumbnail, enu menu_display_get_fb_size(&fb_width, &fb_height, &fb_pitch); - term_width = RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE; - term_height = RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE; + term_width = rgui_term_layout.width * FONT_WIDTH_STRIDE; + term_height = rgui_term_layout.height * FONT_HEIGHT_STRIDE; /* Sanity check (this can never, ever happen, so just return * instead of trying to crop the thumbnail image...) */ if ((thumbnail_fullwidth > term_width) || (thumbnail->height > term_height)) return; - fb_x_offset = (RGUI_TERM_START_X(fb_width) + term_width) - + fb_x_offset = (rgui_term_layout.start_x + term_width) - (thumbnail->width + ((thumbnail_fullwidth - thumbnail->width) >> 1)); if (((thumbnail_id == MENU_THUMBNAIL_RIGHT) && !settings->bools.menu_rgui_swap_thumbnails) || ((thumbnail_id == MENU_THUMBNAIL_LEFT) && settings->bools.menu_rgui_swap_thumbnails)) { - fb_y_offset = RGUI_TERM_START_Y(fb_height) + ((thumbnail->max_height - thumbnail->height) >> 1); + fb_y_offset = rgui_term_layout.start_y + ((thumbnail->max_height - thumbnail->height) >> 1); } else { - fb_y_offset = (RGUI_TERM_START_Y(fb_height) + term_height) - + fb_y_offset = (rgui_term_layout.start_y + term_height) - (thumbnail->height + ((thumbnail->max_height - thumbnail->height) >> 1)); } @@ -2656,12 +2643,14 @@ static void rgui_set_message(void *data, const char *message) { rgui_t *rgui = (rgui_t*)data; - if (!rgui || !message || !*message) + if (!rgui || !message) return; - if (!string_is_empty(rgui->msgbox)) - free(rgui->msgbox); - rgui->msgbox = strdup(message); + rgui->msgbox[0] = '\0'; + + if (!string_is_empty(message)) + strlcpy(rgui->msgbox, message, sizeof(rgui->msgbox)); + rgui->force_redraw = true; } @@ -2694,13 +2683,13 @@ static void rgui_render_messagebox(rgui_t *rgui, const char *message) char *msg = list->elems[i].data; unsigned msglen = (unsigned)utf8len(msg); - if (msglen > RGUI_TERM_WIDTH(fb_width)) + if (msglen > rgui_term_layout.width) { - msg[RGUI_TERM_WIDTH(fb_width) - 2] = '.'; - msg[RGUI_TERM_WIDTH(fb_width) - 1] = '.'; - msg[RGUI_TERM_WIDTH(fb_width) - 0] = '.'; - msg[RGUI_TERM_WIDTH(fb_width) + 1] = '\0'; - msglen = RGUI_TERM_WIDTH(fb_width); + msg[rgui_term_layout.width - 2] = '.'; + msg[rgui_term_layout.width - 1] = '.'; + msg[rgui_term_layout.width - 0] = '.'; + msg[rgui_term_layout.width + 1] = '\0'; + msglen = rgui_term_layout.width; } line_width = msglen * FONT_WIDTH_STRIDE - 1 + 6 + 10; @@ -3170,13 +3159,13 @@ static void rgui_render(void *data, bool is_idle) } /* Do not scroll if all items are visible. */ - if (menu_entries_get_size() <= RGUI_TERM_HEIGHT(fb_height)) + if (menu_entries_get_size() <= rgui_term_layout.height) { size_t start = 0; menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); } - bottom = (int)(menu_entries_get_size() - RGUI_TERM_HEIGHT(fb_height)); + bottom = (int)(menu_entries_get_size() - rgui_term_layout.height); menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); if (old_start > (unsigned)bottom) @@ -3186,8 +3175,8 @@ static void rgui_render(void *data, bool is_idle) entries_end = menu_entries_get_size(); - end = ((old_start + RGUI_TERM_HEIGHT(fb_height)) <= (entries_end)) ? - old_start + RGUI_TERM_HEIGHT(fb_height) : entries_end; + end = ((old_start + rgui_term_layout.height) <= (entries_end)) ? + old_start + rgui_term_layout.height : entries_end; /* Render background */ rgui_render_background(); @@ -3228,13 +3217,13 @@ static void rgui_render(void *data, bool is_idle) { /* Format thumbnail title */ ticker.s = thumbnail_title_buf; - ticker.len = RGUI_TERM_WIDTH(fb_width) - 10; + ticker.len = rgui_term_layout.width - 10; ticker.str = thumbnail_title; ticker.selected = true; menu_animation_ticker(&ticker); title_width = (unsigned)(utf8len(thumbnail_title_buf) * FONT_WIDTH_STRIDE); - title_x = RGUI_TERM_START_X(fb_width) + ((RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE) - title_width) / 2; + title_x = rgui_term_layout.start_x + ((rgui_term_layout.width * FONT_WIDTH_STRIDE) - title_width) / 2; /* Draw thumbnail title background */ rgui_fill_rect(rgui_frame_buf.data, fb_width, fb_height, @@ -3254,10 +3243,10 @@ static void rgui_render(void *data, bool is_idle) size_t title_max_len; size_t title_len; unsigned title_x; - unsigned title_y = RGUI_TERM_START_Y(fb_height) - FONT_HEIGHT_STRIDE; - unsigned term_end_x = RGUI_TERM_START_X(fb_width) + (RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE); + unsigned title_y = rgui_term_layout.start_y - FONT_HEIGHT_STRIDE; + unsigned term_end_x = rgui_term_layout.start_x + (rgui_term_layout.width * FONT_WIDTH_STRIDE); unsigned timedate_x = term_end_x - (5 * FONT_WIDTH_STRIDE); - unsigned core_name_len = ((timedate_x - RGUI_TERM_START_X(fb_width)) / FONT_WIDTH_STRIDE) - 3; + unsigned core_name_len = ((timedate_x - rgui_term_layout.start_x) / FONT_WIDTH_STRIDE) - 3; bool show_mini_thumbnails = rgui->is_playlist && settings->bools.menu_rgui_inline_thumbnails; bool show_thumbnail = false; bool show_left_thumbnail = false; @@ -3286,7 +3275,7 @@ static void rgui_render(void *data, bool is_idle) * the vertical centre of RGUI's 'terminal' * (required to determine whether a particular entry * is adjacent to the 'right' or 'left' thumbnail) */ - term_mid_point = (unsigned)((RGUI_TERM_HEIGHT(fb_height) * 0.5f) + 0.5f) - 1; + term_mid_point = (unsigned)((rgui_term_layout.height * 0.5f) + 0.5f) - 1; } /* Show battery indicator, if required */ @@ -3354,7 +3343,7 @@ static void rgui_render(void *data, bool is_idle) } /* Print title */ - title_max_len = RGUI_TERM_WIDTH(fb_width) - 5 - (powerstate_len > 5 ? powerstate_len : 5); + title_max_len = rgui_term_layout.width - 5 - (powerstate_len > 5 ? powerstate_len : 5); title_buf[0] = '\0'; ticker.s = title_buf; @@ -3367,8 +3356,8 @@ static void rgui_render(void *data, bool is_idle) string_to_upper(title_buf); title_len = utf8len(title_buf); - title_x = RGUI_TERM_START_X(fb_width) + - (RGUI_TERM_WIDTH(fb_width) - title_len) * FONT_WIDTH_STRIDE / 2; + title_x = rgui_term_layout.start_x + + (rgui_term_layout.width - title_len) * FONT_WIDTH_STRIDE / 2; /* Title is always centred, unless it is long enough * to infringe upon the battery indicator, in which case @@ -3381,8 +3370,8 @@ static void rgui_render(void *data, bool is_idle) title_buf, rgui->colors.title_color, rgui->colors.shadow_color); /* Print menu entries */ - x = RGUI_TERM_START_X(fb_width); - y = RGUI_TERM_START_Y(fb_height); + x = rgui_term_layout.start_x; + y = rgui_term_layout.start_y; menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &new_start); @@ -3417,13 +3406,13 @@ static void rgui_render(void *data, bool is_idle) menu_entry_get_value(&entry, &entry_value); /* Get base length of entry title field */ - entry_title_max_len = RGUI_TERM_WIDTH(fb_width) - (1 + 2); + entry_title_max_len = rgui_term_layout.width - (1 + 2); /* If showing mini thumbnails, reduce title field length accordingly */ if (show_mini_thumbnails) { unsigned term_offset = settings->bools.menu_rgui_swap_thumbnails ? - (RGUI_TERM_HEIGHT(fb_height) - (i - new_start) - 1) : (i - new_start); + (rgui_term_layout.height - (i - new_start) - 1) : (i - new_start); unsigned thumbnail_width = 0; /* Note: @@ -3436,7 +3425,7 @@ static void rgui_render(void *data, bool is_idle) * standard layout (even though it always will...), * so have to check whether there are an odd or even * number of entries... */ - if((RGUI_TERM_HEIGHT(fb_height) & 1) == 0) + if((rgui_term_layout.height & 1) == 0) { /* Even number of entries */ if ((show_thumbnail && (term_offset <= term_mid_point)) || @@ -3535,9 +3524,9 @@ static void rgui_render(void *data, bool is_idle) blit_line( fb_width, - RGUI_TERM_START_X(fb_width) + FONT_WIDTH_STRIDE, - (RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + - RGUI_TERM_START_Y(fb_height) + 2, sublabel_buf, + rgui_term_layout.start_x + FONT_WIDTH_STRIDE, + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) + + rgui_term_layout.start_y + 2, sublabel_buf, rgui->colors.hover_color, rgui->colors.shadow_color); } else if (settings->bools.menu_core_enable) @@ -3557,9 +3546,9 @@ static void rgui_render(void *data, bool is_idle) blit_line( fb_width, - RGUI_TERM_START_X(fb_width) + FONT_WIDTH_STRIDE, - (RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + - RGUI_TERM_START_Y(fb_height) + 2, core_title_buf, + rgui_term_layout.start_x + FONT_WIDTH_STRIDE, + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) + + rgui_term_layout.start_y + 2, core_title_buf, rgui->colors.hover_color, rgui->colors.shadow_color); } @@ -3580,8 +3569,8 @@ static void rgui_render(void *data, bool is_idle) blit_line( fb_width, timedate_x, - (RGUI_TERM_HEIGHT(fb_height) * FONT_HEIGHT_STRIDE) + - RGUI_TERM_START_Y(fb_height) + 2, timedate, + (rgui_term_layout.height * FONT_HEIGHT_STRIDE) + + rgui_term_layout.start_y + 2, timedate, rgui->colors.hover_color, rgui->colors.shadow_color); } } @@ -3589,8 +3578,7 @@ static void rgui_render(void *data, bool is_idle) if (!string_is_empty(rgui->msgbox)) { rgui_render_messagebox(rgui, rgui->msgbox); - free(rgui->msgbox); - rgui->msgbox = NULL; + rgui->msgbox[0] = '\0'; rgui->force_redraw = true; } @@ -3634,10 +3622,7 @@ static void rgui_thumbnail_free(thumbnail_t *thumbnail) thumbnail->width = 0; thumbnail->height = 0; thumbnail->is_valid = false; - - if (!string_is_empty(thumbnail->path)) - free(thumbnail->path); - thumbnail->path = NULL; + thumbnail->path[0] = '\0'; if (thumbnail->data) free(thumbnail->data); @@ -3940,8 +3925,8 @@ static void *rgui_init(void **userdata, bool video_is_threaded) rgui->menu_title[0] = '\0'; rgui->menu_sublabel[0] = '\0'; - /* Set pixel format conversion function */ - rgui_set_pixel_format_function(); + /* Set pixel format conversion function */ + rgui_set_pixel_format_function(); /* Cache initial video settings */ rgui_get_video_config(&rgui->content_video_settings); @@ -4281,16 +4266,14 @@ static void rgui_update_thumbnail_image(void *userdata) mini_thumbnail.width = 0; mini_thumbnail.height = 0; mini_thumbnail.is_valid = false; - free(mini_thumbnail.path); - mini_thumbnail.path = NULL; + mini_thumbnail.path[0] = '\0'; } else { fs_thumbnail.width = 0; fs_thumbnail.height = 0; fs_thumbnail.is_valid = false; - free(fs_thumbnail.path); - fs_thumbnail.path = NULL; + fs_thumbnail.path[0] = '\0'; } } @@ -4316,20 +4299,17 @@ static void rgui_refresh_thumbnail_image(void *userdata) fs_thumbnail.width = 0; fs_thumbnail.height = 0; fs_thumbnail.is_valid = false; - free(fs_thumbnail.path); - fs_thumbnail.path = NULL; + fs_thumbnail.path[0] = '\0'; mini_thumbnail.width = 0; mini_thumbnail.height = 0; mini_thumbnail.is_valid = false; - free(mini_thumbnail.path); - mini_thumbnail.path = NULL; + mini_thumbnail.path[0] = '\0'; mini_left_thumbnail.width = 0; mini_left_thumbnail.height = 0; mini_left_thumbnail.is_valid = false; - free(mini_left_thumbnail.path); - mini_left_thumbnail.path = NULL; + mini_left_thumbnail.path[0] = '\0'; /* Only load thumbnails if currently viewing a * playlist (note that thumbnails are loaded @@ -4393,8 +4373,7 @@ static void rgui_update_menu_sublabel(rgui_t *rgui) static void rgui_navigation_set(void *data, bool scroll) { - size_t start, fb_pitch; - unsigned fb_width, fb_height; + size_t start; bool do_set_start = false; size_t end = menu_entries_get_size(); size_t selection = menu_navigation_get_selection(); @@ -4409,23 +4388,20 @@ static void rgui_navigation_set(void *data, bool scroll) if (!scroll) return; - menu_display_get_fb_size(&fb_width, &fb_height, - &fb_pitch); - - if (selection < RGUI_TERM_HEIGHT(fb_height) /2) + if (selection < rgui_term_layout.height /2) { start = 0; do_set_start = true; } - else if (selection >= (RGUI_TERM_HEIGHT(fb_height) /2) - && selection < (end - RGUI_TERM_HEIGHT(fb_height) /2)) + else if (selection >= (rgui_term_layout.height /2) + && selection < (end - rgui_term_layout.height /2)) { - start = selection - RGUI_TERM_HEIGHT(fb_height) /2; + start = selection - rgui_term_layout.height /2; do_set_start = true; } - else if (selection >= (end - RGUI_TERM_HEIGHT(fb_height) /2)) + else if (selection >= (end - rgui_term_layout.height /2)) { - start = end - RGUI_TERM_HEIGHT(fb_height); + start = end - rgui_term_layout.height; do_set_start = true; } From 3461955daee322bdba7f5c433fe6cf25eb1e159b Mon Sep 17 00:00:00 2001 From: Ash Logan Date: Mon, 3 Jun 2019 21:38:40 +1000 Subject: [PATCH 20/31] (GX2) Scale menu to viewport size --- gfx/drivers/gx2_gfx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index ba6ff40d84..a5136f9010 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -1675,10 +1675,10 @@ static void wiiu_gfx_set_texture_frame(void *data, const void *frame, bool rgb32 GX2Invalidate(GX2_INVALIDATE_MODE_CPU_TEXTURE, wiiu->menu.texture.surface.image, wiiu->menu.texture.surface.imageSize); - wiiu->menu.v->pos.x = 0.0f; - wiiu->menu.v->pos.y = 0.0f; - wiiu->menu.v->pos.width = width; - wiiu->menu.v->pos.height = height; + wiiu->menu.v->pos.x = wiiu->vp.x; + wiiu->menu.v->pos.y = wiiu->vp.y; + wiiu->menu.v->pos.width = wiiu->vp.width; + wiiu->menu.v->pos.height = wiiu->vp.height; wiiu->menu.v->coord.u = 0.0f; wiiu->menu.v->coord.v = 0.0f; wiiu->menu.v->coord.width = (float)width / wiiu->menu.texture.surface.width; From 3d40a3bcaf4f2b210b9b67ddf5ee51feb69dacdf Mon Sep 17 00:00:00 2001 From: Ash Logan Date: Mon, 3 Jun 2019 21:41:03 +1000 Subject: [PATCH 21/31] (GX2) Respect filtering settings for menu --- gfx/drivers/gx2_gfx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index a5136f9010..d4db9572cf 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -1334,7 +1334,8 @@ static bool wiiu_gfx_frame(void *data, const void *frame, GX2SetAttribBuffer(0, 4 * sizeof(*wiiu->menu.v), sizeof(*wiiu->menu.v), wiiu->menu.v); GX2SetPixelTexture(&wiiu->menu.texture, sprite_shader.ps.samplerVars[0].location); - GX2SetPixelSampler(&wiiu->sampler_linear[RARCH_WRAP_DEFAULT], + GX2SetPixelSampler(wiiu->smooth ? &wiiu->sampler_linear[RARCH_WRAP_DEFAULT] : + &wiiu->sampler_nearest[RARCH_WRAP_DEFAULT], sprite_shader.ps.samplerVars[0].location); GX2DrawEx(GX2_PRIMITIVE_MODE_POINTS, 1, 0, 1); From 6ffb675c0b06022e105f95fb91009cb0393dfa37 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Jun 2019 14:17:58 +0200 Subject: [PATCH 22/31] (GX) Buildfix --- configuration.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.c b/configuration.c index 28a57ba5bb..ea95142ef4 100644 --- a/configuration.c +++ b/configuration.c @@ -1733,7 +1733,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("network_remote_base_port", &settings->uints.network_remote_base_port, true, network_remote_base_port, false); #endif #ifdef GEKKO - SETTING_UINT("video_viwidth", &settings->uints.video_viwidth, true, video_viwidth, false); + SETTING_UINT("video_viwidth", &settings->uints.video_viwidth, true, DEFAULT_VIDEO_VI_WIDTH, false); #endif #ifdef HAVE_MENU SETTING_UINT("dpi_override_value", &settings->uints.menu_dpi_override_value, true, menu_dpi_override_value, false); From 717c5c1e2ff7753d6583629feb83b8a88db83d60 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Jun 2019 18:49:17 +0200 Subject: [PATCH 23/31] Delayed CRC calculation for need_fullpath ROM loading (unpatched) - we can get rid of the GEKKO ifdef for Gamecube/Wii since CRC calculation for these kind of games will now be delayed until content_get_rom_crc is called the first time, which typically only happens during netplay --- tasks/task_content.c | 56 +++++++++++++++++++++++++++++--------------- tasks/task_patch.c | 7 ++++-- 2 files changed, 42 insertions(+), 21 deletions(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index 5b80bc9602..9d3e8bae58 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -157,6 +157,9 @@ static int pending_subsystem_rom_num = 0; static int pending_subsystem_id = 0; static unsigned pending_subsystem_rom_id = 0; +static bool pending_content_rom_crc = false; +static char pending_content_rom_crc_path[PATH_MAX_LENGTH] = {0}; + static char pending_subsystem_ident[255]; #if 0 static char pending_subsystem_extensions[PATH_MAX_LENGTH]; @@ -349,12 +352,14 @@ static bool load_content_into_memory( /* If we have a media type, ignore CRC32 calculation. */ if (type == RARCH_CONTENT_NONE) { + bool has_patch = false; + /* First content file is significant, attempt to do patching, * CRC checking, etc. */ /* Attempt to apply a patch. */ if (!content_ctx->patch_is_blocked) - patch_content( + has_patch = patch_content( content_ctx->is_ips_pref, content_ctx->is_bps_pref, content_ctx->is_ups_pref, @@ -364,9 +369,17 @@ static bool load_content_into_memory( (uint8_t**)&ret_buf, (void*)length); - content_rom_crc = encoding_crc32(0, ret_buf, (size_t)*length); - - RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); + if (has_patch) + { + content_rom_crc = encoding_crc32(0, ret_buf, (size_t)*length); + RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); + } + else + { + pending_content_rom_crc = true; + strlcpy(pending_content_rom_crc_path, + path, sizeof(pending_content_rom_crc_path)); + } } else content_rom_crc = 0; @@ -644,14 +657,14 @@ static bool content_file_load( if (string_is_empty(new_basedir) || !path_is_directory(new_basedir) || !is_path_accessible_using_standard_io(new_basedir)) { RARCH_WARN("Tried copying to cache directory, but " - "cache directory was not set or found. " - "Setting cache directory to root of " - "writable app directory...\n"); + "cache directory was not set or found. " + "Setting cache directory to root of " + "writable app directory...\n"); strlcpy(new_basedir, uwp_dir_data, new_basedir_size); } fill_pathname_join(new_path, new_basedir, - path_basename(path), new_path_size); + path_basename(path), new_path_size); free(new_basedir); /* TODO: This may fail on very large files... @@ -679,10 +692,10 @@ static bool content_file_load( free(buf); snprintf(msg, - msg_size, - "%s \"%s\". (during copy write)\n", - msg_hash_to_str(MSG_COULD_NOT_READ_CONTENT_FILE), - path); + msg_size, + "%s \"%s\". (during copy write)\n", + msg_hash_to_str(MSG_COULD_NOT_READ_CONTENT_FILE), + path); *error_string = strdup(msg); free(msg); return false; @@ -694,7 +707,7 @@ static bool content_file_load( additional_path_allocs->elems[additional_path_allocs->size - 1].data; string_list_append(content_ctx->temporary_content, - new_path, attributes); + new_path, attributes); free(new_path); @@ -702,14 +715,11 @@ static bool content_file_load( } #endif -/* It adds up to 10 seconds when loading large roms. - * It's mainly used for network play which isn't available for these platforms. */ -#if !defined(GEKKO) RARCH_LOG("%s\n", msg_hash_to_str( MSG_CONTENT_LOADING_SKIPPED_IMPLEMENTATION_WILL_DO_IT)); - content_rom_crc = file_crc32(0, path); - RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); -#endif + pending_content_rom_crc = true; + strlcpy(pending_content_rom_crc_path, + path, sizeof(pending_content_rom_crc_path)); } } @@ -2032,6 +2042,13 @@ void content_unset_does_not_need_content(void) uint32_t content_get_crc(void) { + if (pending_content_rom_crc) + { + pending_content_rom_crc = false; + content_rom_crc = file_crc32(0, + (const char*)pending_content_rom_crc_path); + RARCH_LOG("CRC32: 0x%x .\n", (unsigned)content_rom_crc); + } return content_rom_crc; } @@ -2069,6 +2086,7 @@ void content_deinit(void) content_rom_crc = 0; _content_is_inited = false; core_does_not_need_content = false; + pending_content_rom_crc = false; } /* Set environment variables before a subsystem load */ diff --git a/tasks/task_patch.c b/tasks/task_patch.c index 44e825f5fd..59caed0c6e 100644 --- a/tasks/task_patch.c +++ b/tasks/task_patch.c @@ -630,7 +630,7 @@ static bool try_ips_patch(bool allow_ips, * Apply patch to the content file in-memory. * **/ -static void patch_content( +static bool patch_content( bool is_ips_pref, bool is_bps_pref, bool is_ups_pref, @@ -651,7 +651,7 @@ static void patch_content( { RARCH_WARN("%s\n", msg_hash_to_str(MSG_SEVERAL_PATCHES_ARE_EXPLICITLY_DEFINED)); - return; + return false; } if ( !try_ips_patch(allow_ips, name_ips, buf, size) @@ -660,5 +660,8 @@ static void patch_content( { RARCH_LOG("%s\n", msg_hash_to_str(MSG_DID_NOT_FIND_A_VALID_CONTENT_PATCH)); + return false; } + + return true; } From 1c9e78187f6ce91eb8d4b7ac88124c4ddfcf78e2 Mon Sep 17 00:00:00 2001 From: "Tomsic, Jason" Date: Mon, 3 Jun 2019 14:14:47 -0400 Subject: [PATCH 24/31] fixing duplicate "restart retroarch" entries in lakka --- intl/msg_hash_us.h | 8 ++++---- menu/menu_setting.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index a858fea710..4891f2a6c1 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -2174,6 +2174,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_QUIT_RETROARCH, "Quit RetroArch" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH, + "Restart RetroArch" + ) #endif MSG_HASH( MENU_ENUM_LABEL_VALUE_RDB_ENTRY_ANALOG, @@ -2378,10 +2382,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RESTART_CONTENT, "Restart" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RESTART_RETROARCH, - "Restart RetroArch" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RESUME, "Resume" diff --git a/menu/menu_setting.c b/menu/menu_setting.c index c098bcaea0..e928f33334 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -6649,7 +6649,7 @@ static bool setting_append_list( &subgroup_info, parent_group); -#if !defined(IOS) +#if !defined(IOS) && !defined(HAVE_LAKKA) if (frontend_driver_has_fork()) { CONFIG_ACTION( From 1120a7e490888abf5e41a7a71425eb06c916b186 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Mon, 3 Jun 2019 23:40:31 -0400 Subject: [PATCH 25/31] Bliss-Box: add additional pad types from firmware 3.0 --- input/include/blissbox.h | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/input/include/blissbox.h b/input/include/blissbox.h index 2bcc865846..35686fe02e 100644 --- a/input/include/blissbox.h +++ b/input/include/blissbox.h @@ -41,15 +41,17 @@ const blissbox_pad_type_t blissbox_pad_types[] = {"A5200", 6}, {"A5200_TB", 50}, {"A7800", 4}, - {"ATARI_KEYPAD", 43}, {"ATARI", 0}, + {"ATARI_KEYPAD", 43}, {"ATMARK", 10}, {"BALLY", 42}, {"CD32", 24}, {"CDI", 33}, {"COL", 1}, + {"COL_FLASHBACK", 48}, /* 3.0 */ {"DC_ASCI", 15}, {"DC_PAD", 16}, + {"DC_TWIN", 35}, /* 3.0 */ {"FC_ARKANOID", 53}, {"FC_NES", 52}, {"GC", 9}, @@ -57,7 +59,6 @@ const blissbox_pad_type_t blissbox_pad_types[] = {"GEN_3", 20}, {"GEN_6", 21}, {"GRAVIS_EX", 38}, - {"gx4000", 2}, {"HAMMERHEAD", 40}, {"HPD", 7}, {"INTELI", 14}, @@ -66,6 +67,9 @@ const blissbox_pad_type_t blissbox_pad_types[] = {"N64", 19}, {"NEO", 49}, {"NES", 17}, + {"NES_ARKANOID", 30}, + {"NES_GUN", 28}, + {"NES_POWERPAD", 36}, {"PADDLES", 41}, {"PC_FX", 26}, {"PC_GAMEPAD", 46}, @@ -73,27 +77,28 @@ const blissbox_pad_type_t blissbox_pad_types[] = {"PSX_DS", 115}, {"PSX_DS2", 121}, {"PSX_FS", 83}, + {"PSX_JOGCON", 227}, /* 3.0 */ {"PSX_NEGCON", 51}, {"PSX_WHEEL", 12}, {"SAC", 34}, {"SATURN_ANALOG", 8}, {"SATURN_DIGITAL", 3}, {"SMS", 22}, + {"SNES", 27}, + {"SNESS_NTT", 47}, /* 3.0 */ {"SPEEK", 45}, {"TG16", 23}, + {"TG16_6BUTTON", 54}, /* 3.0 */ {"THREE_DO", 25}, {"THREE_DO_ANALOG", 37}, {"VEC", 5}, - {"WII_NUNCHUK", 13}, - {"ZXSINC", 44}, - {"NES_ARKANOID", 30}, - {"NES_GUN", 28}, - {"NES_POWERPAD", 36}, - {"SNES", 27}, {"V_BOY", 29}, {"WII_CLASSIC", 31}, + {"WII_DRUM", 55}, /* 3.0 */ {"WII_MPLUS", 32}, - {"PSX_JOGCON", 227}, + {"WII_NUNCHUK", 13}, + {"ZXSINC", 44}, + {"gx4000", 2}, {NULL, 0}, /* used to mark unconnected ports, do not remove */ }; From 80c9475fa40405c3b53e7a8c782d655edcaa3a5a Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Tue, 4 Jun 2019 11:27:37 +0100 Subject: [PATCH 26/31] Add option to show 'remove playlist entry' only on history/favourites --- config.def.h | 3 ++- configuration.c | 2 +- configuration.h | 2 +- gfx/drivers_context/drm_ctx.c | 2 ++ intl/msg_hash_lbl.h | 2 +- intl/msg_hash_us.h | 12 ++++++++++ menu/menu_defines.h | 8 +++++++ menu/menu_displaylist.c | 37 +++++++++++++++++++++------- menu/menu_setting.c | 45 +++++++++++++++++++++++++++++------ msg_hash.h | 4 ++++ 10 files changed, 98 insertions(+), 19 deletions(-) diff --git a/config.def.h b/config.def.h index 1e10214dd1..b566f87826 100644 --- a/config.def.h +++ b/config.def.h @@ -78,7 +78,6 @@ static const int crt_switch_resolution_super = 2560; static const int crt_switch_center_adjust = 0; static const bool def_history_list_enable = true; -static const bool def_playlist_entry_remove = true; static const bool def_playlist_entry_rename = true; static const unsigned int def_user_language = 0; @@ -747,6 +746,8 @@ static const unsigned playlist_show_inline_core_name = PLAYLIST_INLINE_CORE_DISP /* Specifies which runtime record to use on playlist sublabels */ static const unsigned playlist_sublabel_runtime_type = PLAYLIST_RUNTIME_PER_CORE; + +static const unsigned playlist_entry_remove_enable = PLAYLIST_ENTRY_REMOVE_ENABLE_ALL; #endif static const bool scan_without_core_match = false; diff --git a/configuration.c b/configuration.c index 7c3fbae2ac..8eb0a107a9 100644 --- a/configuration.c +++ b/configuration.c @@ -1590,7 +1590,6 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("savestate_auto_load", &settings->bools.savestate_auto_load, true, savestate_auto_load, false); SETTING_BOOL("savestate_thumbnail_enable", &settings->bools.savestate_thumbnail_enable, true, savestate_thumbnail_enable, false); SETTING_BOOL("history_list_enable", &settings->bools.history_list_enable, true, def_history_list_enable, false); - SETTING_BOOL("playlist_entry_remove", &settings->bools.playlist_entry_remove, true, def_playlist_entry_remove, false); SETTING_BOOL("playlist_entry_rename", &settings->bools.playlist_entry_rename, true, def_playlist_entry_rename, false); SETTING_BOOL("game_specific_options", &settings->bools.game_specific_options, true, default_game_specific_options, false); SETTING_BOOL("auto_overrides_enable", &settings->bools.auto_overrides_enable, true, default_auto_overrides_enable, false); @@ -1837,6 +1836,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, #endif #ifdef HAVE_MENU + SETTING_UINT("playlist_entry_remove_enable", &settings->uints.playlist_entry_remove_enable, true, playlist_entry_remove_enable, false); SETTING_UINT("playlist_show_inline_core_name", &settings->uints.playlist_show_inline_core_name, true, playlist_show_inline_core_name, false); SETTING_UINT("playlist_sublabel_runtime_type", &settings->uints.playlist_sublabel_runtime_type, true, playlist_sublabel_runtime_type, false); #endif diff --git a/configuration.h b/configuration.h index b4744e8fe1..9e76139d0b 100644 --- a/configuration.h +++ b/configuration.h @@ -276,7 +276,6 @@ typedef struct settings bool set_supports_no_game_enable; bool auto_screenshot_filename; bool history_list_enable; - bool playlist_entry_remove; bool playlist_entry_rename; bool rewind_enable; bool vrr_runloop_enable; @@ -478,6 +477,7 @@ typedef struct settings unsigned menu_rgui_particle_effect; unsigned menu_ticker_type; + unsigned playlist_entry_remove_enable; unsigned playlist_show_inline_core_name; unsigned playlist_sublabel_runtime_type; diff --git a/gfx/drivers_context/drm_ctx.c b/gfx/drivers_context/drm_ctx.c index 8fa0b4239d..b4ca18da1f 100644 --- a/gfx/drivers_context/drm_ctx.c +++ b/gfx/drivers_context/drm_ctx.c @@ -910,9 +910,11 @@ static uint32_t gfx_ctx_drm_get_flags(void *data) BIT32_SET(flags, GFX_CTX_FLAGS_GL_CORE_CONTEXT); if (string_is_equal(video_driver_get_ident(), "glcore")) + { #ifdef HAVE_SLANG BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG); #endif + } else BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_GLSL); diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index cb0a32da8e..19dc0c83dc 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -202,7 +202,7 @@ MSG_HASH(MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY, MSG_HASH(MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, "content_history_size") MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, - "playlist_entry_remove") + "playlist_entry_remove_enable") MSG_HASH(MENU_ENUM_LABEL_CONTENT_SETTINGS, "quick_menu") MSG_HASH(MENU_ENUM_LABEL_CORE_ASSETS_DIRECTORY, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 1070fe2c2f..2aa6cb3aa4 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -8627,6 +8627,18 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_NEVER, "Never" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV, + "History & Favorites" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_ALL, + "All Playlists" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_NONE, + "OFF" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_SORT_ALPHABETICAL, "Sort playlists alphabetically" diff --git a/menu/menu_defines.h b/menu/menu_defines.h index b3c67ce1ad..8456ee4dc4 100644 --- a/menu/menu_defines.h +++ b/menu/menu_defines.h @@ -349,6 +349,14 @@ enum playlist_inline_core_display_type PLAYLIST_INLINE_CORE_DISPLAY_LAST }; +enum playlist_entry_remove_enable_type +{ + PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV = 0, + PLAYLIST_ENTRY_REMOVE_ENABLE_ALL, + PLAYLIST_ENTRY_REMOVE_ENABLE_NONE, + PLAYLIST_ENTRY_REMOVE_ENABLE_LAST +}; + typedef uintptr_t menu_texture_item; typedef struct menu_display_ctx_clearcolor diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index df572b48fc..feced23a4a 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2042,13 +2042,34 @@ static int menu_displaylist_parse_horizontal_content_actions( MENU_ENUM_LABEL_RENAME_ENTRY, FILE_TYPE_PLAYLIST_ENTRY, 0, idx); - if (settings->bools.playlist_entry_remove && - !settings->bools.kiosk_mode_enable) - menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY), - msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY), - MENU_ENUM_LABEL_DELETE_ENTRY, - MENU_SETTING_ACTION_DELETE_ENTRY, 0, 0); + if (!settings->bools.kiosk_mode_enable) + { + bool remove_entry_enabled = false; + + if (settings->uints.playlist_entry_remove_enable == PLAYLIST_ENTRY_REMOVE_ENABLE_ALL) + remove_entry_enabled = true; + else if (settings->uints.playlist_entry_remove_enable == PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV) + { + char system[PATH_MAX_LENGTH]; + system[0] = '\0'; + + menu_driver_get_thumbnail_system(system, sizeof(system)); + + if (!string_is_empty(system)) + remove_entry_enabled = string_is_equal(system, "history") || + string_is_equal(system, "favorites") || + string_is_equal(system, "images_history") || + string_is_equal(system, "music_history") || + string_is_equal(system, "video_history"); + } + + if (remove_entry_enabled) + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY), + msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY), + MENU_ENUM_LABEL_DELETE_ENTRY, + MENU_SETTING_ACTION_DELETE_ENTRY, 0, 0); + } if (settings->bools.quick_menu_show_add_to_favorites) { @@ -5628,7 +5649,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, {MENU_ENUM_LABEL_HISTORY_LIST_ENABLE, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE, PARSE_ONLY_UINT}, {MENU_ENUM_LABEL_PLAYLIST_ENTRY_RENAME, PARSE_ONLY_BOOL}, - {MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, PARSE_ONLY_BOOL}, + {MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, PARSE_ONLY_UINT}, {MENU_ENUM_LABEL_PLAYLIST_SORT_ALPHABETICAL, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_PLAYLIST_USE_OLD_FORMAT, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_PLAYLIST_SHOW_INLINE_CORE_NAME, PARSE_ONLY_UINT}, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 5f7dd9e89c..3e56029078 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3862,6 +3862,36 @@ static void setting_get_string_representation_uint_playlist_inline_core_display_ } } +static void setting_get_string_representation_uint_playlist_entry_remove_enable( + rarch_setting_t *setting, + char *s, size_t len) +{ + if (!setting) + return; + + switch (*setting->value.target.unsigned_integer) + { + case PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV), + len); + break; + case PLAYLIST_ENTRY_REMOVE_ENABLE_ALL: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_ALL), + len); + break; + case PLAYLIST_ENTRY_REMOVE_ENABLE_NONE: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_NONE), + len); + break; + } +} + #if defined(_3DS) static void setting_get_string_representation_uint_video_3ds_display_mode( rarch_setting_t *setting, @@ -13016,20 +13046,21 @@ static bool setting_append_list( general_read_handler, SD_FLAG_NONE); - CONFIG_BOOL( + CONFIG_UINT( list, list_info, - &settings->bools.playlist_entry_remove, + &settings->uints.playlist_entry_remove_enable, MENU_ENUM_LABEL_PLAYLIST_ENTRY_REMOVE, MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE, - def_playlist_entry_remove, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, + playlist_entry_remove_enable, &group_info, &subgroup_info, parent_group, general_write_handler, - general_read_handler, - SD_FLAG_NONE); + general_read_handler); + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_playlist_entry_remove_enable; + menu_settings_list_current_add_range(list, list_info, 0, PLAYLIST_ENTRY_REMOVE_ENABLE_LAST-1, 1, true, true); CONFIG_BOOL( list, list_info, diff --git a/msg_hash.h b/msg_hash.h index e901ee58fd..0b4ed7d3a1 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -2376,6 +2376,10 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_ALWAYS, MENU_ENUM_LABEL_VALUE_PLAYLIST_INLINE_CORE_DISPLAY_NEVER, + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV, + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_ALL, + MENU_ENUM_LABEL_VALUE_PLAYLIST_ENTRY_REMOVE_ENABLE_NONE, + MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_CORE, MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_RUNTIME, MENU_ENUM_LABEL_VALUE_PLAYLIST_SUBLABEL_LAST_PLAYED, From 736ff13e356dcd443d1aa8c51ddb924e3ced2396 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Tue, 4 Jun 2019 15:50:47 +0100 Subject: [PATCH 27/31] (GEKKO) Add optional overscan correction --- config.def.h | 5 +++++ configuration.c | 4 +++- configuration.h | 4 ++++ gfx/drivers/gx_gfx.c | 38 +++++++++++++++++++++++++++++++----- intl/msg_hash_lbl.h | 4 ++++ intl/msg_hash_us.h | 16 +++++++++++++++ menu/cbs/menu_cbs_sublabel.c | 13 ++++++++++++ menu/menu_displaylist.c | 6 ++++++ menu/menu_setting.c | 28 +++++++++++++++++++++++++- msg_hash.h | 2 ++ 10 files changed, 113 insertions(+), 7 deletions(-) diff --git a/config.def.h b/config.def.h index 1e10214dd1..2f4cae1deb 100644 --- a/config.def.h +++ b/config.def.h @@ -216,6 +216,11 @@ static const unsigned int def_user_language = 0; #ifdef GEKKO /* Removes 480i flicker, smooths picture a little. */ #define DEFAULT_VIDEO_VFILTER true + +/* Allow overscan to be corrected on displays that + * do not have proper 'pixel perfect' scaling */ +#define DEFAULT_VIDEO_OVERSCAN_CORRECTION_TOP 0 +#define DEFAULT_VIDEO_OVERSCAN_CORRECTION_BOTTOM 0 #endif /* Smooths picture. */ diff --git a/configuration.c b/configuration.c index 7c3fbae2ac..c5c8ff3256 100644 --- a/configuration.c +++ b/configuration.c @@ -1734,7 +1734,9 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings, SETTING_UINT("network_remote_base_port", &settings->uints.network_remote_base_port, true, network_remote_base_port, false); #endif #ifdef GEKKO - SETTING_UINT("video_viwidth", &settings->uints.video_viwidth, true, DEFAULT_VIDEO_VI_WIDTH, false); + SETTING_UINT("video_viwidth", &settings->uints.video_viwidth, true, DEFAULT_VIDEO_VI_WIDTH, false); + SETTING_UINT("video_overscan_correction_top", &settings->uints.video_overscan_correction_top, true, DEFAULT_VIDEO_OVERSCAN_CORRECTION_TOP, false); + SETTING_UINT("video_overscan_correction_bottom", &settings->uints.video_overscan_correction_bottom, true, DEFAULT_VIDEO_OVERSCAN_CORRECTION_BOTTOM, false); #endif #ifdef HAVE_MENU SETTING_UINT("dpi_override_value", &settings->uints.menu_dpi_override_value, true, menu_dpi_override_value, false); diff --git a/configuration.h b/configuration.h index b4744e8fe1..3285a71f0e 100644 --- a/configuration.h +++ b/configuration.h @@ -450,6 +450,10 @@ typedef struct settings #ifdef HAVE_VIDEO_LAYOUT unsigned video_layout_selected_view; #endif +#ifdef GEKKO + unsigned video_overscan_correction_top; + unsigned video_overscan_correction_bottom; +#endif unsigned menu_timedate_style; unsigned menu_thumbnails; diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index a5c0ab0a76..ee88e7221f 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -95,6 +95,8 @@ typedef struct gx_video bool menu_texture_enable; video_viewport_t vp; unsigned scale; + unsigned overscan_correction_top; + unsigned overscan_correction_bottom; #ifdef HAVE_OVERLAY struct gx_overlay_data *overlay; unsigned overlays; @@ -909,7 +911,7 @@ static void convert_texture32(const uint32_t *_src, uint32_t *_dst, } } -static void gx_resize(void *data) +static void gx_resize(void *data, settings_t *settings) { int gamma; unsigned degrees; @@ -918,10 +920,9 @@ static void gx_resize(void *data) float top = 1, bottom = -1, left = -1, right = 1; int x = 0, y = 0; gx_video_t *gx = (gx_video_t*)data; - settings_t *settings = config_get_ptr(); const global_t *global = global_get_ptr(); - if (!gx) + if (!gx || !settings) return; width = gx->vp.full_width; @@ -994,6 +995,24 @@ static void gx_resize(void *data) } } + /* Overscan correction */ + if ((settings->uints.video_overscan_correction_top > 0) || + (settings->uints.video_overscan_correction_bottom > 0)) + { + float current_aspect = (float)width / (float)height; + int new_height = height - (settings->uints.video_overscan_correction_top + + settings->uints.video_overscan_correction_bottom); + int new_width = (int)((new_height * current_aspect) + 0.5f); + + if ((new_height > 0) && (new_width > 0)) + { + x += (int)((float)(width - new_width) * 0.5f); + y += (int)settings->uints.video_overscan_correction_top; + width = (unsigned)new_width; + height = (unsigned)new_height; + } + } + if(gx_isValidXOrigin(gx_xOrigin + x)) { gx_mode.viXOrigin = gx_xOrigin + x; @@ -1506,21 +1525,30 @@ static bool gx_frame(void *data, const void *frame, video_frame_info_t *video_info) { char fps_text_buf[128]; + settings_t *settings = config_get_ptr(); gx_video_t *gx = (gx_video_t*)data; u8 clear_efb = GX_FALSE; uint32_t level = 0; fps_text_buf[0] = '\0'; - if(!gx || (!frame && !gx->menu_texture_enable)) + if(!gx || (!frame && !gx->menu_texture_enable) || !settings) return true; if (!frame) width = height = 4; /* draw a black square in the background */ + if ((gx->overscan_correction_top != settings->uints.video_overscan_correction_top) || + (gx->overscan_correction_bottom != settings->uints.video_overscan_correction_bottom)) + { + gx->overscan_correction_top = settings->uints.video_overscan_correction_top; + gx->overscan_correction_bottom = settings->uints.video_overscan_correction_bottom; + gx->should_resize = true; + } + if(gx->should_resize) { - gx_resize(gx); + gx_resize(gx, settings); clear_efb = GX_TRUE; } diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index cb0a32da8e..1a84196f2b 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -1345,6 +1345,10 @@ MSG_HASH(MENU_ENUM_LABEL_VIDEO_VIEWPORT_CUSTOM_Y, "video_viewport_custom_y") MSG_HASH(MENU_ENUM_LABEL_VIDEO_VI_WIDTH, "video_vi_width") +MSG_HASH(MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_TOP, + "video_overscan_correction_top") +MSG_HASH(MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + "video_overscan_correction_bottom") MSG_HASH(MENU_ENUM_LABEL_VIDEO_VSYNC, "video_vsync") MSG_HASH(MENU_ENUM_LABEL_VIDEO_ADAPTIVE_VSYNC, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 1070fe2c2f..2071bda87a 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -3776,6 +3776,22 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VI_WIDTH, "Set VI Screen Width" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_TOP, + "Overscan Correction (Top)" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_TOP, + "Adjust display overscan cropping by reducing image size by specified number of scanlines (taken from top of screen). Note: May introduce scaling artefacts." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + "Overscan Correction (Bottom)" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + "Adjust display overscan cropping by reducing image size by specified number of scanlines (taken from bottom of screen). Note: May introduce scaling artefacts." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_VSYNC, "Vertical Sync (Vsync)" diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 9bdcb00a1b..0df61f1b55 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -581,6 +581,11 @@ default_sublabel_macro(action_bind_sublabel_video_3ds_lcd_bottom, MENU default_sublabel_macro(action_bind_sublabel_video_3ds_display_mode, MENU_ENUM_SUBLABEL_VIDEO_3DS_DISPLAY_MODE) #endif +#if defined(GEKKO) +default_sublabel_macro(action_bind_sublabel_video_overscan_correction_top, MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_TOP) +default_sublabel_macro(action_bind_sublabel_video_overscan_correction_bottom, MENU_ENUM_SUBLABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM) +#endif + default_sublabel_macro(action_bind_sublabel_playlist_show_sublabels, MENU_ENUM_SUBLABEL_PLAYLIST_SHOW_SUBLABELS) default_sublabel_macro(action_bind_sublabel_menu_rgui_border_filler_enable, MENU_ENUM_SUBLABEL_MENU_RGUI_BORDER_FILLER_ENABLE) default_sublabel_macro(action_bind_sublabel_menu_rgui_border_filler_thickness_enable, MENU_ENUM_SUBLABEL_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE) @@ -2506,6 +2511,14 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_VIDEO_3DS_DISPLAY_MODE: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_3ds_display_mode); break; +#endif +#if defined(GEKKO) + case MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_TOP: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_overscan_correction_top); + break; + case MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_overscan_correction_bottom); + break; #endif case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cheat_apply_after_load); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index df572b48fc..e632326155 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5915,6 +5915,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_parse_settings_enum(info->list, MENU_ENUM_LABEL_VIDEO_VFILTER, PARSE_ONLY_BOOL, false); + menu_displaylist_parse_settings_enum(info->list, + MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_TOP, + PARSE_ONLY_UINT, false); + menu_displaylist_parse_settings_enum(info->list, + MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + PARSE_ONLY_UINT, false); menu_displaylist_parse_settings_enum(info->list, MENU_ENUM_LABEL_VIDEO_ROTATION, PARSE_ONLY_UINT, false); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 5f7dd9e89c..51dd43dac3 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -8726,7 +8726,7 @@ static bool setting_append_list( &settings->bools.video_vfilter, MENU_ENUM_LABEL_VIDEO_VFILTER, MENU_ENUM_LABEL_VALUE_VIDEO_VFILTER, - video_vfilter, + DEFAULT_VIDEO_VFILTER, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -8735,6 +8735,32 @@ static bool setting_append_list( general_write_handler, general_read_handler, SD_FLAG_NONE); + + CONFIG_UINT( + list, list_info, + &settings->uints.video_overscan_correction_top, + MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_TOP, + MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_TOP, + DEFAULT_VIDEO_OVERSCAN_CORRECTION_TOP, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 24, 1, true, true); + + CONFIG_UINT( + list, list_info, + &settings->uints.video_overscan_correction_bottom, + MENU_ENUM_LABEL_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + MENU_ENUM_LABEL_VALUE_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + DEFAULT_VIDEO_OVERSCAN_CORRECTION_BOTTOM, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 24, 1, true, true); #endif CONFIG_BOOL( diff --git a/msg_hash.h b/msg_hash.h index e901ee58fd..04cb15284b 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1849,6 +1849,8 @@ enum msg_hash_enums MENU_LABEL(USER_LANGUAGE), MENU_LABEL(NETPLAY_NICKNAME), MENU_LABEL(VIDEO_VI_WIDTH), + MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_TOP), + MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_BOTTOM), MENU_LABEL(VIDEO_ASPECT_RATIO), MENU_LABEL(VIDEO_FORCE_ASPECT), MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO), From 1489a66ea5c1d08cb9a205c553235a1d6b9039e9 Mon Sep 17 00:00:00 2001 From: orbea Date: Tue, 4 Jun 2019 08:14:14 -0700 Subject: [PATCH 28/31] qb: Improve the Qt check. --- qb/config.libs.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 59bd3b94bf..9c13a12760 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -244,18 +244,18 @@ if [ "$HAVE_QT" != 'no' ]; then # pkg-config is needed to reliably find Qt5 libraries. - if [ "$HAVE_QT5CORE" = "no" ] || [ "$HAVE_QT5GUI" = "no" ] || [ "$HAVE_QT5WIDGETS" = "no" ] || [ "$HAVE_QT5CONCURRENT" = "no" ] || [ "$HAVE_QT5NETWORK" = "no" ]; then - die : 'Notice: Not building Qt support, required libraries were not found.' - HAVE_QT=no - else - HAVE_QT=yes + check_enabled QT5CORE QT Qt 'Qt5Core is' true + check_enabled QT5GUI QT Qt 'Qt5GUI is' true + check_enabled QT5WIDGETS QT Qt 'Qt5Widgets is' true + check_enabled QT5CONCURRENT QT Qt 'Qt5Concurrent is' true + check_enabled QT5NETWORK QT Qt 'Qt5Network is' true + #check_enabled QT5WEBENGINE QT Qt 'Qt5Webengine is' true + + if [ "$HAVE_QT" != yes ]; then + die : 'Notice: Qt support disabled, required libraries were not found.' fi check_pkgconf OPENSSL openssl 1.0.0 - - #if [ "$HAVE_QT5WEBENGINE" = "no" ]; then - # die : 'Notice: Qt5WebEngine not found, disabling web browser support.' - #fi fi if [ "$HAVE_FLAC" = 'no' ]; then From 87be0d366f4ac43fe0cfc1675435c2073fd64924 Mon Sep 17 00:00:00 2001 From: Ash Logan Date: Wed, 5 Jun 2019 23:11:11 +1000 Subject: [PATCH 29/31] (GX2) Use correct pixelformat ordering for menu texture This fixes up some backwards colours on wiiu, resulting in all the themes looking lovely. --- gfx/drivers/gx2_gfx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index d4db9572cf..0e48d755c5 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -333,7 +333,8 @@ static void *wiiu_gfx_init(const video_info_t *video, wiiu->menu.texture.surface.format = GX2_SURFACE_FORMAT_UNORM_R4_G4_B4_A4; wiiu->menu.texture.surface.tileMode = GX2_TILE_MODE_LINEAR_ALIGNED; wiiu->menu.texture.viewNumSlices = 1; - wiiu->menu.texture.compMap = GX2_COMP_SEL(_A, _R, _G, _B); + /* Presumably an endian thing. RGBA, but swap R and G, then B and A. */ + wiiu->menu.texture.compMap = GX2_COMP_SEL(_G, _R, _A, _B); GX2CalcSurfaceSizeAndAlignment(&wiiu->menu.texture.surface); GX2InitTextureRegs(&wiiu->menu.texture); From 24fba02a9f639beaf7ead5aea7755a0a06edeb35 Mon Sep 17 00:00:00 2001 From: Ash Logan Date: Wed, 5 Jun 2019 23:19:35 +1000 Subject: [PATCH 30/31] (GX2) Display menu texture at full opacity rgui does its own transparency effects in the texture, so we don't have to add another 50% on that --- gfx/drivers/gx2_gfx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gfx/drivers/gx2_gfx.c b/gfx/drivers/gx2_gfx.c index 0e48d755c5..8ee5465072 100644 --- a/gfx/drivers/gx2_gfx.c +++ b/gfx/drivers/gx2_gfx.c @@ -371,7 +371,7 @@ static void *wiiu_gfx_init(const video_info_t *video, wiiu->menu.v->coord.v = 0.0f; wiiu->menu.v->coord.width = 1.0f; wiiu->menu.v->coord.height = 1.0f; - wiiu->menu.v->color = 0xFFFFFF80; + wiiu->menu.v->color = 0xFFFFFFFF; GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->menu.v, 4 * sizeof(*wiiu->menu.v)); wiiu->vertex_cache.size = 0x1000; From be35b0ee150c56e45cd2db5ecfc29bc33f55e5d2 Mon Sep 17 00:00:00 2001 From: orbea Date: Sun, 2 Jun 2019 12:10:47 -0700 Subject: [PATCH 31/31] Add missing rcheevos include. Fixes https://github.com/libretro/RetroArch/issues/8899 --- pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj b/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj index a456aaab2b..2d94620e95 100644 --- a/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch_iOS11.xcodeproj/project.pbxproj @@ -893,6 +893,7 @@ ../../, "../../libretro-common/include", ../../deps/stb, + ../../deps/rcheevos/include, ../../deps/libz, ../../deps, );