From ac12d52f326416d48174d11bd9285342bfdb621d Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Thu, 11 Jun 2015 10:42:35 -0700 Subject: [PATCH 001/822] (Linux) Install the desktop entry for everyone in the top-level Makefile I've also removed the PNG from installation because the icon specification will cause it to be prefered over the SVG version when picking the icon. I have edited the desktop entry to refer to the icon by basename only, this will allow it to be properly selected regardless of whether retroarch is installed in /usr or /usr/local The desktop entry has also been cleaned up to the proper desktop entry specifications. --- Makefile | 5 +++-- dist-scripts/debian/retroarch.desktop | 12 ------------ dist-scripts/debian/rules | 1 - retroarch.desktop | 10 ++++++++++ 4 files changed, 13 insertions(+), 15 deletions(-) delete mode 100644 dist-scripts/debian/retroarch.desktop create mode 100644 retroarch.desktop diff --git a/Makefile b/Makefile index c27edef6ed..98dab20759 100644 --- a/Makefile +++ b/Makefile @@ -153,16 +153,17 @@ install: $(TARGET) rm -f $(OBJDIR)/git_version.o mkdir -p $(DESTDIR)$(PREFIX)/bin 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(GLOBAL_CONFIG_DIR) 2>/dev/null || /bin/true + mkdir -p $(DESTDIR)$(PREFIX)/share/applications 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(PREFIX)/share/pixmaps 2>/dev/null || /bin/true install -m755 $(TARGET) $(DESTDIR)$(PREFIX)/bin install -m755 tools/cg2glsl.py $(DESTDIR)$(PREFIX)/bin/retroarch-cg2glsl install -m755 $(JTARGET) $(DESTDIR)$(PREFIX)/bin install -m644 retroarch.cfg $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg + install -m644 retroarch.desktop $(DESTDIR)$(PREFIX)/share/applications install -m644 docs/retroarch.1 $(DESTDIR)$(MAN_DIR) install -m644 docs/retroarch-cg2glsl.1 $(DESTDIR)$(MAN_DIR) install -m644 docs/retroarch-joyconfig.1 $(DESTDIR)$(MAN_DIR) - install -m644 media/retroarch.png $(DESTDIR)$(PREFIX)/share/pixmaps install -m644 media/retroarch.svg $(DESTDIR)$(PREFIX)/share/pixmaps uninstall: @@ -170,10 +171,10 @@ uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/retroarch-joyconfig rm -f $(DESTDIR)$(PREFIX)/bin/retroarch-cg2glsl rm -f $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg + rm -f $(DESTDIR)$(PREFIX)/share/applications/retroarch.desktop rm -f $(DESTDIR)$(PREFIX)/share/man/man1/retroarch.1 rm -f $(DESTDIR)$(PREFIX)/share/man/man1/retroarch-cg2glsl.1 rm -f $(DESTDIR)$(PREFIX)/share/man/man1/retroarch-joyconfig.1 - rm -f $(DESTDIR)$(PREFIX)/share/pixmaps/retroarch.png rm -f $(DESTDIR)$(PREFIX)/share/pixmaps/retroarch.svg clean: diff --git a/dist-scripts/debian/retroarch.desktop b/dist-scripts/debian/retroarch.desktop deleted file mode 100644 index 29c921cb93..0000000000 --- a/dist-scripts/debian/retroarch.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Version=1.0 -Encoding=UTF-8 -Name=RetroArch -Type=Application -GenericName=RetroArch -Comment=RetroArch Multi-Engine Platform -Icon=/usr/share/pixmaps/retroarch.svg -Exec=retroarch -Terminal=false -StartupNotify=false -Categories=Game diff --git a/dist-scripts/debian/rules b/dist-scripts/debian/rules index 336f0af739..8ac765d0d0 100755 --- a/dist-scripts/debian/rules +++ b/dist-scripts/debian/rules @@ -46,7 +46,6 @@ override_dh_auto_build: override_dh_auto_install: # Add here commands to install the package into debian/retroarch. $(MAKE) DESTDIR=$(CURDIR)/debian/retroarch PREFIX=/usr install - cp $(CURDIR)/debian/retroarch.desktop $(CURDIR)/debian/retroarch/usr/share/applications/ cp $(CURDIR)/retroarch.cfg $(CURDIR)/debian/retroarch/etc/ ifeq ($(ARCH),armhf) rm -f $(CURDIR)/debian/retroarch/usr/bin/retroarch-cg2glsl diff --git a/retroarch.desktop b/retroarch.desktop new file mode 100644 index 0000000000..b7e0d5f082 --- /dev/null +++ b/retroarch.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Name=RetroArch +Type=Application +Comment=Multi-Engine Platform +Icon=retroarch +Exec=retroarch +Terminal=false +StartupNotify=false +Categories=Game;Emulator; From 87d12cb8a0fafcad94a9d93591a5d8822b4e21b8 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Thu, 18 Jun 2015 09:12:14 -0700 Subject: [PATCH 002/822] (Linux) Add keywords to the Desktop Entry --- retroarch.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/retroarch.desktop b/retroarch.desktop index b7e0d5f082..36a622a66d 100644 --- a/retroarch.desktop +++ b/retroarch.desktop @@ -7,4 +7,5 @@ Icon=retroarch Exec=retroarch Terminal=false StartupNotify=false +Keywords=frontend;engine;emulator;multi;xmb;libretro; Categories=Game;Emulator; From ee7e323c8695887e98764b93d31cc820d5a08cd1 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Thu, 18 Jun 2015 09:49:14 -0700 Subject: [PATCH 003/822] (Linux) Add a GenericName to the desktop entry --- retroarch.desktop | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/retroarch.desktop b/retroarch.desktop index 36a622a66d..ffbff3c980 100644 --- a/retroarch.desktop +++ b/retroarch.desktop @@ -1,11 +1,12 @@ [Desktop Entry] Version=1.0 Name=RetroArch +GenericName=Libretro Frontend Type=Application Comment=Multi-Engine Platform Icon=retroarch Exec=retroarch Terminal=false StartupNotify=false -Keywords=frontend;engine;emulator;multi;xmb;libretro; +Keywords=multi;engine;emulator;xmb; Categories=Game;Emulator; From 6cb42bde29bdcdd625bd34e1d79ec93964f71641 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 18 Jul 2015 17:36:06 +0200 Subject: [PATCH 004/822] Set all paths to bundle dirs when RELEASE_BUILD is defined --- frontend/drivers/platform_darwin.m | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 2b66e54282..96d3cc7d0a 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -51,6 +51,10 @@ #include "../../menu/menu.h" #endif +#if 0 +#define RELEASE_BUILD +#endif + typedef enum { CFApplicationDirectory = 1, /* Supported applications (Applications) */ @@ -332,11 +336,10 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], #ifdef OSX strlcat(home_dir_buf, "/RetroArch", sizeof(home_dir_buf)); #endif - - fill_pathname_join(g_defaults.core_dir, home_dir_buf, "modules", sizeof(g_defaults.core_dir)); + fill_pathname_join(g_defaults.core_dir, home_dir_buf, "cores", sizeof(g_defaults.core_dir)); fill_pathname_join(g_defaults.core_info_dir, home_dir_buf, "info", sizeof(g_defaults.core_info_dir)); fill_pathname_join(g_defaults.overlay_dir, home_dir_buf, "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.autoconfig_dir, home_dir_buf, "autoconfig/hid", sizeof(g_defaults.autoconfig_dir)); + fill_pathname_join(g_defaults.autoconfig_dir, home_dir_buf, "autoconfig", sizeof(g_defaults.autoconfig_dir)); fill_pathname_join(g_defaults.core_assets_dir, home_dir_buf, "downloads", sizeof(g_defaults.core_assets_dir)); fill_pathname_join(g_defaults.assets_dir, home_dir_buf, "assets", sizeof(g_defaults.assets_dir)); fill_pathname_join(g_defaults.system_dir, home_dir_buf, "system", sizeof(g_defaults.system_dir)); @@ -347,6 +350,22 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], fill_pathname_join(g_defaults.cheats_dir, home_dir_buf, "cht", sizeof(g_defaults.cheats_dir)); fill_pathname_join(g_defaults.sram_dir, home_dir_buf, "saves", sizeof(g_defaults.sram_dir)); fill_pathname_join(g_defaults.savestate_dir, home_dir_buf, "states", sizeof(g_defaults.savestate_dir)); +#ifdef RELEASE_BUILD + fill_pathname_join(g_defaults.core_dir, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.core_dir)); + fill_pathname_join(g_defaults.core_info_dir, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.core_info_dir)); + fill_pathname_join(g_defaults.overlay_dir, bundle_path_buf, "Contents/Resources/overlays", sizeof(g_defaults.overlay_dir)); + fill_pathname_join(g_defaults.autoconfig_dir, bundle_path_buf, "Contents/Resources/autoconfig", sizeof(g_defaults.autoconfig_dir)); + fill_pathname_join(g_defaults.core_assets_dir, bundle_path_buf, "Contents/Resources/downloads", sizeof(g_defaults.core_assets_dir)); + fill_pathname_join(g_defaults.assets_dir, bundle_path_buf, "Contents/Resources/assets", sizeof(g_defaults.assets_dir)); + fill_pathname_join(g_defaults.system_dir, bundle_path_buf, "Contents/Resources/system", sizeof(g_defaults.system_dir)); + fill_pathname_join(g_defaults.menu_config_dir, bundle_path_buf, "Contents/Resources/configs", sizeof(g_defaults.menu_config_dir)); + fill_pathname_join(g_defaults.config_path, g_defaults.menu_config_dir, "retroarch.cfg", sizeof(g_defaults.config_path)); + fill_pathname_join(g_defaults.database_dir, bundle_path_buf, "Contents/Resources/rdb", sizeof(g_defaults.database_dir)); + fill_pathname_join(g_defaults.cursor_dir, bundle_path_buf, "Contents/Resources/cursors", sizeof(g_defaults.cursor_dir)); + fill_pathname_join(g_defaults.cheats_dir, bundle_path_buf, "Contents/Resources/cht", sizeof(g_defaults.cheats_dir)); + fill_pathname_join(g_defaults.sram_dir, bundle_path_buf, "Contents/Resources/saves", sizeof(g_defaults.sram_dir)); + fill_pathname_join(g_defaults.savestate_dir, bundle_path_buf, "Contents/Resources/states", sizeof(g_defaults.savestate_dir)); +#endif CFTemporaryDirectory(temp_dir, sizeof(temp_dir)); strlcpy(g_defaults.extraction_dir, temp_dir, sizeof(g_defaults.extraction_dir)); From 5a324c1dacc722527167825537ccc5e00d873ec1 Mon Sep 17 00:00:00 2001 From: IlDucci Date: Sat, 18 Jul 2015 18:21:49 +0200 Subject: [PATCH 005/822] Update menu_hash_es.c Starting a Spanish translation. --- menu/intl/menu_hash_es.c | 878 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 877 insertions(+), 1 deletion(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 5e32e0320a..317d81f427 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -21,9 +21,885 @@ const char *menu_hash_to_str_es(uint32_t hash) { + switch (hash) { - case 0: + case MENU_LABEL_VALUE_HELP_SCANNING_CONTENT: + return "Buscar contenido"; + case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + return "Solucionar problemas de vídeo/sonido"; + case MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD: + return "Cambiar el mando virtual sobreimpuesto"; + case MENU_LABEL_VALUE_HELP_WHAT_IS_A_CORE: + return "¿Qué es un núcleo?"; + case MENU_LABEL_VALUE_HELP_LOADING_CONTENT: + return "Cargando contenidos"; + case MENU_LABEL_VALUE_HELP_LIST: + return "Ayuda"; + case MENU_LABEL_VALUE_HELP_CONTROLS: + return "Controles básicos del menú"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS: + return "Controles básicos del menú"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP: + return "Desplazar hacia arriba"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN: + return "Desplazar hacia abajo"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM: + return "Confirmar/Aceptar"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK: + return "Retroceder"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_START: + return "Valores predeterminados"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO: + return "Información"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU: + return "Alternar menú"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT: + return "Abandonar"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD: + return "Alternar teclado"; + case MENU_LABEL_VALUE_OPEN_ARCHIVE: + return "Abrir archivo como una carpeta"; + case MENU_LABEL_VALUE_LOAD_ARCHIVE: + return "Cargar archivo con un núcleo"; + case MENU_LABEL_VALUE_INPUT_BACK_AS_MENU_TOGGLE_ENABLE: + return "Permitir alternar Back como menú"; + case MENU_LABEL_VALUE_INPUT_MENU_TOGGLE_GAMEPAD_COMBO: + return "Combo para alternar mando con menú"; + case MENU_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU: + return "Ocultar lo superpuesto del menú"; + case MENU_VALUE_LANG_POLISH: + return "Polaco"; + case MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED: + return "Cargar superposición preferida automáticamente"; + case MENU_LABEL_VALUE_UPDATE_CORE_INFO_FILES: + return "Actualizar archivos de información de núcleos"; + case MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT: + return "Descargar contenido"; + case MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY: + return "(Escanear esta carpeta)"; + case MENU_LABEL_VALUE_SCAN_FILE: + return "Escanear archivo"; + case MENU_LABEL_VALUE_SCAN_DIRECTORY: + return "Escanear carpeta"; + case MENU_LABEL_VALUE_ADD_CONTENT_LIST: + return "Añadir contenido"; + case MENU_LABEL_VALUE_INFORMATION_LIST: + return "Información"; + case MENU_LABEL_VALUE_USE_BUILTIN_PLAYER: + return "Usar reproductor de medios integrado"; + case MENU_LABEL_VALUE_CONTENT_SETTINGS: + return "Menú rápido"; + case MENU_LABEL_VALUE_RDB_ENTRY_CRC32: + return "CRC32"; + case MENU_LABEL_VALUE_RDB_ENTRY_MD5: + return "MD5"; + case MENU_LABEL_VALUE_LOAD_CONTENT_LIST: + return "Cargar contenido"; + case MENU_VALUE_ASK_ARCHIVE: + return "Preguntar"; + case MENU_LABEL_VALUE_PRIVACY_SETTINGS: + return "Privacidad"; + case MENU_VALUE_HORIZONTAL_MENU: + return "Menú horizontal"; + case MENU_LABEL_VALUE_NO_SETTINGS_FOUND: + return "No se ha encontrado una configuración."; + case MENU_LABEL_VALUE_NO_PERFORMANCE_COUNTERS: + return "No hay contadores de rendimiento."; + case MENU_LABEL_VALUE_DRIVER_SETTINGS: + return "Controlador"; + case MENU_LABEL_VALUE_CONFIGURATION_SETTINGS: + return "Configuración"; + case MENU_LABEL_VALUE_CORE_SETTINGS: + return "Núcleo"; + case MENU_LABEL_VALUE_VIDEO_SETTINGS: + return "Vídeo"; + case MENU_LABEL_VALUE_LOGGING_SETTINGS: + return "Registros"; + case MENU_LABEL_VALUE_SAVING_SETTINGS: + return "Guardado"; + case MENU_LABEL_VALUE_REWIND_SETTINGS: + return "Rebobinado"; + case MENU_LABEL_VALUE_CUSTOM_VIEWPORT_1: + return "Asignar esquina superior izquierda"; + case MENU_LABEL_VALUE_CUSTOM_VIEWPORT_2: + return "Asignar esquina inferior derecha"; + case MENU_VALUE_SHADER: + return "Shader"; + case MENU_VALUE_CHEAT: + return "Truco"; + case MENU_VALUE_USER: + return "Usuario"; + case MENU_LABEL_VALUE_SYSTEM_BGM_ENABLE: + return "Activar música del sistema"; + case MENU_VALUE_RETROPAD: + return "RetroPad"; + case MENU_VALUE_RETROKEYBOARD: + return "RetroKeyboard"; + case MENU_LABEL_VALUE_AUDIO_BLOCK_FRAMES: + return "Bloquear fotogramas"; + case MENU_LABEL_VALUE_INPUT_BIND_MODE: + return "Modo de asignación"; + case MENU_LABEL_VALUE_AUTOCONFIG_DESCRIPTOR_LABEL_SHOW: + return "Mostrar etiquetas de descripción del autoconfigurado"; + case MENU_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW: + return "Mostrar etiquetas de descripción de la entrada del núcleo"; + case MENU_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND: + return "Ocultar descripciones sin asignar de la entrada del núcleo"; + case MENU_LABEL_VALUE_VIDEO_FONT_ENABLE: + return "Mostrar mensajes en pantalla"; + case MENU_LABEL_VALUE_VIDEO_FONT_PATH: + return "Fuente de mensajes en pantalla"; + case MENU_LABEL_VALUE_VIDEO_FONT_SIZE: + return "Tamaño de mensajes en pantalla"; + case MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_X: + return "Posición X de mensajes en pantalla"; + case MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_Y: + return "Posición Y de mensajes en pantalla"; + case MENU_LABEL_VALUE_VIDEO_SOFT_FILTER: + return "Activar filtros por software"; + case MENU_LABEL_VALUE_VIDEO_FILTER_FLICKER: + return "Filtro de parpadeo"; + case MENU_VALUE_DIRECTORY_CONTENT: + return "(Carpeta de contenido)"; + case MENU_VALUE_UNKNOWN: + return "Desconocido"; + case MENU_VALUE_DONT_CARE: + return "No importa"; + case MENU_VALUE_LINEAR: + return "Lineal"; + case MENU_VALUE_NEAREST: + return "Más cercano"; + case MENU_VALUE_DIRECTORY_DEFAULT: + return "(Predeterminada)"; + case MENU_VALUE_DIRECTORY_NONE: + return "(Ninguna)"; + case MENU_VALUE_NOT_AVAILABLE: + return "No disponible"; + case MENU_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY: + return "Carpeta de reasignación de entrada"; + case MENU_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR: + return "Carpeta de autoconfiguración de dispositivo de entrada"; + case MENU_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY: + return "Carpeta de configuración de grabación"; + case MENU_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY: + return "Carpeta de salida de grabación"; + case MENU_LABEL_VALUE_SCREENSHOT_DIRECTORY: + return "Carpeta de capturas de pantalla"; + case MENU_LABEL_VALUE_PLAYLIST_DIRECTORY: + return "Carpeta de listas de reproducción"; + case MENU_LABEL_VALUE_SAVEFILE_DIRECTORY: + return "Carpeta de partidas guardadas"; + case MENU_LABEL_VALUE_SAVESTATE_DIRECTORY: + return "Carpeta de guardados rápidos"; + case MENU_LABEL_VALUE_STDIN_CMD_ENABLE: + return "Comandos stdin"; + case MENU_LABEL_VALUE_VIDEO_DRIVER: + return "Controlador de vídeo"; + case MENU_LABEL_VALUE_RECORD_ENABLE: + return "Activar grabación"; + case MENU_LABEL_VALUE_VIDEO_GPU_RECORD: + return "Activar grabación de GPU"; + case MENU_LABEL_VALUE_RECORD_PATH: + return "Carpeta de grabación"; + case MENU_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY: + return "Usar carpeta de salida"; + case MENU_LABEL_VALUE_RECORD_CONFIG: + return "Configuración de grabación"; + case MENU_LABEL_VALUE_VIDEO_POST_FILTER_RECORD: + return "Activar grabación con filtros"; + case MENU_LABEL_VALUE_CORE_ASSETS_DIRECTORY: + return "Carpeta de descargas"; + case MENU_LABEL_VALUE_ASSETS_DIRECTORY: + return "Carpeta de recursos"; + case MENU_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY: + return "Carpeta de fondos de pantalla dinámicos"; + case MENU_LABEL_VALUE_BOXARTS_DIRECTORY: + return "Carpeta de carátulas"; + case MENU_LABEL_VALUE_RGUI_BROWSER_DIRECTORY: + return "Carpeta del navegador de archivos"; + case MENU_LABEL_VALUE_RGUI_CONFIG_DIRECTORY: + return "Carpeta de configuración"; + case MENU_LABEL_VALUE_LIBRETRO_INFO_PATH: + return "Carpeta de información del núcleo"; + case MENU_LABEL_VALUE_LIBRETRO_DIR_PATH: + return "Carpeta de núcleos"; + case MENU_LABEL_VALUE_CURSOR_DIRECTORY: + return "Carpeta de cursores"; + case MENU_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY: + return "Carpeta de bases de datos de contenidos"; + case MENU_LABEL_VALUE_SYSTEM_DIRECTORY: + return "Carpeta de sistema/BIOS"; + case MENU_LABEL_VALUE_CHEAT_DATABASE_PATH: + return "Carpeta de archivos de trucos"; + case MENU_LABEL_VALUE_EXTRACTION_DIRECTORY: + return "Carpeta de extracción"; + case MENU_LABEL_VALUE_AUDIO_FILTER_DIR: + return "Carpeta de filtros de sonido"; + case MENU_LABEL_VALUE_VIDEO_SHADER_DIR: + return "Carpeta de shaders de vídeo"; + case MENU_LABEL_VALUE_VIDEO_FILTER_DIR: + return "Carpeta de filtros de vídeo"; + case MENU_LABEL_VALUE_OVERLAY_DIRECTORY: + return "Carpeta de superimposiciones"; + case MENU_LABEL_VALUE_OSK_OVERLAY_DIRECTORY: + return "Carpeta de teclados superimpuestos"; + case MENU_LABEL_VALUE_NETPLAY_CLIENT_SWAP_INPUT: + return "Intercambiar entrada en red"; + case MENU_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE: + return "Permitir espectadores en red"; + case MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS: + return "Dirección IP"; + case MENU_LABEL_VALUE_NETPLAY_TCP_UDP_PORT: + return "Puerto TCP/UDP para juego en red"; + case MENU_LABEL_VALUE_NETPLAY_ENABLE: + return "Activar juego en red"; + case MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES: + return "Retraso de fotogramas en red"; + case MENU_LABEL_VALUE_NETPLAY_MODE: + return "Activar cliente en red"; + case MENU_LABEL_VALUE_RGUI_SHOW_START_SCREEN: + return "Mostrar pantalla de inicio"; + case MENU_LABEL_VALUE_TITLE_COLOR: + return "Color de títulos del menú"; + case MENU_LABEL_VALUE_ENTRY_HOVER_COLOR: + return "Color de entrada resaltada del menú"; + case MENU_LABEL_VALUE_TIMEDATE_ENABLE: + return "Mostrar fecha y hora"; + case MENU_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE: + return "Buclar datos hilados"; + case MENU_LABEL_VALUE_ENTRY_NORMAL_COLOR: + return "Color de entrada normal del menú"; + case MENU_LABEL_VALUE_SHOW_ADVANCED_SETTINGS: + return "Mostrar ajustes avanzados"; + case MENU_LABEL_VALUE_MOUSE_ENABLE: + return "Soporte para teclado"; + case MENU_LABEL_VALUE_POINTER_ENABLE: + return "Soporte táctil"; + case MENU_LABEL_VALUE_CORE_ENABLE: + return "Mostrar nombre del núcleo"; + case MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE: + return "Activar anulación de PPP"; + case MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE: + return "Anular PPP"; + case MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE: + return "Suspender salvapantallas"; + case MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION: + return "Desactivar composición de escritorio"; + case MENU_LABEL_VALUE_PAUSE_NONACTIVE: + return "Detenerse en segundo plano"; + case MENU_LABEL_VALUE_UI_COMPANION_START_ON_BOOT: + return "Ejecutar al inicio la IU ayudante"; + case MENU_LABEL_VALUE_UI_MENUBAR_ENABLE: + return "Barra de menús"; + case MENU_LABEL_VALUE_ARCHIVE_MODE: + return "Acción para asociar tipos de archivo"; + case MENU_LABEL_VALUE_NETWORK_CMD_ENABLE: + return "Comandos de red"; + case MENU_LABEL_VALUE_NETWORK_CMD_PORT: + return "Puerto de comandos de red"; + case MENU_LABEL_VALUE_HISTORY_LIST_ENABLE: + return "Activar historial"; + case MENU_LABEL_VALUE_CONTENT_HISTORY_SIZE: + return "Tamaño del historial"; + case MENU_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO: + return "Tasa de fotogramas estimada del monitor"; + case MENU_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN: + return "Anular al cerrar núcleo"; + case MENU_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE: + return "No ejecutar automáticamente un núcleo"; + case MENU_LABEL_VALUE_FRAME_THROTTLE_ENABLE: + return "Limitar velocidad de ejecución máxima"; + case MENU_LABEL_VALUE_FASTFORWARD_RATIO: + return "Velocidad de ejecución máxima"; + case MENU_LABEL_VALUE_AUTO_REMAPS_ENABLE: + return "Cargar automáticamente archivos de reasignación"; + case MENU_LABEL_VALUE_SLOWMOTION_RATIO: + return "Cantidad de velocidad reducida"; + case MENU_LABEL_VALUE_CORE_SPECIFIC_CONFIG: + return "Configuración por núcleo"; + case MENU_LABEL_VALUE_AUTO_OVERRIDES_ENABLE: + return "Cargar automáticamente archivos de anulación"; + case MENU_LABEL_VALUE_CONFIG_SAVE_ON_EXIT: + return "Guardar configuración al salir"; + case MENU_LABEL_VALUE_VIDEO_SMOOTH: + return "Filtrado bilineal por hardware"; + case MENU_LABEL_VALUE_VIDEO_GAMMA: + return "Gamma de vídeo"; + case MENU_LABEL_VALUE_VIDEO_ALLOW_ROTATE: + return "Permitir rotación"; + case MENU_LABEL_VALUE_VIDEO_HARD_SYNC: + return "Sincronización de GPU por hardware"; + case MENU_LABEL_VALUE_VIDEO_SWAP_INTERVAL: + return "Intervalo de alternado de VSync"; + case MENU_LABEL_VALUE_VIDEO_VSYNC: + return "VSync/Sincronía vertical"; + case MENU_LABEL_VALUE_VIDEO_THREADED: + return "Vídeo multinúcleo"; + case MENU_LABEL_VALUE_VIDEO_ROTATION: + return "Rotación"; + case MENU_LABEL_VALUE_VIDEO_GPU_SCREENSHOT: + return "Permitir capturas de pantalla de GPU"; + case MENU_LABEL_VALUE_VIDEO_CROP_OVERSCAN: + return "Recortar Overscan (Reinicio)"; + case MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX: + return "Índice de proporción de aspecto"; + case MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO: + return "Proporción de aspecto automática"; + case MENU_LABEL_VALUE_VIDEO_FORCE_ASPECT: + return "Forzar proporción de aspecto"; + case MENU_LABEL_VALUE_VIDEO_REFRESH_RATE: + return "Tasa de actualización"; + case MENU_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE: + return "Forzar anulación del FBO sRGB"; + case MENU_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN: + return "Pantalla completa en ventana"; + case MENU_LABEL_VALUE_PAL60_ENABLE: + return "Utilizar modo PAL60"; + case MENU_LABEL_VALUE_VIDEO_VFILTER: + return "Filtro contra parpadeos"; + case MENU_LABEL_VALUE_VIDEO_VI_WIDTH: + return "Asignar ancho de interfaz visual"; + case MENU_LABEL_VALUE_VIDEO_BLACK_FRAME_INSERTION: + return "Insertar fotogramas negros"; + case MENU_LABEL_VALUE_VIDEO_HARD_SYNC_FRAMES: + return "Sincronizar fotogramas de CPU por hardware"; + case MENU_LABEL_VALUE_SORT_SAVEFILES_ENABLE: + return "Ordenar partidas guardadas por carpetas"; + case MENU_LABEL_VALUE_SORT_SAVESTATES_ENABLE: + return "Ordenar guardados rápidos por carpetas"; + case MENU_LABEL_VALUE_VIDEO_FULLSCREEN: + return "Pantalla completa"; + case MENU_LABEL_VALUE_VIDEO_SCALE: + return "Escala de ventana"; + case MENU_LABEL_VALUE_VIDEO_SCALE_INTEGER: + return "Escala integral"; + case MENU_LABEL_VALUE_PERFCNT_ENABLE: + return "Contadores de rendimiento"; + case MENU_LABEL_VALUE_LIBRETRO_LOG_LEVEL: + return "Nivel de registro del núcleo"; + case MENU_LABEL_VALUE_LOG_VERBOSITY: + return "Verbosidad del registro"; + case MENU_LABEL_VALUE_SAVESTATE_AUTO_LOAD: + return "Cargar guardado rápido automáticamente"; + case MENU_LABEL_VALUE_SAVESTATE_AUTO_INDEX: + return "Indizar automáticamente guardados rápidos"; + case MENU_LABEL_VALUE_SAVESTATE_AUTO_SAVE: + return "Guardado rápido automático"; + case MENU_LABEL_VALUE_AUTOSAVE_INTERVAL: + return "Intervalo de autoguardados SaveRAM"; + case MENU_LABEL_VALUE_BLOCK_SRAM_OVERWRITE: + return "No sobrescribir SaveRAM al cargar un guardado rápido"; + case MENU_LABEL_VALUE_VIDEO_SHARED_CONTEXT: + return "Activar contexto compartido por HW"; + case MENU_LABEL_VALUE_RESTART_RETROARCH: + return "Reiniciar RetroArch"; + case MENU_LABEL_VALUE_NETPLAY_NICKNAME: + return "Nombre de usuario"; + case MENU_LABEL_VALUE_USER_LANGUAGE: + return "Idioma"; + case MENU_LABEL_VALUE_CAMERA_ALLOW: + return "Permitir cámara"; + case MENU_LABEL_VALUE_LOCATION_ALLOW: + return "Permitir ubicación"; + case MENU_LABEL_VALUE_PAUSE_LIBRETRO: + return "Pausar al activar el menú"; + case MENU_LABEL_VALUE_INPUT_OSK_OVERLAY_ENABLE: + return "Mostrar teclado superpuesto"; + case MENU_LABEL_VALUE_INPUT_OVERLAY_ENABLE: + return "Mostrar superimposición"; + case MENU_LABEL_VALUE_VIDEO_MONITOR_INDEX: + return "Índice del monitor"; + case MENU_LABEL_VALUE_VIDEO_FRAME_DELAY: + return "Retraso de fotogramas"; + case MENU_LABEL_VALUE_INPUT_DUTY_CYCLE: + return "Ciclo de deberes"; + case MENU_LABEL_VALUE_INPUT_TURBO_PERIOD: + return "Período de turbo"; + case MENU_LABEL_VALUE_INPUT_AXIS_THRESHOLD: + return "Margen de ejes de entrada"; + case MENU_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE: + return "Permitir reasignar controles"; + case MENU_LABEL_VALUE_INPUT_MAX_USERS: + return "N.º de usuarios máximos"; + case MENU_LABEL_VALUE_INPUT_AUTODETECT_ENABLE: + return "Activar autoconfiguración"; + case MENU_LABEL_VALUE_AUDIO_OUTPUT_RATE: + return "Frecuencia de salida de sonido (KHz)"; + case MENU_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW: + return "Corte máximo de sincronía de sonido"; + case MENU_LABEL_VALUE_CHEAT_NUM_PASSES: + return "Pasadas de trucos"; + case MENU_LABEL_VALUE_REMAP_FILE_SAVE_CORE: + return "Guardar archivo de reasignación del núcleo"; + case MENU_LABEL_VALUE_REMAP_FILE_SAVE_GAME: + return "Guardar archivo de reasignación del juego"; + case MENU_LABEL_VALUE_CHEAT_APPLY_CHANGES: + return "Aplicar cambios en trucos"; + case MENU_LABEL_VALUE_SHADER_APPLY_CHANGES: + return "Aplicar cambios en shaders"; + case MENU_LABEL_VALUE_REWIND_ENABLE: + return "Activar rebobinado"; + case MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST: + return "Seleccionar de una colección"; + case MENU_LABEL_VALUE_DETECT_CORE_LIST: + return "Seleccionar archivo y detectar núcleo"; + case MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST: + return "Seleccionar archivo descargado y detectar núcleo"; + case MENU_LABEL_VALUE_LOAD_CONTENT_HISTORY: + return "Cargar archivos recientes"; + case MENU_LABEL_VALUE_AUDIO_ENABLE: + return "Activar sonido"; + case MENU_LABEL_VALUE_FPS_SHOW: + return "Mostrar velocidad de fotogramas"; + case MENU_LABEL_VALUE_AUDIO_MUTE: + return "Silenciar sonido"; + case MENU_LABEL_VALUE_AUDIO_VOLUME: + return "Volumen de sonido (dB)"; + case MENU_LABEL_VALUE_AUDIO_SYNC: + return "Activar sincronía de sonido"; + case MENU_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA: + return "Delta de control de frecuencia de sonido"; + case MENU_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES: + return "Pasadas del shader"; + case MENU_LABEL_VALUE_RDB_ENTRY_SHA1: + return "SHA1"; + case MENU_LABEL_VALUE_CONFIGURATIONS: + return "Cargar configuración"; + case MENU_LABEL_VALUE_REWIND_GRANULARITY: + return "Nivel de detalle del rebobinado"; + case MENU_LABEL_VALUE_REMAP_FILE_LOAD: + return "Cargar archivo de reasignación"; + case MENU_LABEL_VALUE_REMAP_FILE_SAVE_AS: + return "Guardar archivo de reasignación como..."; + case MENU_LABEL_VALUE_CUSTOM_RATIO: + return "Proporción personalizada"; + case MENU_LABEL_VALUE_USE_THIS_DIRECTORY: + return "(Utilizar esta carpeta)"; + case MENU_LABEL_VALUE_RDB_ENTRY_START_CONTENT: + return "Ejecutar contenido"; + case MENU_LABEL_VALUE_DISK_OPTIONS: + return "Opciones del disco del núcleo"; + case MENU_LABEL_VALUE_CORE_OPTIONS: + return "Opciones del núcleo"; + case MENU_LABEL_VALUE_CORE_CHEAT_OPTIONS: + return "Opciones de trucos del núcleo"; + case MENU_LABEL_VALUE_CHEAT_FILE_LOAD: + return "Cargar archivo de trucos"; + case MENU_LABEL_VALUE_CHEAT_FILE_SAVE_AS: + return "Guardar archivo de trucos como..."; + case MENU_LABEL_VALUE_CORE_COUNTERS: + return "Contadores del núcleo"; + case MENU_LABEL_VALUE_TAKE_SCREENSHOT: + return "Capturar pantalla"; + case MENU_LABEL_VALUE_RESUME: + return "Reanudar"; + case MENU_LABEL_VALUE_DISK_INDEX: + return "Índice del disco"; + case MENU_LABEL_VALUE_FRONTEND_COUNTERS: + return "Contadores del frontend"; + case MENU_LABEL_VALUE_DISK_IMAGE_APPEND: + return "Asignar imagen de disco"; + case MENU_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS: + return "Estado de la bandeja del disco"; + case MENU_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE: + return "No hay listas de reproducción."; + case MENU_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE: + return "No hay información del núcleo."; + case MENU_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE: + return "No hay opciones del núcleo."; + case MENU_LABEL_VALUE_NO_CORES_AVAILABLE: + return "No hay núcleos."; + case MENU_VALUE_NO_CORE: + return "Sin núcleo"; + case MENU_LABEL_VALUE_DATABASE_MANAGER: + return "Gestor de bases de datos"; + case MENU_LABEL_VALUE_CURSOR_MANAGER: + return "Gestor de cursores"; + case MENU_VALUE_MAIN_MENU: + return "Menú principal"; + case MENU_LABEL_VALUE_SETTINGS: + return "Ajustes"; + case MENU_LABEL_VALUE_QUIT_RETROARCH: + return "Abandonar RetroArch"; + case MENU_LABEL_VALUE_HELP: + return "Ayuda"; + case MENU_LABEL_VALUE_SAVE_NEW_CONFIG: + return "Guardar configuración nueva"; + case MENU_LABEL_VALUE_RESTART_CONTENT: + return "Reiniciar contenido"; + case MENU_LABEL_VALUE_CORE_UPDATER_LIST: + return "Actualizador de núcleos"; + case MENU_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL: + return "URL de núcleos de Buildbot"; + case MENU_LABEL_VALUE_BUILDBOT_ASSETS_URL: + return "URL de recursos de Buildbot"; + case MENU_LABEL_VALUE_NAVIGATION_WRAPAROUND_HORIZONTAL: + return "Seguir navegación: horizontalmente"; + case MENU_LABEL_VALUE_NAVIGATION_WRAPAROUND_VERTICAL: + return "Seguir navegación: verticalmente"; + case MENU_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE: + return "Filtrar por extensiones compatibles"; + case MENU_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE: + return "Extraer automáticamente el archivo descargado"; + case MENU_LABEL_VALUE_SYSTEM_INFORMATION: + return "Información del sistema"; + case MENU_LABEL_VALUE_ONLINE_UPDATER: + return "Actualizador en línea"; + case MENU_LABEL_VALUE_CORE_INFORMATION: + return "Información del núcleo"; + case MENU_LABEL_VALUE_DIRECTORY_NOT_FOUND: + return "No se ha encontrado la carpeta."; + case MENU_LABEL_VALUE_NO_ITEMS: + return "No hay elementos."; + case MENU_LABEL_VALUE_CORE_LIST: + return "Cargar núcleo"; + case MENU_LABEL_VALUE_LOAD_CONTENT: + return "Seleccionar archivo"; + case MENU_LABEL_VALUE_CLOSE_CONTENT: + return "Cerrar contenido"; + case MENU_LABEL_VALUE_MANAGEMENT: + return "Ajustes de bases de datos"; + case MENU_LABEL_VALUE_SAVE_STATE: + return "Guardado rápido"; + case MENU_LABEL_VALUE_LOAD_STATE: + return "Carga rápida"; + case MENU_LABEL_VALUE_RESUME_CONTENT: + return "Reanudar contenido"; + case MENU_LABEL_VALUE_INPUT_DRIVER: + return "Controlador de entrada"; + case MENU_LABEL_VALUE_AUDIO_DRIVER: + return "Controlador de sonido"; + case MENU_LABEL_VALUE_JOYPAD_DRIVER: + return "Controlador de joypad"; + case MENU_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER: + return "Controlador de remuestreo de sonido"; + case MENU_LABEL_VALUE_RECORD_DRIVER: + return "Controlador de grabación"; + case MENU_LABEL_VALUE_MENU_DRIVER: + return "Controlador de menú"; + case MENU_LABEL_VALUE_CAMERA_DRIVER: + return "Controlador de cámara"; + case MENU_LABEL_VALUE_LOCATION_DRIVER: + return "Controlador de ubicación"; + case MENU_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE: + return "No se ha podido leer el archivo comprimido."; + case MENU_LABEL_VALUE_OVERLAY_SCALE: + return "Escala de superimposición"; + case MENU_LABEL_VALUE_OVERLAY_PRESET: + return "Preajuste de superimposición"; + case MENU_LABEL_VALUE_AUDIO_LATENCY: + return "Retraso de sonido (ms)"; + case MENU_LABEL_VALUE_AUDIO_DEVICE: + return "Controlador de sonido"; + case MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET: + return "Preajuste de teclado superimpuesto"; + case MENU_LABEL_VALUE_OVERLAY_OPACITY: + return "Opacidad de la superimposición"; + case MENU_LABEL_VALUE_MENU_WALLPAPER: + return "Fondo del menú"; + case MENU_LABEL_VALUE_DYNAMIC_WALLPAPER: + return "Fondo de pantalla dinámico"; + case MENU_LABEL_VALUE_BOXART: + return "Mostrar carátula"; + case MENU_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS: + return "Opciones de reasignación de entrada para el núcleo"; + case MENU_LABEL_VALUE_SHADER_OPTIONS: + return "Opciones de shaders"; + case MENU_LABEL_VALUE_VIDEO_SHADER_PARAMETERS: + return "Previsualizar parámetros de shaders"; + case MENU_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS: + return "Parámetros de shaders del menú"; + case MENU_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS: + return "Guardar preajuste de shaders como..."; + case MENU_LABEL_VALUE_NO_SHADER_PARAMETERS: + return "No hay parámetros de shaders."; + case MENU_LABEL_VALUE_VIDEO_SHADER_PRESET: + return "Cargar preajuste de shaders"; + case MENU_LABEL_VALUE_VIDEO_FILTER: + return "Filtro de vídeo"; + case MENU_LABEL_VALUE_AUDIO_DSP_PLUGIN: + return "Plugin DSP de sonido"; + case MENU_LABEL_VALUE_STARTING_DOWNLOAD: + return "Iniciando descarga: "; + case MENU_VALUE_SECONDS: + return "segundos"; + case MENU_VALUE_OFF: //Not changed. Would be "SÍ" + return "OFF"; + case MENU_VALUE_ON: //Not changed. Would be "NO" + return "ON"; + case MENU_LABEL_VALUE_UPDATE_ASSETS: + return "Actualizar recursos"; + case MENU_LABEL_VALUE_UPDATE_CHEATS: + return "Actualizar trucos"; + case MENU_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES: + return "Actualizar perfiles de autoconfiguración"; + case MENU_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES_HID: + return "Actualizar perfiles de autoconfiguración (HID)"; + case MENU_LABEL_VALUE_UPDATE_DATABASES: + return "Actualizar bases de datos"; + case MENU_LABEL_VALUE_UPDATE_OVERLAYS: + return "Actualizar sobreimposiciones"; + case MENU_LABEL_VALUE_UPDATE_CG_SHADERS: + return "Actualizar shaders Cg"; + case MENU_LABEL_VALUE_UPDATE_GLSL_SHADERS: + return "Actualizar shaders GLSL"; + case MENU_LABEL_VALUE_CORE_INFO_CORE_NAME: + return "Nombre del núcleo"; + case MENU_LABEL_VALUE_CORE_INFO_CORE_LABEL: + return "Etiqueta del núcleo"; + case MENU_LABEL_VALUE_CORE_INFO_SYSTEM_NAME: + return "Nombre del sistema"; + case MENU_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER: + return "Fabricante del sistema"; + case MENU_LABEL_VALUE_CORE_INFO_CATEGORIES: + return "Categorías"; + case MENU_LABEL_VALUE_CORE_INFO_AUTHORS: + return "Autores"; + case MENU_LABEL_VALUE_CORE_INFO_PERMISSIONS: + return "Permisos"; + case MENU_LABEL_VALUE_CORE_INFO_LICENSES: + return "Licencia(s)"; + case MENU_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS: + return "Extensiones compatibles"; + case MENU_LABEL_VALUE_CORE_INFO_FIRMWARE: + return "Firmware"; + case MENU_LABEL_VALUE_CORE_INFO_CORE_NOTES: + return "Notas del núcleo"; + case MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE: + return "Fecha de compilado"; + case MENU_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION: + return "Versión de Git"; + case MENU_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES: + return "Características de CPU"; + case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER: + return "Identificador del frontend"; + case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME: + return "Nombre del frontend"; + case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS: + return "S.O. del frontend"; + case MENU_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL: + return "Nivel de RetroRating"; + case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE: + return "Fuente de alimentación"; + case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE: + return "No hay una fuente"; + case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING: + return "Cargando"; + case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED: + return "Cargada"; + case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING: + return "Descargando"; + case MENU_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER: + return "Controlador de contexto de vídeo"; + case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH: + return "Mostrar ancho métrico (mm)"; + case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT: + return "Mostrar alto métrico (mm)"; + case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI: + return "Mostrar PPP métricos"; + case MENU_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT: + return "Soporte de LibretroDB"; + case MENU_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT: + return "Soporte de sobreimposiciones"; + case MENU_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT: + return "Soporte de interfaz de comandos"; + case MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT: + return "Soporte de interfaz de comandos en red"; + case MENU_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT: + return "Soporte de Cocoa"; + case MENU_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT: + return "Soporte de PNG (RPNG)"; + case MENU_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT: + return "Soporte de SDL1.2"; + case MENU_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT: + return "Soporte de SDL2"; + case MENU_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT: + return "Soporte de OpenGL"; + case MENU_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT: + return "Soporte de OpenGL ES"; + case MENU_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT: + return "Soporte de multinúcleo"; + case MENU_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT: + return "Soporte de KMS/EGL"; + case MENU_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT: + return "Soporte de Udev"; + case MENU_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT: + return "Soporte de OpenVG"; + case MENU_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT: + return "Soporte de EGL"; + case MENU_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT: + return "Soporte de X11"; + case MENU_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT: + return "Soporte de Wayland"; + case MENU_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT: + return "Soporte de XVideo"; + case MENU_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT: + return "Soporte de ALSA"; + case MENU_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT: + return "Soporte de OSS"; + case MENU_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT: + return "Soporte de OpenAL"; + case MENU_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT: + return "Soporte de OpenSL"; + case MENU_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT: + return "Soporte de RSound"; + case MENU_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT: + return "Soporte de RoarAudio"; + case MENU_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT: + return "Soporte de JACK"; + case MENU_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT: + return "Soporte de PulseAudio"; + case MENU_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT: + return "Soporte de DirectSound"; + case MENU_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT: + return "Soporte de XAudio2"; + case MENU_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT: + return "Soporte de Zlib"; + case MENU_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT: + return "Soporte de 7zip"; + case MENU_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT: + return "Soporte de librerías dinámicas"; + case MENU_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT: + return "Soporte de Cg"; + case MENU_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT: + return "Soporte de GLSL"; + case MENU_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT: + return "Soporte de HLSL"; + case MENU_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT: + return "Soporte de parseo XML libxml2"; + case MENU_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT: + return "Soporte de imágenes SDL"; + case MENU_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT: + return "Soporte de render-to-texture OpenGL/Direct3D (shaders multipasos)"; + case MENU_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT: + return "Soporte de FFmpeg"; + case MENU_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT: + return "Soporte de CoreText"; + case MENU_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT: + return "Soporte de FreeType"; + case MENU_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT: + return "Soporte de juego en red (peer-to-peer)"; + case MENU_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT: + return "Soporte de Python (soporte de scripts para shaders)"; + case MENU_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT: + return "Soporte de Video4Linux2"; + case MENU_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT: + return "Soporte de Libusb"; + case MENU_LABEL_VALUE_YES: + return "Sí"; + case MENU_LABEL_VALUE_NO: + return "No"; + case MENU_VALUE_BACK: + return "BACK"; + case MENU_LABEL_VALUE_SCREEN_RESOLUTION: + return "Resolución de pantalla"; + case MENU_VALUE_DISABLED: + return "Desactivado"; + case MENU_VALUE_PORT: + return "Puerto"; + case MENU_VALUE_NONE: + return "Ninguno"; + case MENU_LABEL_VALUE_RDB_ENTRY_DEVELOPER: + return "Desarrollador"; + case MENU_LABEL_VALUE_RDB_ENTRY_PUBLISHER: + return "Distribuidora"; + case MENU_LABEL_VALUE_RDB_ENTRY_DESCRIPTION: + return "Descripción"; + case MENU_LABEL_VALUE_RDB_ENTRY_NAME: + return "Nombre"; + case MENU_LABEL_VALUE_RDB_ENTRY_ORIGIN: + return "Origen"; + case MENU_LABEL_VALUE_RDB_ENTRY_FRANCHISE: + return "Franquicia"; + case MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH: + return "Mes de lanzamiento"; + case MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR: + return "Año de lanzamiento"; + case MENU_VALUE_TRUE: + return "Activado"; + case MENU_VALUE_FALSE: + return "Desactivado"; + case MENU_VALUE_MISSING: + return "Desaparecido"; + case MENU_VALUE_PRESENT: + return "Presente"; + case MENU_VALUE_OPTIONAL: + return "Opcional"; + case MENU_VALUE_REQUIRED: + return "Necesario"; + case MENU_VALUE_STATUS: + return "Estado"; + case MENU_LABEL_VALUE_AUDIO_SETTINGS: + return "Sonido"; + case MENU_LABEL_VALUE_INPUT_SETTINGS: + return "Entrada"; + case MENU_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS: + return "Textos en pantalla (OSD)"; + case MENU_LABEL_VALUE_OVERLAY_SETTINGS: + return "Sobreimposición"; + case MENU_LABEL_VALUE_MENU_SETTINGS: + return "Menú"; + case MENU_LABEL_VALUE_MULTIMEDIA_SETTINGS: + return "Multimedia"; + case MENU_LABEL_VALUE_UI_SETTINGS: + return "Interfaz de usuario"; + case MENU_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS: + return "Navegador de archivos del menú"; + case MENU_LABEL_VALUE_CORE_UPDATER_SETTINGS: + return "Actualizador"; + case MENU_LABEL_VALUE_NETWORK_SETTINGS: + return "Red"; + case MENU_LABEL_VALUE_PLAYLIST_SETTINGS: + return "Lista de reproducción"; + case MENU_LABEL_VALUE_USER_SETTINGS: + return "Usuario"; + case MENU_LABEL_VALUE_DIRECTORY_SETTINGS: + return "Carpeta"; + case MENU_LABEL_VALUE_RECORDING_SETTINGS: + return "Grabación"; + case MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE: + return "No hay información disponible."; + case MENU_LABEL_VALUE_INPUT_USER_BINDS: + return "Asignaciones de entrada del usuario %u"; + case MENU_VALUE_LANG_ENGLISH: + return "Inglés"; + case MENU_VALUE_LANG_JAPANESE: + return "Japonés"; + case MENU_VALUE_LANG_FRENCH: + return "Francés"; + case MENU_VALUE_LANG_SPANISH: + return "Español"; + case MENU_VALUE_LANG_GERMAN: + return "Alemán"; + case MENU_VALUE_LANG_ITALIAN: + return "Italiano"; + case MENU_VALUE_LANG_DUTCH: + return "Holandés"; + case MENU_VALUE_LANG_PORTUGUESE: + return "Portugués"; + case MENU_VALUE_LANG_RUSSIAN: + return "Ruso"; + case MENU_VALUE_LANG_KOREAN: + return "Coreano"; + case MENU_VALUE_LANG_CHINESE_TRADITIONAL: + return "Chino (Tradicional)"; + case MENU_VALUE_LANG_CHINESE_SIMPLIFIED: + return "Chino (Simplificado)"; + case MENU_VALUE_LANG_ESPERANTO: + return "Esperanto"; + case MENU_VALUE_LEFT_ANALOG: + return "Analógico izquierdo"; + case MENU_VALUE_RIGHT_ANALOG: + return "Analógico derecho"; + case MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS: + return "Asignaciones de teclas rápidas"; + case MENU_LABEL_VALUE_FRAME_THROTTLE_SETTINGS: + return "Aumento de fotogramas"; + case MENU_VALUE_SEARCH: + return "Buscar:"; + case MENU_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER: + return "Utilizar visualizador de imágenes integrado"; default: break; } From 88caa51a5eff6258e30697055474513a170a1489 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 18:32:24 +0200 Subject: [PATCH 006/822] (ES) Fix some labels --- menu/intl/menu_hash_es.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 317d81f427..3255028a9d 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -100,8 +100,8 @@ const char *menu_hash_to_str_es(uint32_t hash) return "Preguntar"; case MENU_LABEL_VALUE_PRIVACY_SETTINGS: return "Privacidad"; - case MENU_VALUE_HORIZONTAL_MENU: - return "Menú horizontal"; + case MENU_VALUE_HORIZONTAL_MENU: /* Don't change. Breaks everything. (Would be: "Menú horizontal") */ + return "Horizontal Menu"; case MENU_LABEL_VALUE_NO_SETTINGS_FOUND: return "No se ha encontrado una configuración."; case MENU_LABEL_VALUE_NO_PERFORMANCE_COUNTERS: @@ -516,8 +516,8 @@ const char *menu_hash_to_str_es(uint32_t hash) return "Gestor de bases de datos"; case MENU_LABEL_VALUE_CURSOR_MANAGER: return "Gestor de cursores"; - case MENU_VALUE_MAIN_MENU: - return "Menú principal"; + case MENU_VALUE_MAIN_MENU: /* Don't change. Breaks everything. (Would be: "Menú principal") */ + return "Main Menu"; case MENU_LABEL_VALUE_SETTINGS: return "Ajustes"; case MENU_LABEL_VALUE_QUIT_RETROARCH: From 09b9683e269e389e7b6cd05ad5c581cbc31c5053 Mon Sep 17 00:00:00 2001 From: IlDucci Date: Sat, 18 Jul 2015 18:34:59 +0200 Subject: [PATCH 007/822] Update msg_hash_es.c Starting a Spanish translation. --- intl/msg_hash_es.c | 167 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 166 insertions(+), 1 deletion(-) diff --git a/intl/msg_hash_es.c b/intl/msg_hash_es.c index b04b463150..9dfdac68f4 100644 --- a/intl/msg_hash_es.c +++ b/intl/msg_hash_es.c @@ -20,7 +20,172 @@ const char *msg_hash_to_str_es(uint32_t hash) { switch (hash) { - case 0: + case MSG_PROGRAM: + return "RetroArch"; + case MSG_MOVIE_RECORD_STOPPED: + return "Deteniendo grabación de vídeo."; + case MSG_MOVIE_PLAYBACK_ENDED: + return "Reproducción detenida."; + case MSG_AUTOSAVE_FAILED: + return "No se ha podido iniciar el autoguardado."; + case MSG_NETPLAY_FAILED_MOVIE_PLAYBACK_HAS_STARTED: + return "Se ha iniciado una reproducción. No se puede ejecutar el juego en red."; + case MSG_NETPLAY_FAILED: + return "Error al iniciar el juego en red."; + case MSG_LIBRETRO_ABI_BREAK: + return "se ha compilado con una versión distinta a esta implementación de libretro."; + case MSG_REWIND_INIT_FAILED_NO_SAVESTATES: + return "Esta implementación no admite guardados rápidos. No se puede utilizar el rebobinado."; + case MSG_REWIND_INIT_FAILED_THREADED_AUDIO: + return "La implementación utiliza sonido multinúcleo. No se puede utilizar el rebobinado."; + case MSG_REWIND_INIT_FAILED: + return "Error al iniciar el búfer de rebobinado. Rebobinado desactivado."; + case MSG_REWIND_INIT: + return "Iniciando búfer de rebobinado, tamaño"; + case MSG_CUSTOM_TIMING_GIVEN: + return "Se ha indicado un ritmo personalizado"; + case MSG_VIEWPORT_SIZE_CALCULATION_FAILED: + return "¡Error al calcular el tamaño de ventana! Se utilizarán datos en bruto. Probablemente esto no acabe bien..."; + case MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING: + return "El núcleo Libretro se renderiza por hardware. Es necesario utilizar la grabación post-shaders."; + case MSG_RECORDING_TO: + return "Grabando a"; + case MSG_DETECTED_VIEWPORT_OF: + return "Ventana detectada:"; + case MSG_TAKING_SCREENSHOT: + return "Capturando pantalla."; + case MSG_FAILED_TO_TAKE_SCREENSHOT: + return "Error al capturar pantalla."; + case MSG_FAILED_TO_START_RECORDING: + return "Error al comenzar a grabar."; + case MSG_RECORDING_TERMINATED_DUE_TO_RESIZE: + return "Grabación terminada por cambio de tamaño."; + case MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED: + return "Se está utilizando el núcleo dummy de libretro. Anulando grabación."; + case MSG_UNKNOWN: + return "Desconocido"; + case MSG_LOADING_CONTENT_FILE: + return "Cargando archivo de contenido"; + case MSG_RECEIVED: + return "recibido"; + case MSG_UNRECOGNIZED_COMMAND: + return "Comando no reconocido"; + case MSG_SENDING_COMMAND: + return "Enviando comando"; + case MSG_GOT_INVALID_DISK_INDEX: + return "Se ha obtenido un índice de disco no válido."; + case MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY: + return "Error al extraer el disco de la bandeja."; + case MSG_REMOVED_DISK_FROM_TRAY: + return "Se ha retirado el disco de la bandeja."; + case MSG_VIRTUAL_DISK_TRAY: + return "bandeja de disco virtual."; + case MSG_FAILED_TO: + return "Error:"; + case MSG_TO: + return "a"; + case MSG_SAVING_RAM_TYPE: + return "Guardando tipo de RAM"; + case MSG_SAVING_STATE: + return "Guardando rápidamente"; + case MSG_LOADING_STATE: + return "Cargando rápidamente"; + case MSG_FAILED_TO_LOAD_MOVIE_FILE: + return "Error al cargar el archivo de película"; + case MSG_FAILED_TO_LOAD_CONTENT: + return "Error al cargar el contenido"; + case MSG_COULD_NOT_READ_CONTENT_FILE: + return "No se ha podido leer el archivo de contenido"; + case MSG_GRAB_MOUSE_STATE: + return "Capturar estado de ratón"; + case MSG_PAUSED: + return "En pausa."; + case MSG_UNPAUSED: + return "Sin pausa."; + case MSG_FAILED_TO_LOAD_OVERLAY: + return "Error al cargar sobreimposición."; + case MSG_FAILED_TO_UNMUTE_AUDIO: + return "Error al recuperar el sonido."; + case MSG_AUDIO_MUTED: + return "Sonido silenciado."; + case MSG_AUDIO_UNMUTED: + return "Sonido recuperado."; + case MSG_RESET: + return "Reiniciar"; + case MSG_FAILED_TO_LOAD_STATE: + return "Error al cargar rápidamente desde"; + case MSG_FAILED_TO_SAVE_STATE_TO: + return "Error al guardar rápidamente a"; + case MSG_FAILED_TO_SAVE_SRAM: + return "Error al guardar la SRAM"; + case MSG_STATE_SIZE: + return "Tamaño de guardado rápido"; + case MSG_FOUND_SHADER: + return "Shader encontrado"; + case MSG_SRAM_WILL_NOT_BE_SAVED: + return "No se guardará la SRAM."; + case MSG_BLOCKING_SRAM_OVERWRITE: + return "Bloqueando sobrescritura de SRAM"; + case MSG_CORE_DOES_NOT_SUPPORT_SAVESTATES: + return "El núcleo no es compatible con los guardados rápidos."; + case MSG_SAVED_STATE_TO_SLOT: + return "Guardando rápidamente a la ranura"; + case MSG_SAVED_SUCCESSFULLY_TO: + return "Partida guardada en"; + case MSG_BYTES: + return "bytes"; + case MSG_CONFIG_DIRECTORY_NOT_SET: + return "No se ha asignado la carpeta de configuración. No se puede guardar la nueva configuración."; + case MSG_SKIPPING_SRAM_LOAD: + return "Omitiendo carga de SRAM."; + case MSG_APPENDED_DISK: + return "Disco incorporado"; + case MSG_STARTING_MOVIE_PLAYBACK: + return "Iniciando reproducción."; + case MSG_FAILED_TO_REMOVE_TEMPORARY_FILE: + return "Error al borrar el archivo temporal"; + case MSG_REMOVING_TEMPORARY_CONTENT_FILE: + return "Borrando archivo temporal de contenido"; + case MSG_LOADED_STATE_FROM_SLOT: + return "Carga rápida desde la ranura"; + case MSG_DOWNLOAD_PROGRESS: + return "Progreso de la descarga"; + case MSG_COULD_NOT_PROCESS_ZIP_FILE: + return "No se ha podido procesar el archivo ZIP."; + case MSG_DOWNLOAD_COMPLETE: + return "Descarga completa"; + case MSG_SCANNING_OF_DIRECTORY_FINISHED: + return "Escaneado de carpetas terminado"; + case MSG_SCANNING: + return "Escaneando"; + case MSG_REDIRECTING_CHEATFILE_TO: + return "Redirigiendo archivo de trucos a"; + case MSG_REDIRECTING_SAVEFILE_TO: + return "Redirigiendo partida guardada a"; + case MSG_REDIRECTING_SAVESTATE_TO: + return "Redirigiendo guardado rápido a"; + case MSG_SHADER: + return "Shader"; + case MSG_APPLYING_SHADER: + return "Aplicando shader"; + case MSG_FAILED_TO_APPLY_SHADER: + return "Error al aplicar shader."; + case MSG_STARTING_MOVIE_RECORD_TO: + return "Iniciando grabación en"; + case MSG_FAILED_TO_START_MOVIE_RECORD: + return "Error al iniciar la grabación."; + case MSG_STATE_SLOT: + return "Ranura de guardado rápido"; + case MSG_RESTARTING_RECORDING_DUE_TO_DRIVER_REINIT: + return "Reiniciando grabación debido al reinicio de un controlador."; + case MSG_SLOW_MOTION: + return "Cámara lenta."; + case MSG_SLOW_MOTION_REWIND: + return "Rebobinar cámara lenta."; + case MSG_REWINDING: + return "Rebobinando."; + case MSG_REWIND_REACHED_END: + return "Se ha llegado al final del búfer de rebobinado."; default: break; } From cf915d6524915611f3412eedd31f6fc0fee5a7a7 Mon Sep 17 00:00:00 2001 From: IlDucci Date: Sat, 18 Jul 2015 19:07:17 +0200 Subject: [PATCH 008/822] Update menu_hash_es.c Started with help screens. Spanish translation incomplete. --- menu/intl/menu_hash_es.c | 1075 +++++++++++++++++++++++++++++++++++++- 1 file changed, 1071 insertions(+), 4 deletions(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 3255028a9d..f85141bcbd 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -913,11 +913,1078 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) switch (hash) { - case 0: - default: - ret = -1; + case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: + snprintf(s, len, + "RetroArch utiliza un formato único para\n" + "sincronizar vídeo y sonido que necesita ser\n" + "calibrado con la tasa de actualización de tu\n" + "monitor para obtener el mejor rendimiento.\n" + " \n" + "Si notas cortes de sonido o en la imagen,\n" + "lo normal es que necesites calibrar estos\n" + "ajustes. Aquí van algunas opciones:\n" + " \n" + "a) Ve a '%s' -> '%s' y activa\n" + "'Vídeo multinúcleo'. En este modo la tasa\n" + "de refresco es irrelevante, habrá más fps,\n" + "pero la imagen podría ser menos fluida.\n" + "b) Ve a '%s' -> '%s' y busca\n" + "'%s'. Deja que se ejecute durante\n" + "2048 fotogramas y selecciona Aceptar.", + menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO) + ); break; + case MENU_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC: + snprintf(s, len, + "Para escanear contenidos ve a '%s' y\n" + "selecciona '%s' o %s'.\n" + " \n" + "Esto comparará los archivos con las entradas\n" + "en la base de datos.\n" + "Si hay una coincidencia, añadirá una entrada\n" + "en una colección.\n" + " \n" + "Entonces podrás acceder fácilmente al contenido\n" + "si vas a '%s' ->\n" + "'%s'\n" + "en vez de pasar por el navegador de archivos\n" + "constantemente.\n" + " \n" + "NOTA: El contenido de algunos núcleos podría\n" + "no ser localizable. Entre los ejemplos están\n" + "PlayStation, MAME, FBA, y puede que otros." + , + menu_hash_to_str(MENU_LABEL_VALUE_ADD_CONTENT_LIST), + menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_SCAN_FILE), + menu_hash_to_str(MENU_LABEL_VALUE_LOAD_CONTENT_LIST), + menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST) + ); + break; + case MENU_LABEL_VALUE_MENU_CONTROLS_PROLOG: + snprintf(s, len, + "Puedes usar estos controles en tu mando\n" + "o teclado para controlar el menú: \n" + " \n" + ); + break; + case MENU_LABEL_VALUE_EXTRACTING_PLEASE_WAIT: + strlcpy(s, "Extrayendo, espera, por favor...\n", len); + break; + case MENU_LABEL_WELCOME_TO_RETROARCH: + snprintf(s, len, + "Bienvenido a RetroArch\n" + "\n" + "Para más información dirígete a Ayuda.\n" + ); + break; + case MENU_LABEL_INPUT_DRIVER: + driver_hash = menu_hash_calculate(settings->input.driver); + + switch (driver_hash) + { + case MENU_LABEL_INPUT_DRIVER_UDEV: + snprintf(s, len, + "Controlador de entrada udev. \n" + " \n" + "Este controlador puede funcionar sin X. \n" + " \n" + "Utiliza la API más reciente para joypads \n" + "evdec para dar compatibilidad con joysticks. \n" + "Permite conexión en caliente y force \n" + "feedback (si lo admite el dispositivo). \n" + " \n" + "El controlador lee los eventos evdev para \n" + "dar compatibilidad con teclados. También \n" + "es compatible con retrollamadas de teclado, \n" + "ratones y pantallas táctiles. \n" + " \n" + "La mayoría de las distros tienen los nodos \n" + "/dev/input en modo root-only (modo 600). \n" + "Puedes configurar una regla udev que los haga \n" + "accesibles fuera de la raíz." + ); + break; + case MENU_LABEL_INPUT_DRIVER_LINUXRAW: + snprintf(s, len, + "Controlador de entrada linuxraw. \n" + " \n" + "Este controlador necesita de un TTY activo. \n" + "Los eventos de teclado se leen directamente \n" + "desde el TTY, lo que es más simple pero no tan \n" + "flexible como udev. \n" + "No es compatible con ratones, etc. \n" + " \n" + "Este controlador utiliza la antigua API de \n" + "joysticks (/dev/input/js*)."); + break; + default: + snprintf(s, len, + "Controlador de entrada.\n" + " \n" + "El controlador de vídeo podría forzar \n" + "el uso de un controlador de entrada \n" + "distinto."); + break; + } + break; + case MENU_LABEL_LOAD_CONTENT: + snprintf(s, len, + "Cargar contenido. \n" + "Buscar contenido. \n" + " \n" + "Para cargar contenidos necesitas \n" + "un 'núcleo' y un archivo de contenido.\n" + " \n" + "Para controlar el lugar donde el menú \n" + "empieza a buscar contenidos, cambia \n" + "la opción 'Carpeta del navegador de \n" + "archivos'. En caso de que no esté \n" + "configurada, empezará desde la raíz.\n" + " \n" + "El navegador filtrará las extensiones \n" + "del último núcleo seleccionado en \n" + "'Cargar núcleo' y lo utilizará al \n" + "cargar un contenido." + ); + break; + case MENU_LABEL_CORE_LIST: + snprintf(s, len, + "Cargar núcleo. \n" + " \n" + "Busca una implementación de núcleo \n" + "para libretro. El navegador empezará \n" + "desde la ruta de tu carpeta de núcleos.\n" + "Si está en blanco, empezará desde \n" + "la raíz.\n" + " \n" + "Si la carpeta de núcleos es una carpeta,\n" + "el menú la utilizará como carpeta \n" + "base. Si la carpeta de núcleos es una \n" + "ruta completa, empezará en la carpeta \n" + "donde se encuentre el archivo."); + break; + case MENU_LABEL_LOAD_CONTENT_HISTORY: + snprintf(s, len, + "Cargar contenido del historial. \n" + " \n" + "Cuando se cargan contenidos, estos y \n" + "las combinaciones de núcleos de libretro \n" + "se guardan en el historial. \n" + " \n" + "El historial se guarda en un archivo en la \n" + "misma carpeta que el archivo de configura- \n" + "ción de RetroArch. Si no se ha cargado un \n" + "archivo de configuración al iniciar, no se \n" + "guardará ni cargará el historial, y la \n" + "opción no existirá en el menú principal." + ); + break; + case MENU_LABEL_VIDEO_DRIVER: + driver_hash = menu_hash_calculate(settings->video.driver); + + switch (driver_hash) + { + case MENU_LABEL_VIDEO_DRIVER_GL: + snprintf(s, len, + "Controlador de vídeo OpenGL. \n" + " \n" + "Este controlador permite que los núcleos \n" + "libretro GL se utilicen, además de las \n" + "implementaciones renderizadas por soft-\n" + "ware del núcleo.\n" + " \n" + "El rendimiento de las implementaciones \n" + "por software y libretro GL dependen \n" + "del controlador GL que tenga tu \n" + "tarjeta gráfica."); + break; + case MENU_LABEL_VIDEO_DRIVER_SDL2: + snprintf(s, len, + "Controlador de vídeo SDL 2.\n" + " \n" + "Este es un controlador de vídeo por \n" + "software SDL 2.\n" + " \n" + "El rendimiento para las implementaciones \n" + "libretro por software depende de la \n" + "implementación SDL de tu plataforma."); + break; + case MENU_LABEL_VIDEO_DRIVER_SDL1: + snprintf(s, len, + "Controlador de vídeo SDL.\n" + " \n" + "Este es un controlador de vídeo por \n" + "software SDL 1.2.\n" + " \n" + "Su rendimiento es considerado inferior \n" + "a lo óptimo. Utilízalo únicamente como \n" + "último recurso."); + break; + case MENU_LABEL_VIDEO_DRIVER_D3D: + snprintf(s, len, + "Controlador de vídeo Direct3D. \n" + " \n" + "El rendimiento de los núcleos \n" + "que rendericen por software dependerá \n" + "del controlador D3D de tu tarjeta \n" + "gráfica."); + break; + case MENU_LABEL_VIDEO_DRIVER_EXYNOS: + snprintf(s, len, + "Controlador de vídeo Exynos-G2D. \n" + " \n" + "Este es un controlador de vídeo Exynos \n" + "de bajo nivel. Utiliza el bloque G2D \n" + "del SoC Exynos de Samsung para las \n" + "operaciones de blit. \n" + " \n" + "El rendimiento de los núcleos \n" + "renderizados por software debería \n" + "ser óptimo."); + break; + case MENU_LABEL_VIDEO_DRIVER_SUNXI: + snprintf(s, len, + "Controlador de vídeo Sunxi-G2D. \n" + " \n" + "Este es un controlador de vídeo Sunxi \n" + "de bajo nivel. Utiliza el bloque G2D \n" + "de todos los SoC Allwinner."); + break; + default: + snprintf(s, len, + "Controlador de vídeo actual."); + break; + } + break; + case MENU_LABEL_AUDIO_DSP_PLUGIN: + snprintf(s, len, + "Plugin de sonido DSP.\n" + " Procesa el sonido antes de enviarlo \n" + "al controlador." + ); + break; + case MENU_LABEL_AUDIO_RESAMPLER_DRIVER: + driver_hash = menu_hash_calculate(settings->audio.resampler); + + switch (driver_hash) + { + case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_SINC: + snprintf(s, len, + "Implementación SINC en ventana."); + break; + case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_CC: + snprintf(s, len, + "Implementación de cosenos complejos."); + break; + } + break; + case MENU_LABEL_VIDEO_SHADER_PRESET: + snprintf(s, len, + "Cargar preajustes de shaders. \n" + " \n" + " Carga un preajuste " +#ifdef HAVE_CG + "Cg" +#endif +#ifdef HAVE_GLSL +#ifdef HAVE_CG + "/" +#endif + "GLSL" +#endif +#ifdef HAVE_HLSL +#if defined(HAVE_CG) || defined(HAVE_HLSL) + "/" +#endif + "HLSL" +#endif + " directamente. \n" + "El menú de shaders se actualizará. \n" + " \n" + "Si el CGP utiliza métodos de escalado \n" + "complejos (por ejemplo, escalado de \n" + "origen, el mismo factor para X/Y), podría \n" + "no mostrar un factor de escalado correcto \n" + "en el menú." + ); + break; + case MENU_LABEL_VIDEO_SHADER_SCALE_PASS: + snprintf(s, len, + "La escala de esta pasada. \n" + " \n" + "The scale factor accumulates, i.e. 2x \n" + "for first pass and 2x for second pass \n" + "will give you a 4x total scale. \n" + " \n" + "If there is a scale factor for last \n" + "pass, the result is stretched to \n" + "screen with the filter specified in \n" + "'Default Filter'. \n" + " \n" + "If 'Don't Care' is set, either 1x \n" + "scale or stretch to fullscreen will \n" + "be used depending if it's not the last \n" + "pass or not." + ); + break; + case MENU_LABEL_VIDEO_SHADER_NUM_PASSES: + snprintf(s, len, + "Shader Passes. \n" + " \n" + "RetroArch allows you to mix and match various \n" + "shaders with arbitrary shader passes, with \n" + "custom hardware filters and scale factors. \n" + " \n" + "This option specifies the number of shader \n" + "passes to use. If you set this to 0, and use \n" + "Apply Shader Changes, you use a 'blank' shader. \n" + " \n" + "The Default Filter option will affect the \n" + "stretching filter."); + break; + case MENU_LABEL_VIDEO_SHADER_PARAMETERS: + snprintf(s, len, + "Shader Parameters. \n" + " \n" + "Modifies current shader directly. Will not be \n" + "saved to CGP/GLSLP preset file."); + break; + case MENU_LABEL_VIDEO_SHADER_PRESET_PARAMETERS: + snprintf(s, len, + "Shader Preset Parameters. \n" + " \n" + "Modifies shader preset currently in menu." + ); + break; + case MENU_LABEL_VIDEO_SHADER_PASS: + snprintf(s, len, + "Path to shader. \n" + " \n" + "All shaders must be of the same \n" + "type (i.e. CG, GLSL or HLSL). \n" + " \n" + "Set Shader Directory to set where \n" + "the browser starts to look for \n" + "shaders." + ); + break; + case MENU_LABEL_CONFIG_SAVE_ON_EXIT: + snprintf(s, len, + "Saves config to disk on exit.\n" + "Useful for menu as settings can be\n" + "modified. Overwrites the config.\n" + " \n" + "#include's and comments are not \n" + "preserved. \n" + " \n" + "By design, the config file is \n" + "considered immutable as it is \n" + "likely maintained by the user, \n" + "and should not be overwritten \n" + "behind the user's back." +#if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE) + "\nThis is not not the case on \n" + "consoles however, where \n" + "looking at the config file \n" + "manually isn't really an option." +#endif + ); + break; + case MENU_LABEL_VIDEO_SHADER_FILTER_PASS: + snprintf(s, len, + "Hardware filter for this pass. \n" + " \n" + "If 'Don't Care' is set, 'Default \n" + "Filter' will be used." + ); + break; + case MENU_LABEL_AUTOSAVE_INTERVAL: + snprintf(s, len, + "Autosaves the non-volatile SRAM \n" + "at a regular interval.\n" + " \n" + "This is disabled by default unless set \n" + "otherwise. The interval is measured in \n" + "seconds. \n" + " \n" + "A value of 0 disables autosave."); + break; + case MENU_LABEL_INPUT_BIND_DEVICE_TYPE: + snprintf(s, len, + "Input Device Type. \n" + " \n" + "Picks which device type to use. This is \n" + "relevant for the libretro core itself." + ); + break; + case MENU_LABEL_LIBRETRO_LOG_LEVEL: + snprintf(s, len, + "Sets log level for libretro cores \n" + "(GET_LOG_INTERFACE). \n" + " \n" + " If a log level issued by a libretro \n" + " core is below libretro_log level, it \n" + " is ignored.\n" + " \n" + " DEBUG logs are always ignored unless \n" + " verbose mode is activated (--verbose).\n" + " \n" + " DEBUG = 0\n" + " INFO = 1\n" + " WARN = 2\n" + " ERROR = 3" + ); + break; + case MENU_LABEL_STATE_SLOT_INCREASE: + case MENU_LABEL_STATE_SLOT_DECREASE: + snprintf(s, len, + "State slots.\n" + " \n" + " With slot set to 0, save state name is *.state \n" + " (or whatever defined on commandline).\n" + "When slot is != 0, path will be (path)(d), \n" + "where (d) is slot number."); + break; + case MENU_LABEL_SHADER_APPLY_CHANGES: + snprintf(s, len, + "Apply Shader Changes. \n" + " \n" + "After changing shader settings, use this to \n" + "apply changes. \n" + " \n" + "Changing shader settings is a somewhat \n" + "expensive operation so it has to be \n" + "done explicitly. \n" + " \n" + "When you apply shaders, the menu shader \n" + "settings are saved to a temporary file (either \n" + "menu.cgp or menu.glslp) and loaded. The file \n" + "persists after RetroArch exits. The file is \n" + "saved to Shader Directory." + ); + break; + case MENU_LABEL_INPUT_BIND_DEVICE_ID: + snprintf(s, len, + "Input Device. \n" + " \n" + "Picks which gamepad to use for user N. \n" + "The name of the pad is available." + ); + break; + case MENU_LABEL_MENU_TOGGLE: + snprintf(s, len, + "Toggles menu."); + break; + case MENU_LABEL_GRAB_MOUSE_TOGGLE: + snprintf(s, len, + "Toggles mouse grab.\n" + " \n" + "When mouse is grabbed, RetroArch hides the \n" + "mouse, and keeps the mouse pointer inside \n" + "the window to allow relative mouse input to \n" + "work better."); + break; + case MENU_LABEL_DISK_NEXT: + snprintf(s, len, + "Cycles through disk images. Use after \n" + "ejecting. \n" + " \n" + " Complete by toggling eject again."); + break; + case MENU_LABEL_VIDEO_FILTER: +#ifdef HAVE_FILTERS_BUILTIN + snprintf(s, len, + "CPU-based video filter."); +#else + snprintf(s, len, + "CPU-based video filter.\n" + " \n" + "Path to a dynamic library."); +#endif + break; + case MENU_LABEL_AUDIO_DEVICE: + snprintf(s, len, + "Override the default audio device \n" + "the audio driver uses.\n" + "This is driver dependent. E.g.\n" +#ifdef HAVE_ALSA + " \n" + "ALSA wants a PCM device." +#endif +#ifdef HAVE_OSS + " \n" + "OSS wants a path (e.g. /dev/dsp)." +#endif +#ifdef HAVE_JACK + " \n" + "JACK wants portnames (e.g. system:playback1\n" + ",system:playback_2)." +#endif +#ifdef HAVE_RSOUND + " \n" + "RSound wants an IP address to an RSound \n" + "server." +#endif + ); + break; + case MENU_LABEL_DISK_EJECT_TOGGLE: + snprintf(s, len, + "Toggles eject for disks.\n" + " \n" + "Used for multiple-disk content."); + break; + case MENU_LABEL_ENABLE_HOTKEY: + snprintf(s, len, + "Enable other hotkeys.\n" + " \n" + " If this hotkey is bound to either keyboard, \n" + "joybutton or joyaxis, all other hotkeys will \n" + "be disabled unless this hotkey is also held \n" + "at the same time. \n" + " \n" + "This is useful for RETRO_KEYBOARD centric \n" + "implementations which query a large area of \n" + "the keyboard, where it is not desirable that \n" + "hotkeys get in the way."); + break; + case MENU_LABEL_REWIND_ENABLE: + snprintf(s, len, + "Enable rewinding.\n" + " \n" + "This will take a performance hit, \n" + "so it is disabled by default."); + break; + case MENU_LABEL_LIBRETRO_DIR_PATH: + snprintf(s, len, + "Core Directory. \n" + " \n" + "A directory for where to search for \n" + "libretro core implementations."); + break; + case MENU_LABEL_VIDEO_REFRESH_RATE_AUTO: + snprintf(s, len, + "Refresh Rate Auto.\n" + " \n" + "The accurate refresh rate of our monitor (Hz).\n" + "This is used to calculate audio input rate with \n" + "the formula: \n" + " \n" + "audio_input_rate = game input rate * display \n" + "refresh rate / game refresh rate\n" + " \n" + "If the implementation does not report any \n" + "values, NTSC defaults will be assumed for \n" + "compatibility.\n" + " \n" + "This value should stay close to 60Hz to avoid \n" + "large pitch changes. If your monitor does \n" + "not run at 60Hz, or something close to it, \n" + "disable VSync, and leave this at its default."); + break; + case MENU_LABEL_VIDEO_ROTATION: + snprintf(s, len, + "Forces a certain rotation \n" + "of the screen.\n" + " \n" + "The rotation is added to rotations which\n" + "the libretro core sets (see Video Allow\n" + "Rotate)."); + break; + case MENU_LABEL_VIDEO_SCALE: + snprintf(s, len, + "Fullscreen resolution.\n" + " \n" + "Resolution of 0 uses the \n" + "resolution of the environment.\n"); + break; + case MENU_LABEL_FASTFORWARD_RATIO: + snprintf(s, len, + "Fastforward ratio." + " \n" + "The maximum rate at which content will\n" + "be run when using fast forward.\n" + " \n" + " (E.g. 5.0 for 60 fps content => 300 fps \n" + "cap).\n" + " \n" + "RetroArch will go to sleep to ensure that \n" + "the maximum rate will not be exceeded.\n" + "Do not rely on this cap to be perfectly \n" + "accurate."); + break; + case MENU_LABEL_VIDEO_MONITOR_INDEX: + snprintf(s, len, + "Which monitor to prefer.\n" + " \n" + "0 (default) means no particular monitor \n" + "is preferred, 1 and up (1 being first \n" + "monitor), suggests RetroArch to use that \n" + "particular monitor."); + break; + case MENU_LABEL_VIDEO_CROP_OVERSCAN: + snprintf(s, len, + "Forces cropping of overscanned \n" + "frames.\n" + " \n" + "Exact behavior of this option is \n" + "core-implementation specific."); + break; + case MENU_LABEL_VIDEO_SCALE_INTEGER: + snprintf(s, len, + "Only scales video in integer \n" + "steps.\n" + " \n" + "The base size depends on system-reported \n" + "geometry and aspect ratio.\n" + " \n" + "If Force Aspect is not set, X/Y will be \n" + "integer scaled independently."); + break; + case MENU_LABEL_AUDIO_VOLUME: + snprintf(s, len, + "Audio volume, expressed in dB.\n" + " \n" + " 0 dB is normal volume. No gain will be applied.\n" + "Gain can be controlled in runtime with Input\n" + "Volume Up / Input Volume Down."); + break; + case MENU_LABEL_AUDIO_RATE_CONTROL_DELTA: + snprintf(s, len, + "Audio rate control.\n" + " \n" + "Setting this to 0 disables rate control.\n" + "Any other value controls audio rate control \n" + "delta.\n" + " \n" + "Defines how much input rate can be adjusted \n" + "dynamically.\n" + " \n" + " Input rate is defined as: \n" + " input rate * (1.0 +/- (rate control delta))"); + break; + case MENU_LABEL_AUDIO_MAX_TIMING_SKEW: + snprintf(s, len, + "Maximum audio timing skew.\n" + " \n" + "Defines the maximum change in input rate.\n" + "You may want to increase this to enable\n" + "very large changes in timing, for example\n" + "running PAL cores on NTSC displays, at the\n" + "cost of inaccurate audio pitch.\n" + " \n" + " Input rate is defined as: \n" + " input rate * (1.0 +/- (max timing skew))"); + break; + case MENU_LABEL_OVERLAY_NEXT: + snprintf(s, len, + "Toggles to next overlay.\n" + " \n" + "Wraps around."); + break; + case MENU_LABEL_LOG_VERBOSITY: + snprintf(s, len, + "Enable or disable verbosity level \n" + "of frontend."); + break; + case MENU_LABEL_VOLUME_UP: + snprintf(s, len, + "Increases audio volume."); + break; + case MENU_LABEL_VOLUME_DOWN: + snprintf(s, len, + "Decreases audio volume."); + break; + case MENU_LABEL_VIDEO_DISABLE_COMPOSITION: + snprintf(s, len, + "Forcibly disable composition.\n" + "Only valid on Windows Vista/7 for now."); + break; + case MENU_LABEL_PERFCNT_ENABLE: + snprintf(s, len, + "Enable or disable frontend \n" + "performance counters."); + break; + case MENU_LABEL_SYSTEM_DIRECTORY: + snprintf(s, len, + "System Directory. \n" + " \n" + "Sets the 'system' directory.\n" + "Cores can query for this\n" + "directory to load BIOSes, \n" + "system-specific configs, etc."); + break; + case MENU_LABEL_SAVESTATE_AUTO_SAVE: + snprintf(s, len, + "Automatically saves a savestate at the \n" + "end of RetroArch's lifetime.\n" + " \n" + "RetroArch will automatically load any savestate\n" + "with this path on startup if 'Auto Load State\n" + "is enabled."); + break; + case MENU_LABEL_VIDEO_THREADED: + snprintf(s, len, + "Use threaded video driver.\n" + " \n" + "Using this might improve performance at \n" + "possible cost of latency and more video \n" + "stuttering."); + break; + case MENU_LABEL_VIDEO_VSYNC: + snprintf(s, len, + "Video V-Sync.\n"); + break; + case MENU_LABEL_VIDEO_HARD_SYNC: + snprintf(s, len, + "Attempts to hard-synchronize \n" + "CPU and GPU.\n" + " \n" + "Can reduce latency at cost of \n" + "performance."); + break; + case MENU_LABEL_REWIND_GRANULARITY: + snprintf(s, len, + "Rewind granularity.\n" + " \n" + " When rewinding defined number of \n" + "frames, you can rewind several frames \n" + "at a time, increasing the rewinding \n" + "speed."); + break; + case MENU_LABEL_SCREENSHOT: + snprintf(s, len, + "Take screenshot."); + break; + case MENU_LABEL_VIDEO_FRAME_DELAY: + snprintf(s, len, + "Sets how many milliseconds to delay\n" + "after VSync before running the core.\n" + "\n" + "Can reduce latency at cost of\n" + "higher risk of stuttering.\n" + " \n" + "Maximum is 15."); + break; + case MENU_LABEL_VIDEO_HARD_SYNC_FRAMES: + snprintf(s, len, + "Sets how many frames CPU can \n" + "run ahead of GPU when using 'GPU \n" + "Hard Sync'.\n" + " \n" + "Maximum is 3.\n" + " \n" + " 0: Syncs to GPU immediately.\n" + " 1: Syncs to previous frame.\n" + " 2: Etc ..."); + break; + case MENU_LABEL_VIDEO_BLACK_FRAME_INSERTION: + snprintf(s, len, + "Inserts a black frame inbetween \n" + "frames.\n" + " \n" + "Useful for 120 Hz monitors who want to \n" + "play 60 Hz material with eliminated \n" + "ghosting.\n" + " \n" + "Video refresh rate should still be \n" + "configured as if it is a 60 Hz monitor \n" + "(divide refresh rate by 2)."); + break; + case MENU_LABEL_RGUI_SHOW_START_SCREEN: + snprintf(s, len, + "Show startup screen in menu.\n" + "Is automatically set to false when seen\n" + "for the first time.\n" + " \n" + "This is only updated in config if\n" + "'Save Configuration on Exit' is enabled.\n"); + break; + case MENU_LABEL_CORE_SPECIFIC_CONFIG: + snprintf(s, len, + "Load up a specific config file \n" + "based on the core being used.\n"); + break; + case MENU_LABEL_VIDEO_FULLSCREEN: + snprintf(s, len, "Toggles fullscreen."); + break; + case MENU_LABEL_BLOCK_SRAM_OVERWRITE: + snprintf(s, len, + "Block SRAM from being overwritten \n" + "when loading save states.\n" + " \n" + "Might potentially lead to buggy games."); + break; + case MENU_LABEL_PAUSE_NONACTIVE: + snprintf(s, len, + "Pause gameplay when window focus \n" + "is lost."); + break; + case MENU_LABEL_VIDEO_GPU_SCREENSHOT: + snprintf(s, len, + "Screenshots output of GPU shaded \n" + "material if available."); + break; + case MENU_LABEL_SCREENSHOT_DIRECTORY: + snprintf(s, len, + "Screenshot Directory. \n" + " \n" + "Directory to dump screenshots to." + ); + break; + case MENU_LABEL_VIDEO_SWAP_INTERVAL: + snprintf(s, len, + "VSync Swap Interval.\n" + " \n" + "Uses a custom swap interval for VSync. Set this \n" + "to effectively halve monitor refresh rate."); + break; + case MENU_LABEL_SAVEFILE_DIRECTORY: + snprintf(s, len, + "Savefile Directory. \n" + " \n" + "Save all save files (*.srm) to this \n" + "directory. This includes related files like \n" + ".bsv, .rt, .psrm, etc...\n" + " \n" + "This will be overridden by explicit command line\n" + "options."); + break; + case MENU_LABEL_SAVESTATE_DIRECTORY: + snprintf(s, len, + "Savestate Directory. \n" + " \n" + "Save all save states (*.state) to this \n" + "directory.\n" + " \n" + "This will be overridden by explicit command line\n" + "options."); + break; + case MENU_LABEL_ASSETS_DIRECTORY: + snprintf(s, len, + "Assets Directory. \n" + " \n" + " This location is queried by default when \n" + "menu interfaces try to look for loadable \n" + "assets, etc."); + break; + case MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY: + snprintf(s, len, + "Dynamic Wallpapers Directory. \n" + " \n" + " The place to store wallpapers that will \n" + "be loaded dynamically by the menu depending \n" + "on context."); + break; + case MENU_LABEL_SLOWMOTION_RATIO: + snprintf(s, len, + "Slowmotion ratio." + " \n" + "When slowmotion, content will slow\n" + "down by factor."); + break; + case MENU_LABEL_INPUT_AXIS_THRESHOLD: + snprintf(s, len, + "Defines axis threshold.\n" + " \n" + "How far an axis must be tilted to result\n" + "in a button press.\n" + " Possible values are [0.0, 1.0]."); + break; + case MENU_LABEL_INPUT_TURBO_PERIOD: + snprintf(s, len, + "Turbo period.\n" + " \n" + "Describes speed of which turbo-enabled\n" + "buttons toggle." + ); + break; + case MENU_LABEL_INPUT_AUTODETECT_ENABLE: + snprintf(s, len, + "Enable input auto-detection.\n" + " \n" + "Will attempt to auto-configure \n" + "joypads, Plug-and-Play style."); + break; + case MENU_LABEL_CAMERA_ALLOW: + snprintf(s, len, + "Allow or disallow camera access by \n" + "cores."); + break; + case MENU_LABEL_LOCATION_ALLOW: + snprintf(s, len, + "Allow or disallow location services \n" + "access by cores."); + break; + case MENU_LABEL_TURBO: + snprintf(s, len, + "Turbo enable.\n" + " \n" + "Holding the turbo while pressing another \n" + "button will let the button enter a turbo \n" + "mode where the button state is modulated \n" + "with a periodic signal. \n" + " \n" + "The modulation stops when the button \n" + "itself (not turbo button) is released."); + break; + case MENU_LABEL_OSK_ENABLE: + snprintf(s, len, + "Enable/disable on-screen keyboard."); + break; + case MENU_LABEL_AUDIO_MUTE: + snprintf(s, len, + "Mute/unmute audio."); + break; + case MENU_LABEL_REWIND: + snprintf(s, len, + "Hold button down to rewind.\n" + " \n" + "Rewind must be enabled."); + break; + case MENU_LABEL_EXIT_EMULATOR: + snprintf(s, len, + "Key to exit RetroArch cleanly." +#if !defined(RARCH_MOBILE) && !defined(RARCH_CONSOLE) + "\nKilling it in any hard way (SIGKILL, \n" + "etc) will terminate without saving\n" + "RAM, etc. On Unix-likes,\n" + "SIGINT/SIGTERM allows\n" + "a clean deinitialization." +#endif + ); + break; + case MENU_LABEL_LOAD_STATE: + snprintf(s, len, + "Loads state."); + break; + case MENU_LABEL_SAVE_STATE: + snprintf(s, len, + "Saves state."); + break; + case MENU_LABEL_NETPLAY_FLIP_PLAYERS: + snprintf(s, len, + "Netplay flip users."); + break; + case MENU_LABEL_CHEAT_INDEX_PLUS: + snprintf(s, len, + "Increment cheat index.\n"); + break; + case MENU_LABEL_CHEAT_INDEX_MINUS: + snprintf(s, len, + "Decrement cheat index.\n"); + break; + case MENU_LABEL_SHADER_PREV: + snprintf(s, len, + "Applies previous shader in directory."); + break; + case MENU_LABEL_SHADER_NEXT: + snprintf(s, len, + "Applies next shader in directory."); + break; + case MENU_LABEL_RESET: + snprintf(s, len, + "Reset the content.\n"); + break; + case MENU_LABEL_PAUSE_TOGGLE: + snprintf(s, len, + "Toggle between paused and non-paused state."); + break; + case MENU_LABEL_CHEAT_TOGGLE: + snprintf(s, len, + "Toggle cheat index.\n"); + break; + case MENU_LABEL_HOLD_FAST_FORWARD: + snprintf(s, len, + "Hold for fast-forward. Releasing button \n" + "disables fast-forward."); + break; + case MENU_LABEL_SLOWMOTION: + snprintf(s, len, + "Hold for slowmotion."); + break; + case MENU_LABEL_FRAME_ADVANCE: + snprintf(s, len, + "Frame advance when content is paused."); + break; + case MENU_LABEL_MOVIE_RECORD_TOGGLE: + snprintf(s, len, + "Toggle between recording and not."); + break; + case MENU_LABEL_L_X_PLUS: + case MENU_LABEL_L_X_MINUS: + case MENU_LABEL_L_Y_PLUS: + case MENU_LABEL_L_Y_MINUS: + case MENU_LABEL_R_X_PLUS: + case MENU_LABEL_R_X_MINUS: + case MENU_LABEL_R_Y_PLUS: + case MENU_LABEL_R_Y_MINUS: + snprintf(s, len, + "Axis for analog stick (DualShock-esque).\n" + " \n" + "Bound as usual, however, if a real analog \n" + "axis is bound, it can be read as a true analog.\n" + " \n" + "Positive X axis is right. \n" + "Positive Y axis is down."); + break; + case MENU_LABEL_VALUE_WHAT_IS_A_CORE_DESC: + snprintf(s, len, + "RetroArch by itself does nothing. \n" + " \n" + "To make it do things, you need to \n" + "load a program into it. \n" + "\n" + "We call such a program 'Libretro core', \n" + "or 'core' in short. \n" + " \n" + "To load a core, select one from\n" + "'Load Core'.\n" + " \n" +#ifdef HAVE_NETWORKING + "You can obtain cores in several ways: \n" + "* Download them by going to\n" + "'%s' -> '%s'.\n" + "* Manually move them over to\n" + "'%s'.", + menu_hash_to_str(MENU_LABEL_VALUE_ONLINE_UPDATER), + menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_LIST), + menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH) +#else + "You can obtain cores by\n" + "manually moving them over to\n" + "'%s'.", + menu_hash_to_str(MENU_LABEL_VALUE_ONLINE_UPDATER), + menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_LIST), + menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH) +#endif + ); + break; + case MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC: + snprintf(s, len, + "You can change the virtual gamepad overlay\n" + "by going to '%s' -> '%s'." + " \n" + "From there you can change the overlay,\n" + "change the size and opacity of the buttons, etc.\n" + " \n" + "NOTE: By default, virtual gamepad overlays are\n" + "hidden when in the menu.\n" + "If you'd like to change this behavior,\n" + "you can set '%s' to false.", + menu_hash_to_str(MENU_LABEL_VALUE_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU) + ); + default: + if (s[0] == '\0') + strlcpy(s, menu_hash_to_str(MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len); + return -1; } - return ret; + return 0; } From 8bf42618d96d625f5cf08ef2c067c1f86a36edc3 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 18 Jul 2015 19:24:14 +0200 Subject: [PATCH 009/822] (OSX) Fix IBAction openCores --- ui/drivers/ui_cocoa.m | 52 ++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index f2ce32cfc7..e0429f488d 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -268,34 +268,40 @@ static void poll_iteration(void) } } -- (IBAction)openCore:(id)sender -{ - NSOpenPanel* panel = (NSOpenPanel*)[NSOpenPanel openPanel]; +- (IBAction)openCore:(id)sender { + NSOpenPanel* panel = (NSOpenPanel*)[NSOpenPanel openPanel]; #if defined(MAC_OS_X_VERSION_10_6) - [panel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) - { - [[NSApplication sharedApplication] stopModal]; - - if (result == NSOKButton && panel.URL) - { - settings_t *settings = config_get_ptr(); - NSURL *url = (NSURL*)panel.URL; - NSString *__core = url.path; - const char *core_name = settings->libretro_directory; - - if (core_name) + [panel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) + { + [[NSApplication sharedApplication] stopModal]; + + if (result == NSOKButton && panel.URL) { - strlcpy(settings->libretro_directory, __core.UTF8String, sizeof(settings->libretro_directory)); - ui_companion_event_command(EVENT_CMD_LOAD_CORE); + menu_handle_t *menu = menu_driver_get_ptr(); + global_t *global = global_get_ptr(); + settings_t *settings = config_get_ptr(); + NSURL *url = (NSURL*)panel.URL; + NSString *__core = url.path; + + if (__core) + { + strlcpy(settings->libretro, __core.UTF8String, sizeof(settings->libretro)); + ui_companion_event_command(EVENT_CMD_LOAD_CORE); + + if (menu->load_no_content && settings->core.set_supports_no_game_enable) + { + *global->fullpath = '\0'; + menu_common_load_content(false, CORE_TYPE_PLAIN); + } + } + else + [self performSelector:@selector(chooseCore) withObject:nil afterDelay:.5f]; } - else - [self performSelector:@selector(chooseCore) withObject:nil afterDelay:.5f]; - } - }]; + }]; #else - [panel beginSheetForDirectory:nil file:nil modalForWindopw:[self window] modalDelegate:self didEndSelector:@selector(didEndSaveSheet:returnCode:contextInfo:) contextInfo:NULL]; + [panel beginSheetForDirectory:nil file:nil modalForWindopw:[self window] modalDelegate:self didEndSelector:@selector(didEndSaveSheet:returnCode:contextInfo:) contextInfo:NULL]; #endif - [[NSApplication sharedApplication] runModalForWindow:panel]; + [[NSApplication sharedApplication] runModalForWindow:panel]; } - (void)openDocument:(id)sender From cb9deedbf28aaf74779f9bd49cf586ecb78623b5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 20:06:31 +0200 Subject: [PATCH 010/822] Remove showCores dialog --- apple/OSX/en.lproj/MainMenu.xib | 637 +++++++++++++++++--------------- 1 file changed, 345 insertions(+), 292 deletions(-) diff --git a/apple/OSX/en.lproj/MainMenu.xib b/apple/OSX/en.lproj/MainMenu.xib index 27a95fbd4d..b385858376 100644 --- a/apple/OSX/en.lproj/MainMenu.xib +++ b/apple/OSX/en.lproj/MainMenu.xib @@ -1,14 +1,18 @@ - + 1050 - 9L31a - 680 - 949.54 - 353.00 + 10K549 + 823 + 1038.36 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 823 + YES - + YES @@ -16,7 +20,7 @@ PluginDependencyRecalculationVersion - + YES @@ -654,9 +658,11 @@ {3.40282e+38, 3.40282e+38} - + 256 {480, 360} + + {{0, 0}, {2560, 1418}} {3.40282e+38, 3.40282e+38} @@ -664,185 +670,6 @@ RetroArch - - 31 - 2 - {{272, 172}, {276, 89}} - -1535638528 - Window - NSPanel - - {3.40282e+38, 3.40282e+38} - - - 256 - - YES - - - 268 - {{18, 72}, {240, 17}} - - - YES - - 68157504 - 138413056 - Select Core - - LucidaGrande - 1.300000e+01 - 1044 - - - YES - - 6 - System - controlColor - - 3 - MC42NjY2NjY2OQA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - - - - 268 - {{21, 45}, {239, 26}} - - - 1 - YES - - 74448961 - 268436480 - - - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 5 - YES - - - - 274 - {15, 0} - - - YES - - YES - - 1.200000e+01 - 1.000000e+01 - 1.000000e+03 - - 75497472 - 0 - - - LucidaGrande - 1.200000e+01 - 16 - - - 3 - MC4zMzMzMzI5OQA - - - - - 338690112 - 268436480 - - - YES - - 6 - System - controlBackgroundColor - - - - - 3 - YES - - - - 3.000000e+00 - 2.000000e+00 - - - 6 - System - gridColor - - 3 - MC41AA - - - 1.900000e+01 - tableViewAction: - -767524864 - - - - 1 - 15 - 0 - YES - - - - - - 268 - {{180, 13}, {82, 32}} - - YES - - 67108864 - 134217728 - OK - - - -2038284288 - 129 - - DQ - 200 - 25 - - - - {276, 89} - - - {{0, 0}, {2560, 1418}} - {3.40282e+38, 3.40282e+38} - @@ -1167,7 +994,7 @@ -2 - RmlsZSdzIE93bmVyA + File's Owner -1 @@ -1227,11 +1054,11 @@ YES - + @@ -1411,68 +1238,6 @@ - - 557 - - - YES - - - - - - 558 - - - YES - - - - - - - - 559 - - - YES - - - - - - 560 - - - YES - - - - - - 567 - - - - - 568 - - - - - 570 - - - YES - - - - - - 571 - - - 585 @@ -1757,7 +1522,7 @@ YES - + YES -1.IBPluginDependency -2.IBPluginDependency @@ -1798,21 +1563,9 @@ 546.IBPluginDependency 549.IBPluginDependency 551.IBPluginDependency - 557.IBEditorWindowLastContentRect - 557.IBPluginDependency - 557.IBWindowTemplateEditedContentRect - 557.NSWindowTemplate.visibleAtLaunch - 558.IBPluginDependency - 559.IBPluginDependency - 559.IBViewBoundsToFrameTransform 56.IBPluginDependency - 560.IBPluginDependency - 567.IBPluginDependency - 568.IBPluginDependency 57.IBEditorWindowLastContentRect 57.IBPluginDependency - 570.IBPluginDependency - 571.IBPluginDependency 58.IBPluginDependency 585.IBPluginDependency 586.IBEditorWindowLastContentRect @@ -1878,12 +1631,12 @@ com.apple.InterfaceBuilder.CocoaPlugin {{785, 425}, {284, 133}} com.apple.InterfaceBuilder.CocoaPlugin - {{497, 558}, {420, 20}} + {{462, 269}, {420, 20}} com.apple.InterfaceBuilder.CocoaPlugin - {{507, 199}, {480, 360}} + {{438, 199}, {480, 360}} com.apple.InterfaceBuilder.CocoaPlugin - {{507, 199}, {480, 360}} - + {{438, 199}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{856, 535}, {174, 23}} @@ -1896,22 +1649,8 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{329, 640}, {276, 89}} - com.apple.InterfaceBuilder.CocoaPlugin - {{329, 640}, {276, 89}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABBoAAAwooAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{509, 405}, {206, 153}} - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + {{509, 405}, {203, 153}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1950,7 +1689,7 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{600, 465}, {182, 93}} + {{565, 176}, {182, 93}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1958,9 +1697,7 @@ YES - - YES - + YES @@ -1968,9 +1705,7 @@ YES - - YES - + YES @@ -1978,9 +1713,327 @@ 664 - + + + YES + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSDocumentController + NSObject + + YES + + YES + clearRecentDocuments: + newDocument: + openDocument: + saveAllDocuments: + + + YES + id + id + id + id + + + + YES + + YES + clearRecentDocuments: + newDocument: + openDocument: + saveAllDocuments: + + + YES + + clearRecentDocuments: + id + + + newDocument: + id + + + openDocument: + id + + + saveAllDocuments: + id + + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentController.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + 0 - ../RetroArch.xcodeproj + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../RetroArch.xcodeproj 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + From 8ee4fd9c15855e9aa5e9c2aa9274c66d401ab469 Mon Sep 17 00:00:00 2001 From: sergiobenrocha2 Date: Sat, 18 Jul 2015 15:15:54 -0300 Subject: [PATCH 011/822] Fix portuguese string. --- menu/intl/menu_hash_pt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/intl/menu_hash_pt.c b/menu/intl/menu_hash_pt.c index 2aad9b9b21..a7325c4b5c 100644 --- a/menu/intl/menu_hash_pt.c +++ b/menu/intl/menu_hash_pt.c @@ -64,7 +64,7 @@ const char *menu_hash_to_str_pt(uint32_t hash) case MENU_LABEL_VALUE_CONFIGURATION_SETTINGS: return "Configuraes"; case MENU_LABEL_VALUE_CORE_SETTINGS: - return "Atualizao Online"; + return "Core"; case MENU_LABEL_VALUE_VIDEO_SETTINGS: return "Vdeo"; case MENU_LABEL_VALUE_LOGGING_SETTINGS: From 0bc2a86fb546f3d7329f3dd503250b569b909dd3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 20:31:35 +0200 Subject: [PATCH 012/822] (MainMenu.xib) Try to add IBConnectionRecord --- apple/OSX/en.lproj/MainMenu.xib | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apple/OSX/en.lproj/MainMenu.xib b/apple/OSX/en.lproj/MainMenu.xib index b385858376..b4a111c6e8 100644 --- a/apple/OSX/en.lproj/MainMenu.xib +++ b/apple/OSX/en.lproj/MainMenu.xib @@ -978,6 +978,13 @@ 664 + + + openCore: + + + 666 + From 5c258a52f530f2a0569ae1823b9f472cf7c76f42 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 20:32:14 +0200 Subject: [PATCH 013/822] Revert "(MainMenu.xib) Try to add IBConnectionRecord" This reverts commit 0bc2a86fb546f3d7329f3dd503250b569b909dd3. --- apple/OSX/en.lproj/MainMenu.xib | 7 ------- 1 file changed, 7 deletions(-) diff --git a/apple/OSX/en.lproj/MainMenu.xib b/apple/OSX/en.lproj/MainMenu.xib index b4a111c6e8..b385858376 100644 --- a/apple/OSX/en.lproj/MainMenu.xib +++ b/apple/OSX/en.lproj/MainMenu.xib @@ -978,13 +978,6 @@ 664 - - - openCore: - - - 666 - From 824c647377db6743f31884b1482ff007c646a5f7 Mon Sep 17 00:00:00 2001 From: vanfanel Date: Sat, 18 Jul 2015 20:33:07 +0200 Subject: [PATCH 014/822] VIDEO/SUNXI: fixed compilation because of a couple of small errors coming from cleanups. --- gfx/drivers/sunxi_gfx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gfx/drivers/sunxi_gfx.c b/gfx/drivers/sunxi_gfx.c index 6ee59aa53f..547696b25b 100644 --- a/gfx/drivers/sunxi_gfx.c +++ b/gfx/drivers/sunxi_gfx.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -897,7 +898,6 @@ static void sunxi_set_texture_enable(void *data, bool state, bool full_screen) static void sunxi_set_texture_frame(void *data, const void *frame, bool rgb32, unsigned width, unsigned height, float alpha) { - uint32_t line[dst_width]; uint16_t src_pix; uint32_t R, G, B, dst_pix; unsigned int i, j; @@ -908,6 +908,7 @@ static void sunxi_set_texture_frame(void *data, const void *frame, bool rgb32, unsigned int src_pitch = width * 2; unsigned int dst_pitch = _dispvars->sunxi_disp->xres * 4; unsigned int dst_width = _dispvars->sunxi_disp->xres; + uint32_t line[dst_width]; /* Remember, memcpy() works with 8bits pointers for increments. */ char *dst_base_addr = (char*)(_dispvars->pages[0].address); From 99e1a9b297aa7f141496ccc3b4462398d7790c34 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 20:56:47 +0200 Subject: [PATCH 015/822] Get rid of builtin_bswap16/bswap32 - breaks on OSX 10.8 --- libretro-common/include/retro_endianness.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libretro-common/include/retro_endianness.h b/libretro-common/include/retro_endianness.h index 1201e8fece..2c952c04d1 100644 --- a/libretro-common/include/retro_endianness.h +++ b/libretro-common/include/retro_endianness.h @@ -27,10 +27,7 @@ #include #include -#if defined(__llvm__) || (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 408) -#define SWAP16 __builtin_bswap16 -#define SWAP32 __builtin_bswap32 -#elif defined(_MSC_VER) +#if defined(_MSC_VER) #define SWAP16 _byteswap_ushort #define SWAP32 _byteswap_ulong #else From 5cd9fb1da2b7a7108f05b271ecf62ff943cfb965 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 20:59:42 +0200 Subject: [PATCH 016/822] (es) Buildfix --- menu/intl/menu_hash_es.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index f85141bcbd..4bf664eacc 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -909,6 +909,8 @@ const char *menu_hash_to_str_es(uint32_t hash) int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) { + uint32_t driver_hash = 0; + settings_t *settings = config_get_ptr(); int ret = 0; switch (hash) From 2f36994f671bdd007f70ff0273bccd69303daf3c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 21:02:31 +0200 Subject: [PATCH 017/822] Finally linked openCore --- apple/OSX/en.lproj/MainMenu.xib | 496 +++++++++----------------------- 1 file changed, 133 insertions(+), 363 deletions(-) diff --git a/apple/OSX/en.lproj/MainMenu.xib b/apple/OSX/en.lproj/MainMenu.xib index b385858376..a97d13e366 100644 --- a/apple/OSX/en.lproj/MainMenu.xib +++ b/apple/OSX/en.lproj/MainMenu.xib @@ -2,17 +2,21 @@ 1050 - 10K549 - 823 - 1038.36 - 461.00 + 12F45 + 3084 + 1187.40 + 626.00 com.apple.InterfaceBuilder.CocoaPlugin - 823 + 3084 - + YES - + NSCustomObject + NSMenu + NSMenuItem + NSView + NSWindowTemplate YES @@ -656,7 +660,7 @@ RetroArch NSWindow - {3.40282e+38, 3.40282e+38} + 256 @@ -665,7 +669,8 @@ {{0, 0}, {2560, 1418}} - {3.40282e+38, 3.40282e+38} + {10000000000000, 10000000000000} + YES RetroArch @@ -674,6 +679,30 @@ YES + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + performMiniaturize: @@ -698,14 +727,6 @@ 127 - - - orderFrontStandardAboutPanel: - - - - 142 - performClose: @@ -746,14 +767,6 @@ 370 - - - terminate: - - - - 449 - showHelp: @@ -763,12 +776,20 @@ 493 - - delegate - - + + toggleFullScreen: + + - 495 + 593 + + + + openDocument: + + + + 657 @@ -802,14 +823,6 @@ 591 - - - toggleFullScreen: - - - - 593 - basicEvent: @@ -954,14 +967,6 @@ 655 - - - openDocument: - - - - 657 - basicEvent: @@ -978,6 +983,14 @@ 664 + + + openCore: + + + + 665 + @@ -1528,7 +1541,6 @@ -2.IBPluginDependency -3.IBPluginDependency 124.IBPluginDependency - 125.IBEditorWindowLastContentRect 125.IBPluginDependency 126.IBPluginDependency 130.IBPluginDependency @@ -1543,38 +1555,34 @@ 23.IBPluginDependency 236.IBPluginDependency 239.IBPluginDependency - 24.IBEditorWindowLastContentRect 24.IBPluginDependency - 29.IBEditorWindowLastContentRect 29.IBPluginDependency - 371.IBEditorWindowLastContentRect 371.IBPluginDependency 371.IBWindowTemplateEditedContentRect 371.NSWindowTemplate.visibleAtLaunch 372.IBPluginDependency 490.IBPluginDependency - 491.IBEditorWindowLastContentRect 491.IBPluginDependency 492.IBPluginDependency 494.IBPluginDependency 5.IBPluginDependency 545.IBPluginDependency - 546.IBEditorWindowLastContentRect 546.IBPluginDependency 549.IBPluginDependency 551.IBPluginDependency 56.IBPluginDependency - 57.IBEditorWindowLastContentRect 57.IBPluginDependency 58.IBPluginDependency 585.IBPluginDependency - 586.IBEditorWindowLastContentRect 586.IBPluginDependency 587.IBPluginDependency 592.IBPluginDependency - 598.IBEditorWindowLastContentRect - 603.IBEditorWindowLastContentRect - 613.IBEditorWindowLastContentRect + 597.IBPluginDependency + 598.IBPluginDependency + 602.IBPluginDependency + 603.IBPluginDependency + 612.IBPluginDependency + 613.IBPluginDependency 614.IBPluginDependency 616.IBPluginDependency 618.IBPluginDependency @@ -1582,7 +1590,8 @@ 622.IBPluginDependency 624.IBPluginDependency 626.IBPluginDependency - 630.IBEditorWindowLastContentRect + 629.IBPluginDependency + 630.IBPluginDependency 633.IBPluginDependency 635.IBPluginDependency 637.IBPluginDependency @@ -1597,24 +1606,21 @@ 656.IBPluginDependency 658.IBPluginDependency 660.IBPluginDependency - 661.IBEditorWindowLastContentRect 661.IBPluginDependency 663.IBPluginDependency 72.IBPluginDependency 73.IBPluginDependency 79.IBPluginDependency - 81.IBEditorWindowLastContentRect 81.IBPluginDependency 83.IBPluginDependency 92.IBPluginDependency - + YES com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{782, 496}, {143, 23}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1629,46 +1635,13 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{785, 425}, {284, 133}} com.apple.InterfaceBuilder.CocoaPlugin - {{462, 269}, {420, 20}} com.apple.InterfaceBuilder.CocoaPlugin - {{438, 199}, {480, 360}} com.apple.InterfaceBuilder.CocoaPlugin {{438, 199}, {480, 360}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{856, 535}, {174, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{642, 395}, {192, 163}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{509, 405}, {203, 153}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{730, 535}, {151, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{834, 455}, {144, 63}} - {{834, 495}, {185, 23}} - {{834, 455}, {123, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{907, 316}, {79, 203}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1683,13 +1656,41 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{834, 535}, {137, 23}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{565, 176}, {182, 93}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1698,80 +1699,33 @@ YES - - YES - + YES - - YES - + - 664 + 665 - + YES - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSApplicationScripting.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSColorPanel.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSHelpManager.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSPageLayout.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSUserInterfaceItemSearching.h - - - - NSDocumentController + RetroArch NSObject YES YES - clearRecentDocuments: - newDocument: - openDocument: - saveAllDocuments: + basicEvent: + openCore: + showCoresDirectory: + showPreferences: - + YES id id @@ -1783,224 +1737,45 @@ YES YES - clearRecentDocuments: - newDocument: - openDocument: - saveAllDocuments: + basicEvent: + openCore: + showCoresDirectory: + showPreferences: - + YES - clearRecentDocuments: + basicEvent: id - newDocument: + openCore: id - openDocument: + showCoresDirectory: id - saveAllDocuments: + showPreferences: id + + window + NSWindow + + + window + + window + NSWindow + + - IBFrameworkSource - AppKit.framework/Headers/NSDocumentController.h - - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h - - - - NSMenuItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAccessibility.h - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDictionaryController.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDragging.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontManager.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontPanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSKeyValueBinding.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSNibLoading.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSPasteboard.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSavePanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSView.h - - - - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSInterfaceStyle.h - - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSClipView.h - - - - NSView - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSRulerView.h - - - - NSView - NSResponder - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSDrawer.h - - - - NSWindow - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSWindowScripting.h + IBProjectSource + ./Classes/RetroArch.h @@ -2011,16 +1786,11 @@ com.apple.InterfaceBuilder.CocoaPlugin.macosx - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 YES - ../../RetroArch.xcodeproj 3 YES @@ -2029,10 +1799,10 @@ NSMenuCheckmark NSMenuMixedState - + YES - {9, 8} - {7, 2} + {11, 11} + {10, 3} From d06bd1870e86d6534e83d4214c13edd51728de46 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 18 Jul 2015 22:11:59 +0200 Subject: [PATCH 018/822] Move Quick Menu to the top --- menu/menu_setting.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 174bb4f32a..049056cef7 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2502,6 +2502,16 @@ static bool setting_append_list_main_menu_options( START_GROUP(group_info,main_menu, parent_group); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); + if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + { + CONFIG_ACTION( + menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_SETTINGS), + group_info.name, + subgroup_info.name, + parent_group); + } + #if defined(HAVE_DYNAMIC) || defined(HAVE_LIBRETRO_MANAGEMENT) CONFIG_ACTION( menu_hash_to_str(MENU_LABEL_CORE_LIST), @@ -2557,15 +2567,6 @@ static bool setting_append_list_main_menu_options( parent_group); #endif - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) - { - CONFIG_ACTION( - menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), - menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_SETTINGS), - group_info.name, - subgroup_info.name, - parent_group); - } if (mask & SL_FLAG_MAIN_MENU_SETTINGS) { From 49931f4df759d2ef4c22ccd386cb435e2488fb96 Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 18 Jul 2015 15:45:58 -0500 Subject: [PATCH 019/822] build fix --- menu/intl/menu_hash_es.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 4bf664eacc..95d27bcca8 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -16,7 +16,7 @@ #include #include - +#include "../../configuration.h" #include "../menu_hash.h" const char *menu_hash_to_str_es(uint32_t hash) From f3f238381f8e8327cb3fd399d424babae5e618d3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 22:48:45 +0200 Subject: [PATCH 020/822] Take out -Wno-invalid-encoding - GCC doesn't support this, and too much of a pain to selectively take it out --- Makefile.common | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Makefile.common b/Makefile.common index 37f8920246..636ef28685 100644 --- a/Makefile.common +++ b/Makefile.common @@ -251,10 +251,6 @@ ifeq ($(HAVE_PYTHON), 1) endif endif -ifeq ($(OSX), 1) - DEFINES += -Wno-invalid-source-encoding -endif - ifeq ($(HAVE_EMSCRIPTEN), 1) OBJ += frontend/drivers/platform_emscripten.o \ input/drivers/rwebinput_input.o \ From 1fab41ad630725c14beed828cc4709ea0c0e7ba7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 23:32:23 +0200 Subject: [PATCH 021/822] Cleanup --- menu/intl/menu_hash_es.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 95d27bcca8..3ddd49f5df 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -911,7 +911,6 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) { uint32_t driver_hash = 0; settings_t *settings = config_get_ptr(); - int ret = 0; switch (hash) { From c56f1403e57cd733bd9fb81e0709c8abc8d41f32 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 23:41:42 +0200 Subject: [PATCH 022/822] (Darwin) Setup default shader dir --- frontend/drivers/platform_darwin.m | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 96d3cc7d0a..bac7f42c3a 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -336,6 +336,7 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], #ifdef OSX strlcat(home_dir_buf, "/RetroArch", sizeof(home_dir_buf)); #endif + fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_glsl", sizeof(g_defaults.shader_dir)); fill_pathname_join(g_defaults.core_dir, home_dir_buf, "cores", sizeof(g_defaults.core_dir)); fill_pathname_join(g_defaults.core_info_dir, home_dir_buf, "info", sizeof(g_defaults.core_info_dir)); fill_pathname_join(g_defaults.overlay_dir, home_dir_buf, "overlays", sizeof(g_defaults.overlay_dir)); @@ -350,8 +351,16 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], fill_pathname_join(g_defaults.cheats_dir, home_dir_buf, "cht", sizeof(g_defaults.cheats_dir)); fill_pathname_join(g_defaults.sram_dir, home_dir_buf, "saves", sizeof(g_defaults.sram_dir)); fill_pathname_join(g_defaults.savestate_dir, home_dir_buf, "states", sizeof(g_defaults.savestate_dir)); +#if defined(OSX) +#ifdef HAVE_CG + fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_cg", sizeof(g_defaults.shader_dir)); +#endif + fill_pathname_join(g_defaults.audio_filter_dir, home_dir_buf, "audio_filters", sizeof(g_defaults.audio_filter_dir)); + fill_pathname_join(g_defaults.video_filter_dir, home_dir_buf, "video_filters", sizeof(g_defaults.video_filter_dir)); +#endif #ifdef RELEASE_BUILD - fill_pathname_join(g_defaults.core_dir, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.core_dir)); + fill_pathname_join(g_defaults.shader_dir, bundle_path_buf, "Contents/Resources/shaders", sizeof(g_defaults.shader_dir)); + fill_pathname_join(g_defaults.core_dir, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.core_dir)); fill_pathname_join(g_defaults.core_info_dir, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.core_info_dir)); fill_pathname_join(g_defaults.overlay_dir, bundle_path_buf, "Contents/Resources/overlays", sizeof(g_defaults.overlay_dir)); fill_pathname_join(g_defaults.autoconfig_dir, bundle_path_buf, "Contents/Resources/autoconfig", sizeof(g_defaults.autoconfig_dir)); @@ -370,16 +379,6 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], CFTemporaryDirectory(temp_dir, sizeof(temp_dir)); strlcpy(g_defaults.extraction_dir, temp_dir, sizeof(g_defaults.extraction_dir)); - fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_glsl", sizeof(g_defaults.shader_dir)); - -#if defined(OSX) -#ifdef HAVE_CG - fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_cg", sizeof(g_defaults.shader_dir)); -#endif - fill_pathname_join(g_defaults.audio_filter_dir, home_dir_buf, "audio_filters", sizeof(g_defaults.audio_filter_dir)); - fill_pathname_join(g_defaults.video_filter_dir, home_dir_buf, "video_filters", sizeof(g_defaults.video_filter_dir)); -#endif - path_mkdir(bundle_path_buf); if (access(bundle_path_buf, 0755) != 0) From 0bbb0d6913cd7c5c58eb99d81fbf4152d7a12f3e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 18 Jul 2015 23:49:58 +0200 Subject: [PATCH 023/822] (Darwin) Cleanups --- frontend/drivers/platform_darwin.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index bac7f42c3a..071e3e4a51 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -351,14 +351,18 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], fill_pathname_join(g_defaults.cheats_dir, home_dir_buf, "cht", sizeof(g_defaults.cheats_dir)); fill_pathname_join(g_defaults.sram_dir, home_dir_buf, "saves", sizeof(g_defaults.sram_dir)); fill_pathname_join(g_defaults.savestate_dir, home_dir_buf, "states", sizeof(g_defaults.savestate_dir)); + fill_pathname_join(g_defaults.remap_dir, home_dir_buf, "remaps", sizeof(g_defaults.remap_dir)); #if defined(OSX) #ifdef HAVE_CG fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_cg", sizeof(g_defaults.shader_dir)); #endif fill_pathname_join(g_defaults.audio_filter_dir, home_dir_buf, "audio_filters", sizeof(g_defaults.audio_filter_dir)); fill_pathname_join(g_defaults.video_filter_dir, home_dir_buf, "video_filters", sizeof(g_defaults.video_filter_dir)); + fill_pathname_join(g_defaults.playlist_dir, home_dir_buf, "playlists", sizeof(g_defaults.playlist_dir)); #endif #ifdef RELEASE_BUILD + fill_pathname_join(g_defaults.remap_dir, bundle_path_buf, "Contents/Resources/remaps", sizeof(g_defaults.remap_dir)); + fill_pathname_join(g_defaults.playlist_dir, bundle_path_buf, "Contents/Resources/playlists", sizeof(g_defaults.playlist_dir)); fill_pathname_join(g_defaults.shader_dir, bundle_path_buf, "Contents/Resources/shaders", sizeof(g_defaults.shader_dir)); fill_pathname_join(g_defaults.core_dir, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.core_dir)); fill_pathname_join(g_defaults.core_info_dir, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.core_info_dir)); From f073739970ccedae49b8a3d1d30e9581bcbf2246 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 19 Jul 2015 00:14:31 +0200 Subject: [PATCH 024/822] (OSX) Bump up to version 1.2.2 --- apple/OSX/RetroArch-Info.plist | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apple/OSX/RetroArch-Info.plist b/apple/OSX/RetroArch-Info.plist index 812e5ac793..8d5965839e 100644 --- a/apple/OSX/RetroArch-Info.plist +++ b/apple/OSX/RetroArch-Info.plist @@ -30,20 +30,20 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.1 + 1.2.2 CFBundleSignature ???? CFBundleVersion - 1.1 + 1.2.2 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} + NSHighResolutionCapable + NSHumanReadableCopyright Copyright © 2015 RetroArch. All rights reserved. NSMainNibFile MainMenu NSPrincipalClass RApplication - NSHighResolutionCapable - From e223821c229b10b2bc5f03cc5a36b77198d1b514 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jul 2015 11:49:44 +0200 Subject: [PATCH 025/822] (Android) Bump up APK version code; bump up version --- android/phoenix/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/phoenix/AndroidManifest.xml b/android/phoenix/AndroidManifest.xml index cac745286d..3cc37ecd32 100644 --- a/android/phoenix/AndroidManifest.xml +++ b/android/phoenix/AndroidManifest.xml @@ -1,7 +1,7 @@ From 589b92cc9932ae4bc8b669bbb4d5a6aa647de345 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jul 2015 11:50:27 +0200 Subject: [PATCH 026/822] (Wii) Bump up to version 1.2.2 --- wii/pkg/meta.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wii/pkg/meta.xml b/wii/pkg/meta.xml index 6e62847a8b..8b0a801261 100644 --- a/wii/pkg/meta.xml +++ b/wii/pkg/meta.xml @@ -2,7 +2,7 @@ RetroArch Libretro - 1.2.1 + 1.2.2 2012-2015 The cross-platform entertainment system A port of RetroArch to the GameCube/Wii. From 6ce0041fb7f5cdf6ae7cf62f74a0df40120a6e10 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jul 2015 14:27:52 +0200 Subject: [PATCH 027/822] Build fixes --- menu/intl/menu_hash_es.c | 2 -- menu/intl/menu_hash_us.c | 2 -- 2 files changed, 4 deletions(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 3ddd49f5df..7a929bf546 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -1959,8 +1959,6 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) "You can obtain cores by\n" "manually moving them over to\n" "'%s'.", - menu_hash_to_str(MENU_LABEL_VALUE_ONLINE_UPDATER), - menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_LIST), menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH) #endif ); diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index 5698d8348c..74348713a5 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -2568,8 +2568,6 @@ int menu_hash_get_help_us(uint32_t hash, char *s, size_t len) "You can obtain cores by\n" "manually moving them over to\n" "'%s'.", - menu_hash_to_str(MENU_LABEL_VALUE_ONLINE_UPDATER), - menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_LIST), menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH) #endif ); From 4f69b5e34b10f2ef510b98ab302ceec931fe1e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Higor=20Eur=C3=ADpedes?= Date: Fri, 17 Jul 2015 21:55:58 -0300 Subject: [PATCH 028/822] (gl_raster_font) Use a smaller pixel format to store the font atlas --- gfx/drivers_font/gl_raster_font.c | 95 ++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 32 deletions(-) diff --git a/gfx/drivers_font/gl_raster_font.c b/gfx/drivers_font/gl_raster_font.c index c52b720745..0a65530f7b 100644 --- a/gfx/drivers_font/gl_raster_font.c +++ b/gfx/drivers_font/gl_raster_font.c @@ -47,13 +47,68 @@ typedef struct gfx_font_raster_block_t *block; } gl_raster_t; +static void gl_raster_font_free_font(void *data); + +static bool gl_raster_font_upload_atlas(gl_raster_t *font, + const struct font_atlas *atlas, + unsigned width, unsigned height) +{ + unsigned i, j; + GLint gl_internal = GL_LUMINANCE_ALPHA; + GLenum gl_format = GL_LUMINANCE_ALPHA; + size_t ncomponents = 2; + uint8_t *tmp = NULL; + +#ifndef HAVE_OPENGLES + if (font->gl->core_context) + { + GLint swizzle[] = { GL_ONE, GL_ONE, GL_ONE, GL_RED }; + glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzle); + + gl_internal = GL_R8; + gl_format = GL_RED; + ncomponents = 1; + } +#endif + + tmp = (uint8_t*)calloc(height, width * ncomponents); + + if (!tmp) + return false; + + for (i = 0; i < atlas->height; ++i) + { + const uint8_t *src = &atlas->buffer[i * atlas->width]; + uint8_t *dst = &tmp[i * width * ncomponents]; + + if (ncomponents == 1) + { + memcpy(dst, src, atlas->width); + src += atlas->width; + } + else if (ncomponents == 2) + { + for (j = 0; j < atlas->width; ++j) + { + *dst++ = 0xff; + *dst++ = *src++; + } + } + } + + glTexImage2D(GL_TEXTURE_2D, 0, gl_internal, width, height, + 0, gl_format, GL_UNSIGNED_BYTE, tmp); + + free(tmp); + + return true; +} + static void *gl_raster_font_init_font(void *data, const char *font_path, float font_size) { - unsigned width, height; - uint8_t *tmp_buffer; const struct font_atlas *atlas = NULL; - gl_raster_t *font = (gl_raster_t*)calloc(1, sizeof(*font)); + gl_raster_t *font = (gl_raster_t*)calloc(1, sizeof(*font)); if (!font) return NULL; @@ -77,39 +132,15 @@ static void *gl_raster_font_init_font(void *data, atlas = font->font_driver->get_atlas(font->font_data); - width = next_pow2(atlas->width); - height = next_pow2(atlas->height); + font->tex_width = next_pow2(atlas->width);; + font->tex_height = next_pow2(atlas->height);; - /* Ideally, we'd use single component textures, but the - * difference in ways to do that between core GL and GLES/legacy GL - * is too great to bother going down that route. */ - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, - 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - - tmp_buffer = (uint8_t*)malloc(atlas->width * atlas->height * 4); - - if (tmp_buffer) + if (!gl_raster_font_upload_atlas(font, atlas, font->tex_width, font->tex_height)) { - unsigned i; - uint8_t *dst = tmp_buffer; - const uint8_t *src = atlas->buffer; - - for (i = 0; i < atlas->width * atlas->height; i++) - { - *dst++ = 0xff; - *dst++ = 0xff; - *dst++ = 0xff; - *dst++ = *src++; - } - - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, atlas->width, - atlas->height, GL_RGBA, GL_UNSIGNED_BYTE, tmp_buffer); - free(tmp_buffer); + gl_raster_font_free_font(font); + font = NULL; } - font->tex_width = width; - font->tex_height = height; - glBindTexture(GL_TEXTURE_2D, font->gl->texture[font->gl->tex_index]); return font; From f9f98f9f2e44ce596f38308745e323fb85063080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Higor=20Eur=C3=ADpedes?= Date: Sat, 18 Jul 2015 14:19:31 -0300 Subject: [PATCH 029/822] (gl_raster_font) Enable GL_R8 atlas for GL >= 3 --- gfx/drivers_font/gl_raster_font.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gfx/drivers_font/gl_raster_font.c b/gfx/drivers_font/gl_raster_font.c index 0a65530f7b..39d6926449 100644 --- a/gfx/drivers_font/gl_raster_font.c +++ b/gfx/drivers_font/gl_raster_font.c @@ -60,7 +60,12 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font, uint8_t *tmp = NULL; #ifndef HAVE_OPENGLES - if (font->gl->core_context) + struct retro_hw_render_callback *cb = video_driver_callback(); + bool modern = font->gl->core_context || + (cb->context_type == RETRO_HW_CONTEXT_OPENGL && + cb->version_major >= 3); + + if (modern) { GLint swizzle[] = { GL_ONE, GL_ONE, GL_ONE, GL_RED }; glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzle); From 10345e08996a9efc33790bc987c67114679beb1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Higor=20Eur=C3=ADpedes?= Date: Sun, 19 Jul 2015 12:42:36 -0300 Subject: [PATCH 030/822] (gl_raster_font) Add back the old compat code --- gfx/drivers_font/gl_raster_font.c | 45 ++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/gfx/drivers_font/gl_raster_font.c b/gfx/drivers_font/gl_raster_font.c index 39d6926449..f6b749df79 100644 --- a/gfx/drivers_font/gl_raster_font.c +++ b/gfx/drivers_font/gl_raster_font.c @@ -58,9 +58,10 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font, GLenum gl_format = GL_LUMINANCE_ALPHA; size_t ncomponents = 2; uint8_t *tmp = NULL; + struct retro_hw_render_callback *cb = video_driver_callback(); + bool ancient = false; /* add a check here if needed */ #ifndef HAVE_OPENGLES - struct retro_hw_render_callback *cb = video_driver_callback(); bool modern = font->gl->core_context || (cb->context_type == RETRO_HW_CONTEXT_OPENGL && cb->version_major >= 3); @@ -74,7 +75,13 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font, gl_format = GL_RED; ncomponents = 1; } + else #endif + if (ancient) + { + gl_internal = gl_format = GL_RGBA; + ncomponents = 4; + } tmp = (uint8_t*)calloc(height, width * ncomponents); @@ -86,18 +93,32 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font, const uint8_t *src = &atlas->buffer[i * atlas->width]; uint8_t *dst = &tmp[i * width * ncomponents]; - if (ncomponents == 1) + switch (ncomponents) { - memcpy(dst, src, atlas->width); - src += atlas->width; - } - else if (ncomponents == 2) - { - for (j = 0; j < atlas->width; ++j) - { - *dst++ = 0xff; - *dst++ = *src++; - } + case 1: + memcpy(dst, src, atlas->width); + src += atlas->width; + break; + case 2: + for (j = 0; j < atlas->width; ++j) + { + *dst++ = 0xff; + *dst++ = *src++; + } + break; + case 4: + for (j = 0; j < atlas->width; ++j) + { + *dst++ = 0xff; + *dst++ = 0xff; + *dst++ = 0xff; + *dst++ = *src++; + } + break; + default: + RARCH_ERR("Unsupported number of components: %u\n", (unsigned)ncomponents); + free(tmp); + return false; } } From b1c9d483688ee24fd2b71b417e106207f1b390c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Higor=20Eur=C3=ADpedes?= Date: Sun, 19 Jul 2015 13:01:28 -0300 Subject: [PATCH 031/822] (gl_raster_font) Reorder ancient/modern checks --- gfx/drivers_font/gl_raster_font.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gfx/drivers_font/gl_raster_font.c b/gfx/drivers_font/gl_raster_font.c index f6b749df79..5d057747b4 100644 --- a/gfx/drivers_font/gl_raster_font.c +++ b/gfx/drivers_font/gl_raster_font.c @@ -60,13 +60,19 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font, uint8_t *tmp = NULL; struct retro_hw_render_callback *cb = video_driver_callback(); bool ancient = false; /* add a check here if needed */ - -#ifndef HAVE_OPENGLES bool modern = font->gl->core_context || (cb->context_type == RETRO_HW_CONTEXT_OPENGL && cb->version_major >= 3); - if (modern) + if (ancient) + { + gl_internal = gl_format = GL_RGBA; + ncomponents = 4; + } +#ifdef HAVE_OPENGLES + (void)modern; +#else + else if (modern) { GLint swizzle[] = { GL_ONE, GL_ONE, GL_ONE, GL_RED }; glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzle); @@ -75,13 +81,7 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font, gl_format = GL_RED; ncomponents = 1; } - else #endif - if (ancient) - { - gl_internal = gl_format = GL_RGBA; - ncomponents = 4; - } tmp = (uint8_t*)calloc(height, width * ncomponents); From 7eb19a0941d65a177ff4753a4f6e607d64314956 Mon Sep 17 00:00:00 2001 From: Alcaro Date: Sun, 19 Jul 2015 22:29:39 +0200 Subject: [PATCH 032/822] Turn Spanish into ISO-8859-1, fixes #1997. --- menu/intl/menu_hash_es.c | 525 ++++++++++++++++++++------------------- 1 file changed, 269 insertions(+), 256 deletions(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 7a929bf546..1063ac4ad1 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -19,6 +19,15 @@ #include "../../configuration.h" #include "../menu_hash.h" +/* IMPORTANT: + * For non-english characters to work without proper unicode support, + * we need this file to be encoded in ISO 8859-1 (Latin1), not UTF-8. + * If you save this file as UTF-8, you'll break non-english characters + * (e.g. German "Umlauts" and Portugese diacritics). + */ +/* DO NOT REMOVE THIS. If it causes build failure, it's because you saved the file as UTF-8. Read the above comment. */ +extern const char force_iso_8859_1[sizeof("")==9+1 ? 1 : -1]; + const char *menu_hash_to_str_es(uint32_t hash) { @@ -27,19 +36,19 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_HELP_SCANNING_CONTENT: return "Buscar contenido"; case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING: - return "Solucionar problemas de vídeo/sonido"; + return "Solucionar problemas de vdeo/sonido"; case MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD: return "Cambiar el mando virtual sobreimpuesto"; case MENU_LABEL_VALUE_HELP_WHAT_IS_A_CORE: - return "¿Qué es un núcleo?"; + return "Qu es un ncleo?"; case MENU_LABEL_VALUE_HELP_LOADING_CONTENT: return "Cargando contenidos"; case MENU_LABEL_VALUE_HELP_LIST: return "Ayuda"; case MENU_LABEL_VALUE_HELP_CONTROLS: - return "Controles básicos del menú"; + return "Controles bsicos del men"; case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS: - return "Controles básicos del menú"; + return "Controles bsicos del men"; case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP: return "Desplazar hacia arriba"; case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN: @@ -51,9 +60,9 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_START: return "Valores predeterminados"; case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO: - return "Información"; + return "Informacin"; case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU: - return "Alternar menú"; + return "Alternar men"; case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT: return "Abandonar"; case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD: @@ -61,19 +70,19 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_OPEN_ARCHIVE: return "Abrir archivo como una carpeta"; case MENU_LABEL_VALUE_LOAD_ARCHIVE: - return "Cargar archivo con un núcleo"; + return "Cargar archivo con un ncleo"; case MENU_LABEL_VALUE_INPUT_BACK_AS_MENU_TOGGLE_ENABLE: - return "Permitir alternar Back como menú"; + return "Permitir alternar Back como men"; case MENU_LABEL_VALUE_INPUT_MENU_TOGGLE_GAMEPAD_COMBO: - return "Combo para alternar mando con menú"; + return "Combo para alternar mando con men"; case MENU_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU: - return "Ocultar lo superpuesto del menú"; + return "Ocultar lo superpuesto del men"; case MENU_VALUE_LANG_POLISH: return "Polaco"; case MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED: - return "Cargar superposición preferida automáticamente"; + return "Cargar superposicin preferida automticamente"; case MENU_LABEL_VALUE_UPDATE_CORE_INFO_FILES: - return "Actualizar archivos de información de núcleos"; + return "Actualizar archivos de informacin de ncleos"; case MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT: return "Descargar contenido"; case MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY: @@ -83,13 +92,13 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_SCAN_DIRECTORY: return "Escanear carpeta"; case MENU_LABEL_VALUE_ADD_CONTENT_LIST: - return "Añadir contenido"; + return "Aadir contenido"; case MENU_LABEL_VALUE_INFORMATION_LIST: - return "Información"; + return "Informacin"; case MENU_LABEL_VALUE_USE_BUILTIN_PLAYER: return "Usar reproductor de medios integrado"; case MENU_LABEL_VALUE_CONTENT_SETTINGS: - return "Menú rápido"; + return "Men rpido"; case MENU_LABEL_VALUE_RDB_ENTRY_CRC32: return "CRC32"; case MENU_LABEL_VALUE_RDB_ENTRY_MD5: @@ -100,20 +109,20 @@ const char *menu_hash_to_str_es(uint32_t hash) return "Preguntar"; case MENU_LABEL_VALUE_PRIVACY_SETTINGS: return "Privacidad"; - case MENU_VALUE_HORIZONTAL_MENU: /* Don't change. Breaks everything. (Would be: "Menú horizontal") */ + case MENU_VALUE_HORIZONTAL_MENU: /* Don't change. Breaks everything. (Would be: "Men horizontal") */ return "Horizontal Menu"; case MENU_LABEL_VALUE_NO_SETTINGS_FOUND: - return "No se ha encontrado una configuración."; + return "No se ha encontrado una configuracin."; case MENU_LABEL_VALUE_NO_PERFORMANCE_COUNTERS: return "No hay contadores de rendimiento."; case MENU_LABEL_VALUE_DRIVER_SETTINGS: return "Controlador"; case MENU_LABEL_VALUE_CONFIGURATION_SETTINGS: - return "Configuración"; + return "Configuracin"; case MENU_LABEL_VALUE_CORE_SETTINGS: - return "Núcleo"; + return "Ncleo"; case MENU_LABEL_VALUE_VIDEO_SETTINGS: - return "Vídeo"; + return "Vdeo"; case MENU_LABEL_VALUE_LOGGING_SETTINGS: return "Registros"; case MENU_LABEL_VALUE_SAVING_SETTINGS: @@ -131,7 +140,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_VALUE_USER: return "Usuario"; case MENU_LABEL_VALUE_SYSTEM_BGM_ENABLE: - return "Activar música del sistema"; + return "Activar msica del sistema"; case MENU_VALUE_RETROPAD: return "RetroPad"; case MENU_VALUE_RETROKEYBOARD: @@ -139,23 +148,23 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_AUDIO_BLOCK_FRAMES: return "Bloquear fotogramas"; case MENU_LABEL_VALUE_INPUT_BIND_MODE: - return "Modo de asignación"; + return "Modo de asignacin"; case MENU_LABEL_VALUE_AUTOCONFIG_DESCRIPTOR_LABEL_SHOW: - return "Mostrar etiquetas de descripción del autoconfigurado"; + return "Mostrar etiquetas de descripcin del autoconfigurado"; case MENU_LABEL_VALUE_INPUT_DESCRIPTOR_LABEL_SHOW: - return "Mostrar etiquetas de descripción de la entrada del núcleo"; + return "Mostrar etiquetas de descripcin de la entrada del ncleo"; case MENU_LABEL_VALUE_INPUT_DESCRIPTOR_HIDE_UNBOUND: - return "Ocultar descripciones sin asignar de la entrada del núcleo"; + return "Ocultar descripciones sin asignar de la entrada del ncleo"; case MENU_LABEL_VALUE_VIDEO_FONT_ENABLE: return "Mostrar mensajes en pantalla"; case MENU_LABEL_VALUE_VIDEO_FONT_PATH: return "Fuente de mensajes en pantalla"; case MENU_LABEL_VALUE_VIDEO_FONT_SIZE: - return "Tamaño de mensajes en pantalla"; + return "Tamao de mensajes en pantalla"; case MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_X: - return "Posición X de mensajes en pantalla"; + return "Posicin X de mensajes en pantalla"; case MENU_LABEL_VALUE_VIDEO_MESSAGE_POS_Y: - return "Posición Y de mensajes en pantalla"; + return "Posicin Y de mensajes en pantalla"; case MENU_LABEL_VALUE_VIDEO_SOFT_FILTER: return "Activar filtros por software"; case MENU_LABEL_VALUE_VIDEO_FILTER_FLICKER: @@ -169,7 +178,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_VALUE_LINEAR: return "Lineal"; case MENU_VALUE_NEAREST: - return "Más cercano"; + return "Ms cercano"; case MENU_VALUE_DIRECTORY_DEFAULT: return "(Predeterminada)"; case MENU_VALUE_DIRECTORY_NONE: @@ -177,53 +186,53 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_VALUE_NOT_AVAILABLE: return "No disponible"; case MENU_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY: - return "Carpeta de reasignación de entrada"; + return "Carpeta de reasignacin de entrada"; case MENU_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR: - return "Carpeta de autoconfiguración de dispositivo de entrada"; + return "Carpeta de autoconfiguracin de dispositivo de entrada"; case MENU_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY: - return "Carpeta de configuración de grabación"; + return "Carpeta de configuracin de grabacin"; case MENU_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY: - return "Carpeta de salida de grabación"; + return "Carpeta de salida de grabacin"; case MENU_LABEL_VALUE_SCREENSHOT_DIRECTORY: return "Carpeta de capturas de pantalla"; case MENU_LABEL_VALUE_PLAYLIST_DIRECTORY: - return "Carpeta de listas de reproducción"; + return "Carpeta de listas de reproduccin"; case MENU_LABEL_VALUE_SAVEFILE_DIRECTORY: return "Carpeta de partidas guardadas"; case MENU_LABEL_VALUE_SAVESTATE_DIRECTORY: - return "Carpeta de guardados rápidos"; + return "Carpeta de guardados rpidos"; case MENU_LABEL_VALUE_STDIN_CMD_ENABLE: return "Comandos stdin"; case MENU_LABEL_VALUE_VIDEO_DRIVER: - return "Controlador de vídeo"; + return "Controlador de vdeo"; case MENU_LABEL_VALUE_RECORD_ENABLE: - return "Activar grabación"; + return "Activar grabacin"; case MENU_LABEL_VALUE_VIDEO_GPU_RECORD: - return "Activar grabación de GPU"; + return "Activar grabacin de GPU"; case MENU_LABEL_VALUE_RECORD_PATH: - return "Carpeta de grabación"; + return "Carpeta de grabacin"; case MENU_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY: return "Usar carpeta de salida"; case MENU_LABEL_VALUE_RECORD_CONFIG: - return "Configuración de grabación"; + return "Configuracin de grabacin"; case MENU_LABEL_VALUE_VIDEO_POST_FILTER_RECORD: - return "Activar grabación con filtros"; + return "Activar grabacin con filtros"; case MENU_LABEL_VALUE_CORE_ASSETS_DIRECTORY: return "Carpeta de descargas"; case MENU_LABEL_VALUE_ASSETS_DIRECTORY: return "Carpeta de recursos"; case MENU_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY: - return "Carpeta de fondos de pantalla dinámicos"; + return "Carpeta de fondos de pantalla dinmicos"; case MENU_LABEL_VALUE_BOXARTS_DIRECTORY: - return "Carpeta de carátulas"; + return "Carpeta de cartulas"; case MENU_LABEL_VALUE_RGUI_BROWSER_DIRECTORY: return "Carpeta del navegador de archivos"; case MENU_LABEL_VALUE_RGUI_CONFIG_DIRECTORY: - return "Carpeta de configuración"; + return "Carpeta de configuracin"; case MENU_LABEL_VALUE_LIBRETRO_INFO_PATH: - return "Carpeta de información del núcleo"; + return "Carpeta de informacin del ncleo"; case MENU_LABEL_VALUE_LIBRETRO_DIR_PATH: - return "Carpeta de núcleos"; + return "Carpeta de ncleos"; case MENU_LABEL_VALUE_CURSOR_DIRECTORY: return "Carpeta de cursores"; case MENU_LABEL_VALUE_CONTENT_DATABASE_DIRECTORY: @@ -233,13 +242,13 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_CHEAT_DATABASE_PATH: return "Carpeta de archivos de trucos"; case MENU_LABEL_VALUE_EXTRACTION_DIRECTORY: - return "Carpeta de extracción"; + return "Carpeta de extraccin"; case MENU_LABEL_VALUE_AUDIO_FILTER_DIR: return "Carpeta de filtros de sonido"; case MENU_LABEL_VALUE_VIDEO_SHADER_DIR: - return "Carpeta de shaders de vídeo"; + return "Carpeta de shaders de vdeo"; case MENU_LABEL_VALUE_VIDEO_FILTER_DIR: - return "Carpeta de filtros de vídeo"; + return "Carpeta de filtros de vdeo"; case MENU_LABEL_VALUE_OVERLAY_DIRECTORY: return "Carpeta de superimposiciones"; case MENU_LABEL_VALUE_OSK_OVERLAY_DIRECTORY: @@ -249,7 +258,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE: return "Permitir espectadores en red"; case MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS: - return "Dirección IP"; + return "Direccin IP"; case MENU_LABEL_VALUE_NETPLAY_TCP_UDP_PORT: return "Puerto TCP/UDP para juego en red"; case MENU_LABEL_VALUE_NETPLAY_ENABLE: @@ -261,39 +270,39 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_RGUI_SHOW_START_SCREEN: return "Mostrar pantalla de inicio"; case MENU_LABEL_VALUE_TITLE_COLOR: - return "Color de títulos del menú"; + return "Color de ttulos del men"; case MENU_LABEL_VALUE_ENTRY_HOVER_COLOR: - return "Color de entrada resaltada del menú"; + return "Color de entrada resaltada del men"; case MENU_LABEL_VALUE_TIMEDATE_ENABLE: return "Mostrar fecha y hora"; case MENU_LABEL_VALUE_THREADED_DATA_RUNLOOP_ENABLE: return "Buclar datos hilados"; case MENU_LABEL_VALUE_ENTRY_NORMAL_COLOR: - return "Color de entrada normal del menú"; + return "Color de entrada normal del men"; case MENU_LABEL_VALUE_SHOW_ADVANCED_SETTINGS: return "Mostrar ajustes avanzados"; case MENU_LABEL_VALUE_MOUSE_ENABLE: return "Soporte para teclado"; case MENU_LABEL_VALUE_POINTER_ENABLE: - return "Soporte táctil"; + return "Soporte tctil"; case MENU_LABEL_VALUE_CORE_ENABLE: - return "Mostrar nombre del núcleo"; + return "Mostrar nombre del ncleo"; case MENU_LABEL_VALUE_DPI_OVERRIDE_ENABLE: - return "Activar anulación de PPP"; + return "Activar anulacin de PPP"; case MENU_LABEL_VALUE_DPI_OVERRIDE_VALUE: return "Anular PPP"; case MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE: return "Suspender salvapantallas"; case MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION: - return "Desactivar composición de escritorio"; + return "Desactivar composicin de escritorio"; case MENU_LABEL_VALUE_PAUSE_NONACTIVE: return "Detenerse en segundo plano"; case MENU_LABEL_VALUE_UI_COMPANION_START_ON_BOOT: return "Ejecutar al inicio la IU ayudante"; case MENU_LABEL_VALUE_UI_MENUBAR_ENABLE: - return "Barra de menús"; + return "Barra de mens"; case MENU_LABEL_VALUE_ARCHIVE_MODE: - return "Acción para asociar tipos de archivo"; + return "Accin para asociar tipos de archivo"; case MENU_LABEL_VALUE_NETWORK_CMD_ENABLE: return "Comandos de red"; case MENU_LABEL_VALUE_NETWORK_CMD_PORT: @@ -301,57 +310,57 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_HISTORY_LIST_ENABLE: return "Activar historial"; case MENU_LABEL_VALUE_CONTENT_HISTORY_SIZE: - return "Tamaño del historial"; + return "Tamao del historial"; case MENU_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO: return "Tasa de fotogramas estimada del monitor"; case MENU_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN: - return "Anular al cerrar núcleo"; + return "Anular al cerrar ncleo"; case MENU_LABEL_VALUE_CORE_SET_SUPPORTS_NO_CONTENT_ENABLE: - return "No ejecutar automáticamente un núcleo"; + return "No ejecutar automticamente un ncleo"; case MENU_LABEL_VALUE_FRAME_THROTTLE_ENABLE: - return "Limitar velocidad de ejecución máxima"; + return "Limitar velocidad de ejecucin mxima"; case MENU_LABEL_VALUE_FASTFORWARD_RATIO: - return "Velocidad de ejecución máxima"; + return "Velocidad de ejecucin mxima"; case MENU_LABEL_VALUE_AUTO_REMAPS_ENABLE: - return "Cargar automáticamente archivos de reasignación"; + return "Cargar automticamente archivos de reasignacin"; case MENU_LABEL_VALUE_SLOWMOTION_RATIO: return "Cantidad de velocidad reducida"; case MENU_LABEL_VALUE_CORE_SPECIFIC_CONFIG: - return "Configuración por núcleo"; + return "Configuracin por ncleo"; case MENU_LABEL_VALUE_AUTO_OVERRIDES_ENABLE: - return "Cargar automáticamente archivos de anulación"; + return "Cargar automticamente archivos de anulacin"; case MENU_LABEL_VALUE_CONFIG_SAVE_ON_EXIT: - return "Guardar configuración al salir"; + return "Guardar configuracin al salir"; case MENU_LABEL_VALUE_VIDEO_SMOOTH: return "Filtrado bilineal por hardware"; case MENU_LABEL_VALUE_VIDEO_GAMMA: - return "Gamma de vídeo"; + return "Gamma de vdeo"; case MENU_LABEL_VALUE_VIDEO_ALLOW_ROTATE: - return "Permitir rotación"; + return "Permitir rotacin"; case MENU_LABEL_VALUE_VIDEO_HARD_SYNC: - return "Sincronización de GPU por hardware"; + return "Sincronizacin de GPU por hardware"; case MENU_LABEL_VALUE_VIDEO_SWAP_INTERVAL: return "Intervalo de alternado de VSync"; case MENU_LABEL_VALUE_VIDEO_VSYNC: - return "VSync/Sincronía vertical"; + return "VSync/Sincrona vertical"; case MENU_LABEL_VALUE_VIDEO_THREADED: - return "Vídeo multinúcleo"; + return "Vdeo multincleo"; case MENU_LABEL_VALUE_VIDEO_ROTATION: - return "Rotación"; + return "Rotacin"; case MENU_LABEL_VALUE_VIDEO_GPU_SCREENSHOT: return "Permitir capturas de pantalla de GPU"; case MENU_LABEL_VALUE_VIDEO_CROP_OVERSCAN: return "Recortar Overscan (Reinicio)"; case MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_INDEX: - return "Índice de proporción de aspecto"; + return "ndice de proporcin de aspecto"; case MENU_LABEL_VALUE_VIDEO_ASPECT_RATIO_AUTO: - return "Proporción de aspecto automática"; + return "Proporcin de aspecto automtica"; case MENU_LABEL_VALUE_VIDEO_FORCE_ASPECT: - return "Forzar proporción de aspecto"; + return "Forzar proporcin de aspecto"; case MENU_LABEL_VALUE_VIDEO_REFRESH_RATE: - return "Tasa de actualización"; + return "Tasa de actualizacin"; case MENU_LABEL_VALUE_VIDEO_FORCE_SRGB_DISABLE: - return "Forzar anulación del FBO sRGB"; + return "Forzar anulacin del FBO sRGB"; case MENU_LABEL_VALUE_VIDEO_WINDOWED_FULLSCREEN: return "Pantalla completa en ventana"; case MENU_LABEL_VALUE_PAL60_ENABLE: @@ -367,7 +376,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_SORT_SAVEFILES_ENABLE: return "Ordenar partidas guardadas por carpetas"; case MENU_LABEL_VALUE_SORT_SAVESTATES_ENABLE: - return "Ordenar guardados rápidos por carpetas"; + return "Ordenar guardados rpidos por carpetas"; case MENU_LABEL_VALUE_VIDEO_FULLSCREEN: return "Pantalla completa"; case MENU_LABEL_VALUE_VIDEO_SCALE: @@ -377,19 +386,19 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_PERFCNT_ENABLE: return "Contadores de rendimiento"; case MENU_LABEL_VALUE_LIBRETRO_LOG_LEVEL: - return "Nivel de registro del núcleo"; + return "Nivel de registro del ncleo"; case MENU_LABEL_VALUE_LOG_VERBOSITY: return "Verbosidad del registro"; case MENU_LABEL_VALUE_SAVESTATE_AUTO_LOAD: - return "Cargar guardado rápido automáticamente"; + return "Cargar guardado rpido automticamente"; case MENU_LABEL_VALUE_SAVESTATE_AUTO_INDEX: - return "Indizar automáticamente guardados rápidos"; + return "Indizar automticamente guardados rpidos"; case MENU_LABEL_VALUE_SAVESTATE_AUTO_SAVE: - return "Guardado rápido automático"; + return "Guardado rpido automtico"; case MENU_LABEL_VALUE_AUTOSAVE_INTERVAL: return "Intervalo de autoguardados SaveRAM"; case MENU_LABEL_VALUE_BLOCK_SRAM_OVERWRITE: - return "No sobrescribir SaveRAM al cargar un guardado rápido"; + return "No sobrescribir SaveRAM al cargar un guardado rpido"; case MENU_LABEL_VALUE_VIDEO_SHARED_CONTEXT: return "Activar contexto compartido por HW"; case MENU_LABEL_VALUE_RESTART_RETROARCH: @@ -399,41 +408,41 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_USER_LANGUAGE: return "Idioma"; case MENU_LABEL_VALUE_CAMERA_ALLOW: - return "Permitir cámara"; + return "Permitir cmara"; case MENU_LABEL_VALUE_LOCATION_ALLOW: - return "Permitir ubicación"; + return "Permitir ubicacin"; case MENU_LABEL_VALUE_PAUSE_LIBRETRO: - return "Pausar al activar el menú"; + return "Pausar al activar el men"; case MENU_LABEL_VALUE_INPUT_OSK_OVERLAY_ENABLE: return "Mostrar teclado superpuesto"; case MENU_LABEL_VALUE_INPUT_OVERLAY_ENABLE: - return "Mostrar superimposición"; + return "Mostrar superimposicin"; case MENU_LABEL_VALUE_VIDEO_MONITOR_INDEX: - return "Índice del monitor"; + return "ndice del monitor"; case MENU_LABEL_VALUE_VIDEO_FRAME_DELAY: return "Retraso de fotogramas"; case MENU_LABEL_VALUE_INPUT_DUTY_CYCLE: return "Ciclo de deberes"; case MENU_LABEL_VALUE_INPUT_TURBO_PERIOD: - return "Período de turbo"; + return "Perodo de turbo"; case MENU_LABEL_VALUE_INPUT_AXIS_THRESHOLD: return "Margen de ejes de entrada"; case MENU_LABEL_VALUE_INPUT_REMAP_BINDS_ENABLE: return "Permitir reasignar controles"; case MENU_LABEL_VALUE_INPUT_MAX_USERS: - return "N.º de usuarios máximos"; + return "N. de usuarios mximos"; case MENU_LABEL_VALUE_INPUT_AUTODETECT_ENABLE: - return "Activar autoconfiguración"; + return "Activar autoconfiguracin"; case MENU_LABEL_VALUE_AUDIO_OUTPUT_RATE: return "Frecuencia de salida de sonido (KHz)"; case MENU_LABEL_VALUE_AUDIO_MAX_TIMING_SKEW: - return "Corte máximo de sincronía de sonido"; + return "Corte mximo de sincrona de sonido"; case MENU_LABEL_VALUE_CHEAT_NUM_PASSES: return "Pasadas de trucos"; case MENU_LABEL_VALUE_REMAP_FILE_SAVE_CORE: - return "Guardar archivo de reasignación del núcleo"; + return "Guardar archivo de reasignacin del ncleo"; case MENU_LABEL_VALUE_REMAP_FILE_SAVE_GAME: - return "Guardar archivo de reasignación del juego"; + return "Guardar archivo de reasignacin del juego"; case MENU_LABEL_VALUE_CHEAT_APPLY_CHANGES: return "Aplicar cambios en trucos"; case MENU_LABEL_VALUE_SHADER_APPLY_CHANGES: @@ -441,11 +450,11 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_REWIND_ENABLE: return "Activar rebobinado"; case MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST: - return "Seleccionar de una colección"; + return "Seleccionar de una coleccin"; case MENU_LABEL_VALUE_DETECT_CORE_LIST: - return "Seleccionar archivo y detectar núcleo"; + return "Seleccionar archivo y detectar ncleo"; case MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST: - return "Seleccionar archivo descargado y detectar núcleo"; + return "Seleccionar archivo descargado y detectar ncleo"; case MENU_LABEL_VALUE_LOAD_CONTENT_HISTORY: return "Cargar archivos recientes"; case MENU_LABEL_VALUE_AUDIO_ENABLE: @@ -457,7 +466,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_AUDIO_VOLUME: return "Volumen de sonido (dB)"; case MENU_LABEL_VALUE_AUDIO_SYNC: - return "Activar sincronía de sonido"; + return "Activar sincrona de sonido"; case MENU_LABEL_VALUE_AUDIO_RATE_CONTROL_DELTA: return "Delta de control de frecuencia de sonido"; case MENU_LABEL_VALUE_VIDEO_SHADER_NUM_PASSES: @@ -465,37 +474,37 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_RDB_ENTRY_SHA1: return "SHA1"; case MENU_LABEL_VALUE_CONFIGURATIONS: - return "Cargar configuración"; + return "Cargar configuracin"; case MENU_LABEL_VALUE_REWIND_GRANULARITY: return "Nivel de detalle del rebobinado"; case MENU_LABEL_VALUE_REMAP_FILE_LOAD: - return "Cargar archivo de reasignación"; + return "Cargar archivo de reasignacin"; case MENU_LABEL_VALUE_REMAP_FILE_SAVE_AS: - return "Guardar archivo de reasignación como..."; + return "Guardar archivo de reasignacin como..."; case MENU_LABEL_VALUE_CUSTOM_RATIO: - return "Proporción personalizada"; + return "Proporcin personalizada"; case MENU_LABEL_VALUE_USE_THIS_DIRECTORY: return "(Utilizar esta carpeta)"; case MENU_LABEL_VALUE_RDB_ENTRY_START_CONTENT: return "Ejecutar contenido"; case MENU_LABEL_VALUE_DISK_OPTIONS: - return "Opciones del disco del núcleo"; + return "Opciones del disco del ncleo"; case MENU_LABEL_VALUE_CORE_OPTIONS: - return "Opciones del núcleo"; + return "Opciones del ncleo"; case MENU_LABEL_VALUE_CORE_CHEAT_OPTIONS: - return "Opciones de trucos del núcleo"; + return "Opciones de trucos del ncleo"; case MENU_LABEL_VALUE_CHEAT_FILE_LOAD: return "Cargar archivo de trucos"; case MENU_LABEL_VALUE_CHEAT_FILE_SAVE_AS: return "Guardar archivo de trucos como..."; case MENU_LABEL_VALUE_CORE_COUNTERS: - return "Contadores del núcleo"; + return "Contadores del ncleo"; case MENU_LABEL_VALUE_TAKE_SCREENSHOT: return "Capturar pantalla"; case MENU_LABEL_VALUE_RESUME: return "Reanudar"; case MENU_LABEL_VALUE_DISK_INDEX: - return "Índice del disco"; + return "ndice del disco"; case MENU_LABEL_VALUE_FRONTEND_COUNTERS: return "Contadores del frontend"; case MENU_LABEL_VALUE_DISK_IMAGE_APPEND: @@ -503,20 +512,20 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS: return "Estado de la bandeja del disco"; case MENU_LABEL_VALUE_NO_PLAYLIST_ENTRIES_AVAILABLE: - return "No hay listas de reproducción."; + return "No hay listas de reproduccin."; case MENU_LABEL_VALUE_NO_CORE_INFORMATION_AVAILABLE: - return "No hay información del núcleo."; + return "No hay informacin del ncleo."; case MENU_LABEL_VALUE_NO_CORE_OPTIONS_AVAILABLE: - return "No hay opciones del núcleo."; + return "No hay opciones del ncleo."; case MENU_LABEL_VALUE_NO_CORES_AVAILABLE: - return "No hay núcleos."; + return "No hay ncleos."; case MENU_VALUE_NO_CORE: - return "Sin núcleo"; + return "Sin ncleo"; case MENU_LABEL_VALUE_DATABASE_MANAGER: return "Gestor de bases de datos"; case MENU_LABEL_VALUE_CURSOR_MANAGER: return "Gestor de cursores"; - case MENU_VALUE_MAIN_MENU: /* Don't change. Breaks everything. (Would be: "Menú principal") */ + case MENU_VALUE_MAIN_MENU: /* Don't change. Breaks everything. (Would be: "Men principal") */ return "Main Menu"; case MENU_LABEL_VALUE_SETTINGS: return "Ajustes"; @@ -525,35 +534,35 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_HELP: return "Ayuda"; case MENU_LABEL_VALUE_SAVE_NEW_CONFIG: - return "Guardar configuración nueva"; + return "Guardar configuracin nueva"; case MENU_LABEL_VALUE_RESTART_CONTENT: return "Reiniciar contenido"; case MENU_LABEL_VALUE_CORE_UPDATER_LIST: - return "Actualizador de núcleos"; + return "Actualizador de ncleos"; case MENU_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL: - return "URL de núcleos de Buildbot"; + return "URL de ncleos de Buildbot"; case MENU_LABEL_VALUE_BUILDBOT_ASSETS_URL: return "URL de recursos de Buildbot"; case MENU_LABEL_VALUE_NAVIGATION_WRAPAROUND_HORIZONTAL: - return "Seguir navegación: horizontalmente"; + return "Seguir navegacin: horizontalmente"; case MENU_LABEL_VALUE_NAVIGATION_WRAPAROUND_VERTICAL: - return "Seguir navegación: verticalmente"; + return "Seguir navegacin: verticalmente"; case MENU_LABEL_VALUE_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE: return "Filtrar por extensiones compatibles"; case MENU_LABEL_VALUE_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE: - return "Extraer automáticamente el archivo descargado"; + return "Extraer automticamente el archivo descargado"; case MENU_LABEL_VALUE_SYSTEM_INFORMATION: - return "Información del sistema"; + return "Informacin del sistema"; case MENU_LABEL_VALUE_ONLINE_UPDATER: - return "Actualizador en línea"; + return "Actualizador en lnea"; case MENU_LABEL_VALUE_CORE_INFORMATION: - return "Información del núcleo"; + return "Informacin del ncleo"; case MENU_LABEL_VALUE_DIRECTORY_NOT_FOUND: return "No se ha encontrado la carpeta."; case MENU_LABEL_VALUE_NO_ITEMS: return "No hay elementos."; case MENU_LABEL_VALUE_CORE_LIST: - return "Cargar núcleo"; + return "Cargar ncleo"; case MENU_LABEL_VALUE_LOAD_CONTENT: return "Seleccionar archivo"; case MENU_LABEL_VALUE_CLOSE_CONTENT: @@ -561,9 +570,9 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_MANAGEMENT: return "Ajustes de bases de datos"; case MENU_LABEL_VALUE_SAVE_STATE: - return "Guardado rápido"; + return "Guardado rpido"; case MENU_LABEL_VALUE_LOAD_STATE: - return "Carga rápida"; + return "Carga rpida"; case MENU_LABEL_VALUE_RESUME_CONTENT: return "Reanudar contenido"; case MENU_LABEL_VALUE_INPUT_DRIVER: @@ -575,19 +584,19 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_AUDIO_RESAMPLER_DRIVER: return "Controlador de remuestreo de sonido"; case MENU_LABEL_VALUE_RECORD_DRIVER: - return "Controlador de grabación"; + return "Controlador de grabacin"; case MENU_LABEL_VALUE_MENU_DRIVER: - return "Controlador de menú"; + return "Controlador de men"; case MENU_LABEL_VALUE_CAMERA_DRIVER: - return "Controlador de cámara"; + return "Controlador de cmara"; case MENU_LABEL_VALUE_LOCATION_DRIVER: - return "Controlador de ubicación"; + return "Controlador de ubicacin"; case MENU_LABEL_VALUE_UNABLE_TO_READ_COMPRESSED_FILE: return "No se ha podido leer el archivo comprimido."; case MENU_LABEL_VALUE_OVERLAY_SCALE: - return "Escala de superimposición"; + return "Escala de superimposicin"; case MENU_LABEL_VALUE_OVERLAY_PRESET: - return "Preajuste de superimposición"; + return "Preajuste de superimposicin"; case MENU_LABEL_VALUE_AUDIO_LATENCY: return "Retraso de sonido (ms)"; case MENU_LABEL_VALUE_AUDIO_DEVICE: @@ -595,36 +604,36 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET: return "Preajuste de teclado superimpuesto"; case MENU_LABEL_VALUE_OVERLAY_OPACITY: - return "Opacidad de la superimposición"; + return "Opacidad de la superimposicin"; case MENU_LABEL_VALUE_MENU_WALLPAPER: - return "Fondo del menú"; + return "Fondo del men"; case MENU_LABEL_VALUE_DYNAMIC_WALLPAPER: - return "Fondo de pantalla dinámico"; + return "Fondo de pantalla dinmico"; case MENU_LABEL_VALUE_BOXART: - return "Mostrar carátula"; + return "Mostrar cartula"; case MENU_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS: - return "Opciones de reasignación de entrada para el núcleo"; + return "Opciones de reasignacin de entrada para el ncleo"; case MENU_LABEL_VALUE_SHADER_OPTIONS: return "Opciones de shaders"; case MENU_LABEL_VALUE_VIDEO_SHADER_PARAMETERS: - return "Previsualizar parámetros de shaders"; + return "Previsualizar parmetros de shaders"; case MENU_LABEL_VALUE_VIDEO_SHADER_PRESET_PARAMETERS: - return "Parámetros de shaders del menú"; + return "Parmetros de shaders del men"; case MENU_LABEL_VALUE_VIDEO_SHADER_PRESET_SAVE_AS: return "Guardar preajuste de shaders como..."; case MENU_LABEL_VALUE_NO_SHADER_PARAMETERS: - return "No hay parámetros de shaders."; + return "No hay parmetros de shaders."; case MENU_LABEL_VALUE_VIDEO_SHADER_PRESET: return "Cargar preajuste de shaders"; case MENU_LABEL_VALUE_VIDEO_FILTER: - return "Filtro de vídeo"; + return "Filtro de vdeo"; case MENU_LABEL_VALUE_AUDIO_DSP_PLUGIN: return "Plugin DSP de sonido"; case MENU_LABEL_VALUE_STARTING_DOWNLOAD: return "Iniciando descarga: "; case MENU_VALUE_SECONDS: return "segundos"; - case MENU_VALUE_OFF: //Not changed. Would be "SÍ" + case MENU_VALUE_OFF: //Not changed. Would be "S" return "OFF"; case MENU_VALUE_ON: //Not changed. Would be "NO" return "ON"; @@ -633,9 +642,9 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_UPDATE_CHEATS: return "Actualizar trucos"; case MENU_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES: - return "Actualizar perfiles de autoconfiguración"; + return "Actualizar perfiles de autoconfiguracin"; case MENU_LABEL_VALUE_UPDATE_AUTOCONFIG_PROFILES_HID: - return "Actualizar perfiles de autoconfiguración (HID)"; + return "Actualizar perfiles de autoconfiguracin (HID)"; case MENU_LABEL_VALUE_UPDATE_DATABASES: return "Actualizar bases de datos"; case MENU_LABEL_VALUE_UPDATE_OVERLAYS: @@ -645,15 +654,15 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_UPDATE_GLSL_SHADERS: return "Actualizar shaders GLSL"; case MENU_LABEL_VALUE_CORE_INFO_CORE_NAME: - return "Nombre del núcleo"; + return "Nombre del ncleo"; case MENU_LABEL_VALUE_CORE_INFO_CORE_LABEL: - return "Etiqueta del núcleo"; + return "Etiqueta del ncleo"; case MENU_LABEL_VALUE_CORE_INFO_SYSTEM_NAME: return "Nombre del sistema"; case MENU_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER: return "Fabricante del sistema"; case MENU_LABEL_VALUE_CORE_INFO_CATEGORIES: - return "Categorías"; + return "Categoras"; case MENU_LABEL_VALUE_CORE_INFO_AUTHORS: return "Autores"; case MENU_LABEL_VALUE_CORE_INFO_PERMISSIONS: @@ -665,13 +674,13 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_CORE_INFO_FIRMWARE: return "Firmware"; case MENU_LABEL_VALUE_CORE_INFO_CORE_NOTES: - return "Notas del núcleo"; + return "Notas del ncleo"; case MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE: return "Fecha de compilado"; case MENU_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION: - return "Versión de Git"; + return "Versin de Git"; case MENU_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES: - return "Características de CPU"; + return "Caractersticas de CPU"; case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER: return "Identificador del frontend"; case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME: @@ -681,7 +690,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL: return "Nivel de RetroRating"; case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE: - return "Fuente de alimentación"; + return "Fuente de alimentacin"; case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE: return "No hay una fuente"; case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING: @@ -691,13 +700,13 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING: return "Descargando"; case MENU_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER: - return "Controlador de contexto de vídeo"; + return "Controlador de contexto de vdeo"; case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH: - return "Mostrar ancho métrico (mm)"; + return "Mostrar ancho mtrico (mm)"; case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT: - return "Mostrar alto métrico (mm)"; + return "Mostrar alto mtrico (mm)"; case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI: - return "Mostrar PPP métricos"; + return "Mostrar PPP mtricos"; case MENU_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT: return "Soporte de LibretroDB"; case MENU_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT: @@ -719,7 +728,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT: return "Soporte de OpenGL ES"; case MENU_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT: - return "Soporte de multinúcleo"; + return "Soporte de multincleo"; case MENU_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT: return "Soporte de KMS/EGL"; case MENU_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT: @@ -759,7 +768,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT: return "Soporte de 7zip"; case MENU_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT: - return "Soporte de librerías dinámicas"; + return "Soporte de libreras dinmicas"; case MENU_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT: return "Soporte de Cg"; case MENU_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT: @@ -769,7 +778,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT: return "Soporte de parseo XML libxml2"; case MENU_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT: - return "Soporte de imágenes SDL"; + return "Soporte de imgenes SDL"; case MENU_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT: return "Soporte de render-to-texture OpenGL/Direct3D (shaders multipasos)"; case MENU_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT: @@ -787,13 +796,13 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT: return "Soporte de Libusb"; case MENU_LABEL_VALUE_YES: - return "Sí"; + return "S"; case MENU_LABEL_VALUE_NO: return "No"; case MENU_VALUE_BACK: return "BACK"; case MENU_LABEL_VALUE_SCREEN_RESOLUTION: - return "Resolución de pantalla"; + return "Resolucin de pantalla"; case MENU_VALUE_DISABLED: return "Desactivado"; case MENU_VALUE_PORT: @@ -805,7 +814,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_RDB_ENTRY_PUBLISHER: return "Distribuidora"; case MENU_LABEL_VALUE_RDB_ENTRY_DESCRIPTION: - return "Descripción"; + return "Descripcin"; case MENU_LABEL_VALUE_RDB_ENTRY_NAME: return "Nombre"; case MENU_LABEL_VALUE_RDB_ENTRY_ORIGIN: @@ -815,7 +824,7 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH: return "Mes de lanzamiento"; case MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR: - return "Año de lanzamiento"; + return "Ao de lanzamiento"; case MENU_VALUE_TRUE: return "Activado"; case MENU_VALUE_FALSE: @@ -837,47 +846,47 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS: return "Textos en pantalla (OSD)"; case MENU_LABEL_VALUE_OVERLAY_SETTINGS: - return "Sobreimposición"; + return "Sobreimposicin"; case MENU_LABEL_VALUE_MENU_SETTINGS: - return "Menú"; + return "Men"; case MENU_LABEL_VALUE_MULTIMEDIA_SETTINGS: return "Multimedia"; case MENU_LABEL_VALUE_UI_SETTINGS: return "Interfaz de usuario"; case MENU_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS: - return "Navegador de archivos del menú"; + return "Navegador de archivos del men"; case MENU_LABEL_VALUE_CORE_UPDATER_SETTINGS: return "Actualizador"; case MENU_LABEL_VALUE_NETWORK_SETTINGS: return "Red"; case MENU_LABEL_VALUE_PLAYLIST_SETTINGS: - return "Lista de reproducción"; + return "Lista de reproduccin"; case MENU_LABEL_VALUE_USER_SETTINGS: return "Usuario"; case MENU_LABEL_VALUE_DIRECTORY_SETTINGS: return "Carpeta"; case MENU_LABEL_VALUE_RECORDING_SETTINGS: - return "Grabación"; + return "Grabacin"; case MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE: - return "No hay información disponible."; + return "No hay informacin disponible."; case MENU_LABEL_VALUE_INPUT_USER_BINDS: return "Asignaciones de entrada del usuario %u"; case MENU_VALUE_LANG_ENGLISH: - return "Inglés"; + return "Ingls"; case MENU_VALUE_LANG_JAPANESE: - return "Japonés"; + return "Japons"; case MENU_VALUE_LANG_FRENCH: - return "Francés"; + return "Francs"; case MENU_VALUE_LANG_SPANISH: - return "Español"; + return "Espaol"; case MENU_VALUE_LANG_GERMAN: - return "Alemán"; + return "Alemn"; case MENU_VALUE_LANG_ITALIAN: return "Italiano"; case MENU_VALUE_LANG_DUTCH: - return "Holandés"; + return "Holands"; case MENU_VALUE_LANG_PORTUGUESE: - return "Portugués"; + return "Portugus"; case MENU_VALUE_LANG_RUSSIAN: return "Ruso"; case MENU_VALUE_LANG_KOREAN: @@ -889,17 +898,17 @@ const char *menu_hash_to_str_es(uint32_t hash) case MENU_VALUE_LANG_ESPERANTO: return "Esperanto"; case MENU_VALUE_LEFT_ANALOG: - return "Analógico izquierdo"; + return "Analgico izquierdo"; case MENU_VALUE_RIGHT_ANALOG: - return "Analógico derecho"; + return "Analgico derecho"; case MENU_LABEL_VALUE_INPUT_HOTKEY_BINDS: - return "Asignaciones de teclas rápidas"; + return "Asignaciones de teclas rpidas"; case MENU_LABEL_VALUE_FRAME_THROTTLE_SETTINGS: return "Aumento de fotogramas"; case MENU_VALUE_SEARCH: return "Buscar:"; case MENU_LABEL_VALUE_USE_BUILTIN_IMAGE_VIEWER: - return "Utilizar visualizador de imágenes integrado"; + return "Utilizar visualizador de imgenes integrado"; default: break; } @@ -912,23 +921,27 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) uint32_t driver_hash = 0; settings_t *settings = config_get_ptr(); + /* If this one throws errors, stop sledgehammering square pegs into round holes and */ + /* READ THE COMMENTS at the top of the file. */ + (void)sizeof(force_iso_8859_1); + switch (hash) { case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: snprintf(s, len, - "RetroArch utiliza un formato único para\n" - "sincronizar vídeo y sonido que necesita ser\n" - "calibrado con la tasa de actualización de tu\n" + "RetroArch utiliza un formato nico para\n" + "sincronizar vdeo y sonido que necesita ser\n" + "calibrado con la tasa de actualizacin de tu\n" "monitor para obtener el mejor rendimiento.\n" " \n" "Si notas cortes de sonido o en la imagen,\n" "lo normal es que necesites calibrar estos\n" - "ajustes. Aquí van algunas opciones:\n" + "ajustes. Aqu van algunas opciones:\n" " \n" "a) Ve a '%s' -> '%s' y activa\n" - "'Vídeo multinúcleo'. En este modo la tasa\n" - "de refresco es irrelevante, habrá más fps,\n" - "pero la imagen podría ser menos fluida.\n" + "'Vdeo multincleo'. En este modo la tasa\n" + "de refresco es irrelevante, habr ms fps,\n" + "pero la imagen podra ser menos fluida.\n" "b) Ve a '%s' -> '%s' y busca\n" "'%s'. Deja que se ejecute durante\n" "2048 fotogramas y selecciona Aceptar.", @@ -944,19 +957,19 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) "Para escanear contenidos ve a '%s' y\n" "selecciona '%s' o %s'.\n" " \n" - "Esto comparará los archivos con las entradas\n" + "Esto comparar los archivos con las entradas\n" "en la base de datos.\n" - "Si hay una coincidencia, añadirá una entrada\n" - "en una colección.\n" + "Si hay una coincidencia, aadir una entrada\n" + "en una coleccin.\n" " \n" - "Entonces podrás acceder fácilmente al contenido\n" + "Entonces podrs acceder fcilmente al contenido\n" "si vas a '%s' ->\n" "'%s'\n" "en vez de pasar por el navegador de archivos\n" "constantemente.\n" " \n" - "NOTA: El contenido de algunos núcleos podría\n" - "no ser localizable. Entre los ejemplos están\n" + "NOTA: El contenido de algunos ncleos podra\n" + "no ser localizable. Entre los ejemplos estn\n" "PlayStation, MAME, FBA, y puede que otros." , menu_hash_to_str(MENU_LABEL_VALUE_ADD_CONTENT_LIST), @@ -969,7 +982,7 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) case MENU_LABEL_VALUE_MENU_CONTROLS_PROLOG: snprintf(s, len, "Puedes usar estos controles en tu mando\n" - "o teclado para controlar el menú: \n" + "o teclado para controlar el men: \n" " \n" ); break; @@ -980,7 +993,7 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) snprintf(s, len, "Bienvenido a RetroArch\n" "\n" - "Para más información dirígete a Ayuda.\n" + "Para ms informacin dirgete a Ayuda.\n" ); break; case MENU_LABEL_INPUT_DRIVER: @@ -994,20 +1007,20 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) " \n" "Este controlador puede funcionar sin X. \n" " \n" - "Utiliza la API más reciente para joypads \n" + "Utiliza la API ms reciente para joypads \n" "evdec para dar compatibilidad con joysticks. \n" - "Permite conexión en caliente y force \n" + "Permite conexin en caliente y force \n" "feedback (si lo admite el dispositivo). \n" " \n" "El controlador lee los eventos evdev para \n" - "dar compatibilidad con teclados. También \n" + "dar compatibilidad con teclados. Tambin \n" "es compatible con retrollamadas de teclado, \n" - "ratones y pantallas táctiles. \n" + "ratones y pantallas tctiles. \n" " \n" - "La mayoría de las distros tienen los nodos \n" + "La mayora de las distros tienen los nodos \n" "/dev/input en modo root-only (modo 600). \n" "Puedes configurar una regla udev que los haga \n" - "accesibles fuera de la raíz." + "accesibles fuera de la raz." ); break; case MENU_LABEL_INPUT_DRIVER_LINUXRAW: @@ -1016,7 +1029,7 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) " \n" "Este controlador necesita de un TTY activo. \n" "Los eventos de teclado se leen directamente \n" - "desde el TTY, lo que es más simple pero no tan \n" + "desde el TTY, lo que es ms simple pero no tan \n" "flexible como udev. \n" "No es compatible con ratones, etc. \n" " \n" @@ -1027,7 +1040,7 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) snprintf(s, len, "Controlador de entrada.\n" " \n" - "El controlador de vídeo podría forzar \n" + "El controlador de vdeo podra forzar \n" "el uso de un controlador de entrada \n" "distinto."); break; @@ -1039,34 +1052,34 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) "Buscar contenido. \n" " \n" "Para cargar contenidos necesitas \n" - "un 'núcleo' y un archivo de contenido.\n" + "un 'ncleo' y un archivo de contenido.\n" " \n" - "Para controlar el lugar donde el menú \n" + "Para controlar el lugar donde el men \n" "empieza a buscar contenidos, cambia \n" - "la opción 'Carpeta del navegador de \n" - "archivos'. En caso de que no esté \n" - "configurada, empezará desde la raíz.\n" + "la opcin 'Carpeta del navegador de \n" + "archivos'. En caso de que no est \n" + "configurada, empezar desde la raz.\n" " \n" - "El navegador filtrará las extensiones \n" - "del último núcleo seleccionado en \n" - "'Cargar núcleo' y lo utilizará al \n" + "El navegador filtrar las extensiones \n" + "del ltimo ncleo seleccionado en \n" + "'Cargar ncleo' y lo utilizar al \n" "cargar un contenido." ); break; case MENU_LABEL_CORE_LIST: snprintf(s, len, - "Cargar núcleo. \n" + "Cargar ncleo. \n" " \n" - "Busca una implementación de núcleo \n" - "para libretro. El navegador empezará \n" - "desde la ruta de tu carpeta de núcleos.\n" - "Si está en blanco, empezará desde \n" - "la raíz.\n" + "Busca una implementacin de ncleo \n" + "para libretro. El navegador empezar \n" + "desde la ruta de tu carpeta de ncleos.\n" + "Si est en blanco, empezar desde \n" + "la raz.\n" " \n" - "Si la carpeta de núcleos es una carpeta,\n" - "el menú la utilizará como carpeta \n" - "base. Si la carpeta de núcleos es una \n" - "ruta completa, empezará en la carpeta \n" + "Si la carpeta de ncleos es una carpeta,\n" + "el men la utilizar como carpeta \n" + "base. Si la carpeta de ncleos es una \n" + "ruta completa, empezar en la carpeta \n" "donde se encuentre el archivo."); break; case MENU_LABEL_LOAD_CONTENT_HISTORY: @@ -1074,15 +1087,15 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) "Cargar contenido del historial. \n" " \n" "Cuando se cargan contenidos, estos y \n" - "las combinaciones de núcleos de libretro \n" + "las combinaciones de ncleos de libretro \n" "se guardan en el historial. \n" " \n" "El historial se guarda en un archivo en la \n" "misma carpeta que el archivo de configura- \n" - "ción de RetroArch. Si no se ha cargado un \n" - "archivo de configuración al iniciar, no se \n" - "guardará ni cargará el historial, y la \n" - "opción no existirá en el menú principal." + "cin de RetroArch. Si no se ha cargado un \n" + "archivo de configuracin al iniciar, no se \n" + "guardar ni cargar el historial, y la \n" + "opcin no existir en el men principal." ); break; case MENU_LABEL_VIDEO_DRIVER: @@ -1092,73 +1105,73 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) { case MENU_LABEL_VIDEO_DRIVER_GL: snprintf(s, len, - "Controlador de vídeo OpenGL. \n" + "Controlador de vdeo OpenGL. \n" " \n" - "Este controlador permite que los núcleos \n" - "libretro GL se utilicen, además de las \n" + "Este controlador permite que los ncleos \n" + "libretro GL se utilicen, adems de las \n" "implementaciones renderizadas por soft-\n" - "ware del núcleo.\n" + "ware del ncleo.\n" " \n" "El rendimiento de las implementaciones \n" "por software y libretro GL dependen \n" "del controlador GL que tenga tu \n" - "tarjeta gráfica."); + "tarjeta grfica."); break; case MENU_LABEL_VIDEO_DRIVER_SDL2: snprintf(s, len, - "Controlador de vídeo SDL 2.\n" + "Controlador de vdeo SDL 2.\n" " \n" - "Este es un controlador de vídeo por \n" + "Este es un controlador de vdeo por \n" "software SDL 2.\n" " \n" "El rendimiento para las implementaciones \n" "libretro por software depende de la \n" - "implementación SDL de tu plataforma."); + "implementacin SDL de tu plataforma."); break; case MENU_LABEL_VIDEO_DRIVER_SDL1: snprintf(s, len, - "Controlador de vídeo SDL.\n" + "Controlador de vdeo SDL.\n" " \n" - "Este es un controlador de vídeo por \n" + "Este es un controlador de vdeo por \n" "software SDL 1.2.\n" " \n" "Su rendimiento es considerado inferior \n" - "a lo óptimo. Utilízalo únicamente como \n" - "último recurso."); + "a lo ptimo. Utilzalo nicamente como \n" + "ltimo recurso."); break; case MENU_LABEL_VIDEO_DRIVER_D3D: snprintf(s, len, - "Controlador de vídeo Direct3D. \n" + "Controlador de vdeo Direct3D. \n" " \n" - "El rendimiento de los núcleos \n" - "que rendericen por software dependerá \n" + "El rendimiento de los ncleos \n" + "que rendericen por software depender \n" "del controlador D3D de tu tarjeta \n" - "gráfica."); + "grfica."); break; case MENU_LABEL_VIDEO_DRIVER_EXYNOS: snprintf(s, len, - "Controlador de vídeo Exynos-G2D. \n" + "Controlador de vdeo Exynos-G2D. \n" " \n" - "Este es un controlador de vídeo Exynos \n" + "Este es un controlador de vdeo Exynos \n" "de bajo nivel. Utiliza el bloque G2D \n" "del SoC Exynos de Samsung para las \n" "operaciones de blit. \n" " \n" - "El rendimiento de los núcleos \n" - "renderizados por software debería \n" - "ser óptimo."); + "El rendimiento de los ncleos \n" + "renderizados por software debera \n" + "ser ptimo."); break; case MENU_LABEL_VIDEO_DRIVER_SUNXI: snprintf(s, len, - "Controlador de vídeo Sunxi-G2D. \n" + "Controlador de vdeo Sunxi-G2D. \n" " \n" - "Este es un controlador de vídeo Sunxi \n" + "Este es un controlador de vdeo Sunxi \n" "de bajo nivel. Utiliza el bloque G2D \n" "de todos los SoC Allwinner."); break; default: snprintf(s, len, - "Controlador de vídeo actual."); + "Controlador de vdeo actual."); break; } break; @@ -1176,11 +1189,11 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) { case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_SINC: snprintf(s, len, - "Implementación SINC en ventana."); + "Implementacin SINC en ventana."); break; case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_CC: snprintf(s, len, - "Implementación de cosenos complejos."); + "Implementacin de cosenos complejos."); break; } break; @@ -1205,13 +1218,13 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) "HLSL" #endif " directamente. \n" - "El menú de shaders se actualizará. \n" + "El men de shaders se actualizar. \n" " \n" - "Si el CGP utiliza métodos de escalado \n" + "Si el CGP utiliza mtodos de escalado \n" "complejos (por ejemplo, escalado de \n" - "origen, el mismo factor para X/Y), podría \n" + "origen, el mismo factor para X/Y), podra \n" "no mostrar un factor de escalado correcto \n" - "en el menú." + "en el men." ); break; case MENU_LABEL_VIDEO_SHADER_SCALE_PASS: From f482789c5566e3ed8ac25241d6fb5b3cabd7c853 Mon Sep 17 00:00:00 2001 From: Alcaro Date: Sun, 19 Jul 2015 22:52:26 +0200 Subject: [PATCH 033/822] Nuke some dupe defines. --- menu/menu_hash.h | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/menu/menu_hash.h b/menu/menu_hash.h index ca404efaa9..30f8c6dd30 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -343,8 +343,6 @@ extern "C" { #define MENU_LABEL_VALUE_DYNAMIC_WALLPAPER 0x66928c32U #define MENU_LABEL_VALUE_BOXART 0x716441ebU #define MENU_LABEL_BOXART 0xa269b0afU -#define MENU_LABEL_PAL60_ENABLE 0x62bc416eU -#define MENU_LABEL_SYSTEM_BGM_ENABLE 0x9287a1c5U #define MENU_LABEL_FASTFORWARD_RATIO 0x3a0c2706U #define MENU_LABEL_VALUE_FASTFORWARD_RATIO 0x3c719749U @@ -383,8 +381,6 @@ extern "C" { #define MENU_LABEL_INPUT_PLAYER4_JOYPAD_INDEX 0xac975812U #define MENU_LABEL_INPUT_PLAYER5_JOYPAD_INDEX 0xe7d791b3U -#define MENU_LABEL_LIBRETRO_DIR_PATH 0x1af1eb72U - #define MENU_LABEL_AUDIO_DEVICE 0x2574eac6U #define MENU_LABEL_VALUE_AUDIO_DEVICE 0xcacf3707U @@ -450,7 +446,6 @@ extern "C" { #define MENU_LABEL_VALUE_SAVEFILE_DIRECTORY 0x418b1929U #define MENU_LABEL_SAVESTATE_DIRECTORY 0x90551289U #define MENU_LABEL_VALUE_SAVESTATE_DIRECTORY 0xe6e0732aU -#define MENU_LABEL_ASSETS_DIRECTORY 0xde1ae8ecU #define MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY 0x62f975b8U #define MENU_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY 0x0a3a407aU #define MENU_LABEL_BOXARTS_DIRECTORY 0x9e2bdbddU @@ -466,7 +461,6 @@ extern "C" { #define MENU_LABEL_VALUE_INPUT_AXIS_THRESHOLD 0x3fb34697U #define MENU_LABEL_INPUT_TURBO_PERIOD 0xf7a97482U #define MENU_LABEL_VALUE_INPUT_TURBO_PERIOD 0x9207b594U -#define MENU_LABEL_INPUT_AUTODETECT_ENABLE 0xb1e07facU #define MENU_LABEL_VIDEO_GAMMA 0x08a951beU #define MENU_LABEL_VALUE_VIDEO_GAMMA 0xc7da99dfU @@ -608,7 +602,6 @@ extern "C" { #define MENU_LABEL_VALUE_CORE_UPDATER_BUILDBOT_URL 0x1bc80956U #define MENU_LABEL_BUILDBOT_ASSETS_URL 0x1895c71eU #define MENU_LABEL_VALUE_BUILDBOT_ASSETS_URL 0xaa0327a0U -#define MENU_LABEL_RECORD_CONFIG 0x11c3daf9U #define MENU_LABEL_VIDEO_SHARED_CONTEXT 0x7d7dad16U #define MENU_LABEL_VALUE_VIDEO_SHARED_CONTEXT 0x353d3287U #define MENU_LABEL_DUMMY_ON_CORE_SHUTDOWN 0x78579f70U @@ -649,7 +642,6 @@ extern "C" { #define MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL 0xc35416c0U #define MENU_LABEL_DEFERRED_CORE_LIST 0xf157d289U #define MENU_LABEL_DEFERRED_CORE_UPDATER_LIST 0xc315f682U -#define MENU_LABEL_CONFIGURATIONS 0x3e930a50U #define MENU_LABEL_DISK_IMAGE_APPEND 0x5af7d709U #define MENU_LABEL_CORE_LIST 0xa22bb14dU #define MENU_LABEL_VALUE_CORE_LIST 0x0e17fd4eU @@ -664,7 +656,6 @@ extern "C" { #define MENU_LABEL_CORE_COUNTERS 0x64cc83e0U #define MENU_LABEL_LOAD_CONTENT_HISTORY 0xfe1d79e5U #define MENU_LABEL_VALUE_LOAD_CONTENT_HISTORY 0x5b362286U -#define MENU_LABEL_INFO_SCREEN 0xd97853d0U #define MENU_LABEL_SYSTEM_INFORMATION 0x206ebf0fU #define MENU_LABEL_VALUE_SYSTEM_INFORMATION 0xa62fd7f0U #define MENU_LABEL_CORE_INFORMATION 0xb638e0d3U @@ -725,12 +716,10 @@ extern "C" { #define MENU_LABEL_VALUE_RECORDING_OUTPUT_DIRECTORY 0x93a44152U #define MENU_LABEL_RECORDING_CONFIG_DIRECTORY 0x3c3f274bU #define MENU_LABEL_VALUE_RECORDING_CONFIG_DIRECTORY 0x1f7d918dU -#define MENU_LABEL_VIDEO_FONT_PATH 0xd0de729eU #define MENU_LABEL_VIDEO_FILTER 0x1c0eb741U #define MENU_LABEL_VALUE_VIDEO_FILTER 0xc1690382U #define MENU_LABEL_PAL60_ENABLE 0x62bc416eU #define MENU_LABEL_VALUE_PAL60_ENABLE 0x05a5bc9aU -#define MENU_LABEL_MENU_WALLPAPER 0x3b84de01U #define MENU_LABEL_CONTENT_HISTORY_PATH 0x6f22fb9dU #define MENU_LABEL_AUDIO_DSP_PLUGIN 0x4a69572bU #define MENU_LABEL_VALUE_AUDIO_DSP_PLUGIN 0x1c9f180dU @@ -743,7 +732,6 @@ extern "C" { #define MENU_LABEL_CORE_ASSETS_DIRECTORY 0x8ba5ee54U #define MENU_LABEL_VALUE_CORE_ASSETS_DIRECTORY 0x319b6c96U #define MENU_LABEL_CONTENT_DIRECTORY 0x7738dc14U -#define MENU_LABEL_SCREENSHOT_DIRECTORY 0x552612d7U #define MENU_LABEL_VALUE_SCREENSHOT_DIRECTORY 0x42186f78U #define MENU_LABEL_INPUT_REMAPPING_DIRECTORY 0x5233c20bU #define MENU_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY 0xe81058adU @@ -753,17 +741,14 @@ extern "C" { #define MENU_LABEL_VALUE_VIDEO_FILTER_DIR 0xbb865957U #define MENU_LABEL_AUDIO_FILTER_DIR 0x4bd96ebaU #define MENU_LABEL_VALUE_AUDIO_FILTER_DIR 0x509bb77cU -#define MENU_LABEL_SAVESTATE_DIRECTORY 0x90551289U #define MENU_LABEL_LIBRETRO_DIR_PATH 0x1af1eb72U #define MENU_LABEL_VALUE_LIBRETRO_DIR_PATH 0xf606d103U #define MENU_LABEL_LIBRETRO_INFO_PATH 0xe552b25fU #define MENU_LABEL_VALUE_LIBRETRO_INFO_PATH 0x3f39960fU #define MENU_LABEL_RGUI_CONFIG_DIRECTORY 0x0cb3e005U #define MENU_LABEL_VALUE_RGUI_CONFIG_DIRECTORY 0x20eb5170U -#define MENU_LABEL_SAVEFILE_DIRECTORY 0x92773488U #define MENU_LABEL_OVERLAY_DIRECTORY 0xc4ed3d1bU #define MENU_LABEL_VALUE_OVERLAY_DIRECTORY 0xdb8925bcU -#define MENU_LABEL_SYSTEM_DIRECTORY 0x35a6fb9eU #define MENU_LABEL_VALUE_SYSTEM_DIRECTORY 0x20da683fU #define MENU_LABEL_ASSETS_DIRECTORY 0xde1ae8ecU #define MENU_LABEL_VALUE_ASSETS_DIRECTORY 0xc94e558dU @@ -771,8 +756,8 @@ extern "C" { #define MENU_LABEL_VALUE_EXTRACTION_DIRECTORY 0x20a7bc9bU #define MENU_LABEL_JOYPAD_AUTOCONFIG_DIR 0x2f4822d8U #define MENU_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR 0x8bb1c2c9U -#define MENU_LABEL_VALUE_INPUT_AUTODETECT_ENABLE 0xf5209bdbU #define MENU_LABEL_INPUT_AUTODETECT_ENABLE 0xb1e07facU +#define MENU_LABEL_VALUE_INPUT_AUTODETECT_ENABLE 0xf5209bdbU #define MENU_LABEL_VALUE_DRIVER_SETTINGS 0x81cd2d62U #define MENU_LABEL_VALUE_CORE_SETTINGS 0xcddea047U #define MENU_LABEL_VALUE_CONFIGURATION_SETTINGS 0x5a1558ceU @@ -849,7 +834,6 @@ extern "C" { #define MENU_LABEL_TAKE_SCREENSHOT 0x6786e867U #define MENU_LABEL_VALUE_TAKE_SCREENSHOT 0xab767128U #define MENU_LABEL_FILE_LOAD_OR_RESUME 0x952941f4U -#define MENU_LABEL_DISK_IMAGE_APPEND 0x5af7d709U #define MENU_LABEL_CONFIGURATIONS 0x3e930a50U #define MENU_LABEL_VALUE_CONFIGURATIONS 0xce036cfdU #define MENU_LABEL_VALUE_CHEAT_FILE_SAVE_AS 0xf2498a2dU From c43e33a8164fcb718285570362b6cded239bd3b2 Mon Sep 17 00:00:00 2001 From: neville Date: Sun, 19 Jul 2015 22:58:52 +0200 Subject: [PATCH 034/822] (gl_raster_font.c) Certain code will only work for GL 3.0 and up --- gfx/drivers_font/gl_raster_font.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gfx/drivers_font/gl_raster_font.c b/gfx/drivers_font/gl_raster_font.c index 5d057747b4..0cb2608d27 100644 --- a/gfx/drivers_font/gl_raster_font.c +++ b/gfx/drivers_font/gl_raster_font.c @@ -71,7 +71,7 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font, } #ifdef HAVE_OPENGLES (void)modern; -#else +#elif defined(GL_VERSION_3_0) else if (modern) { GLint swizzle[] = { GL_ONE, GL_ONE, GL_ONE, GL_RED }; From c9de30dd98d3bc390d168e5c016b8f836cb8e5cf Mon Sep 17 00:00:00 2001 From: neville Date: Sun, 19 Jul 2015 23:09:22 +0200 Subject: [PATCH 035/822] (OSX PPC) Compile in HAVE_STB_FONT --- apple/OSXPPC/RetroArch.xcodeproj/project.pbxproj | 3 ++- gfx/drivers_font/gl_raster_font.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/apple/OSXPPC/RetroArch.xcodeproj/project.pbxproj b/apple/OSXPPC/RetroArch.xcodeproj/project.pbxproj index c8e0df352b..717dace7b3 100644 --- a/apple/OSXPPC/RetroArch.xcodeproj/project.pbxproj +++ b/apple/OSXPPC/RetroArch.xcodeproj/project.pbxproj @@ -282,7 +282,7 @@ ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-DHAVE_GRIFFIN", - "-DHAVE_CORETEXT", + "-DHAVE_STB_FONT", "-DHAVE_IOHIDMANAGER", "-DHAVE_RGUI", "-DHAVE_MENU", @@ -348,6 +348,7 @@ "-DNS_BLOCK_ASSERTIONS=1", "-DNDEBUG", "-DHAVE_GRIFFIN", + "-DHAVE_STB_FONT", "-DHAVE_IOHIDMANAGER", "-DHAVE_RGUI", "-DHAVE_MENU", diff --git a/gfx/drivers_font/gl_raster_font.c b/gfx/drivers_font/gl_raster_font.c index 0cb2608d27..27a104fffa 100644 --- a/gfx/drivers_font/gl_raster_font.c +++ b/gfx/drivers_font/gl_raster_font.c @@ -63,6 +63,8 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font, bool modern = font->gl->core_context || (cb->context_type == RETRO_HW_CONTEXT_OPENGL && cb->version_major >= 3); + + (void)modern; if (ancient) { From afc09848b450654db037ac55eee9185caec9fb4a Mon Sep 17 00:00:00 2001 From: neville Date: Sun, 19 Jul 2015 23:29:27 +0200 Subject: [PATCH 036/822] Add two fallback fonts for Apple --- gfx/drivers_font_renderer/stb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gfx/drivers_font_renderer/stb.c b/gfx/drivers_font_renderer/stb.c index 93776eea71..d27decca0b 100644 --- a/gfx/drivers_font_renderer/stb.c +++ b/gfx/drivers_font_renderer/stb.c @@ -182,6 +182,8 @@ static const char *font_renderer_stb_get_default_font(void) "/Library/Fonts/Microsoft/Candara.ttf", "/Library/Fonts/Verdana.ttf", "/Library/Fonts/Tahoma.ttf", + "/Library/Fonts/Andale Mono.ttf", + "/Library/Fonts/Courier New.ttf", #elif defined(__ANDROID_API__) "/system/fonts/DroidSansMono.ttf", "/system/fonts/CutiveMono.ttf", From 11e8a498df61a26fdbee27304a32c4fec05d2ac7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 19 Jul 2015 23:30:51 +0200 Subject: [PATCH 037/822] (stb_truetype.h) PS3 buildfix - don't include memory.h --- deps/stb/stb_truetype.h | 1 - 1 file changed, 1 deletion(-) diff --git a/deps/stb/stb_truetype.h b/deps/stb/stb_truetype.h index 663aef4b60..13d4b9f58f 100644 --- a/deps/stb/stb_truetype.h +++ b/deps/stb/stb_truetype.h @@ -438,7 +438,6 @@ int main(int arg, char **argv) #endif #ifndef STBTT_memcpy - #include #define STBTT_memcpy memcpy #define STBTT_memset memset #endif From 218f52c5bf39e133628ed2465790e309514cb97c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 21 Jul 2015 01:45:32 +0200 Subject: [PATCH 038/822] Minor nits --- gfx/drivers/gl.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 249a5717bc..9ceb367168 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -106,8 +106,8 @@ static INLINE bool gl_query_extension(gl_t *gl, const char *ext) if (gl->core_context) { #ifdef GL_NUM_EXTENSIONS - GLint i, exts; - exts = 0; + GLint i; + GLint exts = 0; glGetIntegerv(GL_NUM_EXTENSIONS, &exts); for (i = 0; i < exts; i++) { @@ -327,8 +327,10 @@ static INLINE GLenum min_filter_to_mag(GLenum type) case GL_NEAREST_MIPMAP_NEAREST: return GL_NEAREST; default: - return type; + break; } + + return type; } #ifdef HAVE_FBO From 7df80fea83e0fe9758ea6a25393bff78dde0b362 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 21 Jul 2015 01:58:57 +0200 Subject: [PATCH 039/822] Take out one ifndef HAVE_PSGL preprocessor define --- gfx/drivers/gl_common.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/gfx/drivers/gl_common.c b/gfx/drivers/gl_common.c index fa81ad4e3a..7b908cfaee 100644 --- a/gfx/drivers/gl_common.c +++ b/gfx/drivers/gl_common.c @@ -95,9 +95,7 @@ void gl_load_texture_data(GLuint id, glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); -#ifndef HAVE_PSGL glPixelStorei(GL_UNPACK_ALIGNMENT, alignment); -#endif glTexImage2D(GL_TEXTURE_2D, 0, (driver->gfx_use_rgba || !rgb32) ? GL_RGBA : RARCH_GL_INTERNAL_FORMAT32, From 248e8ad1ca794e1bd245e45252ef6466f6c87e27 Mon Sep 17 00:00:00 2001 From: Toad King Date: Mon, 20 Jul 2015 20:08:13 -0500 Subject: [PATCH 040/822] [GX] properly shut down dev thread --- frontend/drivers/platform_gx.c | 35 +++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index d4b010639e..57a551baf5 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -2,7 +2,7 @@ * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis * Copyright (C) 2012-2015 - Michael Lelli - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -53,6 +53,7 @@ extern void system_exec_wii(const char *path, bool should_load_game); #endif #include #include +#include #ifdef USBGECKO #include @@ -108,10 +109,12 @@ static struct { static slock_t *gx_device_mutex; static slock_t *gx_device_cond_mutex; static scond_t *gx_device_cond; +static sthread_t *gx_device_thread; +static volatile bool gx_stop_dev_thread; -static void *gx_devthread(void *a) +static void gx_devthread(void *a) { - while (1) + while (!gx_stop_dev_thread) { unsigned i; @@ -119,7 +122,7 @@ static void *gx_devthread(void *a) for (i = 0; i < GX_DEVICE_END; i++) { - if (gx_devices[i].mounted && + if (gx_devices[i].mounted && !gx_devices[i].interface->isInserted()) { gx_devices[i].mounted = false; @@ -135,8 +138,6 @@ static void *gx_devthread(void *a) scond_wait_timeout(gx_device_cond, gx_device_cond_mutex, 1000000); slock_unlock(gx_device_cond_mutex); } - - return NULL; } static int gx_get_device_from_path(const char *path) @@ -222,7 +223,7 @@ static void frontend_gx_get_environment_settings(int *argc, char *argv[], gx_rom_path[0] = '\0'; #else #ifdef HW_RVL - /* needed on Wii; loaders follow a dumb standard where the path and + /* needed on Wii; loaders follow a dumb standard where the path and * filename are separate in the argument list */ if (*argc > 2 && argv[1] != NULL && argv[2] != NULL) { @@ -297,7 +298,6 @@ static void frontend_gx_init(void *data) #endif #if defined(HW_RVL) && !defined(IS_SALAMANDER) - OSThread gx_device_thread; gx_devices[GX_DEVICE_SD].interface = &__io_wiisd; gx_devices[GX_DEVICE_SD].name = "sd"; gx_devices[GX_DEVICE_SD].mounted = fatMountSimple( @@ -312,7 +312,20 @@ static void frontend_gx_init(void *data) gx_device_cond_mutex = slock_new(); gx_device_cond = scond_new(); gx_device_mutex = slock_new(); - OSCreateThread(&gx_device_thread, gx_devthread, 0, NULL, NULL, 0, 66, 0); + gx_device_thread = sthread_create(gx_devthread, NULL); +#endif +} + +static void frontend_gx_deinit(void *data) +{ + (void)data; + +#if defined(HW_RVL) && !defined(IS_SALAMANDER) + slock_lock(gx_device_cond_mutex); + gx_stop_dev_thread = true; + slock_unlock(gx_device_cond_mutex); + scond_signal(gx_device_cond); + sthread_join(gx_device_thread); #endif } @@ -346,7 +359,7 @@ static void frontend_gx_process_args(int *argc, char *argv[]) #ifndef IS_SALAMANDER settings_t *settings = config_get_ptr(); - /* A big hack: sometimes Salamander doesn't save the new core + /* A big hack: sometimes Salamander doesn't save the new core * it loads on first boot, so we make sure * settings->libretro is set here. */ if (!settings->libretro[0] && *argc >= 1 && strrchr(argv[0], '/')) @@ -407,7 +420,7 @@ static int frontend_gx_parse_drive_list(void *data) const frontend_ctx_driver_t frontend_ctx_gx = { frontend_gx_get_environment_settings, frontend_gx_init, - NULL, /* deinit */ + frontend_gx_deinit, frontend_gx_exitspawn, frontend_gx_process_args, frontend_gx_exec, From 866970fb1c82540490375bee5cc54728444dfa5a Mon Sep 17 00:00:00 2001 From: Toad King Date: Mon, 20 Jul 2015 21:01:11 -0500 Subject: [PATCH 041/822] small changes to hotplugging support --- frontend/drivers/platform_gx.c | 28 ++++++++++------------------ menu/menu_displaylist.c | 19 ++++--------------- 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index 57a551baf5..f8a1e57d45 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -120,15 +120,16 @@ static void gx_devthread(void *a) slock_lock(gx_device_mutex); - for (i = 0; i < GX_DEVICE_END; i++) - { - if (gx_devices[i].mounted && - !gx_devices[i].interface->isInserted()) - { - gx_devices[i].mounted = false; - char n[8]; - snprintf(n, sizeof(n), "%s:", gx_devices[i].name); - fatUnmount(n); + for (i = 0; i < GX_DEVICE_END; i++) { + if (gx_devices[i].mounted) { + if (!gx_devices[i].interface->isInserted()) { + gx_devices[i].mounted = false; + char n[8]; + snprintf(n, sizeof(n), "%s:", gx_devices[i].name); + fatUnmount(n); + } + } else if (gx_devices[i].interface->startup() && gx_devices[i].interface->isInserted()) { + gx_devices[i].mounted = fatMountSimple(gx_devices[i].name, gx_devices[i].interface); } } @@ -139,15 +140,6 @@ static void gx_devthread(void *a) slock_unlock(gx_device_cond_mutex); } } - -static int gx_get_device_from_path(const char *path) -{ - if (strstr(path, "sd:") == path) - return GX_DEVICE_SD; - if (strstr(path, "usb:") == path) - return GX_DEVICE_USB; - return -1; -} #endif #ifdef HAVE_LOGGER diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index eef24caeeb..877cc02395 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -89,7 +89,7 @@ static void print_buf_lines(file_list_t *list, char *buf, int buf_size, char *last = NULL; fill_pathname_join(core_path, settings->libretro_info_path, line_start, sizeof(core_path)); - + (void)last; path_remove_extension(core_path); @@ -814,7 +814,7 @@ static int menu_displaylist_parse_playlist(menu_displaylist_info_t *info, fill_short_pathname_representation(path_short, path, sizeof(path_short)); - strlcpy(fill_buf, + strlcpy(fill_buf, (label && label[0] != '\0') ? label : path_short, sizeof(fill_buf)); @@ -1936,17 +1936,6 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n return 0; } -#if defined(GEKKO) && defined(HW_RVL) - slock_lock(gx_device_mutex); - device = gx_get_device_from_path(info->path); - - if (device != -1 && !gx_devices[device].mounted && - gx_devices[device].interface->isInserted()) - fatMountSimple(gx_devices[device].name, gx_devices[device].interface); - - slock_unlock(gx_device_mutex); -#endif - path_is_compressed = path_is_compressed_file(info->path); push_dir = (info->setting && info->setting->browser_selection_type == ST_DIR); @@ -2314,7 +2303,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) (type == DISPLAYLIST_PERFCOUNTERS_CORE) ? perf_ptr_libretro : perf_ptr_rarch , (type == DISPLAYLIST_PERFCOUNTERS_CORE) ? - MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_BEGIN : + MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_BEGIN : MENU_SETTINGS_PERF_COUNTERS_BEGIN); ret = 0; @@ -2464,7 +2453,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) menu_hash_to_str(MENU_LABEL_VALUE_DISK_INDEX), menu_hash_to_str(MENU_LABEL_DISK_INDEX), MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX, 0, 0); - menu_list_push(info->list, + menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DISK_CYCLE_TRAY_STATUS), menu_hash_to_str(MENU_LABEL_DISK_CYCLE_TRAY_STATUS), MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS, 0, 0); From 0776932b3a52353bad6685f215fb7ff409ff378f Mon Sep 17 00:00:00 2001 From: vanfanel Date: Tue, 21 Jul 2015 14:22:39 +0200 Subject: [PATCH 042/822] VIDEO/SUNXI: Make setting aspect ratio in menu work and fixed segfault on new content loading. --- gfx/drivers/sunxi_gfx.c | 108 ++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/gfx/drivers/sunxi_gfx.c b/gfx/drivers/sunxi_gfx.c index 547696b25b..4c038c7fca 100644 --- a/gfx/drivers/sunxi_gfx.c +++ b/gfx/drivers/sunxi_gfx.c @@ -542,7 +542,8 @@ struct sunxi_video unsigned int menu_height; unsigned int menu_pitch; - bool aspect_changed; + float aspect_ratio; + bool readjust_pending; }; static void sunxi_blank_console(struct sunxi_video *_dispvars) @@ -633,6 +634,11 @@ static void *sunxi_gfx_init(const video_info_t *video, _dispvars->keep_vsync = true; _dispvars->menu_active = false; _dispvars->bytes_per_pixel = video->rgb32 ? 4 : 2; + /* It's very important that we set aspect here because the + * call seq when a core is loaded is gfx_init()->set_aspect()->gfx_frame() + * and we don't want the main surface to be setup in set_aspect() + * before we get to gfx_frame(). */ + _dispvars->aspect_ratio = video_driver_get_aspect_ratio(); switch (_dispvars->bytes_per_pixel) { @@ -745,29 +751,7 @@ static void sunxi_setup_scale (void *data, _dispvars->pages[i].address = ((uint32_t*) _dispvars->sunxi_disp->framebuffer_addr + (_dispvars->sunxi_disp->yres + i * _dispvars->src_height) * _dispvars->dst_pitch/4); } - switch (settings->video.aspect_ratio_idx) - { - case ASPECT_RATIO_4_3: - aspect = (float)4 / (float)3; - break; - case ASPECT_RATIO_16_9: - aspect = (float)16 / (float)9; - break; - case ASPECT_RATIO_16_10: - aspect = (float)16 / (float)10; - break; - case ASPECT_RATIO_16_15: - aspect = (float)16 / (float)15; - break; - case ASPECT_RATIO_CORE: - aspect = (float)_dispvars->src_width / (float)_dispvars->src_height; - break; - default: - aspect = (float)_dispvars->src_width / (float)_dispvars->src_height; - break; - } - - visible_width = _dispvars->sunxi_disp->yres * aspect; + visible_width = _dispvars->sunxi_disp->yres * _dispvars->aspect_ratio; xpos = (_dispvars->sunxi_disp->xres - visible_width) / 2; /* setup layer window */ @@ -782,7 +766,7 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, { struct sunxi_video *_dispvars = (struct sunxi_video*)data; - if (_dispvars->src_width != width || _dispvars->src_height != height) + if (_dispvars->src_width != width || _dispvars->src_height != height || _dispvars->readjust_pending) { /* Sanity check on new dimensions */ if (width == 0 || height == 0) @@ -792,6 +776,7 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, _dispvars->src_width, _dispvars->src_height, width, height); sunxi_setup_scale(_dispvars, width, height, pitch); + _dispvars->readjust_pending = false; } if (_dispvars->menu_active) @@ -898,40 +883,43 @@ static void sunxi_set_texture_enable(void *data, bool state, bool full_screen) static void sunxi_set_texture_frame(void *data, const void *frame, bool rgb32, unsigned width, unsigned height, float alpha) { - uint16_t src_pix; - uint32_t R, G, B, dst_pix; - unsigned int i, j; struct sunxi_video *_dispvars = (struct sunxi_video*)data; - - /* We have to go on a pixel format conversion adventure for now, until we can - * convince RGUI to output in an 8888 format. */ - unsigned int src_pitch = width * 2; - unsigned int dst_pitch = _dispvars->sunxi_disp->xres * 4; - unsigned int dst_width = _dispvars->sunxi_disp->xres; - uint32_t line[dst_width]; + + if (_dispvars->menu_active) { + uint16_t src_pix; + uint32_t R, G, B, dst_pix; + unsigned int i, j; + + /* We have to go on a pixel format conversion adventure for now, until we can + * convince RGUI to output in an 8888 format. */ + unsigned int src_pitch = width * 2; + unsigned int dst_pitch = _dispvars->sunxi_disp->xres * 4; + unsigned int dst_width = _dispvars->sunxi_disp->xres; + uint32_t line[dst_width]; - /* Remember, memcpy() works with 8bits pointers for increments. */ - char *dst_base_addr = (char*)(_dispvars->pages[0].address); - char *src_base_addr = (char*)frame; + /* Remember, memcpy() works with 8bits pointers for increments. */ + char *dst_base_addr = (char*)(_dispvars->pages[0].address); + char *src_base_addr = (char*)frame; - for (i = 0; i < height; i++) - { - for (j = 0; j < src_pitch / 2; j++) + for (i = 0; i < height; i++) { - src_pix = *((uint16_t*)frame + (src_pitch / 2 * i) + j); - /* The hex AND is for keeping only the part we need for each component. */ - R = (src_pix << 8) & 0x00FF0000; - G = (src_pix << 4) & 0x0000FF00; - B = (src_pix << 0) & 0x000000FF; - line[j] = (0 | R | G | B); + for (j = 0; j < src_pitch / 2; j++) + { + src_pix = *((uint16_t*)frame + (src_pitch / 2 * i) + j); + /* The hex AND is for keeping only the part we need for each component. */ + R = (src_pix << 8) & 0x00FF0000; + G = (src_pix << 4) & 0x0000FF00; + B = (src_pix << 0) & 0x000000FF; + line[j] = (0 | R | G | B); + } + memcpy(dst_base_addr + (dst_pitch * i), (char*)line, dst_pitch); } - memcpy(dst_base_addr + (dst_pitch * i), (char*)line, dst_pitch); - } - /* Issue pageflip. Will flip on next vsync. */ - sunxi_layer_set_rgb_input_buffer(_dispvars->sunxi_disp, - _dispvars->sunxi_disp->bits_per_pixel, - _dispvars->pages[0].offset, width, height, _dispvars->sunxi_disp->xres); + /* Issue pageflip. Will flip on next vsync. */ + sunxi_layer_set_rgb_input_buffer(_dispvars->sunxi_disp, + _dispvars->sunxi_disp->bits_per_pixel, + _dispvars->pages[0].offset, width, height, _dispvars->sunxi_disp->xres); + } } static uint64_t sunxi_get_frame_count(void *data) @@ -942,6 +930,18 @@ static uint64_t sunxi_get_frame_count(void *data) return _dispvars->frame_count; } +static void sunxi_set_aspect_ratio (void *data, unsigned aspect_ratio_idx) +{ + struct sunxi_video *_dispvars = (struct sunxi_video*)data; + /* Here we obtain the new aspect ratio. */ + float new_aspect = aspectratio_lut[aspect_ratio_idx].value; + if (new_aspect != _dispvars->aspect_ratio) { + _dispvars->aspect_ratio = new_aspect; + /* So we setup scale again on the next gfx_frame. */ + _dispvars->readjust_pending = true; + } +} + static const video_poke_interface_t sunxi_poke_interface = { sunxi_get_frame_count, NULL, /* set_video_mode */ @@ -951,7 +951,7 @@ static const video_poke_interface_t sunxi_poke_interface = { NULL, /* get_video_output_next */ NULL, /* get_current_framebuffer */ NULL, /* get_proc_address */ - NULL, /* sunxi_set_aspect_ratio */ + sunxi_set_aspect_ratio, NULL, /* sunxi_apply_state_changes */ #ifdef HAVE_MENU sunxi_set_texture_frame, From eb7bf55d90654a0dbbab935c2de756cf4caffaa4 Mon Sep 17 00:00:00 2001 From: vanfanel Date: Tue, 21 Jul 2015 14:33:02 +0200 Subject: [PATCH 043/822] VIDEO/SUNXI: Reworked where aspect ratio is changed in order to avoid variable. --- gfx/drivers/sunxi_gfx.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/gfx/drivers/sunxi_gfx.c b/gfx/drivers/sunxi_gfx.c index 4c038c7fca..b3ec46706a 100644 --- a/gfx/drivers/sunxi_gfx.c +++ b/gfx/drivers/sunxi_gfx.c @@ -543,7 +543,6 @@ struct sunxi_video unsigned int menu_pitch; float aspect_ratio; - bool readjust_pending; }; static void sunxi_blank_console(struct sunxi_video *_dispvars) @@ -766,7 +765,7 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, { struct sunxi_video *_dispvars = (struct sunxi_video*)data; - if (_dispvars->src_width != width || _dispvars->src_height != height || _dispvars->readjust_pending) + if (_dispvars->src_width != width || _dispvars->src_height != height) { /* Sanity check on new dimensions */ if (width == 0 || height == 0) @@ -776,7 +775,6 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, _dispvars->src_width, _dispvars->src_height, width, height); sunxi_setup_scale(_dispvars, width, height, pitch); - _dispvars->readjust_pending = false; } if (_dispvars->menu_active) @@ -937,8 +935,7 @@ static void sunxi_set_aspect_ratio (void *data, unsigned aspect_ratio_idx) float new_aspect = aspectratio_lut[aspect_ratio_idx].value; if (new_aspect != _dispvars->aspect_ratio) { _dispvars->aspect_ratio = new_aspect; - /* So we setup scale again on the next gfx_frame. */ - _dispvars->readjust_pending = true; + sunxi_setup_scale(_dispvars, _dispvars->src_width, _dispvars->src_height, _dispvars->src_pitch); } } From 766b6b811ee678e847053f215be70c7c995717e3 Mon Sep 17 00:00:00 2001 From: radius Date: Wed, 22 Jul 2015 00:22:57 -0500 Subject: [PATCH 044/822] [android] expose vid/pid to the frontend so the value can be saved to autoconf files --- input/drivers/android_input.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index bb6dd75d6b..8923c65638 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -678,6 +678,9 @@ static void handle_hotplug(android_input_t *android, params.idx = *port; params.vid = vendorId; params.pid = productId; + settings->input.pid[*port] = params.pid; + settings->input.vid[*port] = params.vid; + strlcpy(params.driver, android_joypad.ident, sizeof(params.driver)); autoconfigured = input_config_autoconfigure_joypad(¶ms); From c7cf9e0909134438fbee180b3cd133b6193132de Mon Sep 17 00:00:00 2001 From: Alcaro Date: Wed, 22 Jul 2015 22:14:39 +0200 Subject: [PATCH 045/822] Wipe out some warnings. --- menu/intl/menu_hash_es.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 54f695ff1d..1ffc9ed8a3 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -985,6 +985,9 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) menu_hash_to_str(MENU_LABEL_VALUE_ADD_CONTENT_LIST), menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_SCAN_FILE), + menu_hash_to_str(MENU_LABEL_VALUE_ADD_CONTENT_LIST), + menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY), + menu_hash_to_str(MENU_LABEL_VALUE_SCAN_FILE), menu_hash_to_str(MENU_LABEL_VALUE_LOAD_CONTENT_LIST), menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST) ); From 35bd8eaf1ae19a86e16318b23161490a5d7b5f26 Mon Sep 17 00:00:00 2001 From: Alcaro Date: Wed, 22 Jul 2015 22:16:08 +0200 Subject: [PATCH 046/822] I must've derped when merging it. Copying from the PR. --- menu/intl/menu_hash_es.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index 1ffc9ed8a3..6f2593f7ff 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -957,13 +957,6 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) break; case MENU_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC: snprintf(s, len, - "Para escanear contenidos ve a '%s' y\n" - "selecciona '%s' o %s'.\n" - " \n" - "Esto comparar los archivos con las entradas\n" - "en la base de datos.\n" - "Si hay una coincidencia, aadir una entrada\n" - "en una coleccin.\n" "Para escanear contenidos ve a '%s' \n" "y selecciona '%s' o \n" "'%s'.\n" @@ -985,9 +978,6 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) menu_hash_to_str(MENU_LABEL_VALUE_ADD_CONTENT_LIST), menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_SCAN_FILE), - menu_hash_to_str(MENU_LABEL_VALUE_ADD_CONTENT_LIST), - menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY), - menu_hash_to_str(MENU_LABEL_VALUE_SCAN_FILE), menu_hash_to_str(MENU_LABEL_VALUE_LOAD_CONTENT_LIST), menu_hash_to_str(MENU_LABEL_VALUE_CONTENT_COLLECTION_LIST) ); From 8e7cccb92d27ec38438c034d715a7f2812fa0ced Mon Sep 17 00:00:00 2001 From: fr500 Date: Thu, 23 Jul 2015 00:38:31 -0400 Subject: [PATCH 047/822] fix autoconfig, it was matching the last profile when no match was found --- input/input_autodetect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 5b18919395..41ce193da5 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -202,7 +202,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( config_file_free(conf); } - if(index >= 0) + if(index >= 0 && current_best > 0) { RARCH_LOG("Autoconf: best configuration score=%d\n", current_best); conf = config_file_new(list->elems[index].data); From 1dc285a0d62563d2ef0af5e00905831d14190eee Mon Sep 17 00:00:00 2001 From: fr500 Date: Thu, 23 Jul 2015 00:38:59 -0400 Subject: [PATCH 048/822] improve the shield hack and add a generic function to check if a gamepad name is present, implement archos gamepad hack --- input/drivers/android_input.c | 37 +++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 8923c65638..4fec577c95 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -557,6 +557,21 @@ static int android_input_get_id_index_from_name(android_input_t *android, return -1; } +static bool check_pad_names(android_input_t *android, char* name) +{ + bool ret = false; + RARCH_LOG("Checking if %s is connected (%d pads connected)", name, android->pads_connected); + for(int i=0; i < MAX_PADS; i++) + { + if(android->pad_states[i].name) + if(strstr(name, android->pad_states[i].name)) + ret = true; + } + RARCH_LOG("%s found: %d", name, ret); + return ret; +} + + static void handle_hotplug(android_input_t *android, struct android_app *android_app, unsigned *port, unsigned id, int source) @@ -580,6 +595,7 @@ static void handle_hotplug(android_input_t *android, return; } + /* FIXME: Ugly hack, see other FIXME note below. */ if (strstr(device_name, "keypad-game-zeus") || strstr(device_name, "keypad-zeus")) @@ -629,6 +645,8 @@ static void handle_hotplug(android_input_t *android, else if (strstr(device_name, "SideWinder")) strlcpy(name_buf, "SideWinder Classic", sizeof(name_buf)); } + + /* Built-in shield controller is always user 1 */ else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.01")) { /* Built-in shield contrlleris always user 1. FIXME: This is kinda ugly. @@ -638,12 +656,24 @@ static void handle_hotplug(android_input_t *android, *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); } - else if (strstr(device_name, "Virtual") || - (strstr(device_name, "gpio") && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.01"))) + else if (check_pad_names(&android, "NVIDIA Corporation NVIDIA Controller v01.01") && (strstr(device_name, "virtual") + || strstr(device_name, "gpio") || strstr(device_name, "Virtual") || strstr(device_name, "GPIO"))) { /* If built-in shield controller is detected bind the virtual and gpio devices to the same port*/ + port = 0; + strlcpy(name_buf, "Generic GPIO device", sizeof(name_buf)); + } + + /* Archos gamepad seems to be the worst offender so far, it has the buttons in joy_key, + * the analogs in joystick and the back button is a GPIO device, this part handles the + * hack for the back button + */ + else if (check_pad_names(&android, "joy_key") || check_pad_names(&android, "joystick") && (strstr(device_name, "virtual") + || strstr(device_name, "gpio") || strstr(device_name, "Virtual") || strstr(device_name, "GPIO"))) + { + /* If built-in archos controller is detected bind the virtual and gpio devices to the same port*/ *port = 0; - strlcpy(name_buf, "NVIDIA Corporation NVIDIA Controller v01.01", sizeof(name_buf)); + strlcpy(name_buf, "Generic GPIO device", sizeof(name_buf)); } else if ( strstr(device_name, "PLAYSTATION(R)3") || @@ -680,7 +710,6 @@ static void handle_hotplug(android_input_t *android, params.pid = productId; settings->input.pid[*port] = params.pid; settings->input.vid[*port] = params.vid; - strlcpy(params.driver, android_joypad.ident, sizeof(params.driver)); autoconfigured = input_config_autoconfigure_joypad(¶ms); From e8885dbbec8a18d2a4a430dcebe7eb27280b3589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Thu, 23 Jul 2015 19:44:59 +0200 Subject: [PATCH 049/822] (Menu) Integrate the quick menu in the playlists. Allow launching contents manually added the playlists. --- menu/cbs/menu_cbs_deferred_push.c | 7 +++ menu/cbs/menu_cbs_left.c | 1 + menu/cbs/menu_cbs_ok.c | 52 ++++++++++++++++----- menu/cbs/menu_cbs_right.c | 1 + menu/drivers/xmb.c | 5 ++- menu/menu.h | 1 + menu/menu_displaylist.c | 75 ++++++++++++++++++++----------- menu/menu_hash.h | 1 + 8 files changed, 105 insertions(+), 38 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index e22b6d60c4..7cfd35f85c 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -69,6 +69,11 @@ static int deferred_push_rdb_entry_detail(menu_displaylist_info_t *info) return ret; } +static int deferred_push_rpl_entry_actions(menu_displaylist_info_t *info) +{ + return menu_displaylist_push_list(info, DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS); +} + static int deferred_push_core_list_deferred(menu_displaylist_info_t *info) { return menu_displaylist_push_list(info, DISPLAYLIST_CORES_SUPPORTED); @@ -666,6 +671,8 @@ static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t * { if (strstr(label, menu_hash_to_str(MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL))) cbs->action_deferred_push = deferred_push_rdb_entry_detail; + else if (strstr(label, menu_hash_to_str(MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS))) + cbs->action_deferred_push = deferred_push_rpl_entry_actions; else { switch (label_hash) diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index 21ebd0e95e..bbc0b1b61d 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -449,6 +449,7 @@ static int menu_cbs_init_bind_left_compare_type(menu_file_list_cbs_t *cbs, case MENU_FILE_CORE: case MENU_FILE_RDB: case MENU_FILE_RDB_ENTRY: + case MENU_FILE_RPL_ENTRY: case MENU_FILE_CURSOR: case MENU_FILE_SHADER: case MENU_FILE_SHADER_PRESET: diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index b971542053..b16f34a7c6 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -32,7 +32,7 @@ /* FIXME - Global variables, refactor */ char detect_content_path[PATH_MAX_LENGTH]; -unsigned rdb_entry_start_game_selection_ptr; +unsigned rdb_entry_start_game_selection_ptr, rpl_entry_selection_ptr; size_t hack_shader_pass = 0; #ifdef HAVE_NETWORKING char core_updater_path[PATH_MAX_LENGTH]; @@ -173,6 +173,28 @@ static int action_ok_file_load_detect_core(const char *path, return -1; } +static int action_ok_rpl_entry(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + menu_handle_t *menu = menu_driver_get_ptr(); + char tmp[PATH_MAX_LENGTH] = {0}; + menu_displaylist_info_t info = {0}; + menu_list_t *menu_list = menu_list_get_ptr(); + if (!menu_list) + return -1; + + strlcpy(menu->deferred_path, label, sizeof(menu->deferred_path)); + + info.list = menu_list->menu_stack; + info.type = 0; + info.directory_ptr = idx; + rpl_entry_selection_ptr = idx; + + strlcpy(info.label, menu_hash_to_str(MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS), sizeof(info.label)); + + return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); +} + static int action_ok_playlist_entry(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -183,6 +205,7 @@ static int action_ok_playlist_entry(const char *path, const char *core_name = NULL; size_t selection_ptr = 0; content_playlist_t *playlist = g_defaults.history; + bool is_history = true; menu_handle_t *menu = menu_driver_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); uint32_t hash_label = menu_hash_calculate(label); @@ -203,6 +226,7 @@ static int action_ok_playlist_entry(const char *path, } playlist = menu->playlist; + is_history = false; break; } @@ -234,18 +258,21 @@ static int action_ok_playlist_entry(const char *path, rarch_playlist_load_content(playlist, selection_ptr); - switch (hash_label) + if (is_history) { - case MENU_LABEL_COLLECTION: - case MENU_LABEL_RDB_ENTRY_START_CONTENT: - menu_list_pop_stack(menu_list); - break; - default: - menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS); - break; - } + switch (hash_label) + { + case MENU_LABEL_COLLECTION: + case MENU_LABEL_RDB_ENTRY_START_CONTENT: + menu_list_pop_stack(menu_list); + break; + default: + menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS); + break; + } - menu_common_push_content_settings(); + menu_common_push_content_settings(); + } return -1; } @@ -2278,6 +2305,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case MENU_FILE_PLAYLIST_ENTRY: cbs->action_ok = action_ok_playlist_entry; break; + case MENU_FILE_RPL_ENTRY: + cbs->action_ok = action_ok_rpl_entry; + break; case MENU_FILE_PLAYLIST_COLLECTION: cbs->action_ok = action_ok_playlist_collection; break; diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 1ee1130151..ab9a5edf4e 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -372,6 +372,7 @@ static int menu_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *cbs, case MENU_FILE_CORE: case MENU_FILE_RDB: case MENU_FILE_RDB_ENTRY: + case MENU_FILE_RPL_ENTRY: case MENU_FILE_CURSOR: case MENU_FILE_SHADER: case MENU_FILE_SHADER_PRESET: diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index e08491f32b..ac617af6e4 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1166,8 +1166,7 @@ static GRuint xmb_icon_get_id(xmb_handle_t *xmb, return xmb->textures.list[XMB_TEXTURE_FOLDER].id; case MENU_FILE_PLAIN: return xmb->textures.list[XMB_TEXTURE_FILE].id; - case MENU_FILE_PLAYLIST_ENTRY: - case MENU_FILE_RDB_ENTRY: + case MENU_FILE_RPL_ENTRY: if (core_node) return core_node->content_icon; return xmb->textures.list[XMB_TEXTURE_FILE].id; @@ -1185,6 +1184,7 @@ static GRuint xmb_icon_get_id(xmb_handle_t *xmb, return xmb->textures.list[XMB_TEXTURE_RDB].id; case MENU_FILE_CURSOR: return xmb->textures.list[XMB_TEXTURE_CURSOR].id; + case MENU_FILE_PLAYLIST_ENTRY: case MENU_SETTING_ACTION_RUN: return xmb->textures.list[XMB_TEXTURE_RUN].id; case MENU_SETTING_ACTION_CLOSE: @@ -1193,6 +1193,7 @@ static GRuint xmb_icon_get_id(xmb_handle_t *xmb, return xmb->textures.list[XMB_TEXTURE_SAVESTATE].id; case MENU_SETTING_ACTION_LOADSTATE: return xmb->textures.list[XMB_TEXTURE_LOADSTATE].id; + case MENU_FILE_RDB_ENTRY: case MENU_SETTING_ACTION_CORE_INFORMATION: return xmb->textures.list[XMB_TEXTURE_CORE_INFO].id; case MENU_SETTING_ACTION_CORE_OPTIONS: diff --git a/menu/menu.h b/menu/menu.h index f12bd15620..9e78d876ea 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -89,6 +89,7 @@ typedef enum MENU_FILE_DOWNLOAD_CORE_INFO, MENU_FILE_RDB, MENU_FILE_RDB_ENTRY, + MENU_FILE_RPL_ENTRY, MENU_FILE_CURSOR, MENU_FILE_RECORD_CONFIG, MENU_FILE_PLAYLIST_COLLECTION, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 877cc02395..0a64eb4ca0 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -45,6 +45,7 @@ #ifdef HAVE_NETWORKING extern char *core_buf; extern size_t core_len; +extern unsigned rpl_entry_selection_ptr; static void print_buf_lines(file_list_t *list, char *buf, int buf_size, unsigned type) @@ -830,21 +831,12 @@ static int menu_displaylist_parse_playlist(menu_displaylist_info_t *info, } } - if (!is_history && core_detected && db_name && db_name[0] != '\0') - { - char db_path[PATH_MAX_LENGTH] = {0}; - - fill_pathname_join(db_path, settings->content_database, - db_name, sizeof(db_path)); - path_remove_extension(db_path); - strlcat(db_path, ".rdb", sizeof(db_path)); - - menu_list_push(info->list, label, - db_path, MENU_FILE_RDB_ENTRY, 0, i); - } - else + if (is_history) menu_list_push(info->list, fill_buf, path_playlist, MENU_FILE_PLAYLIST_ENTRY, 0, i); + else + menu_list_push(info->list, label, + path, MENU_FILE_RPL_ENTRY, 0, i); } return 0; @@ -1095,18 +1087,6 @@ static int menu_displaylist_parse_database_entry(menu_displaylist_info_t *info) continue; rdb_entry_start_game_selection_ptr = j; - - core_name_hash = menu_hash_calculate(playlist->entries[j].core_name); - core_path_hash = menu_hash_calculate(playlist->entries[j].core_path); - - if ( - (core_name_hash != MENU_VALUE_DETECT) && - (core_path_hash != MENU_VALUE_DETECT) - ) - menu_list_push(info->list, - menu_hash_to_str(MENU_LABEL_VALUE_RDB_ENTRY_START_CONTENT), - menu_hash_to_str(MENU_LABEL_RDB_ENTRY_START_CONTENT), - MENU_FILE_PLAYLIST_ENTRY, 0, 0); } } @@ -1658,6 +1638,46 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t return 0; } +static int menu_displaylist_parse_horizontal_content_actions(menu_displaylist_info_t *info) +{ + menu_handle_t *menu = menu_driver_get_ptr(); + global_t *global = global_get_ptr(); + settings_t *settings = config_get_ptr(); + unsigned idx = rpl_entry_selection_ptr; + const char *label = NULL; + const char *core_path = NULL; + const char *core_name = NULL; + const char *db_name = NULL; + + if (!menu) + return -1; + + if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY) + && !strcmp(menu->deferred_path, global->fullpath)) + menu_displaylist_parse_load_content_settings(info); + else + menu_list_push(info->list, "Run", "collection", + MENU_FILE_PLAYLIST_ENTRY, 0, idx); + + content_playlist_get_index(menu->playlist, idx, + NULL, &label, &core_path, &core_name, NULL, &db_name); + + if (db_name && db_name[0] != '\0') + { + char db_path[PATH_MAX_LENGTH] = {0}; + + fill_pathname_join(db_path, settings->content_database, + db_name, sizeof(db_path)); + path_remove_extension(db_path); + strlcat(db_path, ".rdb", sizeof(db_path)); + + menu_list_push(info->list, label, + db_path, MENU_FILE_RDB_ENTRY, 0, idx); + } + + return 0; +} + static int menu_displaylist_parse_information_list(menu_displaylist_info_t *info) { global_t *global = global_get_ptr(); @@ -2223,6 +2243,11 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) need_push = true; break; case DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS: + menu_list_clear(info->list); + ret = menu_displaylist_parse_horizontal_content_actions(info); + need_refresh = true; + need_push = true; + break; case DISPLAYLIST_CONTENT_SETTINGS: menu_list_clear(info->list); ret = menu_displaylist_parse_load_content_settings(info); diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 30f8c6dd30..512ca15032 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -640,6 +640,7 @@ extern "C" { #define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_BBFC_RATING 0x0a8e67f0U #define MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS 0xbfcba816U #define MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL 0xc35416c0U +#define MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS 0x358a7494U #define MENU_LABEL_DEFERRED_CORE_LIST 0xf157d289U #define MENU_LABEL_DEFERRED_CORE_UPDATER_LIST 0xc315f682U #define MENU_LABEL_DISK_IMAGE_APPEND 0x5af7d709U From f6e6f35cfde34832587e77c7e94ab4af7b8ba0b6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 23 Jul 2015 22:05:27 +0200 Subject: [PATCH 050/822] Take out LSB_FIRST --- android/phoenix/jni/Android.mk | 2 +- apple/BUILDING | 2 -- apple/iOS/Makefile | 2 +- apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj | 8 -------- 4 files changed, 2 insertions(+), 12 deletions(-) diff --git a/android/phoenix/jni/Android.mk b/android/phoenix/jni/Android.mk index a4d037d1f8..b8781786a9 100644 --- a/android/phoenix/jni/Android.mk +++ b/android/phoenix/jni/Android.mk @@ -58,7 +58,7 @@ else endif -LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -fno-stack-protector -funroll-loops -DRARCH_MOBILE -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_DYLIB -DHAVE_GLSL -DHAVE_MENU -DHAVE_RGUI -DHAVE_ZLIB -DHAVE_RPNG -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DHAVE_RSOUND -DHAVE_NETPLAY -DHAVE_NETWORKING -DRARCH_INTERNAL -DHAVE_FILTERS_BUILTIN -DHAVE_GLUI -DHAVE_XMB -std=gnu99 -DHAVE_LIBRETRODB -DHAVE_STB_FONT +LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -fno-stack-protector -funroll-loops -DRARCH_MOBILE -DHAVE_GRIFFIN -DANDROID -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DGLSL_DEBUG -DHAVE_DYLIB -DHAVE_GLSL -DHAVE_MENU -DHAVE_RGUI -DHAVE_ZLIB -DHAVE_RPNG -DINLINE=inline -DHAVE_THREADS -D__LIBRETRO__ -DHAVE_RSOUND -DHAVE_NETPLAY -DHAVE_NETWORKING -DRARCH_INTERNAL -DHAVE_FILTERS_BUILTIN -DHAVE_GLUI -DHAVE_XMB -std=gnu99 -DHAVE_LIBRETRODB -DHAVE_STB_FONT LOCAL_CFLAGS += -DHAVE_7ZIP ifeq ($(NDK_DEBUG),1) diff --git a/apple/BUILDING b/apple/BUILDING index aa1e6fb3d0..425322feeb 100644 --- a/apple/BUILDING +++ b/apple/BUILDING @@ -20,12 +20,10 @@ To build libretro cores: TARGET := vba_next_libretro.dylib fpic := -fPIC SHARED := -dynamiclib - ENDIANNESS_DEFINES = -DLSB_FIRST else ifeq ($(platform), ios) TARGET := vba_next_libretro.dylib fpic := -fPIC SHARED := -dynamiclib - ENDIANNESS_DEFINES = -DLSB_FIRST sysroot = -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/ CC = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv7 $(sysroot) diff --git a/apple/iOS/Makefile b/apple/iOS/Makefile index 9d10e9b6cf..11a2ce6782 100644 --- a/apple/iOS/Makefile +++ b/apple/iOS/Makefile @@ -17,7 +17,7 @@ ${APPLICATION_NAME}_FILES = $(SRC_DIR)/griffin/griffin.c \ $(SRC_DIR)/audio/drivers_resampler/sinc_neon.S \ $(SRC_DIR)/audio/drivers_resampler/cc_resampler_neon.S -COMMON_FLAGS := -DIOS -DHAVE_GRIFFIN -DHAVE_CORELOCATION -DHAVE_NETPLAY -DHAVE_RGUI -DHAVE_MENU -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_GLSL -DINLINE=inline -DLSB_FIRST -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_MOBILE -std=gnu99 -DHAVE_COREAUDIO -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_ZLIB -DWANT_ZLIB -DSINC_LOWER_QUALITY -DRARCH_INTERNAL -DHAVE_FILTERS_BUILTIN -DHAVE_XMB -D_LZMA_UINT32_IS_ULONG -DHAVE_STRL +COMMON_FLAGS := -DIOS -DHAVE_GRIFFIN -DHAVE_CORELOCATION -DHAVE_NETPLAY -DHAVE_RGUI -DHAVE_MENU -DHAVE_DYNAMIC -DHAVE_OPENGL -DHAVE_FBO -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_GLSL -DINLINE=inline -DHAVE_THREADS -D__LIBRETRO__ -DRARCH_MOBILE -std=gnu99 -DHAVE_COREAUDIO -DHAVE_FBO -DHAVE_OVERLAY -DHAVE_ZLIB -DWANT_ZLIB -DSINC_LOWER_QUALITY -DRARCH_INTERNAL -DHAVE_FILTERS_BUILTIN -DHAVE_XMB -D_LZMA_UINT32_IS_ULONG -DHAVE_STRL COMMON_FLAGS += -DHAVE_AVFOUNDATION COMMON_IOS_FLAGS := -Wno-deprecated-declarations -Wno-error COMMON_IOS_OBJCFLAGS := -fobjc-arc diff --git a/apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj b/apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj index 61f2ba142f..6642156640 100644 --- a/apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj +++ b/apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj @@ -513,7 +513,6 @@ "-DHAVE_OPENGLES2", "-DHAVE_GLSL", "-DINLINE=inline", - "-DLSB_FIRST", "-D__LIBRETRO__", "-DRARCH_MOBILE", "-DHAVE_COREAUDIO", @@ -579,7 +578,6 @@ "-DHAVE_OPENGLES2", "-DHAVE_GLSL", "-DINLINE=inline", - "-DLSB_FIRST", "-D__LIBRETRO__", "-DRARCH_MOBILE", "-DHAVE_COREAUDIO", @@ -618,7 +616,6 @@ "-DHAVE_OPENGLES2", "-DHAVE_GLSL", "-DINLINE=inline", - "-DLSB_FIRST", "-D__LIBRETRO__", "-DRARCH_MOBILE", "-DHAVE_COREAUDIO", @@ -689,7 +686,6 @@ "-DHAVE_OPENGLES2", "-DHAVE_GLSL", "-DINLINE=inline", - "-DLSB_FIRST", "-DHAVE_THREADS", "-D__LIBRETRO__", "-DRARCH_MOBILE", @@ -750,7 +746,6 @@ "-DHAVE_OPENGLES2", "-DHAVE_GLSL", "-DINLINE=inline", - "-DLSB_FIRST", "-DHAVE_THREADS", "-D__LIBRETRO__", "-DRARCH_MOBILE", @@ -812,7 +807,6 @@ "-DHAVE_OPENGLES2", "-DHAVE_GLSL", "-DINLINE=inline", - "-DLSB_FIRST", "-D__LIBRETRO__", "-DRARCH_MOBILE", "-DHAVE_COREAUDIO", @@ -881,7 +875,6 @@ "-DHAVE_OPENGLES2", "-DHAVE_GLSL", "-DINLINE=inline", - "-DLSB_FIRST", "-D__LIBRETRO__", "-DRARCH_MOBILE", "-DHAVE_COREAUDIO", @@ -922,7 +915,6 @@ "-DHAVE_OPENGLES2", "-DHAVE_GLSL", "-DINLINE=inline", - "-DLSB_FIRST", "-D__LIBRETRO__", "-DRARCH_MOBILE", "-DHAVE_COREAUDIO", From 7157ff69d5e06fb70e331bded86828ccbc1c5838 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 24 Jul 2015 00:25:31 +0200 Subject: [PATCH 051/822] remove unused variables --- menu/cbs/menu_cbs_ok.c | 1 - menu/menu_displaylist.c | 2 -- 2 files changed, 3 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index b16f34a7c6..f4c85642c6 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -177,7 +177,6 @@ static int action_ok_rpl_entry(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { menu_handle_t *menu = menu_driver_get_ptr(); - char tmp[PATH_MAX_LENGTH] = {0}; menu_displaylist_info_t info = {0}; menu_list_t *menu_list = menu_list_get_ptr(); if (!menu_list) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 0a64eb4ca0..5cd105418f 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -771,7 +771,6 @@ static int menu_displaylist_parse_playlist(menu_displaylist_info_t *info, { unsigned i; size_t list_size = 0; - settings_t *settings = config_get_ptr(); if (!playlist) return -1; @@ -1047,7 +1046,6 @@ static int menu_displaylist_parse_database_entry(menu_displaylist_info_t *info) { for (j = 0; j < playlist->size; j++) { - uint32_t core_name_hash, core_path_hash; char elem0[PATH_MAX_LENGTH] = {0}; char elem1[PATH_MAX_LENGTH] = {0}; bool match_found = false; From 45e9055a63ba31d39b552e41ce7dc221a91c9aaa Mon Sep 17 00:00:00 2001 From: Toad King Date: Thu, 23 Jul 2015 19:06:21 -0500 Subject: [PATCH 052/822] don't uninitialize usb during libsicksaxis shutdown, fixes USB devices crashing on load --- input/drivers_joypad/gx_sicksaxis.c | 37 +++++++++++++---------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/input/drivers_joypad/gx_sicksaxis.c b/input/drivers_joypad/gx_sicksaxis.c index f9ab1e62e3..94208c0cad 100644 --- a/input/drivers_joypad/gx_sicksaxis.c +++ b/input/drivers_joypad/gx_sicksaxis.c @@ -5,18 +5,18 @@ static uint8_t ATTRIBUTE_ALIGN(32) _ss_attributes[] = { - 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, //Rumble 0x00, 0x00, //Gyro - 0x00, 0x00, + 0x00, 0x00, 0x00, //* LED_1 = 0x02, LED_2 = 0x04, ... */ 0xFF, 0x27, 0x10, 0x00, 0x32, /* LED_4 */ 0xFF, 0x27, 0x10, 0x00, 0x32, /* LED_3 */ 0xFF, 0x27, 0x10, 0x00, 0x32, /* LED_2 */ 0xFF, 0x27, 0x10, 0x00, 0x32, /* LED_1 */ - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; @@ -39,16 +39,14 @@ static int _ss_set_operational(struct ss_device *dev); int ss_init(struct ss_device *dev_list, int slots) { if (!_ss_inited) { - - USB_Initialize(); _ss_dev_list = dev_list; _slots = slots; - + int i; for (i = 0;i < _slots; i++) { _ss_initialize(&_ss_dev_list[i]); } - + USB_DeviceChangeNotifyAsync(USB_CLASS_HID, _ss_change_cb, NULL); _dev_detected = 1; /* try open any existing sixasis device */ _ss_inited = 1; @@ -61,10 +59,9 @@ int ss_shutdown() { for (i = 0;i < _slots; i++) { _ss_close(&_ss_dev_list[i]); } - - USB_Deinitialize(); + _ss_inited = 0; - + return 1; } @@ -79,7 +76,7 @@ static int _ss_initialize(struct ss_device *dev) { static int _ss_change_cb(int result, void *usrdata) { if (!_ss_rem_cb) { - /* As it's not coming from the removal callback + /* As it's not coming from the removal callback then we detected a new device being inserted */ _dev_detected = 1; } @@ -102,7 +99,7 @@ int _ss_open(struct ss_device *dev) { if (USB_GetDeviceList(dev_entry, SS_MAX_DEV, USB_CLASS_HID, &dev_count) < 0) { return -2; } - + int i; for (i = 0; i < dev_count; ++i) { if ((dev_entry[i].vid == SS_VENDOR_ID) && (dev_entry[i].pid == SS_PRODUCT_ID)) { @@ -149,7 +146,7 @@ int ss_is_ready(struct ss_device *dev) { } } } - + if (dev->connected && dev->enabled) return 1; @@ -180,9 +177,9 @@ int ss_set_led(struct ss_device *dev, int led) { dev->attributes.rumble.power_right = 0; dev->attributes.rumble.duration_left = 0; dev->attributes.rumble.power_left = 0; - + dev->attributes.led = led; - + return _ss_send_attributes_payload(dev); } @@ -194,7 +191,7 @@ int ss_set_rumble(struct ss_device *dev, uint8_t duration_right, uint8_t power_r return _ss_send_attributes_payload(dev); } -inline int ss_read_pad(struct ss_device *dev) { +inline int ss_read_pad(struct ss_device *dev) { return USB_ReadIntrMsg(dev->fd, 0x81, SS_PAYLOAD_SIZE, (u8 *)&dev->pad); } @@ -213,7 +210,7 @@ static int _ss_set_operational(struct ss_device *dev) { uint8_t ATTRIBUTE_ALIGN(32) buf[4] = {0x42, 0x0c, 0x00, 0x00}; /* Special command to enable Sixaxis */ /* Sometimes it fails so we should keep trying until success */ do { - r = USB_WriteCtrlMsg( + r = USB_WriteCtrlMsg( dev->fd, USB_REQTYPE_INTERFACE_SET, USB_REQ_SETREPORT, @@ -223,7 +220,7 @@ static int _ss_set_operational(struct ss_device *dev) { buf ); } while (r < 0); - + dev->enabled = 1; return 1; } From d73f227727e38efb0d9cb1ec7d0acac76320a1a6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 24 Jul 2015 02:24:33 +0200 Subject: [PATCH 053/822] Get rid of some redundant wrapper functions --- gfx/video_driver.c | 44 ++++++++++++++++------------------------- menu/menu_displaylist.c | 2 ++ 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index b59b72e14e..56bb9f63d8 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -254,28 +254,18 @@ void *video_driver_get_ptr(const video_driver_t **drv) return driver->video_data; } -static const video_poke_interface_t *video_driver_get_poke_ptr(void) -{ - driver_t *driver = driver_get_ptr(); - if (!driver) - return NULL; - return driver->video_poke; -} +#define video_driver_get_poke_ptr(driver) (driver) ? driver->video_poke : NULL static const video_driver_t *video_driver_ctx_get_ptr(void) { driver_t *driver = driver_get_ptr(); - if (!driver) - return NULL; - return driver->video; + return (driver) ? driver->video : NULL; } const char *video_driver_get_ident(void) { const video_driver_t *video = video_driver_ctx_get_ptr(); - if (video) - return video->ident; - return NULL; + return (video) ? video->ident : NULL; } /** @@ -289,7 +279,7 @@ const char *video_driver_get_ident(void) uintptr_t video_driver_get_current_framebuffer(void) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->get_current_framebuffer) return poke->get_current_framebuffer(driver->video_data); @@ -300,7 +290,7 @@ uint64_t video_driver_get_frame_count(void) { static bool warn_once = true; driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (!poke || !poke->get_frame_count) { @@ -317,7 +307,7 @@ uint64_t video_driver_get_frame_count(void) retro_proc_address_t video_driver_get_proc_address(const char *sym) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->get_proc_address) return poke->get_proc_address(driver->video_data, sym); @@ -674,7 +664,7 @@ void video_driver_set_video_mode(unsigned width, unsigned height, bool fullscreen) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->set_video_mode) poke->set_video_mode(driver->video_data, @@ -684,7 +674,7 @@ void video_driver_set_video_mode(unsigned width, bool video_driver_get_video_output_size(unsigned *width, unsigned *height) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->get_video_output_size) { @@ -697,7 +687,7 @@ bool video_driver_get_video_output_size(unsigned *width, unsigned *height) void video_driver_set_aspect_ratio(unsigned aspectratio_index) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->set_aspect_ratio) poke->set_aspect_ratio(driver->video_data, aspectratio_index); @@ -706,7 +696,7 @@ void video_driver_set_aspect_ratio(unsigned aspectratio_index) void video_driver_show_mouse(bool state) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->show_mouse) poke->show_mouse(driver->video_data, state); @@ -716,7 +706,7 @@ void video_driver_set_osd_msg(const char *msg, const struct font_params *params, void *font) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->set_osd_msg) poke->set_osd_msg(driver->video_data, msg, params, font); @@ -726,7 +716,7 @@ void video_driver_set_texture_enable(bool enable, bool fullscreen) { #ifdef HAVE_MENU driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->set_texture_enable) poke->set_texture_enable(driver->video_data, @@ -739,7 +729,7 @@ void video_driver_set_texture_frame(const void *frame, bool rgb32, { #ifdef HAVE_MENU driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->set_texture_frame) poke->set_texture_frame(driver->video_data, @@ -809,7 +799,7 @@ void * video_driver_read_frame_raw(unsigned *width, void video_driver_set_filtering(unsigned index, bool smooth) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->set_filtering) poke->set_filtering(driver->video_data, index, smooth); @@ -818,7 +808,7 @@ void video_driver_set_filtering(unsigned index, bool smooth) void video_driver_apply_state_changes(void) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->apply_state_changes) poke->apply_state_changes(driver->video_data); @@ -827,7 +817,7 @@ void video_driver_apply_state_changes(void) void video_driver_get_video_output_next(void) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->get_video_output_next) poke->get_video_output_next(driver->video_data); @@ -836,7 +826,7 @@ void video_driver_get_video_output_next(void) void video_driver_get_video_output_prev(void) { driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(); + const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); if (poke && poke->get_video_output_prev) poke->get_video_output_prev(driver->video_data); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5cd105418f..63386619a9 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -798,6 +798,8 @@ static int menu_displaylist_parse_playlist(menu_displaylist_info_t *info, const char *label = NULL; const char *crc32 = NULL; + (void)core_detected; + strlcpy(path_copy, info->path, sizeof(path_copy)); path = path_copy; From 0dae672dc64cf32499db1f6d52783f44e792b8eb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 24 Jul 2015 02:40:18 +0200 Subject: [PATCH 054/822] Some more micro-opts --- gfx/video_driver.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 56bb9f63d8..2488ba4407 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -256,15 +256,12 @@ void *video_driver_get_ptr(const video_driver_t **drv) #define video_driver_get_poke_ptr(driver) (driver) ? driver->video_poke : NULL -static const video_driver_t *video_driver_ctx_get_ptr(void) -{ - driver_t *driver = driver_get_ptr(); - return (driver) ? driver->video : NULL; -} +#define video_driver_ctx_get_ptr(driver) (driver) ? driver->video : NULL const char *video_driver_get_ident(void) { - const video_driver_t *video = video_driver_ctx_get_ptr(); + driver_t *driver = driver_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); return (video) ? video->ident : NULL; } @@ -318,7 +315,7 @@ bool video_driver_set_shader(enum rarch_shader_type type, const char *path) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); if (video->set_shader) return video->set_shader(driver->video_data, type, path); @@ -609,7 +606,7 @@ void init_video(void) bool video_driver_suppress_screensaver(bool enable) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); return video->suppress_screensaver(driver->video_data, enable); } @@ -617,7 +614,7 @@ bool video_driver_suppress_screensaver(bool enable) bool video_driver_has_windowed(void) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); return video->has_windowed(driver->video_data); } @@ -625,7 +622,7 @@ bool video_driver_has_windowed(void) void video_driver_set_nonblock_state(bool toggle) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); if (video->set_nonblock_state) video->set_nonblock_state(driver->video_data, toggle); @@ -635,7 +632,7 @@ bool video_driver_set_viewport(unsigned width, unsigned height, bool force_fullscreen, bool allow_rotate) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); if (video->set_viewport) { @@ -649,7 +646,7 @@ bool video_driver_set_viewport(unsigned width, unsigned height, bool video_driver_set_rotation(unsigned rotation) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); if (video->set_rotation) { @@ -740,7 +737,7 @@ void video_driver_set_texture_frame(const void *frame, bool rgb32, bool video_driver_viewport_info(struct video_viewport *vp) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); if (video->viewport_info) { @@ -753,7 +750,7 @@ bool video_driver_viewport_info(struct video_viewport *vp) bool video_driver_read_viewport(uint8_t *buffer) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); if (video->read_viewport) return video->read_viewport(driver->video_data, @@ -764,7 +761,7 @@ bool video_driver_read_viewport(uint8_t *buffer) bool video_driver_focus(void) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); return video->focus(driver->video_data); } @@ -773,7 +770,7 @@ bool video_driver_focus(void) bool video_driver_overlay_interface(const video_overlay_interface_t **iface) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); if (video->overlay_interface) { @@ -788,7 +785,7 @@ void * video_driver_read_frame_raw(unsigned *width, unsigned *height, size_t *pitch) { driver_t *driver = driver_get_ptr(); - const video_driver_t *video = video_driver_ctx_get_ptr(); + const video_driver_t *video = video_driver_ctx_get_ptr(driver); if (video->read_frame_raw) return video->read_frame_raw(driver->video_data, width, From 41f18cd507e5aac5ad8d3d8c13ad9333ba892d31 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 24 Jul 2015 05:16:44 +0200 Subject: [PATCH 055/822] Cleanup --- libretro_version_1.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/libretro_version_1.c b/libretro_version_1.c index 87c0f95f3f..ff958198d5 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -222,8 +222,6 @@ static void input_poll(void) input->poll(driver->input_data); - (void)driver; - #ifdef HAVE_OVERLAY input_poll_overlay(settings->input.overlay_opacity); #endif From 61c1a164fa2a4a617dc7b06916ee96b3e3d1f930 Mon Sep 17 00:00:00 2001 From: fr500 Date: Sat, 25 Jul 2015 01:27:56 -0400 Subject: [PATCH 056/822] Revert "improve the shield hack and add a generic function to check if a gamepad name is present, implement archos gamepad hack" This reverts commit 1dc285a0d62563d2ef0af5e00905831d14190eee. --- input/drivers/android_input.c | 37 ++++------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 4fec577c95..8923c65638 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -557,21 +557,6 @@ static int android_input_get_id_index_from_name(android_input_t *android, return -1; } -static bool check_pad_names(android_input_t *android, char* name) -{ - bool ret = false; - RARCH_LOG("Checking if %s is connected (%d pads connected)", name, android->pads_connected); - for(int i=0; i < MAX_PADS; i++) - { - if(android->pad_states[i].name) - if(strstr(name, android->pad_states[i].name)) - ret = true; - } - RARCH_LOG("%s found: %d", name, ret); - return ret; -} - - static void handle_hotplug(android_input_t *android, struct android_app *android_app, unsigned *port, unsigned id, int source) @@ -595,7 +580,6 @@ static void handle_hotplug(android_input_t *android, return; } - /* FIXME: Ugly hack, see other FIXME note below. */ if (strstr(device_name, "keypad-game-zeus") || strstr(device_name, "keypad-zeus")) @@ -645,8 +629,6 @@ static void handle_hotplug(android_input_t *android, else if (strstr(device_name, "SideWinder")) strlcpy(name_buf, "SideWinder Classic", sizeof(name_buf)); } - - /* Built-in shield controller is always user 1 */ else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.01")) { /* Built-in shield contrlleris always user 1. FIXME: This is kinda ugly. @@ -656,24 +638,12 @@ static void handle_hotplug(android_input_t *android, *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); } - else if (check_pad_names(&android, "NVIDIA Corporation NVIDIA Controller v01.01") && (strstr(device_name, "virtual") - || strstr(device_name, "gpio") || strstr(device_name, "Virtual") || strstr(device_name, "GPIO"))) + else if (strstr(device_name, "Virtual") || + (strstr(device_name, "gpio") && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.01"))) { /* If built-in shield controller is detected bind the virtual and gpio devices to the same port*/ - port = 0; - strlcpy(name_buf, "Generic GPIO device", sizeof(name_buf)); - } - - /* Archos gamepad seems to be the worst offender so far, it has the buttons in joy_key, - * the analogs in joystick and the back button is a GPIO device, this part handles the - * hack for the back button - */ - else if (check_pad_names(&android, "joy_key") || check_pad_names(&android, "joystick") && (strstr(device_name, "virtual") - || strstr(device_name, "gpio") || strstr(device_name, "Virtual") || strstr(device_name, "GPIO"))) - { - /* If built-in archos controller is detected bind the virtual and gpio devices to the same port*/ *port = 0; - strlcpy(name_buf, "Generic GPIO device", sizeof(name_buf)); + strlcpy(name_buf, "NVIDIA Corporation NVIDIA Controller v01.01", sizeof(name_buf)); } else if ( strstr(device_name, "PLAYSTATION(R)3") || @@ -710,6 +680,7 @@ static void handle_hotplug(android_input_t *android, params.pid = productId; settings->input.pid[*port] = params.pid; settings->input.vid[*port] = params.vid; + strlcpy(params.driver, android_joypad.ident, sizeof(params.driver)); autoconfigured = input_config_autoconfigure_joypad(¶ms); From 00b60be3a7bd1fa30490357ab9828aae8955dae1 Mon Sep 17 00:00:00 2001 From: fr500 Date: Sat, 25 Jul 2015 01:47:33 -0400 Subject: [PATCH 057/822] fix pid saving --- configuration.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.c b/configuration.c index b03ff09d43..1d3383d22f 100644 --- a/configuration.c +++ b/configuration.c @@ -2384,7 +2384,7 @@ bool config_save_autoconf_profile(const char *path, unsigned user) if(settings->input.vid[user] && settings->input.pid[user]) { config_set_int(conf, "input_vendor_id", settings->input.vid[user]); - config_set_int(conf, "input_product_id_id", settings->input.pid[user]); + config_set_int(conf, "input_product_id", settings->input.pid[user]); } for (i = 0; i < RARCH_FIRST_META_KEY; i++) From 6dc06885fbcf956c568996e34e552f0bb2cd44c0 Mon Sep 17 00:00:00 2001 From: fr500 Date: Sat, 25 Jul 2015 02:04:00 -0400 Subject: [PATCH 058/822] no need to name the device like the Shield controller, this will reduce OSD spam when hitting back --- input/drivers/android_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 8923c65638..17daae4fc0 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -643,7 +643,7 @@ static void handle_hotplug(android_input_t *android, { /* If built-in shield controller is detected bind the virtual and gpio devices to the same port*/ *port = 0; - strlcpy(name_buf, "NVIDIA Corporation NVIDIA Controller v01.01", sizeof(name_buf)); + strlcpy(name_buf, "Generic GPIO Device", sizeof(name_buf)); } else if ( strstr(device_name, "PLAYSTATION(R)3") || From 1af5943ca2b0bf5aadfd6b7f50d484392086ca05 Mon Sep 17 00:00:00 2001 From: fr500 Date: Sat, 25 Jul 2015 02:39:17 -0400 Subject: [PATCH 059/822] fix double inputs with akeycode_back when gamepads are mapped and pointer is enabled --- input/drivers/android_input.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 17daae4fc0..f1f75fe808 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -444,6 +444,8 @@ static void *android_input_init(void) static int zeus_id = -1; static int zeus_second_id = -1; +static int archos1 = -1; +static int archos2 = -1; static INLINE int android_input_poll_event_type_motion( android_input_t *android, AInputEvent *event, @@ -596,6 +598,15 @@ static void handle_hotplug(android_input_t *android, } strlcpy(name_buf, device_name, sizeof(name_buf)); } + else if (strstr(device_name, "joy_key") || strstr(device_name, "joystick")) + { + if (archos1 < 0) + archos1 = id; + else + archos2 = id; + *port = 0; + strlcpy(name_buf, "Archos Gamepad", sizeof(name_buf)); + } /* followed by a 4 (hex) char HW id */ else if (strstr(device_name, "iControlPad-")) strlcpy(name_buf, "iControlPad HID Joystick profile", sizeof(name_buf)); @@ -711,6 +722,9 @@ static int android_input_get_id(android_input_t *android, AInputEvent *event) if (id == zeus_second_id) id = zeus_id; + if (id == archos2) + id = archos1; + return id; } @@ -830,6 +844,7 @@ static int16_t android_input_state(void *data, unsigned idx, unsigned id) { android_input_t *android = (android_input_t*)data; + settings_t *settings = config_get_ptr(); switch (device) { @@ -850,7 +865,8 @@ static int16_t android_input_state(void *data, (android->pointer[idx].x != -0x8000) && (android->pointer[idx].y != -0x8000); case RARCH_DEVICE_ID_POINTER_BACK: - return BIT_GET(android->pad_state[0], AKEYCODE_BACK); + if(settings->input.autoconf_binds[0][RARCH_MENU_TOGGLE].joykey == 0) + return BIT_GET(android->pad_state[0], AKEYCODE_BACK); } break; case RARCH_DEVICE_POINTER_SCREEN: @@ -865,7 +881,8 @@ static int16_t android_input_state(void *data, (android->pointer[idx].full_x != -0x8000) && (android->pointer[idx].full_y != -0x8000); case RARCH_DEVICE_ID_POINTER_BACK: - return BIT_GET(android->pad_state[0], AKEYCODE_BACK); + if(settings->input.autoconf_binds[0][RARCH_MENU_TOGGLE].joykey == 0) + return BIT_GET(android->pad_state[0], AKEYCODE_BACK); } break; } From b9569296d5616c2a25da77bce221d3899d4fd6f4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jul 2015 14:50:40 +0200 Subject: [PATCH 060/822] (platform_darwin.m) Add unistd.h --- frontend/drivers/platform_darwin.m | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 071e3e4a51..23f057f2ab 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -19,6 +19,7 @@ #include #include #include +#include #include From 8d6d9b96ba0ad106fed036e2442e1e6c254ef247 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jul 2015 15:45:22 +0200 Subject: [PATCH 061/822] (OSX) Attempt to fix argument passing --- ui/drivers/ui_cocoa.m | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index e0429f488d..93473dce94 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -410,17 +410,8 @@ static void poll_iteration(void) int main(int argc, char *argv[]) { - int i; - for (i = 0; i < argc; i ++) - { - if (!strcmp(argv[i], "--")) - { - waiting_argc = argc - i; - waiting_argv = argv + i; - break; - } - } - + waiting_argc = argc; + waiting_argv = argv; return NSApplicationMain(argc, (const char **) argv); } From a5c1bab92ce6700d942ee80cf828d0e5690de985 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 25 Jul 2015 15:48:22 +0200 Subject: [PATCH 062/822] Robustness checks --- menu/menu_driver.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 986499d38a..78d8f57f22 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -232,7 +232,7 @@ void menu_driver_context_destroy(void) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - if (driver->context_destroy) + if (driver && driver->context_destroy) driver->context_destroy(); } @@ -240,7 +240,7 @@ void menu_driver_list_set_selection(file_list_t *list) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - if (driver->list_set_selection) + if (driver && driver->list_set_selection) driver->list_set_selection(list); } @@ -249,7 +249,7 @@ size_t menu_driver_list_get_selection(void) const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); - if (driver->list_get_selection) + if (driver && driver->list_get_selection) return driver->list_get_selection(menu); return 0; } From 578abcfb803f0133162727ea6882862a76f0f963 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 25 Jul 2015 15:56:14 +0200 Subject: [PATCH 063/822] Need to add some special conditional for Xcode --- ui/drivers/ui_cocoa.m | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 93473dce94..420845a825 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -154,6 +154,7 @@ static char** waiting_argv; - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { + unsigned i; apple_platform = self; #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 @@ -167,6 +168,15 @@ static char** waiting_argv; [[self.window contentView] addSubview:[CocoaView get]]; [self.window makeFirstResponder:[CocoaView get]]; + for (i = 0; i < waiting_argc; i++) + { + if (!strcmp(waiting_argv[i], "-NSDocumentRevisionsDebugMode")) + { + waiting_argv[i] = NULL; + waiting_argv[i+1] = NULL; + waiting_argc -= 2; + } + } if (rarch_main(waiting_argc, waiting_argv, NULL)) apple_rarch_exited(); From 48c912f913741d6f8543c756cd802fd7e2e85539 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 25 Jul 2015 20:57:11 +0200 Subject: [PATCH 064/822] Put OSX rule for default menu driver behind IOS --- config.def.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.def.h b/config.def.h index 3566bb1e4f..3b77386162 100644 --- a/config.def.h +++ b/config.def.h @@ -317,10 +317,10 @@ enum #define MENU_DEFAULT_DRIVER MENU_RMENU #elif defined(HAVE_RMENU_XUI) #define MENU_DEFAULT_DRIVER MENU_RMENU_XUI -#elif defined(MAC_OS_X_VERSION_10_6) -#define MENU_DEFAULT_DRIVER MENU_XMB #elif defined(IOS) || defined(ANDROID) || defined(__CELLOS_LV2__) #define MENU_DEFAULT_DRIVER MENU_GLUI +#elif defined(MAC_OS_X_VERSION_10_6) +#define MENU_DEFAULT_DRIVER MENU_XMB #else #define MENU_DEFAULT_DRIVER MENU_RGUI #endif From 9185d37710b86a446762c597e5898b3b5ce2fd44 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 26 Jul 2015 00:40:24 +0200 Subject: [PATCH 065/822] Bump up collection limit --- menu/cbs/menu_cbs_ok.c | 2 +- menu/menu_displaylist.c | 6 +++--- menu/menu_displaylist.h | 4 ++++ tasks/task_database.c | 6 +++++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index f4c85642c6..c15364d034 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -218,7 +218,7 @@ static int action_ok_playlist_entry(const char *path, case MENU_LABEL_RDB_ENTRY_START_CONTENT: if (!menu->playlist) { - menu->playlist = content_playlist_init(menu->db_playlist_file, 1000); + menu->playlist = content_playlist_init(menu->db_playlist_file, COLLECTION_SIZE); if (!menu->playlist) return -1; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 63386619a9..e113b531db 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1025,7 +1025,7 @@ static int menu_displaylist_parse_database_entry(menu_displaylist_info_t *info) fill_pathname_join(path_playlist, settings->playlist_directory, path_base, sizeof(path_playlist)); - playlist = content_playlist_init(path_playlist, 1000); + playlist = content_playlist_init(path_playlist, COLLECTION_SIZE); if (playlist) strlcpy(menu->db_playlist_file, path_playlist, @@ -1549,7 +1549,7 @@ static int menu_displaylist_parse_horizontal_list(menu_displaylist_info_t *info) settings->playlist_directory, item->path, sizeof(path_playlist)); menu->playlist = content_playlist_init(path_playlist, - 999); + COLLECTION_SIZE); strlcpy(menu->db_playlist_file, path_playlist, sizeof(menu->db_playlist_file)); strlcpy(path_playlist, menu_hash_to_str(MENU_LABEL_COLLECTION), @@ -2439,7 +2439,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) settings->playlist_directory, info->path, sizeof(path_playlist)); menu->playlist = content_playlist_init(path_playlist, - 999); + COLLECTION_SIZE); strlcpy(menu->db_playlist_file, path_playlist, sizeof(menu->db_playlist_file)); strlcpy(path_playlist, menu_hash_to_str(MENU_LABEL_COLLECTION), sizeof(path_playlist)); diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 5beb7f9ebd..6c1815e2bf 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -27,6 +27,10 @@ extern "C" { #endif +#ifndef COLLECTION_SIZE +#define COLLECTION_SIZE 99999 +#endif + enum { DISPLAYLIST_NONE = 0, diff --git a/tasks/task_database.c b/tasks/task_database.c index 0e6636350d..11332bb64d 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -31,6 +31,10 @@ #define HASH_EXTENSION_ZIP 0x0b88c7d8U +#ifndef COLLECTION_SIZE +#define COLLECTION_SIZE 99999 +#endif + typedef struct database_state_handle { database_info_list_t *info; @@ -213,7 +217,7 @@ static int database_info_list_iterate_found_match( fill_pathname_join(db_playlist_path, settings->playlist_directory, db_playlist_base_str, sizeof(db_playlist_path)); - playlist = content_playlist_init(db_playlist_path, 1000); + playlist = content_playlist_init(db_playlist_path, COLLECTION_SIZE); snprintf(db_crc, sizeof(db_crc), "%08X|crc", db_info_entry->crc32); From fb5f171cce789773312b4d3a2201c22537e63002 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 26 Jul 2015 19:41:14 +0200 Subject: [PATCH 066/822] (NL) Update menu_hash_nl.c --- menu/intl/menu_hash_nl.c | 64 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/menu/intl/menu_hash_nl.c b/menu/intl/menu_hash_nl.c index 7fad4c8d5f..61721de1d4 100644 --- a/menu/intl/menu_hash_nl.c +++ b/menu/intl/menu_hash_nl.c @@ -25,6 +25,66 @@ const char *menu_hash_to_str_nl(uint32_t hash) { switch (hash) { + case MENU_LABEL_VALUE_HELP_SCANNING_CONTENT: + return "Scannen naar Content"; + case MENU_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING: + return "Audio/Video Raadpleging"; + case MENU_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD: + return "Virtuele Gamepad Overlay Veranderen"; + case MENU_LABEL_VALUE_HELP_WHAT_IS_A_CORE: + return "Wat is een Core?"; + case MENU_LABEL_VALUE_HELP_LOADING_CONTENT: + return "Hoe Laad je Content?"; + case MENU_LABEL_VALUE_HELP_LIST: + return "Help"; + case MENU_LABEL_VALUE_HELP_CONTROLS: + return "Basis Menu Besturing"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS: + return "Basis menu besturing"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_UP: + return "Omhoog Scrollen"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_SCROLL_DOWN: + return "Omlaag Scrollen"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_CONFIRM: + return "Bevestigen/OK"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK: + return "Terug"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_START: + return "Reset"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_INFO: + return "Info"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_MENU: + return "Menu Schakelaar"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_QUIT: + return "Afsluiten"; + case MENU_LABEL_VALUE_BASIC_MENU_CONTROLS_TOGGLE_KEYBOARD: + return "Keyboard Toggle"; + case MENU_LABEL_VALUE_OPEN_ARCHIVE: + return "Open Archief als map"; + case MENU_LABEL_VALUE_LOAD_ARCHIVE: + return "Open Archief met Core"; + case MENU_LABEL_VALUE_INPUT_BACK_AS_MENU_TOGGLE_ENABLE: + return "Terug als Menu Schakelaar"; + case MENU_LABEL_VALUE_INPUT_MENU_TOGGLE_GAMEPAD_COMBO: + return "Menu Schakelaar Gamepad Combo"; + case MENU_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU: + return "Verberg Overlay In Menu"; + case MENU_VALUE_LANG_POLISH: + return "Pools"; + case MENU_LABEL_VALUE_OVERLAY_AUTOLOAD_PREFERRED: + return "Laad geprefeerd overlay autom."; + case MENU_LABEL_VALUE_UPDATE_CORE_INFO_FILES: + return "Update Core Info Bestanden"; + case MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT: + return "Download Content"; + case MENU_LABEL_VALUE_SCAN_THIS_DIRECTORY: + return ""; + case MENU_LABEL_VALUE_SCAN_FILE: + return "Scan een Bestand"; + case MENU_LABEL_VALUE_SCAN_DIRECTORY: + return "Scan een Map"; + case MENU_LABEL_VALUE_ADD_CONTENT_LIST: + return "Content toevoegen"; case MENU_LABEL_VALUE_INFORMATION_LIST: return "Informatie"; case MENU_LABEL_VALUE_USE_BUILTIN_PLAYER: @@ -37,10 +97,6 @@ const char *menu_hash_to_str_nl(uint32_t hash) return "MD5"; case MENU_LABEL_VALUE_LOAD_CONTENT_LIST: return "Laad Content"; - case MENU_LABEL_VALUE_LOAD_ARCHIVE: - return "Laad Archief"; - case MENU_LABEL_VALUE_OPEN_ARCHIVE: - return "Open Archief"; case MENU_VALUE_ASK_ARCHIVE: return "Keuze"; case MENU_LABEL_VALUE_PRIVACY_SETTINGS: From 9aff87f4b49933695d75346e4d53b8ef62b37374 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 26 Jul 2015 15:40:29 -0500 Subject: [PATCH 067/822] add controller info on system information --- menu/cbs/menu_cbs_get_value.c | 3 +++ menu/menu_displaylist.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index 61886d6d48..ebb5bc5f58 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -907,6 +907,9 @@ static void menu_action_setting_disp_set_label(file_list_t* list, case MENU_LABEL_LOAD_CONTENT_HISTORY: *w = strlen(label); break; + case MENU_LABEL_SYSTEM_INFORMATION: + *w = 2; + break; } if (type >= MENU_SETTINGS_CORE_OPTION_START) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index e113b531db..942e982453 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -302,6 +302,7 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info) char tmp2[PATH_MAX_LENGTH] = {0}; const char *tmp_string = NULL; const frontend_ctx_driver_t *frontend = frontend_get_ptr(); + settings_t *settings = config_get_ptr(); snprintf(tmp, sizeof(tmp), "%s: %s", menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE), __DATE__); menu_list_push(info->list, tmp, "", @@ -338,6 +339,17 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info) menu_list_push(info->list, cpu_str, "", MENU_SETTINGS_CORE_INFO_NONE, 0, 0); } + for(int controller = 0; controller < MAX_USERS; controller++) + { + if (settings->input.autoconfigured[controller]) + { + snprintf(tmp, sizeof(tmp), "Port #%d device name: %s", controller, settings->input.device_names[controller]); + menu_list_push(info->list, tmp, "", MENU_SETTINGS_CORE_INFO_NONE, 0, 0); + snprintf(tmp, sizeof(tmp), "Port #%d device VID/PID: %d/%d", controller, settings->input.vid[controller], settings->input.pid[controller]); + menu_list_push(info->list, tmp, "", MENU_SETTINGS_CORE_INFO_NONE, 0, 0); + } + } + if (frontend) { int major = 0, minor = 0; From 4b234a4ed95a29ebbd1cd44dd324d8015697d05b Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 26 Jul 2015 16:23:41 -0500 Subject: [PATCH 068/822] clean-up System/BIOS in content dir, should now just use the basename instead of actually overwriting the setting --- command_event.c | 4 ---- configuration.c | 9 +++------ configuration.h | 1 - dynamic.c | 8 +++++--- frontend/frontend.c | 4 ---- retroarch.c | 18 +++--------------- 6 files changed, 11 insertions(+), 33 deletions(-) diff --git a/command_event.c b/command_event.c index 5416538961..733b3a302b 100644 --- a/command_event.c +++ b/command_event.c @@ -547,10 +547,6 @@ static void event_deinit_core(bool reinit) if(settings->sort_savestates_enable) strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); - /* restore system directory if it was set to */ - if(settings->system_in_content_dir && !strcmp(info->info.library_name,"No Core")) - settings->system_directory[0] = '\0'; - /* auto overrides: reload the original config */ if(global->overrides_active) { diff --git a/configuration.c b/configuration.c index 1d3383d22f..9336680b3c 100644 --- a/configuration.c +++ b/configuration.c @@ -1712,17 +1712,14 @@ static bool config_load_file(const char *path, bool set_defaults) if (!config_get_path(conf, "system_directory", settings->system_directory, sizeof(settings->system_directory))) { - RARCH_WARN("system_directory is not set in config. Assuming system directory is same folder as game: \"%s\".\n", - settings->system_directory); - settings->system_in_content_dir = true; + RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR\n"); + *settings->system_directory = '\0'; } if (!strcmp(settings->system_directory, "default")) { - RARCH_WARN("system_directory is not set in config. Assuming system directory is same folder as game: \"%s\".\n", - settings->system_directory); + RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR\n"); *settings->system_directory = '\0'; - settings->system_in_content_dir = true; } config_read_keybinds_conf(conf); diff --git a/configuration.h b/configuration.h index 08f14ddd06..bcaa6dc5cc 100644 --- a/configuration.h +++ b/configuration.h @@ -303,7 +303,6 @@ typedef struct settings char resampler_directory[PATH_MAX_LENGTH]; char screenshot_directory[PATH_MAX_LENGTH]; char system_directory[PATH_MAX_LENGTH]; - bool system_in_content_dir; char extraction_directory[PATH_MAX_LENGTH]; char playlist_directory[PATH_MAX_LENGTH]; diff --git a/dynamic.c b/dynamic.c index cb1d3a9fbc..1f2b032349 100644 --- a/dynamic.c +++ b/dynamic.c @@ -652,6 +652,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); + char buf[PATH_MAX_LENGTH]; if (ignore_environment_cb) return false; @@ -754,11 +755,12 @@ bool rarch_environment_cb(unsigned cmd, void *data) if (!settings->system_directory || settings->system_directory[0] == '\0') { RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",global->fullpath); - fill_pathname_basedir(settings->system_directory, global->fullpath, - sizeof(settings->system_directory)); + fill_pathname_basedir(buf, global->fullpath, + sizeof(buf)); + } *(const char**)data = *settings->system_directory ? - settings->system_directory : NULL; + settings->system_directory : buf; RARCH_LOG("Environ SYSTEM_DIRECTORY: \"%s\".\n", settings->system_directory); diff --git a/frontend/frontend.c b/frontend/frontend.c index fd6c48e0d2..d555421bb4 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -48,10 +48,6 @@ void main_exit_save_config(void) if (settings->sort_savestates_enable && orig_savestate_dir[0] != '\0') strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); - /* restore system directory if it was set to */ - if(settings->system_in_content_dir && !strcmp(info->info.library_name,"No Core")) - settings->system_directory[0] = '\0'; - /* Save last core-specific config to the default config location, * needed on consoles for core switching and reusing last good * config for new cores. diff --git a/retroarch.c b/retroarch.c index 1f1fddc5ec..557a2c85df 100644 --- a/retroarch.c +++ b/retroarch.c @@ -316,11 +316,10 @@ static void set_special_paths(char **argv, unsigned num_content) if (!settings->system_directory || settings->system_directory[0] == '\0') { RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",argv[0]); - fill_pathname_basedir(settings->system_directory, argv[0], - sizeof(settings->system_directory)); + /*fill_pathname_basedir(settings->system_directory, argv[0], + sizeof(settings->system_directory));*/ } - else - settings->system_in_content_dir = false; + } void set_paths_redirect(const char *path) @@ -428,17 +427,6 @@ void rarch_set_paths(const char *path) ".cht", sizeof(global->cheatfile_name)); set_paths_redirect(path); - - /* If this is already set, do not overwrite it - * as this was initialized before in a menu or otherwise. */ - if (!settings->system_directory || settings->system_directory[0] == '\0') - { - RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",path); - fill_pathname_basedir(settings->system_directory, path, - sizeof(settings->system_directory)); - } - else - settings->system_in_content_dir = false; } From 4787c463b6a07bc007931877d282dd4596d28ad6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 00:08:14 +0200 Subject: [PATCH 069/822] Backport this - https://github.com/Yogarine/RetroArch/commit/58748da89d4c415628f24d2e46c60645c370ec2f --- Makefile.emscripten | 10 ++-- audio/audio_dsp_filter.c | 3 ++ emscripten/library_rwebaudio.js | 45 +++++++++++----- emscripten/library_rwebinput.js | 73 +++++++++++++++++++------- frontend/drivers/platform_emscripten.c | 23 ++++++++ gfx/video_driver.h | 3 +- input/drivers/rwebinput_input.c | 1 - 7 files changed, 119 insertions(+), 39 deletions(-) diff --git a/Makefile.emscripten b/Makefile.emscripten index 722434c84a..4e81ee9287 100644 --- a/Makefile.emscripten +++ b/Makefile.emscripten @@ -23,7 +23,11 @@ ifneq ($(NATIVE_ZLIB),) endif LIBS := -LDFLAGS := -L. -s TOTAL_MEMORY=$(MEMORY) -s OUTLINING_LIMIT=50000 --js-library emscripten/library_rwebaudio.js --js-library emscripten/library_rwebinput.js --js-library emscripten/library_rwebcam.js --no-heap-copy +LDFLAGS := -L. --no-heap-copy -s USE_ZLIB=1 `-s TOTAL_MEMORY=$(MEMORY) -s OUTLINING_LIMIT=50000 \ + -s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_load_state', '_cmd_take_screenshot']" \ + --js-library emscripten/library_rwebaudio.js \ + --js-library emscripten/library_rwebinput.js \ + --js-library emscripten/library_rwebcam.js include Makefile.common @@ -67,7 +71,8 @@ else CFLAGS += -O2 endif -CFLAGS += -Wall -Wno-unused-result -Wno-unused-variable -I. -Ilibretro-common/include -std=gnu99 +CFLAGS += -DWANT_RPNG -Wall -Wno-unused-result -Wno-unused-variable -I. -Ilibretro-common/include -std=gnu99 -s USE_ZLIB=1 \ + -s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_take_screenshot']" all: $(TARGET) @@ -111,4 +116,3 @@ clean: rm -f *.d .PHONY: all clean - diff --git a/audio/audio_dsp_filter.c b/audio/audio_dsp_filter.c index 2f1a4ca34f..c26dc1ba15 100644 --- a/audio/audio_dsp_filter.c +++ b/audio/audio_dsp_filter.c @@ -246,8 +246,11 @@ rarch_dsp_filter_t *rarch_dsp_filter_new( if (!plugs) goto error; #endif + +#if defined(HAVE_DYLIB) if (!append_plugs(dsp, plugs)) goto error; +#endif if (plugs) string_list_free(plugs); diff --git a/emscripten/library_rwebaudio.js b/emscripten/library_rwebaudio.js index 23142a6b17..a4debaba4f 100644 --- a/emscripten/library_rwebaudio.js +++ b/emscripten/library_rwebaudio.js @@ -1,4 +1,4 @@ -//"use strict"; +"use strict"; var LibraryRWebAudio = { $RA__deps: ['$Browser', 'usleep'], @@ -11,19 +11,33 @@ var LibraryRWebAudio = { bufIndex: 0, bufOffset: 0, startTime: 0, + performance: null, nonblock: false, - currentTimeWorkaround: false, + performanceSupported: false, setStartTime: function() { + RA.performance = window['performance'] || window['webkitPerformance'] || window['msPerformance'] || window['mozPerformance']; + if (RA.performance) { + RA.performanceSupported = true; + } else { + RA.performanceSupported = false; + } + if (RA.context.currentTime) { - RA.startTime = window['performance']['now']() - RA.context.currentTime * 1000; - Module["resumeMainLoop"](); - } else window['setTimeout'](RA.setStartTime, 0); + var now = RA.performanceSupported ? RA.performance.now() : Date.now(); + RA.startTime = now - RA.context.currentTime * 1000; + Module["resumeMainLoop"]; + } else { + window.setTimeout(RA.setStartTime, 0); + } }, getCurrentPerfTime: function() { - if (RA.startTime) return (window['performance']['now']() - RA.startTime) / 1000; - else throw 'getCurrentPerfTime() called before start time set'; + if (true === RA.performanceSupported) { + return (RA.performance.now() - RA.startTime) / 1000; + } else { + return (Date.now() - RA.startTime) / 1000; + } }, process: function(queueBuffers) { @@ -78,11 +92,14 @@ var LibraryRWebAudio = { }, RWebAudioInit: function(latency) { - var ac = window['AudioContext'] || window['webkitAudioContext']; - - if (!ac) return 0; - - RA.context = new ac(); + Module.pauseMainLoop(); + if (!RA.context) { + var ac = window['AudioContext'] || window['webkitAudioContext']; + if (!ac) { + return 0; + } + RA.context = new ac(); + } RA.numBuffers = ((latency * RA.context.sampleRate) / (1000 * RA.BUFFER_SIZE))|0; if (RA.numBuffers < 2) RA.numBuffers = 2; @@ -93,8 +110,8 @@ var LibraryRWebAudio = { RA.startTime = 0; // chrome hack to get currentTime running RA.context.createGain(); - window['setTimeout'](RA.setStartTime, 0); - Module["pauseMainLoop"](); + RA.setStartTime(); + return 1; }, diff --git a/emscripten/library_rwebinput.js b/emscripten/library_rwebinput.js index 7b02bbd834..5d818f7805 100644 --- a/emscripten/library_rwebinput.js +++ b/emscripten/library_rwebinput.js @@ -5,22 +5,13 @@ var LibraryRWebInput = { $RI: { temp: null, contexts: [], + stateX: 0, + stateY: 0, + currentX: 0, + currentY: 0, - eventHandler: function(event) { - var i; + canvasEventHandler: function(event) { switch (event.type) { - case 'mousemove': - var x = event['movementX'] || event['mozMovementX'] || event['webkitMovementX']; - var y = event['movementY'] || event['mozMovementY'] || event['webkitMovementY']; - for (i = 0; i < RI.contexts.length; i++) { - var oldX = {{{ makeGetValue('RI.contexts[i].state', '32', 'i32') }}}; - var oldY = {{{ makeGetValue('RI.contexts[i].state', '36', 'i32') }}}; - x += oldX; - y += oldY; - {{{ makeSetValue('RI.contexts[i].state', '32', 'x', 'i32') }}}; - {{{ makeSetValue('RI.contexts[i].state', '36', 'y', 'i32') }}}; - } - break; case 'mouseup': case 'mousedown': var value; @@ -30,10 +21,53 @@ var LibraryRWebInput = { else break; if (event.type === 'mouseup') value = 0; else value = 1; - for (i = 0; i < RI.contexts.length; i++) { + for (var i = 0; i < RI.contexts.length; i++) { {{{ makeSetValue('RI.contexts[i].state', 'offset', 'value', 'i8') }}}; } break; + } + }, + + eventHandler: function(event) { + var i; + switch (event.type) { + case 'mousemove': + var x = 0; + var y = 0; + + var newX = event['clientX'] - Module.canvas.offsetLeft; + var newY = event['clientY'] - Module.canvas.offsetTop; + + if (newX < 0) { + newX = 0; + x = -Module.canvas.offsetWidth; + } else if (newX > Module.canvas.offsetWidth) { + newX = Module.canvas.offsetWidth; + x = Module.canvas.offsetWidth; + } else { + x = newX - RI.currentX; + } + + if (newY < 0) { + newY = 0; + y = -Module.canvas.offsetHeight; + } else if (newY > Module.canvas.offsetHeight) { + newY = Module.canvas.offsetHeight; + y = Module.canvas.offsetHeight; + } else { + y = newY - RI.currentY; + } + + RI.currentX = newX; + RI.currentY = newY; + + for (i = 0; i < RI.contexts.length; i++) { + {{{ makeSetValue('RI.contexts[i].state', '32', 'x', 'i32') }}}; + {{{ makeSetValue('RI.contexts[i].state', '36', 'y', 'i32') }}}; + } + + break; + case 'keyup': case 'keydown': var key = event.keyCode; @@ -48,6 +82,7 @@ var LibraryRWebInput = { } event.preventDefault(); break; + case 'blur': case 'visibilitychange': for (i = 0; i < RI.contexts.length; i++) { @@ -63,8 +98,8 @@ var LibraryRWebInput = { document.addEventListener('keyup', RI.eventHandler, false); document.addEventListener('keydown', RI.eventHandler, false); document.addEventListener('mousemove', RI.eventHandler, false); - document.addEventListener('mouseup', RI.eventHandler, false); - document.addEventListener('mousedown', RI.eventHandler, false); + Module.canvas.addEventListener('mouseup', RI.canvasEventHandler, false); + Module.canvas.addEventListener('mousedown', RI.canvasEventHandler, false); document.addEventListener('blur', RI.eventHandler, false); document.addEventListener('onvisbilitychange', RI.eventHandler, false); } @@ -95,8 +130,8 @@ var LibraryRWebInput = { document.removeEventListener('keyup', RI.eventHandler, false); document.removeEventListener('keydown', RI.eventHandler, false); document.removeEventListener('mousemove', RI.eventHandler, false); - document.removeEventListener('mouseup', RI.eventHandler, false); - document.removeEventListener('mousedown', RI.eventHandler, false); + Module.canvas.removeEventListener('mouseup', RI.canvasEventHandler, false); + Module.canvas.removeEventListener('mousedown', RI.canvasEventHandler, false); document.removeEventListener('blur', RI.eventHandler, false); document.removeEventListener('onvisbilitychange', RI.eventHandler, false); } diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index 702c96c149..d97e3059d2 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -20,6 +20,8 @@ #include #include "../../content.h" #include "../frontend.h" +//#include "../../retroarch.h" +//#include "../../runloop.h" #include "../frontend_driver.h" #include "../runloop_data.h" @@ -34,6 +36,27 @@ static void emscripten_mainloop(void) exit(0); } +void cmd_savefiles(void) +{ + rarch_main_command(RARCH_CMD_SAVEFILES); +} + +void cmd_save_state(void) +{ + rarch_main_command(RARCH_CMD_SAVE_STATE); +} + +void cmd_load_state(void) +{ + rarch_main_command(RARCH_CMD_LOAD_STATE); +} + +void cmd_take_screenshot(void) +{ + rarch_main_command(RARCH_CMD_TAKE_SCREENSHOT); +} + + int main(int argc, char *argv[]) { settings_t *settings = config_get_ptr(); diff --git a/gfx/video_driver.h b/gfx/video_driver.h index d19858eb40..48d2a25973 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -115,10 +115,9 @@ typedef struct video_poke_interface /* Update texture. */ void (*set_texture_frame)(void *data, const void *frame, bool rgb32, unsigned width, unsigned height, float alpha); - +#endif /* Enable or disable rendering. */ void (*set_texture_enable)(void *data, bool enable, bool full_screen); -#endif void (*set_osd_msg)(void *data, const char *msg, const struct font_params *params, void *font); diff --git a/input/drivers/rwebinput_input.c b/input/drivers/rwebinput_input.c index ac2ff56e87..d11abe73a6 100644 --- a/input/drivers/rwebinput_input.c +++ b/input/drivers/rwebinput_input.c @@ -25,7 +25,6 @@ #include "../../general.h" #include "../keyboard_line.h" -#include "../input_joypad.h" typedef struct rwebinput_state { From 5e6784ff7fd7e2d6ddefe034bedb7c5ce5848b10 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 26 Jul 2015 18:01:32 -0500 Subject: [PATCH 070/822] make sure only the selected device is polled on the bind all function --- menu/menu_input.c | 60 ++++++++++++++++++++++++--------------------- menu/menu_setting.c | 1 - 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/menu/menu_input.c b/menu/menu_input.c index 4bbae686e1..ee6fbb5c2b 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -39,6 +39,8 @@ #include "../input/input_remapping.h" #include "../input/input_common.h" +unsigned bind_port; + menu_input_t *menu_input_get_ptr(void) { menu_handle_t *menu = menu_driver_get_ptr(); @@ -216,7 +218,7 @@ void menu_input_key_event(bool down, unsigned keycode, menu_entry_action(NULL, 0, MENU_ACTION_SEARCH); } -static void menu_input_poll_bind_state(struct menu_bind_state *state) +static void menu_input_poll_bind_state(struct menu_bind_state *state, unsigned port) { unsigned i, b, a, h; const input_device_driver_t *joypad = input_driver_get_joypad_driver(); @@ -238,29 +240,28 @@ static void menu_input_poll_bind_state(struct menu_bind_state *state) if (joypad->poll) joypad->poll(); - for (i = 0; i < settings->input.max_users; i++) + /* poll only the relevant port */ + /* for (i = 0; i < settings->input.max_users; i++) */ + for (b = 0; b < MENU_MAX_BUTTONS; b++) + state->state[port].buttons[b] = input_joypad_button_raw(joypad, port, b); + + for (a = 0; a < MENU_MAX_AXES; a++) + state->state[port].axes[a] = input_joypad_axis_raw(joypad, port, a); + + for (h = 0; h < MENU_MAX_HATS; h++) { - for (b = 0; b < MENU_MAX_BUTTONS; b++) - state->state[i].buttons[b] = input_joypad_button_raw(joypad, i, b); - - for (a = 0; a < MENU_MAX_AXES; a++) - state->state[i].axes[a] = input_joypad_axis_raw(joypad, i, a); - - for (h = 0; h < MENU_MAX_HATS; h++) - { - if (input_joypad_hat_raw(joypad, i, HAT_UP_MASK, h)) - state->state[i].hats[h] |= HAT_UP_MASK; - if (input_joypad_hat_raw(joypad, i, HAT_DOWN_MASK, h)) - state->state[i].hats[h] |= HAT_DOWN_MASK; - if (input_joypad_hat_raw(joypad, i, HAT_LEFT_MASK, h)) - state->state[i].hats[h] |= HAT_LEFT_MASK; - if (input_joypad_hat_raw(joypad, i, HAT_RIGHT_MASK, h)) - state->state[i].hats[h] |= HAT_RIGHT_MASK; - } + if (input_joypad_hat_raw(joypad, port, HAT_UP_MASK, h)) + state->state[port].hats[h] |= HAT_UP_MASK; + if (input_joypad_hat_raw(joypad, port, HAT_DOWN_MASK, h)) + state->state[port].hats[h] |= HAT_DOWN_MASK; + if (input_joypad_hat_raw(joypad, port, HAT_LEFT_MASK, h)) + state->state[port].hats[h] |= HAT_LEFT_MASK; + if (input_joypad_hat_raw(joypad, port, HAT_RIGHT_MASK, h)) + state->state[port].hats[h] |= HAT_RIGHT_MASK; } } -static void menu_input_poll_bind_get_rested_axes(struct menu_bind_state *state) +static void menu_input_poll_bind_get_rested_axes(struct menu_bind_state *state, unsigned port) { unsigned i, a; const input_device_driver_t *joypad = input_driver_get_joypad_driver(); @@ -274,11 +275,12 @@ static void menu_input_poll_bind_get_rested_axes(struct menu_bind_state *state) RARCH_ERR("Cannot poll raw joypad state."); return; } - - for (i = 0; i < settings->input.max_users; i++) - for (a = 0; a < MENU_MAX_AXES; a++) - state->axis_state[i].rested_axes[a] = - input_joypad_axis_raw(joypad, i, a); + + /* poll only the relevant port */ + /*for (i = 0; i < settings->input.max_users; i++)*/ + for (a = 0; a < MENU_MAX_AXES; a++) + state->axis_state[port].rested_axes[a] = + input_joypad_axis_raw(joypad, port, a); } static bool menu_input_poll_find_trigger_pad(struct menu_bind_state *state, @@ -478,13 +480,15 @@ int menu_input_set_input_device_bind_mode(void *data, menu_input_t *menu_input = menu_input_get_ptr(); rarch_setting_t *setting = (rarch_setting_t*)data; + bind_port = setting->index_offset; + if (!setting) return -1; if (menu_input_set_bind_mode_common(setting, type) == -1) return -1; - menu_input_poll_bind_get_rested_axes(&menu_input->binds); - menu_input_poll_bind_state(&menu_input->binds); + menu_input_poll_bind_get_rested_axes(&menu_input->binds, bind_port); + menu_input_poll_bind_state(&menu_input->binds, bind_port); return 0; } @@ -563,7 +567,7 @@ int menu_input_bind_iterate(void) binds = menu_input->binds; input_driver_keyboard_mapping_set_block(true); - menu_input_poll_bind_state(&binds); + menu_input_poll_bind_state(&binds, bind_port); if ((binds.skip && !menu_input->binds.skip) || menu_input_poll_find_trigger(&menu_input->binds, &binds)) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 049056cef7..db4230089f 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1116,7 +1116,6 @@ static int core_list_action_toggle(void *data, bool wraparound) static int setting_action_ok_bind_all(void *data, bool wraparound) { global_t *global = global_get_ptr(); - (void)wraparound; if (!global) From 829cd27cf16abbc1f0dcf4103b066249d81c414d Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 26 Jul 2015 18:25:02 -0500 Subject: [PATCH 071/822] poll the selected device index instead of the user number --- menu/menu_input.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/menu/menu_input.c b/menu/menu_input.c index ee6fbb5c2b..5b6bea27e8 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -275,7 +275,7 @@ static void menu_input_poll_bind_get_rested_axes(struct menu_bind_state *state, RARCH_ERR("Cannot poll raw joypad state."); return; } - + /* poll only the relevant port */ /*for (i = 0; i < settings->input.max_users; i++)*/ for (a = 0; a < MENU_MAX_AXES; a++) @@ -479,8 +479,9 @@ int menu_input_set_input_device_bind_mode(void *data, { menu_input_t *menu_input = menu_input_get_ptr(); rarch_setting_t *setting = (rarch_setting_t*)data; + settings_t *settings = config_get_ptr(); - bind_port = setting->index_offset; + bind_port = settings->input.joypad_map[setting->index_offset]; if (!setting) return -1; From 44feeabace6b24f3a1fc7c30d99ff772a7187090 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 26 Jul 2015 18:35:13 -0500 Subject: [PATCH 072/822] this should fix controller indexes changing after binding --- menu/menu_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/menu_input.c b/menu/menu_input.c index 5b6bea27e8..1aa0376d14 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -371,7 +371,7 @@ static bool menu_input_poll_find_trigger(struct menu_bind_state *state, /* Update the joypad mapping automatically. * More friendly that way. */ - settings->input.joypad_map[state->user] = i; + //settings->input.joypad_map[state->user] = i; return true; } return false; From cdef82b1850dcf1481e1224133e5c33fe7ea8ee9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 03:44:28 +0200 Subject: [PATCH 073/822] Make late binding possible for frontend drivers (PS3) Fix shutdown/quit hang - now we have to fix exitspawn instead --- driver.c | 2 - driver.h | 2 +- frontend/drivers/platform_android.c | 2 +- frontend/drivers/platform_ctr.c | 2 +- frontend/drivers/platform_darwin.m | 2 +- frontend/drivers/platform_gx.c | 2 +- frontend/drivers/platform_linux.c | 2 +- frontend/drivers/platform_null.c | 2 +- frontend/drivers/platform_ps3.c | 82 ++++++++++++++++------------- frontend/drivers/platform_psp.c | 2 +- frontend/drivers/platform_qnx.c | 2 +- frontend/drivers/platform_win32.c | 2 +- frontend/drivers/platform_xdk.c | 2 +- frontend/frontend_driver.c | 12 ++--- frontend/frontend_driver.h | 28 +++++----- runloop.c | 1 - 16 files changed, 77 insertions(+), 70 deletions(-) diff --git a/driver.c b/driver.c index 99caba7330..0f3f1e639d 100644 --- a/driver.c +++ b/driver.c @@ -38,8 +38,6 @@ void driver_free(void) { if (g_driver) free(g_driver); - - g_driver = NULL; } static driver_t *driver_new(void) diff --git a/driver.h b/driver.h index f77af8debf..83e4d3f185 100644 --- a/driver.h +++ b/driver.h @@ -194,7 +194,7 @@ enum typedef struct driver { - const frontend_ctx_driver_t *frontend_ctx; + frontend_ctx_driver_t *frontend_ctx; const ui_companion_driver_t *ui_companion; const audio_driver_t *audio; const video_driver_t *video; diff --git a/frontend/drivers/platform_android.c b/frontend/drivers/platform_android.c index 822532f5cb..1983a69806 100644 --- a/frontend/drivers/platform_android.c +++ b/frontend/drivers/platform_android.c @@ -1048,7 +1048,7 @@ static int frontend_android_parse_drive_list(void *data) return 0; } -const frontend_ctx_driver_t frontend_ctx_android = { +frontend_ctx_driver_t frontend_ctx_android = { frontend_android_get_environment_settings, frontend_android_init, frontend_android_deinit, diff --git a/frontend/drivers/platform_ctr.c b/frontend/drivers/platform_ctr.c index 917b35c367..b6fa2c294a 100644 --- a/frontend/drivers/platform_ctr.c +++ b/frontend/drivers/platform_ctr.c @@ -223,7 +223,7 @@ static int frontend_ctr_parse_drive_list(void *data) return 0; } -const frontend_ctx_driver_t frontend_ctx_ctr = { +frontend_ctx_driver_t frontend_ctx_ctr = { frontend_ctr_get_environment_settings, frontend_ctr_init, frontend_ctr_deinit, diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 23f057f2ab..778157f647 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -609,7 +609,7 @@ static int frontend_darwin_parse_drive_list(void *data) return ret; } -const frontend_ctx_driver_t frontend_ctx_darwin = { +frontend_ctx_driver_t frontend_ctx_darwin = { frontend_darwin_get_environment_settings, NULL, /* init */ NULL, /* deinit */ diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index f8a1e57d45..2af1113b92 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -409,7 +409,7 @@ static int frontend_gx_parse_drive_list(void *data) return 0; } -const frontend_ctx_driver_t frontend_ctx_gx = { +frontend_ctx_driver_t frontend_ctx_gx = { frontend_gx_get_environment_settings, frontend_gx_init, frontend_gx_deinit, diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index fb23e6cb16..71ab01e0e8 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -465,7 +465,7 @@ static void frontend_linux_get_os(char *s, size_t len, int *major, int *minor) strlcpy(s, "Linux", len); } -const frontend_ctx_driver_t frontend_ctx_linux = { +frontend_ctx_driver_t frontend_ctx_linux = { NULL, /* environment_get */ NULL, /* init */ NULL, /* deinit */ diff --git a/frontend/drivers/platform_null.c b/frontend/drivers/platform_null.c index 8eefa693fa..f8d051dad2 100644 --- a/frontend/drivers/platform_null.c +++ b/frontend/drivers/platform_null.c @@ -21,7 +21,7 @@ #include #include -const frontend_ctx_driver_t frontend_ctx_null = { +frontend_ctx_driver_t frontend_ctx_null = { NULL, /* environment_get */ NULL, /* init */ NULL, /* deinit */ diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c index f7d7dc472d..80927e4a3c 100644 --- a/frontend/drivers/platform_ps3.c +++ b/frontend/drivers/platform_ps3.c @@ -57,6 +57,10 @@ static bool multiman_detected = false; static bool exit_spawn = false; static bool exitspawn_start_game = false; +static void frontend_ps3_shutdown(bool unused) +{ + sys_process_exit(0); +} #ifdef HAVE_SYSUTILS static void callback_sysutil_exit(uint64_t status, @@ -73,10 +77,13 @@ static void callback_sysutil_exit(uint64_t status, { case CELL_SYSUTIL_REQUEST_EXITGAME: { + frontend_ctx_driver_t *frontend = frontend_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); if (system) system->shutdown = true; + if (frontend) + frontend->shutdown = frontend_ps3_shutdown; } break; } @@ -313,47 +320,12 @@ static void frontend_ps3_deinit(void *data) #endif } -static void frontend_ps3_exec(const char *path, bool should_load_game); - static void frontend_ps3_set_fork(bool exit, bool start_game) { exit_spawn = exitspawn; exitspawn_start_game = start_game; } -static void frontend_ps3_exitspawn(char *core_path, size_t core_path_size) -{ -#ifdef HAVE_RARCH_EXEC - bool should_load_game = false; - -#ifndef IS_SALAMANDER - global_t *global = global_get_ptr(); - bool original_verbose = global->verbosity; - global->verbosity = true; - - should_load_game = exitspawn_start_game; - - if (!exit_spawn) - return; -#endif - - frontend_ps3_exec(core_path, should_load_game); - -#ifdef IS_SALAMANDER - cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_GAME); - cellSysmoduleLoadModule(CELL_SYSMODULE_FS); - cellSysmoduleLoadModule(CELL_SYSMODULE_IO); -#else - -#endif - -#ifndef IS_SALAMANDER - global->verbosity = original_verbose; -#endif -#endif -} - - static void frontend_ps3_exec(const char *path, bool should_load_game) { unsigned i; @@ -439,6 +411,44 @@ static void frontend_ps3_exec(const char *path, bool should_load_game) #endif } +static void frontend_ps3_exitspawn(char *core_path, size_t core_path_size) +{ +#ifdef HAVE_RARCH_EXEC + bool should_load_game = false; + +#ifndef IS_SALAMANDER + global_t *global = global_get_ptr(); + bool original_verbose = global->verbosity; + global->verbosity = true; + + should_load_game = exitspawn_start_game; + + if (!exit_spawn) + { + frontend_ctx_driver_t *frontend = frontend_get_ptr(); + + if (frontend) + frontend->shutdown = frontend_ps3_shutdown; + return; + } +#endif + + frontend_ps3_exec(core_path, should_load_game); + +#ifdef IS_SALAMANDER + cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_GAME); + cellSysmoduleLoadModule(CELL_SYSMODULE_FS); + cellSysmoduleLoadModule(CELL_SYSMODULE_IO); +#endif + +#ifndef IS_SALAMANDER + global->verbosity = original_verbose; +#endif +#endif + + return; +} + static int frontend_ps3_get_rating(void) { return 10; @@ -481,7 +491,7 @@ static int frontend_ps3_parse_drive_list(void *data) return 0; } -const frontend_ctx_driver_t frontend_ctx_ps3 = { +frontend_ctx_driver_t frontend_ctx_ps3 = { frontend_ps3_get_environment_settings, frontend_ps3_init, frontend_ps3_deinit, diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 453ddc9fe4..8ed2075a7b 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -290,7 +290,7 @@ static int frontend_psp_parse_drive_list(void *data) return 0; } -const frontend_ctx_driver_t frontend_ctx_psp = { +frontend_ctx_driver_t frontend_ctx_psp = { frontend_psp_get_environment_settings, frontend_psp_init, frontend_psp_deinit, diff --git a/frontend/drivers/platform_qnx.c b/frontend/drivers/platform_qnx.c index e661d04521..20cb293f4e 100644 --- a/frontend/drivers/platform_qnx.c +++ b/frontend/drivers/platform_qnx.c @@ -64,7 +64,7 @@ enum frontend_architecture frontend_qnx_get_architecture(void) return FRONTEND_ARCH_ARM; } -const frontend_ctx_driver_t frontend_ctx_qnx = { +frontend_ctx_driver_t frontend_ctx_qnx = { frontend_qnx_get_environment_settings, frontend_qnx_init, NULL, /* deinit */ diff --git a/frontend/drivers/platform_win32.c b/frontend/drivers/platform_win32.c index ce1d59bcdc..d68633ee39 100644 --- a/frontend/drivers/platform_win32.c +++ b/frontend/drivers/platform_win32.c @@ -227,7 +227,7 @@ static int frontend_win32_parse_drive_list(void *data) return 0; } -const frontend_ctx_driver_t frontend_ctx_win32 = { +frontend_ctx_driver_t frontend_ctx_win32 = { NULL, /* environment_get */ frontend_win32_init, NULL, /* deinit */ diff --git a/frontend/drivers/platform_xdk.c b/frontend/drivers/platform_xdk.c index 5bfc2692cc..de5b159138 100644 --- a/frontend/drivers/platform_xdk.c +++ b/frontend/drivers/platform_xdk.c @@ -407,7 +407,7 @@ static int frontend_xdk_parse_drive_list(void *data) return 0; } -const frontend_ctx_driver_t frontend_ctx_xdk = { +frontend_ctx_driver_t frontend_ctx_xdk = { frontend_xdk_get_environment_settings, frontend_xdk_init, NULL, /* deinit */ diff --git a/frontend/frontend_driver.c b/frontend/frontend_driver.c index 74885e3cad..6157f9cae7 100644 --- a/frontend/frontend_driver.c +++ b/frontend/frontend_driver.c @@ -22,7 +22,7 @@ #include "../config.h" #endif -static const frontend_ctx_driver_t *frontend_ctx_drivers[] = { +static frontend_ctx_driver_t *frontend_ctx_drivers[] = { #if defined(__CELLOS_LV2__) &frontend_ctx_ps3, #endif @@ -65,7 +65,7 @@ static const frontend_ctx_driver_t *frontend_ctx_drivers[] = { * * Returns: pointer to driver if successful, otherwise NULL. **/ -const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident) +frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident) { unsigned i; @@ -85,10 +85,10 @@ const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident) * * Returns: pointer to first suitable driver, otherwise NULL. **/ -const frontend_ctx_driver_t *frontend_ctx_init_first(void) +frontend_ctx_driver_t *frontend_ctx_init_first(void) { unsigned i; - const frontend_ctx_driver_t *frontend = NULL; + frontend_ctx_driver_t *frontend = NULL; for (i = 0; frontend_ctx_drivers[i]; i++) { @@ -100,7 +100,7 @@ const frontend_ctx_driver_t *frontend_ctx_init_first(void) } #ifndef IS_SALAMANDER -const frontend_ctx_driver_t *frontend_get_ptr(void) +frontend_ctx_driver_t *frontend_get_ptr(void) { driver_t *driver = driver_get_ptr(); if (!driver) @@ -110,7 +110,7 @@ const frontend_ctx_driver_t *frontend_get_ptr(void) int frontend_driver_parse_drive_list(void *data) { - const frontend_ctx_driver_t *frontend = frontend_get_ptr(); + frontend_ctx_driver_t *frontend = frontend_get_ptr(); if (!frontend || !frontend->parse_drive_list) return -1; diff --git a/frontend/frontend_driver.h b/frontend/frontend_driver.h index 5ae9c9de6e..f082a138a6 100644 --- a/frontend/frontend_driver.h +++ b/frontend/frontend_driver.h @@ -76,17 +76,17 @@ typedef struct frontend_ctx_driver const struct video_driver *(*get_video_driver)(void); } frontend_ctx_driver_t; -extern const frontend_ctx_driver_t frontend_ctx_gx; -extern const frontend_ctx_driver_t frontend_ctx_ps3; -extern const frontend_ctx_driver_t frontend_ctx_xdk; -extern const frontend_ctx_driver_t frontend_ctx_qnx; -extern const frontend_ctx_driver_t frontend_ctx_darwin; -extern const frontend_ctx_driver_t frontend_ctx_android; -extern const frontend_ctx_driver_t frontend_ctx_linux; -extern const frontend_ctx_driver_t frontend_ctx_psp; -extern const frontend_ctx_driver_t frontend_ctx_ctr; -extern const frontend_ctx_driver_t frontend_ctx_win32; -extern const frontend_ctx_driver_t frontend_ctx_null; +extern frontend_ctx_driver_t frontend_ctx_gx; +extern frontend_ctx_driver_t frontend_ctx_ps3; +extern frontend_ctx_driver_t frontend_ctx_xdk; +extern frontend_ctx_driver_t frontend_ctx_qnx; +extern frontend_ctx_driver_t frontend_ctx_darwin; +extern frontend_ctx_driver_t frontend_ctx_android; +extern frontend_ctx_driver_t frontend_ctx_linux; +extern frontend_ctx_driver_t frontend_ctx_psp; +extern frontend_ctx_driver_t frontend_ctx_ctr; +extern frontend_ctx_driver_t frontend_ctx_win32; +extern frontend_ctx_driver_t frontend_ctx_null; /** * frontend_ctx_find_driver: @@ -96,9 +96,9 @@ extern const frontend_ctx_driver_t frontend_ctx_null; * * Returns: pointer to driver if successful, otherwise NULL. **/ -const frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident); +frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident); -const frontend_ctx_driver_t *frontend_get_ptr(void); +frontend_ctx_driver_t *frontend_get_ptr(void); /** * frontend_ctx_init_first: @@ -107,7 +107,7 @@ const frontend_ctx_driver_t *frontend_get_ptr(void); * * Returns: pointer to first suitable driver, otherwise NULL. **/ -const frontend_ctx_driver_t *frontend_ctx_init_first(void); +frontend_ctx_driver_t *frontend_ctx_init_first(void); int frontend_driver_parse_drive_list(void *data); diff --git a/runloop.c b/runloop.c index 932af3b0b3..f44cc3b47a 100644 --- a/runloop.c +++ b/runloop.c @@ -894,7 +894,6 @@ void rarch_main_global_free(void) return; free(g_extern); - g_extern = NULL; } bool rarch_main_verbosity(void) From aa649f90fca08cc0a34c8c73e05aa79a8705a300 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 14:38:01 +0200 Subject: [PATCH 074/822] Make g_extern not a pointer --- runloop.c | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/runloop.c b/runloop.c index f44cc3b47a..617b8ab94d 100644 --- a/runloop.c +++ b/runloop.c @@ -43,7 +43,7 @@ #endif static struct runloop *g_runloop = NULL; -static struct global *g_extern = NULL; +static struct global g_extern; /** * check_pause: @@ -866,7 +866,7 @@ static void rarch_main_iterate_linefeed_overlay(driver_t *driver, global_t *global_get_ptr(void) { - return g_extern; + return &g_extern; } runloop_t *rarch_main_get_ptr(void) @@ -890,10 +890,7 @@ void rarch_main_global_free(void) event_command(EVENT_CMD_RECORD_DEINIT); event_command(EVENT_CMD_LOG_FILE_DEINIT); - if (!g_extern) - return; - - free(g_extern); + memset(&g_extern, 0, sizeof(g_extern)); } bool rarch_main_verbosity(void) @@ -912,16 +909,6 @@ FILE *rarch_main_log_file(void) return global->log_file; } -static global_t *rarch_main_global_new(void) -{ - global_t *global = (global_t*)calloc(1, sizeof(global_t)); - - if (!global) - return NULL; - - return global; -} - static runloop_t *rarch_main_state_init(void) { runloop_t *runloop = (runloop_t*)calloc(1, sizeof(runloop_t)); @@ -940,7 +927,6 @@ void rarch_main_clear_state(void) g_runloop = rarch_main_state_init(); rarch_main_global_free(); - g_extern = rarch_main_global_new(); } bool rarch_main_is_idle(void) From 4d78dc4bdf213138cae0b754dda6c91f5c6799c6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 14:41:25 +0200 Subject: [PATCH 075/822] Make g_runloop not a pointer anymore --- runloop.c | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/runloop.c b/runloop.c index 617b8ab94d..a22a64097b 100644 --- a/runloop.c +++ b/runloop.c @@ -42,7 +42,7 @@ #include "netplay.h" #endif -static struct runloop *g_runloop = NULL; +static struct runloop g_runloop; static struct global g_extern; /** @@ -871,16 +871,12 @@ global_t *global_get_ptr(void) runloop_t *rarch_main_get_ptr(void) { - return g_runloop; + return &g_runloop; } void rarch_main_state_free(void) { - if (!g_runloop) - return; - - free(g_runloop); - g_runloop = NULL; + memset(&g_runloop, 0, sizeof(g_runloop)); } void rarch_main_global_free(void) @@ -909,22 +905,11 @@ FILE *rarch_main_log_file(void) return global->log_file; } -static runloop_t *rarch_main_state_init(void) -{ - runloop_t *runloop = (runloop_t*)calloc(1, sizeof(runloop_t)); - - if (!runloop) - return NULL; - - return runloop; -} - void rarch_main_clear_state(void) { driver_clear_state(); rarch_main_state_free(); - g_runloop = rarch_main_state_init(); rarch_main_global_free(); } From c8c35ed8d3354871efc48f25dffc85227ece95e5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 14:46:18 +0200 Subject: [PATCH 076/822] g_driver no longer a pointer --- driver.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/driver.c b/driver.c index 0f3f1e639d..2ac4829fc2 100644 --- a/driver.c +++ b/driver.c @@ -32,33 +32,21 @@ #include "config.h" #endif -static driver_t *g_driver = NULL; +static driver_t g_driver; void driver_free(void) { - if (g_driver) - free(g_driver); -} - -static driver_t *driver_new(void) -{ - driver_t *driver = (driver_t*)calloc(1, sizeof(driver_t)); - - if (!driver) - return NULL; - - return driver; + memset(&g_driver, 0, sizeof(g_driver)); } void driver_clear_state(void) { driver_free(); - g_driver = driver_new(); } driver_t *driver_get_ptr(void) { - return g_driver; + return &g_driver; } #define HASH_LOCATION_DRIVER 0x09189689U From a31192c55a6661b0a25dd5792cee93c3f828b8fa Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 14:52:21 +0200 Subject: [PATCH 077/822] g_data_runloop is now no longer a pointer --- runloop_data.c | 40 ++++++++-------------------------------- runloop_data.h | 2 -- 2 files changed, 8 insertions(+), 34 deletions(-) diff --git a/runloop_data.c b/runloop_data.c index 98b798a280..adac44f6d7 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -55,11 +55,11 @@ typedef struct data_runloop static char data_runloop_msg[PATH_MAX_LENGTH]; -static data_runloop_t *g_data_runloop; +static data_runloop_t g_data_runloop; static data_runloop_t *rarch_main_data_get_ptr(void) { - return g_data_runloop; + return &g_data_runloop; } #ifdef HAVE_THREADS @@ -101,18 +101,6 @@ void rarch_main_data_deinit(void) runloop->inited = false; } -static void rarch_main_data_free_internal(void) -{ - data_runloop_t *runloop = rarch_main_data_get_ptr(); - - if (!runloop) - return; - - if (runloop) - free(runloop); - runloop = NULL; -} - void rarch_main_data_free(void) { rarch_main_data_nbio_uninit(); @@ -123,7 +111,7 @@ void rarch_main_data_free(void) rarch_main_data_db_uninit(); #endif - rarch_main_data_free_internal(); + memset(&g_data_runloop, 0, sizeof(g_data_runloop)); } static void data_runloop_iterate(bool is_thread) @@ -291,33 +279,21 @@ void rarch_main_data_iterate(void) data_runloop_iterate(false); } -static data_runloop_t *rarch_main_data_new(void) +static void rarch_main_data_init(void) { - data_runloop_t *runloop = (data_runloop_t*) - calloc(1, sizeof(data_runloop_t)); - - if (!runloop) - return NULL; - #ifdef HAVE_THREADS - runloop->thread_inited = false; - runloop->alive = false; + g_data_runloop.thread_inited = false; + g_data_runloop.alive = false; #endif - runloop->inited = true; - - - return runloop; + g_data_runloop.inited = true; } void rarch_main_data_clear_state(void) { rarch_main_data_deinit(); rarch_main_data_free(); - g_data_runloop = rarch_main_data_new(); - - if (!g_data_runloop) - return; + rarch_main_data_init(); rarch_main_data_nbio_init(); #ifdef HAVE_NETWORKING diff --git a/runloop_data.h b/runloop_data.h index efc3c4384c..5802a244bd 100644 --- a/runloop_data.h +++ b/runloop_data.h @@ -48,8 +48,6 @@ void rarch_main_data_free(void); void rarch_main_data_init_queues(void); -void rarch_main_data_init(void); - bool rarch_main_data_active(void); #ifdef __cplusplus From a70f09a90d84bc77cc22ca9c1f587b6cf079108c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 17:18:10 +0200 Subject: [PATCH 078/822] Rearrange structs --- autosave.c | 12 +- command_event.c | 110 +++++---- configuration.c | 366 ++++++++++++++-------------- content.c | 6 +- dir_list_special.c | 2 +- dynamic.c | 27 +- frontend/drivers/platform_android.c | 132 +++++----- frontend/drivers/platform_ctr.c | 40 +-- frontend/drivers/platform_darwin.m | 84 +++---- frontend/drivers/platform_gx.c | 42 ++-- frontend/drivers/platform_ps3.c | 52 ++-- frontend/drivers/platform_psp.c | 48 ++-- frontend/drivers/platform_qnx.c | 24 +- frontend/drivers/platform_wii.c | 2 +- frontend/drivers/platform_xdk.c | 54 ++-- frontend/frontend.c | 112 ++++----- frontend/frontend_salamander.c | 10 +- general.h | 63 ++--- libretro_version_1.c | 14 +- menu/cbs/menu_cbs_deferred_push.c | 8 +- menu/cbs/menu_cbs_get_value.c | 4 +- menu/cbs/menu_cbs_ok.c | 38 +-- menu/menu.c | 42 ++-- menu/menu_display.c | 2 +- menu/menu_displaylist.c | 21 +- menu/menu_setting.c | 54 ++-- menu/menu_shader.c | 12 +- menu/menu_video.c | 2 +- netplay.c | 14 +- patch.c | 20 +- record/record_driver.c | 2 +- retroarch.c | 359 +++++++++++++-------------- runloop.c | 10 +- runloop.h | 179 ++++++++------ screenshot.c | 6 +- tasks/task_http.c | 2 +- 36 files changed, 1009 insertions(+), 966 deletions(-) diff --git a/autosave.c b/autosave.c index 7e2a599efb..a1d4d8058d 100644 --- a/autosave.c +++ b/autosave.c @@ -196,10 +196,10 @@ void lock_autosave(void) unsigned i; global_t *global = global_get_ptr(); - for (i = 0; i < global->num_autosave; i++) + for (i = 0; i < global->autosave.num; i++) { - if (global->autosave[i]) - autosave_lock(global->autosave[i]); + if (global->autosave.list[i]) + autosave_lock(global->autosave.list[i]); } } @@ -213,10 +213,10 @@ void unlock_autosave(void) unsigned i; global_t *global = global_get_ptr(); - for (i = 0; i < global->num_autosave; i++) + for (i = 0; i < global->autosave.num; i++) { - if (global->autosave[i]) - autosave_unlock(global->autosave[i]); + if (global->autosave.list[i]) + autosave_unlock(global->autosave.list[i]); } } diff --git a/command_event.c b/command_event.c index 733b3a302b..840be2c942 100644 --- a/command_event.c +++ b/command_event.c @@ -102,11 +102,11 @@ static void event_init_autosave(void) if (settings->autosave_interval < 1 || !global->savefiles) return; - if (!(global->autosave = (autosave_t**)calloc(global->savefiles->size, - sizeof(*global->autosave)))) + if (!(global->autosave.list = (autosave_t**)calloc(global->savefiles->size, + sizeof(*global->autosave.list)))) return; - global->num_autosave = global->savefiles->size; + global->autosave.num = global->savefiles->size; for (i = 0; i < global->savefiles->size; i++) { @@ -116,12 +116,12 @@ static void event_init_autosave(void) if (pretro_get_memory_size(type) <= 0) continue; - global->autosave[i] = autosave_new(path, + global->autosave.list[i] = autosave_new(path, pretro_get_memory_data(type), pretro_get_memory_size(type), settings->autosave_interval); - if (!global->autosave[i]) + if (!global->autosave.list[i]) RARCH_WARN("%s\n", msg_hash_to_str(MSG_AUTOSAVE_FAILED)); } } @@ -131,14 +131,14 @@ static void event_deinit_autosave(void) unsigned i; global_t *global = global_get_ptr(); - for (i = 0; i < global->num_autosave; i++) - autosave_free(global->autosave[i]); + for (i = 0; i < global->autosave.num; i++) + autosave_free(global->autosave.list[i]); - if (global->autosave) - free(global->autosave); - global->autosave = NULL; + if (global->autosave.list) + free(global->autosave.list); - global->num_autosave = 0; + global->autosave.list = NULL; + global->autosave.num = 0; } #endif @@ -147,7 +147,7 @@ static void event_save_files(void) unsigned i; global_t *global = global_get_ptr(); - if (!global->savefiles || !global->use_sram) + if (!global->savefiles || !global->sram.use) return; for (i = 0; i < global->savefiles->size; i++) @@ -543,9 +543,11 @@ static void event_deinit_core(bool reinit) /* per-core saves: restore the original path so the config is not affected */ if(settings->sort_savefiles_enable) - strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir)); + strlcpy(global->dir.savefile, orig_savefile_dir, + sizeof(global->dir.savefile)); if(settings->sort_savestates_enable) - strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); + strlcpy(global->dir.savestate, orig_savestate_dir, + sizeof(global->dir.savestate)); /* auto overrides: reload the original config */ if(global->overrides_active) @@ -583,7 +585,7 @@ static bool event_load_save_files(void) if (!global) return false; - if (!global->savefiles || global->sram_load_disable) + if (!global->savefiles || global->sram.load_disable) return false; for (i = 0; i < global->savefiles->size; i++) @@ -602,14 +604,14 @@ static void event_load_auto_state(void) global_t *global = global_get_ptr(); #ifdef HAVE_NETPLAY - if (global->netplay_enable && !global->netplay_is_spectate) + if (global->netplay.enable && !global->netplay.is_spectate) return; #endif if (!settings->savestate_auto_load) return; - fill_pathname_noext(savestate_name_auto, global->savestate_name, + fill_pathname_noext(savestate_name_auto, global->name.savestate, ".auto", sizeof(savestate_name_auto)); if (!path_file_exists(savestate_name_auto)) @@ -645,9 +647,9 @@ static void event_set_savestate_auto_index(void) * /foo/path/content.state%d, where %d is the largest number available. */ - fill_pathname_basedir(state_dir, global->savestate_name, + fill_pathname_basedir(state_dir, global->name.savestate, sizeof(state_dir)); - fill_pathname_base(state_base, global->savestate_name, + fill_pathname_base(state_base, global->name.savestate, sizeof(state_base)); if (!(dir_list = dir_list_new_special(state_dir, DIR_LIST_PLAIN))) @@ -686,16 +688,16 @@ static bool event_init_content(void) /* No content to be loaded for dummy core, * just successfully exit. */ - if (global->core_type == CORE_TYPE_DUMMY) + if (global->inited.core.type == CORE_TYPE_DUMMY) return true; - if (!global->libretro_no_content) + if (!global->inited.core.no_content) rarch_fill_pathnames(); if (!init_content_file()) return false; - if (global->libretro_no_content) + if (global->inited.core.no_content) return true; event_set_savestate_auto_index(); @@ -719,9 +721,11 @@ static bool event_init_core(void) /* per-core saves: save the original path */ if(orig_savefile_dir[0] == '\0') - strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(orig_savefile_dir)); + strlcpy(orig_savefile_dir, global->dir.savefile, + sizeof(orig_savefile_dir)); if(orig_savestate_dir[0] == '\0') - strlcpy(orig_savestate_dir,global->savestate_dir,sizeof(orig_savestate_dir)); + strlcpy(orig_savestate_dir, global->dir.savestate, + sizeof(orig_savestate_dir)); /* auto overrides: apply overrides */ if(settings->auto_overrides_enable) @@ -742,14 +746,14 @@ static bool event_init_core(void) config_load_remap(); /* per-core saves: reset redirection paths */ - if((settings->sort_savestates_enable || settings->sort_savefiles_enable) && !global->libretro_no_content) - set_paths_redirect(global->basename); + if((settings->sort_savestates_enable || settings->sort_savefiles_enable) && !global->inited.core.no_content) + set_paths_redirect(global->name.base); rarch_verify_api_version(); pretro_init(); - global->use_sram = (global->core_type == CORE_TYPE_PLAIN) && - !global->libretro_no_content; + global->sram.use = (global->inited.core.type == CORE_TYPE_PLAIN) && + !global->inited.core.no_content; if (!event_init_content()) return false; @@ -768,11 +772,11 @@ static bool event_save_auto_state(void) global_t *global = global_get_ptr(); if (!settings->savestate_auto_save || - (global->core_type == CORE_TYPE_DUMMY) || - global->libretro_no_content) + (global->inited.core.type == CORE_TYPE_DUMMY) || + global->inited.core.no_content) return false; - fill_pathname_noext(savestate_name_auto, global->savestate_name, + fill_pathname_noext(savestate_name_auto, global->name.savestate, ".auto", sizeof(savestate_name_auto)); ret = save_state(savestate_name_auto); @@ -817,8 +821,8 @@ static bool event_save_core_config(void) if (*settings->menu_config_directory) strlcpy(config_dir, settings->menu_config_directory, sizeof(config_dir)); - else if (*global->config_path) /* Fallback */ - fill_pathname_basedir(config_dir, global->config_path, + else if (*global->path.config) /* Fallback */ + fill_pathname_basedir(config_dir, global->path.config, sizeof(config_dir)); else { @@ -878,8 +882,8 @@ static bool event_save_core_config(void) if ((ret = config_save_file(config_path))) { - strlcpy(global->config_path, config_path, - sizeof(global->config_path)); + strlcpy(global->path.config, config_path, + sizeof(global->path.config)); snprintf(msg, sizeof(msg), "Saved new config to \"%s\".", config_path); RARCH_LOG("%s\n", msg); @@ -960,12 +964,12 @@ static void event_main_state(unsigned cmd) if (settings->state_slot > 0) snprintf(path, sizeof(path), "%s%d", - global->savestate_name, settings->state_slot); + global->name.savestate, settings->state_slot); else if (settings->state_slot < 0) fill_pathname_join_delim(path, - global->savestate_name, "auto", '.', sizeof(path)); + global->name.savestate, "auto", '.', sizeof(path)); else - strlcpy(path, global->savestate_name, sizeof(path)); + strlcpy(path, global->name.savestate, sizeof(path)); if (pretro_serialize_size()) { @@ -999,11 +1003,11 @@ static bool event_update_system_info(struct retro_system_info *_info, libretro_get_system_info(settings->libretro, _info, load_no_content); #endif - if (!global->core_info) + if (!global->core_info.list) return false; - if (!core_info_list_get_info(global->core_info, - global->core_info_current, settings->libretro)) + if (!core_info_list_get_info(global->core_info.list, + global->core_info.current, settings->libretro)) return false; return true; @@ -1052,7 +1056,7 @@ bool event_command(enum event_command cmd) rarch_environment_cb(RETRO_ENVIRONMENT_SET_LIBRETRO_PATH, (void*)settings->libretro); rarch_environment_cb(RETRO_ENVIRONMENT_EXEC, - (void*)global->fullpath); + (void*)global->path.fullpath); event_command(EVENT_CMD_QUIT); #endif break; @@ -1138,7 +1142,7 @@ bool event_command(enum event_command cmd) #endif rarch_main_data_deinit(); - *global->fullpath = '\0'; + *global->path.fullpath = '\0'; rarch_main_set_state(RARCH_ACTION_STATE_LOAD_CONTENT); } @@ -1330,9 +1334,9 @@ bool event_command(enum event_command cmd) if (!global) break; - if (global->core_info) - core_info_list_free(global->core_info); - global->core_info = NULL; + if (global->core_info.list) + core_info_list_free(global->core_info.list); + global->core_info.list = NULL; break; case EVENT_CMD_DATA_RUNLOOP_FREE: rarch_main_data_free(); @@ -1341,7 +1345,7 @@ bool event_command(enum event_command cmd) event_command(EVENT_CMD_CORE_INFO_DEINIT); if (*settings->libretro_directory) - global->core_info = core_info_list_new(); + global->core_info.list = core_info_list_new(); break; case EVENT_CMD_CORE_DEINIT: { @@ -1405,9 +1409,9 @@ bool event_command(enum event_command cmd) break; case EVENT_CMD_RESTART_RETROARCH: #if defined(GEKKO) && defined(HW_RVL) - fill_pathname_join(global->fullpath, g_defaults.core_dir, + fill_pathname_join(global->path.fullpath, g_defaults.dir.core, SALAMANDER_FILE, - sizeof(global->fullpath)); + sizeof(global->path.fullpath)); #endif if (driver->frontend_ctx && driver->frontend_ctx->set_fork) driver->frontend_ctx->set_fork(true, false); @@ -1504,17 +1508,17 @@ bool event_command(enum event_command cmd) global->savefiles = NULL; break; case EVENT_CMD_SAVEFILES_INIT: - global->use_sram = global->use_sram && !global->sram_save_disable + global->sram.use = global->sram.use && !global->sram.save_disable #ifdef HAVE_NETPLAY - && (!driver->netplay_data || !global->netplay_is_client) + && (!driver->netplay_data || !global->netplay.is_client) #endif ; - if (!global->use_sram) + if (!global->sram.use) RARCH_LOG("%s\n", msg_hash_to_str(MSG_SRAM_WILL_NOT_BE_SAVED)); - if (global->use_sram) + if (global->sram.use) event_command(EVENT_CMD_AUTOSAVE_INIT); break; case EVENT_CMD_MSG_QUEUE_DEINIT: diff --git a/configuration.c b/configuration.c index 9336680b3c..f7e063b055 100644 --- a/configuration.c +++ b/configuration.c @@ -645,7 +645,7 @@ static void config_set_defaults(void) { settings->input.joypad_map[i] = i; settings->input.analog_dpad_mode[i] = ANALOG_DPAD_NONE; - if (!global->has_set_libretro_device[i]) + if (!global->has_set.libretro_device[i]) settings->input.libretro_device[i] = RETRO_DEVICE_JOYPAD; } @@ -655,21 +655,21 @@ static void config_set_defaults(void) /* Make sure settings from other configs carry over into defaults * for another config. */ - if (!global->has_set_save_path) - *global->savefile_dir = '\0'; - if (!global->has_set_state_path) - *global->savestate_dir = '\0'; + if (!global->has_set.save_path) + *global->dir.savefile = '\0'; + if (!global->has_set.state_path) + *global->dir.savestate = '\0'; *settings->libretro_info_path = '\0'; - if (!global->has_set_libretro_directory) + if (!global->has_set.libretro_directory) *settings->libretro_directory = '\0'; - if (!global->has_set_ups_pref) - global->ups_pref = false; - if (!global->has_set_bps_pref) - global->bps_pref = false; - if (!global->has_set_ips_pref) - global->ips_pref = false; + if (!global->has_set.ups_pref) + global->patch.ups_pref = false; + if (!global->has_set.bps_pref) + global->patch.bps_pref = false; + if (!global->has_set.ips_pref) + global->patch.ips_pref = false; *global->record.output_dir = '\0'; *global->record.config_dir = '\0'; @@ -728,117 +728,117 @@ static void config_set_defaults(void) global->console.sound.mode = SOUND_MODE_NORMAL; #endif - if (*g_defaults.wallpapers_dir) + if (*g_defaults.dir.wallpapers) strlcpy(settings->dynamic_wallpapers_directory, - g_defaults.wallpapers_dir, sizeof(settings->dynamic_wallpapers_directory)); - if (*g_defaults.remap_dir) + g_defaults.dir.wallpapers, sizeof(settings->dynamic_wallpapers_directory)); + if (*g_defaults.dir.remap) strlcpy(settings->input_remapping_directory, - g_defaults.remap_dir, sizeof(settings->input_remapping_directory)); - if (*g_defaults.extraction_dir) + g_defaults.dir.remap, sizeof(settings->input_remapping_directory)); + if (*g_defaults.dir.extraction) strlcpy(settings->extraction_directory, - g_defaults.extraction_dir, sizeof(settings->extraction_directory)); - if (*g_defaults.audio_filter_dir) + g_defaults.dir.extraction, sizeof(settings->extraction_directory)); + if (*g_defaults.dir.audio_filter) strlcpy(settings->audio.filter_dir, - g_defaults.audio_filter_dir, sizeof(settings->audio.filter_dir)); - if (*g_defaults.video_filter_dir) + g_defaults.dir.audio_filter, sizeof(settings->audio.filter_dir)); + if (*g_defaults.dir.video_filter) strlcpy(settings->video.filter_dir, - g_defaults.video_filter_dir, sizeof(settings->video.filter_dir)); - if (*g_defaults.assets_dir) + g_defaults.dir.video_filter, sizeof(settings->video.filter_dir)); + if (*g_defaults.dir.assets) strlcpy(settings->assets_directory, - g_defaults.assets_dir, sizeof(settings->assets_directory)); - if (*g_defaults.core_assets_dir) + g_defaults.dir.assets, sizeof(settings->assets_directory)); + if (*g_defaults.dir.core_assets) strlcpy(settings->core_assets_directory, - g_defaults.core_assets_dir, sizeof(settings->core_assets_directory)); - if (*g_defaults.playlist_dir) + g_defaults.dir.core_assets, sizeof(settings->core_assets_directory)); + if (*g_defaults.dir.playlist) strlcpy(settings->playlist_directory, - g_defaults.playlist_dir, sizeof(settings->playlist_directory)); - if (*g_defaults.core_dir) + g_defaults.dir.playlist, sizeof(settings->playlist_directory)); + if (*g_defaults.dir.core) fill_pathname_expand_special(settings->libretro_directory, - g_defaults.core_dir, sizeof(settings->libretro_directory)); - if (*g_defaults.core_path) - strlcpy(settings->libretro, g_defaults.core_path, + g_defaults.dir.core, sizeof(settings->libretro_directory)); + if (*g_defaults.path.core) + strlcpy(settings->libretro, g_defaults.path.core, sizeof(settings->libretro)); - if (*g_defaults.database_dir) - strlcpy(settings->content_database, g_defaults.database_dir, + if (*g_defaults.dir.database) + strlcpy(settings->content_database, g_defaults.dir.database, sizeof(settings->content_database)); - if (*g_defaults.cursor_dir) - strlcpy(settings->cursor_directory, g_defaults.cursor_dir, + if (*g_defaults.dir.cursor) + strlcpy(settings->cursor_directory, g_defaults.dir.cursor, sizeof(settings->cursor_directory)); - if (*g_defaults.cheats_dir) - strlcpy(settings->cheat_database, g_defaults.cheats_dir, + if (*g_defaults.dir.cheats) + strlcpy(settings->cheat_database, g_defaults.dir.cheats, sizeof(settings->cheat_database)); - if (*g_defaults.core_info_dir) + if (*g_defaults.dir.core_info) fill_pathname_expand_special(settings->libretro_info_path, - g_defaults.core_info_dir, sizeof(settings->libretro_info_path)); + g_defaults.dir.core_info, sizeof(settings->libretro_info_path)); #ifdef HAVE_OVERLAY - if (*g_defaults.overlay_dir) + if (*g_defaults.dir.overlay) { - fill_pathname_expand_special(global->overlay_dir, - g_defaults.overlay_dir, sizeof(global->overlay_dir)); + fill_pathname_expand_special(global->dir.overlay, + g_defaults.dir.overlay, sizeof(global->dir.overlay)); #ifdef RARCH_MOBILE if (!*settings->input.overlay) fill_pathname_join(settings->input.overlay, - global->overlay_dir, + global->dir.overlay, "gamepads/retropad/retropad.cfg", sizeof(settings->input.overlay)); #endif } - if (*g_defaults.osk_overlay_dir) + if (*g_defaults.dir.osk_overlay) { - fill_pathname_expand_special(global->osk_overlay_dir, - g_defaults.osk_overlay_dir, sizeof(global->osk_overlay_dir)); + fill_pathname_expand_special(global->dir.osk_overlay, + g_defaults.dir.osk_overlay, sizeof(global->dir.osk_overlay)); #ifdef RARCH_MOBILE if (!*settings->input.overlay) fill_pathname_join(settings->osk.overlay, - global->osk_overlay_dir, + global->dir.osk_overlay, "overlays/keyboards/US-101/US-101.cfg", sizeof(settings->osk.overlay)); #endif } else - strlcpy(global->osk_overlay_dir, - global->overlay_dir, sizeof(global->osk_overlay_dir)); + strlcpy(global->dir.osk_overlay, + global->dir.overlay, sizeof(global->dir.osk_overlay)); #endif #ifdef HAVE_MENU - if (*g_defaults.menu_config_dir) + if (*g_defaults.dir.menu_config) strlcpy(settings->menu_config_directory, - g_defaults.menu_config_dir, + g_defaults.dir.menu_config, sizeof(settings->menu_config_directory)); #endif - if (*g_defaults.shader_dir) + if (*g_defaults.dir.shader) fill_pathname_expand_special(settings->video.shader_dir, - g_defaults.shader_dir, sizeof(settings->video.shader_dir)); - if (*g_defaults.autoconfig_dir) + g_defaults.dir.shader, sizeof(settings->video.shader_dir)); + if (*g_defaults.dir.autoconfig) strlcpy(settings->input.autoconfig_dir, - g_defaults.autoconfig_dir, + g_defaults.dir.autoconfig, sizeof(settings->input.autoconfig_dir)); - if (!global->has_set_state_path && *g_defaults.savestate_dir) - strlcpy(global->savestate_dir, - g_defaults.savestate_dir, sizeof(global->savestate_dir)); - if (!global->has_set_save_path && *g_defaults.sram_dir) - strlcpy(global->savefile_dir, - g_defaults.sram_dir, sizeof(global->savefile_dir)); - if (*g_defaults.system_dir) + if (!global->has_set.state_path && *g_defaults.dir.savestate) + strlcpy(global->dir.savestate, + g_defaults.dir.savestate, sizeof(global->dir.savestate)); + if (!global->has_set.save_path && *g_defaults.dir.sram) + strlcpy(global->dir.savefile, + g_defaults.dir.sram, sizeof(global->dir.savefile)); + if (*g_defaults.dir.system) strlcpy(settings->system_directory, - g_defaults.system_dir, sizeof(settings->system_directory)); - if (*g_defaults.screenshot_dir) + g_defaults.dir.system, sizeof(settings->system_directory)); + if (*g_defaults.dir.screenshot) strlcpy(settings->screenshot_directory, - g_defaults.screenshot_dir, + g_defaults.dir.screenshot, sizeof(settings->screenshot_directory)); - if (*g_defaults.resampler_dir) + if (*g_defaults.dir.resampler) strlcpy(settings->resampler_directory, - g_defaults.resampler_dir, + g_defaults.dir.resampler, sizeof(settings->resampler_directory)); - if (*g_defaults.content_history_dir) + if (*g_defaults.dir.content_history) strlcpy(settings->content_history_directory, - g_defaults.content_history_dir, + g_defaults.dir.content_history, sizeof(settings->content_history_directory)); - if (*g_defaults.config_path) - fill_pathname_expand_special(global->config_path, - g_defaults.config_path, sizeof(global->config_path)); + if (*g_defaults.path.config) + fill_pathname_expand_special(global->path.config, + g_defaults.path.config, sizeof(global->path.config)); settings->config_save_on_exit = config_save_on_exit; @@ -1050,8 +1050,8 @@ static config_file_t *open_default_config_file(void) if (!conf) return NULL; - strlcpy(global->config_path, conf_path, - sizeof(global->config_path)); + strlcpy(global->path.config, conf_path, + sizeof(global->path.config)); return conf; } @@ -1199,7 +1199,7 @@ static bool config_load_file(const char *path, bool set_defaults) if (set_defaults) config_set_defaults(); - strlcpy(tmp_append_path, global->append_config_path, + strlcpy(tmp_append_path, global->path.append_config, sizeof(tmp_append_path)); extra_path = strtok_r(tmp_append_path, "|", &save); @@ -1420,24 +1420,24 @@ static bool config_load_file(const char *path, bool set_defaults) snprintf(buf, sizeof(buf), "input_player%u_analog_dpad_mode", i + 1); CONFIG_GET_INT_BASE(conf, settings, input.analog_dpad_mode[i], buf); - if (!global->has_set_libretro_device[i]) + if (!global->has_set.libretro_device[i]) { snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1); CONFIG_GET_INT_BASE(conf, settings, input.libretro_device[i], buf); } } - if (!global->has_set_ups_pref) + if (!global->has_set.ups_pref) { - CONFIG_GET_BOOL_BASE(conf, global, ups_pref, "ups_pref"); + CONFIG_GET_BOOL_BASE(conf, global, patch.ups_pref, "ups_pref"); } - if (!global->has_set_bps_pref) + if (!global->has_set.bps_pref) { - CONFIG_GET_BOOL_BASE(conf, global, bps_pref, "bps_pref"); + CONFIG_GET_BOOL_BASE(conf, global, patch.bps_pref, "bps_pref"); } - if (!global->has_set_ips_pref) + if (!global->has_set.ips_pref) { - CONFIG_GET_BOOL_BASE(conf, global, ips_pref, "ips_pref"); + CONFIG_GET_BOOL_BASE(conf, global, patch.ips_pref, "ips_pref"); } /* Audio settings. */ @@ -1474,9 +1474,9 @@ static bool config_load_file(const char *path, bool set_defaults) CONFIG_GET_STRING_BASE(conf, settings, input.joypad_driver, "input_joypad_driver"); CONFIG_GET_STRING_BASE(conf, settings, input.keyboard_layout, "input_keyboard_layout"); - if (!global->has_set_libretro) + if (!global->has_set.libretro) config_get_path(conf, "libretro_path", settings->libretro, sizeof(settings->libretro)); - if (!global->has_set_libretro_directory) + if (!global->has_set.libretro_directory) config_get_path(conf, "libretro_directory", settings->libretro_directory, sizeof(settings->libretro_directory)); /* Safe-guard against older behavior. */ @@ -1551,7 +1551,7 @@ static bool config_load_file(const char *path, bool set_defaults) #endif CONFIG_GET_INT_BASE(conf, settings, libretro_log_level, "libretro_log_level"); - if (!global->has_set_verbosity) + if (!global->has_set.verbosity) CONFIG_GET_BOOL_BASE(conf, global, verbosity, "log_verbosity"); CONFIG_GET_BOOL_BASE(conf, global, perfcnt_enable, "perfcnt_enable"); @@ -1562,9 +1562,9 @@ static bool config_load_file(const char *path, bool set_defaults) sizeof(global->record.config_dir)); #ifdef HAVE_OVERLAY - config_get_path(conf, "overlay_directory", global->overlay_dir, sizeof(global->overlay_dir)); - if (!strcmp(global->overlay_dir, "default")) - *global->overlay_dir = '\0'; + config_get_path(conf, "overlay_directory", global->dir.overlay, sizeof(global->dir.overlay)); + if (!strcmp(global->dir.overlay, "default")) + *global->dir.overlay = '\0'; config_get_path(conf, "input_overlay", settings->input.overlay, sizeof(settings->input.overlay)); CONFIG_GET_BOOL_BASE(conf, settings, input.overlay_enable, "input_overlay_enable"); @@ -1573,9 +1573,9 @@ static bool config_load_file(const char *path, bool set_defaults) CONFIG_GET_FLOAT_BASE(conf, settings, input.overlay_opacity, "input_overlay_opacity"); CONFIG_GET_FLOAT_BASE(conf, settings, input.overlay_scale, "input_overlay_scale"); - config_get_path(conf, "osk_overlay_directory", global->osk_overlay_dir, sizeof(global->osk_overlay_dir)); - if (!strcmp(global->osk_overlay_dir, "default")) - *global->osk_overlay_dir = '\0'; + config_get_path(conf, "osk_overlay_directory", global->dir.osk_overlay, sizeof(global->dir.osk_overlay)); + if (!strcmp(global->dir.osk_overlay, "default")) + *global->dir.osk_overlay = '\0'; config_get_path(conf, "input_osk_overlay", settings->osk.overlay, sizeof(settings->osk.overlay)); CONFIG_GET_BOOL_BASE(conf, settings, osk.enable, "input_osk_overlay_enable"); @@ -1635,58 +1635,58 @@ static bool config_load_file(const char *path, bool set_defaults) CONFIG_GET_BOOL_BASE(conf, settings, input.autodetect_enable, "input_autodetect_enable"); CONFIG_GET_PATH_BASE(conf, settings, input.autoconfig_dir, "joypad_autoconfig_dir"); - if (!global->has_set_username) + if (!global->has_set.username) CONFIG_GET_PATH_BASE(conf, settings, username, "netplay_nickname"); CONFIG_GET_INT_BASE(conf, settings, user_language, "user_language"); #ifdef HAVE_NETPLAY - if (!global->has_set_netplay_mode) - CONFIG_GET_BOOL_BASE(conf, global, netplay_is_spectate, + if (!global->has_set.netplay_mode) + CONFIG_GET_BOOL_BASE(conf, global, netplay.is_spectate, "netplay_spectator_mode_enable"); - if (!global->has_set_netplay_mode) - CONFIG_GET_BOOL_BASE(conf, global, netplay_is_client, "netplay_mode"); - if (!global->has_set_netplay_ip_address) - CONFIG_GET_PATH_BASE(conf, global, netplay_server, "netplay_ip_address"); - if (!global->has_set_netplay_delay_frames) - CONFIG_GET_INT_BASE(conf, global, netplay_sync_frames, "netplay_delay_frames"); - if (!global->has_set_netplay_ip_port) - CONFIG_GET_INT_BASE(conf, global, netplay_port, "netplay_ip_port"); + if (!global->has_set.netplay_mode) + CONFIG_GET_BOOL_BASE(conf, global, netplay.is_client, "netplay_mode"); + if (!global->has_set.netplay_ip_address) + CONFIG_GET_PATH_BASE(conf, global, netplay.server, "netplay_ip_address"); + if (!global->has_set.netplay_delay_frames) + CONFIG_GET_INT_BASE(conf, global, netplay.sync_frames, "netplay_delay_frames"); + if (!global->has_set.netplay_ip_port) + CONFIG_GET_INT_BASE(conf, global, netplay.port, "netplay_ip_port"); #endif CONFIG_GET_BOOL_BASE(conf, settings, config_save_on_exit, "config_save_on_exit"); - if (!global->has_set_save_path && + if (!global->has_set.save_path && config_get_path(conf, "savefile_directory", tmp_str, sizeof(tmp_str))) { if (!strcmp(tmp_str, "default")) - strlcpy(global->savefile_dir, g_defaults.sram_dir, - sizeof(global->savefile_dir)); + strlcpy(global->dir.savefile, g_defaults.dir.sram, + sizeof(global->dir.savefile)); else if (path_is_directory(tmp_str)) { - strlcpy(global->savefile_dir, tmp_str, - sizeof(global->savefile_dir)); - strlcpy(global->savefile_name, tmp_str, - sizeof(global->savefile_name)); - fill_pathname_dir(global->savefile_name, global->basename, - ".srm", sizeof(global->savefile_name)); + strlcpy(global->dir.savefile, tmp_str, + sizeof(global->dir.savefile)); + strlcpy(global->name.savefile, tmp_str, + sizeof(global->name.savefile)); + fill_pathname_dir(global->name.savefile, global->name.base, + ".srm", sizeof(global->name.savefile)); } else RARCH_WARN("savefile_directory is not a directory, ignoring ...\n"); } - if (!global->has_set_state_path && + if (!global->has_set.state_path && config_get_path(conf, "savestate_directory", tmp_str, sizeof(tmp_str))) { if (!strcmp(tmp_str, "default")) - strlcpy(global->savestate_dir, g_defaults.savestate_dir, - sizeof(global->savestate_dir)); + strlcpy(global->dir.savestate, g_defaults.dir.savestate, + sizeof(global->dir.savestate)); else if (path_is_directory(tmp_str)) { - strlcpy(global->savestate_dir, tmp_str, - sizeof(global->savestate_dir)); - strlcpy(global->savestate_name, tmp_str, - sizeof(global->savestate_name)); - fill_pathname_dir(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); + strlcpy(global->dir.savestate, tmp_str, + sizeof(global->dir.savestate)); + strlcpy(global->name.savestate, tmp_str, + sizeof(global->name.savestate)); + fill_pathname_dir(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); } else RARCH_WARN("savestate_directory is not a directory, ignoring ...\n"); @@ -1704,7 +1704,7 @@ static bool config_load_file(const char *path, bool set_defaults) else { fill_pathname_resolve_relative(settings->content_history_path, - global->config_path, "content_history.lpl", + global->path.config, "content_history.lpl", sizeof(settings->content_history_path)); } } @@ -1749,12 +1749,12 @@ static void config_load_core_specific(void) settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - *global->core_specific_config_path = '\0'; + *global->path.core_specific_config = '\0'; if (!*settings->libretro) return; #ifdef HAVE_DYNAMIC - if (global->core_type == CORE_TYPE_DUMMY) + if (global->inited.core.type == CORE_TYPE_DUMMY) return; #endif @@ -1763,34 +1763,34 @@ static void config_load_core_specific(void) { path_resolve_realpath(settings->menu_config_directory, sizeof(settings->menu_config_directory)); - strlcpy(global->core_specific_config_path, + strlcpy(global->path.core_specific_config, settings->menu_config_directory, - sizeof(global->core_specific_config_path)); + sizeof(global->path.core_specific_config)); } else #endif { /* Use original config file's directory as a fallback. */ - fill_pathname_basedir(global->core_specific_config_path, - global->config_path, sizeof(global->core_specific_config_path)); + fill_pathname_basedir(global->path.core_specific_config, + global->path.config, sizeof(global->path.core_specific_config)); } - fill_pathname_dir(global->core_specific_config_path, settings->libretro, - ".cfg", sizeof(global->core_specific_config_path)); + fill_pathname_dir(global->path.core_specific_config, settings->libretro, + ".cfg", sizeof(global->path.core_specific_config)); if (settings->core_specific_config) { char tmp[PATH_MAX_LENGTH] = {0}; /* Toggle has_save_path to false so it resets */ - global->has_set_save_path = false; - global->has_set_state_path = false; + global->has_set.save_path = false; + global->has_set.state_path = false; strlcpy(tmp, settings->libretro, sizeof(tmp)); RARCH_LOG("Loading core-specific config from: %s.\n", - global->core_specific_config_path); + global->path.core_specific_config); - if (!config_load_file(global->core_specific_config_path, true)) + if (!config_load_file(global->path.core_specific_config, true)) RARCH_WARN("Core-specific config not found, reusing last config.\n"); /* Force some parameters which are implied when using core specific configs. @@ -1801,8 +1801,8 @@ static void config_load_core_specific(void) settings->core_specific_config = true; /* Reset save paths */ - global->has_set_save_path = true; - global->has_set_state_path = true; + global->has_set.save_path = true; + global->has_set.state_path = true; } } @@ -1839,7 +1839,7 @@ bool config_load_override(void) if (!info->info.library_name || !strcmp(info->info.library_name,"No Core")) return false; - RARCH_LOG("Game name: %s\n", global->basename); + RARCH_LOG("Game name: %s\n", global->name.base); RARCH_LOG("Core name: %s\n", info->info.library_name); if (!global || !settings ) @@ -1853,8 +1853,8 @@ bool config_load_override(void) * fallback to the location of the current configuration file. */ if (settings->menu_config_directory[0] != '\0') strlcpy(config_directory, settings->menu_config_directory, PATH_MAX_LENGTH); - else if (global->config_path[0] != '\0') - fill_pathname_basedir(config_directory, global->config_path, PATH_MAX_LENGTH); + else if (global->path.config[0] != '\0') + fill_pathname_basedir(config_directory, global->path.config, PATH_MAX_LENGTH); else { RARCH_WARN("No config directory set under Settings > Path and retroarch.cfg not found.\n"); @@ -1864,7 +1864,7 @@ bool config_load_override(void) RARCH_LOG("Config directory: %s\n", config_directory); core_name = info->info.library_name; - game_name = path_basename(global->basename); + game_name = path_basename(global->name.base); /* Concatenate strings into full paths for core_path, game_path */ fill_pathname_join(core_path, config_directory, core_name, PATH_MAX_LENGTH); @@ -1887,7 +1887,7 @@ bool config_load_override(void) return false; } RARCH_LOG("Core-specific overrides found at %s. Appending.\n", core_path); - strlcpy(global->append_config_path, core_path, sizeof(global->append_config_path)); + strlcpy(global->path.append_config, core_path, sizeof(global->path.append_config)); should_append = true; } else @@ -1902,11 +1902,11 @@ bool config_load_override(void) RARCH_LOG("Game-specific overrides found at %s. Appending.\n", game_path); if (should_append) { - strlcat(global->append_config_path, "|", sizeof(global->append_config_path)); - strlcat(global->append_config_path, game_path, sizeof(global->append_config_path)); + strlcat(global->path.append_config, "|", sizeof(global->path.append_config)); + strlcat(global->path.append_config, game_path, sizeof(global->path.append_config)); } else - strlcpy(global->append_config_path, game_path, sizeof(global->append_config_path)); + strlcpy(global->path.append_config, game_path, sizeof(global->path.append_config)); should_append = true; } @@ -1925,7 +1925,7 @@ bool config_load_override(void) } #ifdef HAVE_NETPLAY - if (global->netplay_enable) + if (global->netplay.enable) { RARCH_WARN("Can't use overrides in conjunction with netplay, disabling overrides\n"); return false; @@ -1936,10 +1936,10 @@ bool config_load_override(void) strlcpy(buf,settings->libretro,sizeof(buf)); /* Toggle has_save_path to false so it resets */ - global->has_set_save_path = false; - global->has_set_state_path = false; + global->has_set.save_path = false; + global->has_set.state_path = false; - if (config_load_file(global->config_path, false)) + if (config_load_file(global->path.config, false)) { /* Restore the libretro_path we're using * since it will be overwritten by the override when reloading. */ @@ -1947,8 +1947,8 @@ bool config_load_override(void) rarch_main_msg_queue_push("Configuration override loaded", 1, 100, true); /* Reset save paths */ - global->has_set_save_path = true; - global->has_set_state_path = true; + global->has_set.save_path = true; + global->has_set.state_path = true; return true; } } @@ -1971,19 +1971,19 @@ bool config_load_override(void) if (!global) return false; - *global->append_config_path = '\0'; + *global->path.append_config = '\0'; /* Toggle has_save_path to false so it resets */ - global->has_set_save_path = false; - global->has_set_state_path = false; + global->has_set.save_path = false; + global->has_set.state_path = false; - if (config_load_file(global->config_path, false)) + if (config_load_file(global->path.config, false)) { RARCH_LOG("Configuration overrides unloaded, original configuration reset\n"); /* Reset save paths */ - global->has_set_save_path = true; - global->has_set_state_path = true; + global->has_set.save_path = true; + global->has_set.state_path = true; return true; } @@ -2020,7 +2020,7 @@ bool config_load_remap(void) if (!info->info.library_name || !strcmp(info->info.library_name,"No Core")) return false; - RARCH_LOG("Game name: %s\n", global->basename); + RARCH_LOG("Game name: %s\n", global->name.base); RARCH_LOG("Core name: %s\n", info->info.library_name); /* Remap directory: remap_directory. @@ -2035,7 +2035,7 @@ bool config_load_remap(void) RARCH_LOG("Remap directory: %s\n", remap_directory); core_name = info->info.library_name; - game_name = path_basename(global->basename); + game_name = path_basename(global->name.base); /* Concatenate strings into full paths for core_path, game_path */ fill_pathname_join(core_path, remap_directory, core_name, PATH_MAX_LENGTH); @@ -2096,25 +2096,25 @@ bool config_load_remap(void) static void parse_config_file(void) { global_t *global = global_get_ptr(); - bool ret = config_load_file((*global->config_path) - ? global->config_path : NULL, false); + bool ret = config_load_file((*global->path.config) + ? global->path.config : NULL, false); - if (*global->config_path) + if (*global->path.config) { - RARCH_LOG("Loading config from: %s.\n", global->config_path); + RARCH_LOG("Loading config from: %s.\n", global->path.config); } else { RARCH_LOG("Loading default config.\n"); - if (*global->config_path) - RARCH_LOG("Found default config: %s.\n", global->config_path); + if (*global->path.config) + RARCH_LOG("Found default config: %s.\n", global->path.config); } if (ret) return; RARCH_ERR("Couldn't find config at path: \"%s\"\n", - global->config_path); + global->path.config); } @@ -2287,12 +2287,12 @@ void config_load(void) global_t *global = global_get_ptr(); /* Flush out per-core configs before loading a new config. */ - if (*global->core_specific_config_path && + if (*global->path.core_specific_config && settings->config_save_on_exit && settings->core_specific_config) - config_save_file(global->core_specific_config_path); + config_save_file(global->path.core_specific_config); /* Flush out some states that could have been set by core environment variables */ - global->has_set_input_descriptors = false; + global->has_set.input_descriptors = false; if (!global->block_config_read) { @@ -2562,12 +2562,12 @@ bool config_save_file(const char *path) config_set_float(conf, "video_font_size", settings->video.font_size); config_set_bool(conf, "video_font_enable", settings->video.font_enable); - if (!global->has_set_ups_pref) - config_set_bool(conf, "ups_pref", global->ups_pref); - if (!global->has_set_bps_pref) - config_set_bool(conf, "bps_pref", global->bps_pref); - if (!global->has_set_ips_pref) - config_set_bool(conf, "ips_pref", global->ips_pref); + if (!global->has_set.ups_pref) + config_set_bool(conf, "ups_pref", global->patch.ups_pref); + if (!global->has_set.bps_pref) + config_set_bool(conf, "bps_pref", global->patch.bps_pref); + if (!global->has_set.ips_pref) + config_set_bool(conf, "ips_pref", global->patch.ips_pref); config_set_path(conf, "system_directory", *settings->system_directory ? @@ -2582,9 +2582,9 @@ bool config_save_file(const char *path) settings->resampler_directory); config_set_string(conf, "audio_resampler", settings->audio.resampler); config_set_path(conf, "savefile_directory", - *global->savefile_dir ? global->savefile_dir : "default"); + *global->dir.savefile ? global->dir.savefile : "default"); config_set_path(conf, "savestate_directory", - *global->savestate_dir ? global->savestate_dir : "default"); + *global->dir.savestate ? global->dir.savestate : "default"); config_set_path(conf, "video_shader_dir", *settings->video.shader_dir ? settings->video.shader_dir : "default"); @@ -2647,7 +2647,7 @@ bool config_save_file(const char *path) #ifdef HAVE_OVERLAY config_set_path(conf, "overlay_directory", - *global->overlay_dir ? global->overlay_dir : "default"); + *global->dir.overlay ? global->dir.overlay : "default"); config_set_path(conf, "input_overlay", settings->input.overlay); config_set_bool(conf, "input_overlay_enable", settings->input.overlay_enable); config_set_bool(conf, "input_overlay_enable_autopreferred", settings->input.overlay_enable_autopreferred); @@ -2658,7 +2658,7 @@ bool config_save_file(const char *path) settings->input.overlay_scale); config_set_path(conf, "osk_overlay_directory", - *global->osk_overlay_dir ? global->osk_overlay_dir : "default"); + *global->dir.osk_overlay ? global->dir.osk_overlay : "default"); config_set_path(conf, "input_osk_overlay", settings->osk.overlay); config_set_bool(conf, "input_osk_overlay_enable", settings->osk.enable); #endif @@ -2720,11 +2720,11 @@ bool config_save_file(const char *path) #ifdef HAVE_NETPLAY config_set_bool(conf, "netplay_spectator_mode_enable", - global->netplay_is_spectate); - config_set_bool(conf, "netplay_mode", global->netplay_is_client); - config_set_string(conf, "netplay_ip_address", global->netplay_server); - config_set_int(conf, "netplay_ip_port", global->netplay_port); - config_set_int(conf, "netplay_delay_frames", global->netplay_sync_frames); + global->netplay.is_spectate); + config_set_bool(conf, "netplay_mode", global->netplay.is_client); + config_set_string(conf, "netplay_ip_address", global->netplay.server); + config_set_int(conf, "netplay_ip_port", global->netplay.port); + config_set_int(conf, "netplay_delay_frames", global->netplay.sync_frames); #endif config_set_string(conf, "netplay_nickname", settings->username); config_set_int(conf, "user_language", settings->user_language); diff --git a/content.c b/content.c index b1566d35fe..60c777be1b 100644 --- a/content.c +++ b/content.c @@ -73,7 +73,7 @@ static bool read_content_file(unsigned i, const char *path, void **buf, return true; /* Attempt to apply a patch. */ - if (!global->block_patch) + if (!global->patch.block_patch) patch_content(&ret_buf, length); #ifdef HAVE_ZLIB @@ -610,7 +610,7 @@ bool init_content_file(void) attr.i |= system->info.need_fullpath << 1; attr.i |= (!system->no_content) << 2; string_list_append(content, - (global->libretro_no_content && settings->core.set_supports_no_game_enable) ? "" : global->fullpath, attr); + (global->inited.core.no_content && settings->core.set_supports_no_game_enable) ? "" : global->path.fullpath, attr); } #ifdef HAVE_ZLIB @@ -655,7 +655,7 @@ bool init_content_file(void) ret = load_content(special, content); error: - global->content_is_init = (ret) ? true : false; + global->inited.content = (ret) ? true : false; if (content) string_list_free(content); diff --git a/dir_list_special.c b/dir_list_special.c index 9fdcb9c040..0a8913ec76 100644 --- a/dir_list_special.c +++ b/dir_list_special.c @@ -39,7 +39,7 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty break; case DIR_LIST_CORE_INFO: dir = input_dir; - exts = (global->core_info) ? core_info_list_get_all_extensions(global->core_info) : NULL; + exts = (global->core_info.list) ? core_info_list_get_all_extensions(global->core_info.list) : NULL; break; case DIR_LIST_SHADERS: dir = settings->video.shader_dir; diff --git a/dynamic.c b/dynamic.c index 1f2b032349..3d62694de7 100644 --- a/dynamic.c +++ b/dynamic.c @@ -704,9 +704,9 @@ bool rarch_environment_cb(unsigned cmd, void *data) char buf[PATH_MAX_LENGTH] = {0}; const char *options_path = settings->core_options_path; - if (!*options_path && *global->config_path) + if (!*options_path && *global->path.config) { - fill_pathname_resolve_relative(buf, global->config_path, + fill_pathname_resolve_relative(buf, global->path.config, "retroarch-core-options.cfg", sizeof(buf)); options_path = buf; } @@ -754,8 +754,8 @@ bool rarch_environment_cb(unsigned cmd, void *data) case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY: if (!settings->system_directory || settings->system_directory[0] == '\0') { - RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",global->fullpath); - fill_pathname_basedir(buf, global->fullpath, + RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",global->path.fullpath); + fill_pathname_basedir(buf, global->path.fullpath, sizeof(buf)); } @@ -767,10 +767,10 @@ bool rarch_environment_cb(unsigned cmd, void *data) break; case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY: - *(const char**)data = *global->savefile_dir ? - global->savefile_dir : NULL; + *(const char**)data = *global->dir.savefile ? + global->dir.savefile : NULL; RARCH_LOG("Environ SAVE_DIRECTORY: \"%s\".\n", - global->savefile_dir); + global->dir.savefile); break; case RETRO_ENVIRONMENT_GET_USERNAME: @@ -895,7 +895,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) } } - global->has_set_input_descriptors = true; + global->has_set.input_descriptors = true; break; } @@ -1022,7 +1022,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) return false; #ifdef HAVE_NETPLAY - if (global->netplay_enable) + if (global->netplay.enable) return false; #endif @@ -1041,7 +1041,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) #ifdef HAVE_NETPLAY /* retro_run() will be called in very strange and * mysterious ways, have to disable it. */ - if (global->netplay_enable) + if (global->netplay.enable) return false; #endif @@ -1261,11 +1261,10 @@ bool rarch_environment_cb(unsigned cmd, void *data) case RETRO_ENVIRONMENT_EXEC: case RETRO_ENVIRONMENT_EXEC_ESCAPE: + *global->path.fullpath = '\0'; if (data) - strlcpy(global->fullpath, (const char*)data, - sizeof(global->fullpath)); - else - *global->fullpath = '\0'; + strlcpy(global->path.fullpath, (const char*)data, + sizeof(global->path.fullpath)); #if defined(RARCH_CONSOLE) if (driver->frontend_ctx && driver->frontend_ctx->set_fork) diff --git a/frontend/drivers/platform_android.c b/frontend/drivers/platform_android.c index 1983a69806..1725ba7a46 100644 --- a/frontend/drivers/platform_android.c +++ b/frontend/drivers/platform_android.c @@ -744,93 +744,91 @@ static void frontend_android_get_environment_settings(int *argc, RARCH_LOG("Application location: [%s].\n", app_dir); if (args && *app_dir) { - fill_pathname_join(g_defaults.assets_dir, app_dir, - "assets", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.extraction_dir, app_dir, - "tmp", sizeof(g_defaults.extraction_dir)); - fill_pathname_join(g_defaults.shader_dir, app_dir, - "shaders", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.overlay_dir, app_dir, - "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.core_dir, app_dir, - "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, - app_dir, "info", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.autoconfig_dir, - app_dir, "autoconfig", sizeof(g_defaults.autoconfig_dir)); - fill_pathname_join(g_defaults.audio_filter_dir, - app_dir, "audio_filters", sizeof(g_defaults.audio_filter_dir)); - fill_pathname_join(g_defaults.video_filter_dir, - app_dir, "video_filters", sizeof(g_defaults.video_filter_dir)); - strlcpy(g_defaults.content_history_dir, - app_dir, sizeof(g_defaults.content_history_dir)); - fill_pathname_join(g_defaults.database_dir, - app_dir, "database/rdb", sizeof(g_defaults.database_dir)); - fill_pathname_join(g_defaults.cursor_dir, - app_dir, "database/cursors", sizeof(g_defaults.cursor_dir)); - fill_pathname_join(g_defaults.cheats_dir, - app_dir, "cheats", sizeof(g_defaults.cheats_dir)); - fill_pathname_join(g_defaults.playlist_dir, - app_dir, "playlists", sizeof(g_defaults.playlist_dir)); - fill_pathname_join(g_defaults.remap_dir, - app_dir, "remaps", sizeof(g_defaults.remap_dir)); - fill_pathname_join(g_defaults.wallpapers_dir, - app_dir, "wallpapers", sizeof(g_defaults.wallpapers_dir)); + fill_pathname_join(g_defaults.dir.assets, app_dir, + "assets", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.extraction, app_dir, + "tmp", sizeof(g_defaults.dir.extraction)); + fill_pathname_join(g_defaults.dir.shader, app_dir, + "shaders", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.dir.overlay, app_dir, + "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.core, app_dir, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, + app_dir, "info", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.autoconfig, + app_dir, "autoconfig", sizeof(g_defaults.dir.autoconfig)); + fill_pathname_join(g_defaults.dir.audio_filter, + app_dir, "audio_filters", sizeof(g_defaults.dir.audio_filter)); + fill_pathname_join(g_defaults.dir.video_filter, + app_dir, "video_filters", sizeof(g_defaults.dir.video_filter)); + strlcpy(g_defaults.dir.content_history, + app_dir, sizeof(g_defaults.dir.content_history)); + fill_pathname_join(g_defaults.dir.database, + app_dir, "database/rdb", sizeof(g_defaults.dir.database)); + fill_pathname_join(g_defaults.dir.cursor, + app_dir, "database/cursors", sizeof(g_defaults.dir.cursor)); + fill_pathname_join(g_defaults.dir.cheats, + app_dir, "cheats", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.playlist, + app_dir, "playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.dir.remap, + app_dir, "remaps", sizeof(g_defaults.dir.remap)); + fill_pathname_join(g_defaults.dir.wallpapers, + app_dir, "wallpapers", sizeof(g_defaults.dir.wallpapers)); if(*downloads_dir && test_permissions(downloads_dir)) { - fill_pathname_join(g_defaults.core_assets_dir, - downloads_dir, "", sizeof(g_defaults.core_assets_dir)); + fill_pathname_join(g_defaults.dir.core_assets, + downloads_dir, "", sizeof(g_defaults.dir.core_assets)); } else { - fill_pathname_join(g_defaults.core_assets_dir, - app_dir, "downloads", sizeof(g_defaults.core_assets_dir)); - path_mkdir(g_defaults.core_assets_dir); + fill_pathname_join(g_defaults.dir.core_assets, + app_dir, "downloads", sizeof(g_defaults.dir.core_assets)); + path_mkdir(g_defaults.dir.core_assets); } - RARCH_LOG("Default download folder: [%s]", g_defaults.core_assets_dir); + RARCH_LOG("Default download folder: [%s]", g_defaults.dir.core_assets); if(*screenshot_dir && test_permissions(screenshot_dir)) { - fill_pathname_join(g_defaults.screenshot_dir, - screenshot_dir, "", sizeof(g_defaults.screenshot_dir)); + fill_pathname_join(g_defaults.dir.screenshot, + screenshot_dir, "", sizeof(g_defaults.dir.screenshot)); } else { - fill_pathname_join(g_defaults.screenshot_dir, - app_dir, "screenshots", sizeof(g_defaults.screenshot_dir)); - path_mkdir(g_defaults.screenshot_dir); + fill_pathname_join(g_defaults.dir.screenshot, + app_dir, "screenshots", sizeof(g_defaults.dir.screenshot)); + path_mkdir(g_defaults.dir.screenshot); } - RARCH_LOG("Default screenshot folder: [%s]", g_defaults.screenshot_dir); + RARCH_LOG("Default screenshot folder: [%s]", g_defaults.dir.screenshot); switch (perms) { case SDCARD_EXT_DIR_WRITABLE: - fill_pathname_join(g_defaults.sram_dir, - ext_dir, "saves", sizeof(g_defaults.sram_dir)); - path_mkdir(g_defaults.sram_dir); + fill_pathname_join(g_defaults.dir.sram, + ext_dir, "saves", sizeof(g_defaults.dir.sram)); + path_mkdir(g_defaults.dir.sram); - fill_pathname_join(g_defaults.savestate_dir, - ext_dir, "states", sizeof(g_defaults.savestate_dir)); - path_mkdir(g_defaults.savestate_dir); + fill_pathname_join(g_defaults.dir.savestate, + ext_dir, "states", sizeof(g_defaults.dir.savestate)); + path_mkdir(g_defaults.dir.savestate); - fill_pathname_join(g_defaults.system_dir, - ext_dir, "system", sizeof(g_defaults.system_dir)); - path_mkdir(g_defaults.system_dir); + fill_pathname_join(g_defaults.dir.system, + ext_dir, "system", sizeof(g_defaults.dir.system)); + path_mkdir(g_defaults.dir.system); break; case SDCARD_NOT_WRITABLE: - fill_pathname_join(g_defaults.sram_dir, - app_dir, "saves", sizeof(g_defaults.sram_dir)); - path_mkdir(g_defaults.sram_dir); - - fill_pathname_join(g_defaults.savestate_dir, - app_dir, "states", sizeof(g_defaults.savestate_dir)); - path_mkdir(g_defaults.savestate_dir); - - fill_pathname_join(g_defaults.system_dir, - app_dir, "system", sizeof(g_defaults.system_dir)); - path_mkdir(g_defaults.system_dir); + fill_pathname_join(g_defaults.dir.sram, + app_dir, "saves", sizeof(g_defaults.dir.sram)); + path_mkdir(g_defaults.dir.sram); + fill_pathname_join(g_defaults.dir.savestate, + app_dir, "states", sizeof(g_defaults.dir.savestate)); + path_mkdir(g_defaults.dir.savestate); + fill_pathname_join(g_defaults.dir.system, + app_dir, "system", sizeof(g_defaults.dir.system)); + path_mkdir(g_defaults.dir.system); break; case SDCARD_ROOT_WRITABLE: default: @@ -864,9 +862,9 @@ static void frontend_android_get_environment_settings(int *argc, ext_dir, "system", sizeof(buf)); path_mkdir(buf); - RARCH_LOG("Default savefile folder: [%s]", g_defaults.sram_dir); - RARCH_LOG("Default savestate folder: [%s]", g_defaults.savestate_dir); - RARCH_LOG("Default system folder: [%s]", g_defaults.system_dir); + RARCH_LOG("Default savefile folder: [%s]", g_defaults.dir.sram); + RARCH_LOG("Default savestate folder: [%s]", g_defaults.dir.savestate); + RARCH_LOG("Default system folder: [%s]", g_defaults.dir.system); } } } diff --git a/frontend/drivers/platform_ctr.c b/frontend/drivers/platform_ctr.c index b6fa2c294a..f9509aa4ec 100644 --- a/frontend/drivers/platform_ctr.c +++ b/frontend/drivers/platform_ctr.c @@ -56,27 +56,27 @@ static void frontend_ctr_get_environment_settings(int *argc, char *argv[], #endif #endif - fill_pathname_basedir(g_defaults.port_dir, elf_path_cst, sizeof(g_defaults.port_dir)); - RARCH_LOG("port dir: [%s]\n", g_defaults.port_dir); + fill_pathname_basedir(g_defaults.dir.port, elf_path_cst, sizeof(g_defaults.dir.port)); + RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); - fill_pathname_join(g_defaults.core_assets_dir, g_defaults.port_dir, - "downloads", sizeof(g_defaults.core_assets_dir)); - fill_pathname_join(g_defaults.assets_dir, g_defaults.port_dir, - "media", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir, - "savestates", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir, - "playlists", sizeof(g_defaults.playlist_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.port_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); + fill_pathname_join(g_defaults.dir.core_assets, g_defaults.dir.port, + "downloads", sizeof(g_defaults.dir.core_assets)); + fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, + "media", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core, + "playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); #ifndef IS_SALAMANDER #if 0 diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 778157f647..f0b89daf4f 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -337,52 +337,52 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], #ifdef OSX strlcat(home_dir_buf, "/RetroArch", sizeof(home_dir_buf)); #endif - fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_glsl", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.core_dir, home_dir_buf, "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, home_dir_buf, "info", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.overlay_dir, home_dir_buf, "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.autoconfig_dir, home_dir_buf, "autoconfig", sizeof(g_defaults.autoconfig_dir)); - fill_pathname_join(g_defaults.core_assets_dir, home_dir_buf, "downloads", sizeof(g_defaults.core_assets_dir)); - fill_pathname_join(g_defaults.assets_dir, home_dir_buf, "assets", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.system_dir, home_dir_buf, "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.menu_config_dir, home_dir_buf, "configs", sizeof(g_defaults.menu_config_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.menu_config_dir, "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.database_dir, home_dir_buf, "rdb", sizeof(g_defaults.database_dir)); - fill_pathname_join(g_defaults.cursor_dir, home_dir_buf, "cursors", sizeof(g_defaults.cursor_dir)); - fill_pathname_join(g_defaults.cheats_dir, home_dir_buf, "cht", sizeof(g_defaults.cheats_dir)); - fill_pathname_join(g_defaults.sram_dir, home_dir_buf, "saves", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.savestate_dir, home_dir_buf, "states", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.remap_dir, home_dir_buf, "remaps", sizeof(g_defaults.remap_dir)); + fill_pathname_join(g_defaults.dir.shader, home_dir_buf, "shaders_glsl", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.dir.core, home_dir_buf, "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, home_dir_buf, "info", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.overlay, home_dir_buf, "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.autoconfig, home_dir_buf, "autoconfig", sizeof(g_defaults.dir.autoconfig)); + fill_pathname_join(g_defaults.dir.core_assets, home_dir_buf, "downloads", sizeof(g_defaults.dir.core_assets)); + fill_pathname_join(g_defaults.dir.assets, home_dir_buf, "assets", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.system, home_dir_buf, "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.menu_config, home_dir_buf, "configs", sizeof(g_defaults.dir.menu_config)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.menu_config, "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.database, home_dir_buf, "rdb", sizeof(g_defaults.dir.database)); + fill_pathname_join(g_defaults.dir.cursor, home_dir_buf, "cursors", sizeof(g_defaults.dir.cursor)); + fill_pathname_join(g_defaults.dir.cheats, home_dir_buf, "cht", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.sram, home_dir_buf, "saves", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.savestate, home_dir_buf, "states", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.remap, home_dir_buf, "remaps", sizeof(g_defaults.dir.remap)); #if defined(OSX) #ifdef HAVE_CG - fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_cg", sizeof(g_defaults.shader_dir)); + fill_pathname_join(g_defaults.dir.shader, home_dir_buf, "shaders_cg", sizeof(g_defaults.dir.shader)); #endif - fill_pathname_join(g_defaults.audio_filter_dir, home_dir_buf, "audio_filters", sizeof(g_defaults.audio_filter_dir)); - fill_pathname_join(g_defaults.video_filter_dir, home_dir_buf, "video_filters", sizeof(g_defaults.video_filter_dir)); - fill_pathname_join(g_defaults.playlist_dir, home_dir_buf, "playlists", sizeof(g_defaults.playlist_dir)); + fill_pathname_join(g_defaults.dir.audio_filter, home_dir_buf, "audio_filters", sizeof(g_defaults.dir.audio_filter)); + fill_pathname_join(g_defaults.dir.video_filter, home_dir_buf, "video_filters", sizeof(g_defaults.dir.video_filter)); + fill_pathname_join(g_defaults.dir.playlist, home_dir_buf, "playlists", sizeof(g_defaults.dir.playlist)); #endif #ifdef RELEASE_BUILD - fill_pathname_join(g_defaults.remap_dir, bundle_path_buf, "Contents/Resources/remaps", sizeof(g_defaults.remap_dir)); - fill_pathname_join(g_defaults.playlist_dir, bundle_path_buf, "Contents/Resources/playlists", sizeof(g_defaults.playlist_dir)); - fill_pathname_join(g_defaults.shader_dir, bundle_path_buf, "Contents/Resources/shaders", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.core_dir, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.overlay_dir, bundle_path_buf, "Contents/Resources/overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.autoconfig_dir, bundle_path_buf, "Contents/Resources/autoconfig", sizeof(g_defaults.autoconfig_dir)); - fill_pathname_join(g_defaults.core_assets_dir, bundle_path_buf, "Contents/Resources/downloads", sizeof(g_defaults.core_assets_dir)); - fill_pathname_join(g_defaults.assets_dir, bundle_path_buf, "Contents/Resources/assets", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.system_dir, bundle_path_buf, "Contents/Resources/system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.menu_config_dir, bundle_path_buf, "Contents/Resources/configs", sizeof(g_defaults.menu_config_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.menu_config_dir, "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.database_dir, bundle_path_buf, "Contents/Resources/rdb", sizeof(g_defaults.database_dir)); - fill_pathname_join(g_defaults.cursor_dir, bundle_path_buf, "Contents/Resources/cursors", sizeof(g_defaults.cursor_dir)); - fill_pathname_join(g_defaults.cheats_dir, bundle_path_buf, "Contents/Resources/cht", sizeof(g_defaults.cheats_dir)); - fill_pathname_join(g_defaults.sram_dir, bundle_path_buf, "Contents/Resources/saves", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.savestate_dir, bundle_path_buf, "Contents/Resources/states", sizeof(g_defaults.savestate_dir)); + fill_pathname_join(g_defaults.dir.remap, bundle_path_buf, "Contents/Resources/remaps", sizeof(g_defaults.dir.remap)); + fill_pathname_join(g_defaults.dir.playlist, bundle_path_buf, "Contents/Resources/playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.dir.shader, bundle_path_buf, "Contents/Resources/shaders", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.dir.core, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.overlay, bundle_path_buf, "Contents/Resources/overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.autoconfig, bundle_path_buf, "Contents/Resources/autoconfig", sizeof(g_defaults.dir.autoconfig)); + fill_pathname_join(g_defaults.dir.core_assets, bundle_path_buf, "Contents/Resources/downloads", sizeof(g_defaults.dir.core_assets)); + fill_pathname_join(g_defaults.dir.assets, bundle_path_buf, "Contents/Resources/assets", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.system, bundle_path_buf, "Contents/Resources/system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.menu_config, bundle_path_buf, "Contents/Resources/configs", sizeof(g_defaults.dir.menu_config)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.menu_config, "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.database, bundle_path_buf, "Contents/Resources/rdb", sizeof(g_defaults.dir.database)); + fill_pathname_join(g_defaults.dir.cursor, bundle_path_buf, "Contents/Resources/cursors", sizeof(g_defaults.dir.cursor)); + fill_pathname_join(g_defaults.dir.cheats, bundle_path_buf, "Contents/Resources/cht", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.sram, bundle_path_buf, "Contents/Resources/saves", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.savestate, bundle_path_buf, "Contents/Resources/states", sizeof(g_defaults.dir.savestate)); #endif CFTemporaryDirectory(temp_dir, sizeof(temp_dir)); - strlcpy(g_defaults.extraction_dir, temp_dir, sizeof(g_defaults.extraction_dir)); + strlcpy(g_defaults.dir.extraction, temp_dir, sizeof(g_defaults.dir.extraction)); path_mkdir(bundle_path_buf); @@ -390,10 +390,10 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], RARCH_ERR("Failed to create or access base directory: %s\n", bundle_path_buf); else { - path_mkdir(g_defaults.system_dir); + path_mkdir(g_defaults.dir.system); - if (access(g_defaults.system_dir, 0755) != 0) - RARCH_ERR("Failed to create or access system directory: %s.\n", g_defaults.system_dir); + if (access(g_defaults.dir.system, 0755) != 0) + RARCH_ERR("Failed to create or access system directory: %s.\n", g_defaults.dir.system); } CFRelease(bundle_path); @@ -598,7 +598,7 @@ static int frontend_darwin_parse_drive_list(void *data) menu_list_push(list, "/var/mobile/", "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, - g_defaults.core_dir, "", MENU_FILE_DIRECTORY, 0, 0); + g_defaults.dir.core, "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "/", "", MENU_FILE_DIRECTORY, 0, 0); diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index 2af1113b92..3a90cf7f24 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -183,30 +183,30 @@ static void frontend_gx_get_environment_settings(int *argc, char *argv[], #ifdef HW_DOL chdir("carda:/retroarch"); #endif - getcwd(g_defaults.core_dir, MAXPATHLEN); - char *last_slash = strrchr(g_defaults.core_dir, '/'); + getcwd(g_defaults.dir.core, MAXPATHLEN); + char *last_slash = strrchr(g_defaults.dir.core, '/'); if (last_slash) *last_slash = 0; - char *device_end = strchr(g_defaults.core_dir, '/'); + char *device_end = strchr(g_defaults.dir.core, '/'); if (device_end) - snprintf(g_defaults.port_dir, sizeof(g_defaults.port_dir), - "%.*s/retroarch", device_end - g_defaults.core_dir, - g_defaults.core_dir); + snprintf(g_defaults.dir.port, sizeof(g_defaults.dir.port), + "%.*s/retroarch", device_end - g_defaults.dir.core, + g_defaults.dir.core); else - fill_pathname_join(g_defaults.port_dir, g_defaults.port_dir, - "retroarch", sizeof(g_defaults.port_dir)); - fill_pathname_join(g_defaults.overlay_dir, g_defaults.core_dir, - "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.port_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.system_dir, g_defaults.port_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.port_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.port_dir, - "savefiles", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.playlist_dir, g_defaults.port_dir, - "playlists", sizeof(g_defaults.playlist_dir)); + fill_pathname_join(g_defaults.dir.port, g_defaults.dir.port, + "retroarch", sizeof(g_defaults.dir.port)); + fill_pathname_join(g_defaults.dir.overlay, g_defaults.dir.core, + "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.port, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.port, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.port, + "savefiles", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.port, + "playlists", sizeof(g_defaults.dir.playlist)); #ifdef IS_SALAMANDER if (*argc > 2 && argv[1] != NULL && argv[2] != NULL) @@ -340,7 +340,7 @@ static void frontend_gx_exitspawn(char *s, size_t len) /* FIXME/TODO - hack * direct loading failed (out of memory), try to jump to Salamander, * then load the correct core */ - fill_pathname_join(s, g_defaults.core_dir, + fill_pathname_join(s, g_defaults.dir.core, "boot.dol", len); #endif frontend_gx_exec(s, should_load_game); diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c index 80927e4a3c..07120213be 100644 --- a/frontend/drivers/platform_ps3.c +++ b/frontend/drivers/platform_ps3.c @@ -186,15 +186,15 @@ static void frontend_ps3_get_environment_settings(int *argc, char *argv[], == CELL_GAME_ATTRIBUTE_APP_HOME) RARCH_LOG("RetroArch was launched from host machine (APP_HOME).\n"); - ret = cellGameContentPermit(contentInfoPath, g_defaults.port_dir); + ret = cellGameContentPermit(contentInfoPath, g_defaults.dir.port); #ifdef HAVE_MULTIMAN if (multiman_detected) { fill_pathname_join(contentInfoPath, "/dev_hdd0/game/", EMULATOR_CONTENT_DIR, sizeof(contentInfoPath)); - fill_pathname_join(g_defaults.port_dir, contentInfoPath, - "USRDIR", sizeof(g_defaults.port_dir)); + fill_pathname_join(g_defaults.dir.port, contentInfoPath, + "USRDIR", sizeof(g_defaults.dir.port)); } #endif @@ -204,29 +204,29 @@ static void frontend_ps3_get_environment_settings(int *argc, char *argv[], { RARCH_LOG("cellGameContentPermit() OK.\n"); RARCH_LOG("contentInfoPath : [%s].\n", contentInfoPath); - RARCH_LOG("usrDirPath : [%s].\n", g_defaults.port_dir); + RARCH_LOG("usrDirPath : [%s].\n", g_defaults.dir.port); } - fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir, - "savestates", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.shader_dir, g_defaults.core_dir, - "shaders_cg", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.port_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.overlay_dir, g_defaults.core_dir, - "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.assets_dir, g_defaults.core_dir, - "media", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir, - "playlists", sizeof(g_defaults.playlist_dir)); + fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.shader, g_defaults.dir.core, + "shaders_cg", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.overlay, g_defaults.dir.core, + "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.core, + "media", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core, + "playlists", sizeof(g_defaults.dir.playlist)); } #ifndef IS_SALAMANDER @@ -364,9 +364,9 @@ static void frontend_ps3_exec(const char *path, bool should_load_game) NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); } #else - if (should_load_game && global->fullpath[0] != '\0') + if (should_load_game && global->path.fullpath[0] != '\0') { - strlcpy(game_path, global->fullpath, sizeof(game_path)); + strlcpy(game_path, global->path.fullpath, sizeof(game_path)); const char * const spawn_argv[] = { game_path, diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 8ed2075a7b..6240c1b392 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -68,29 +68,29 @@ static void frontend_psp_get_environment_settings(int *argc, char *argv[], strlcpy(eboot_path, argv[0], sizeof(eboot_path)); - fill_pathname_basedir(g_defaults.port_dir, argv[0], sizeof(g_defaults.port_dir)); - RARCH_LOG("port dir: [%s]\n", g_defaults.port_dir); + fill_pathname_basedir(g_defaults.dir.port, argv[0], sizeof(g_defaults.dir.port)); + RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); - fill_pathname_join(g_defaults.assets_dir, g_defaults.port_dir, - "media", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir, - "savestates", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir, - "playlists", sizeof(g_defaults.playlist_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.port_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.cheats_dir, g_defaults.cheats_dir, - "cheats", sizeof(g_defaults.cheats_dir)); - fill_pathname_join(g_defaults.remap_dir, g_defaults.remap_dir, - "remaps", sizeof(g_defaults.remap_dir)); + fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, + "media", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core, + "playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.cheats, g_defaults.dir.cheats, + "cheats", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.remap, g_defaults.dir.remap, + "remaps", sizeof(g_defaults.dir.remap)); #ifndef IS_SALAMANDER if (argv[1] && (argv[1][0] != '\0')) @@ -205,10 +205,10 @@ static void frontend_psp_exec(const char *path, bool should_load_game) #ifndef IS_SALAMANDER global_t *global = global_get_ptr(); - if (should_load_game && global->fullpath[0] != '\0') + if (should_load_game && global->path.fullpath[0] != '\0') { argp[args] = '\0'; - strlcat(argp + args, global->fullpath, sizeof(argp) - args); + strlcat(argp + args, global->path.fullpath, sizeof(argp) - args); args += strlen(argp + args) + 1; } #endif diff --git a/frontend/drivers/platform_qnx.c b/frontend/drivers/platform_qnx.c index 20cb293f4e..fe48376906 100644 --- a/frontend/drivers/platform_qnx.c +++ b/frontend/drivers/platform_qnx.c @@ -45,18 +45,18 @@ static int frontend_qnx_get_rating(void) static void frontend_qnx_get_environment_settings(int *argc, char *argv[], void *data, void *params_data) { - fill_pathname_join(g_defaults.config_path, "app/native", - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.shader_dir, "app/native", - "shaders_glsl", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.overlay_dir, "app/native", - "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.core_dir, "app/native", - "lib", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, "app/native", - "info", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.playlist_dir, "app/native", - "playlists", sizeof(g_defaults.playlist_dir)); + fill_pathname_join(g_defaults.path.config, "app/native", + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.shader, "app/native", + "shaders_glsl", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.dir.overlay, "app/native", + "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.core, "app/native", + "lib", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, "app/native", + "info", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.playlist, "app/native", + "playlists", sizeof(g_defaults.dir.playlist)); } enum frontend_architecture frontend_qnx_get_architecture(void) diff --git a/frontend/drivers/platform_wii.c b/frontend/drivers/platform_wii.c index db83ac5455..609b6279ad 100644 --- a/frontend/drivers/platform_wii.c +++ b/frontend/drivers/platform_wii.c @@ -132,7 +132,7 @@ void system_exec_wii(const char *_path, bool should_load_game) #ifdef IS_SALAMANDER strlcpy(game_path, gx_rom_path, sizeof(game_path)); #else - strlcpy(game_path, global->fullpath, sizeof(game_path)); + strlcpy(game_path, global->path.fullpath, sizeof(game_path)); #endif } diff --git a/frontend/drivers/platform_xdk.c b/frontend/drivers/platform_xdk.c index de5b159138..b13b81ccdc 100644 --- a/frontend/drivers/platform_xdk.c +++ b/frontend/drivers/platform_xdk.c @@ -176,34 +176,34 @@ static void frontend_xdk_get_environment_settings(int *argc, char *argv[], #endif #if defined(_XBOX1) - strlcpy(g_defaults.core_dir, "D:", sizeof(g_defaults.core_dir)); - strlcpy(g_defaults.core_info_dir, "D:", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.core_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir, - "savestates", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.screenshot_dir, g_defaults.core_dir, - "screenshots", sizeof(g_defaults.screenshot_dir)); + strlcpy(g_defaults.dir.core, "D:", sizeof(g_defaults.dir.core)); + strlcpy(g_defaults.dir.core_info, "D:", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.core, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.screenshot, g_defaults.dir.core, + "screenshots", sizeof(g_defaults.dir.screenshot)); #elif defined(_XBOX360) - strlcpy(g_defaults.core_dir, "game:", sizeof(g_defaults.core_dir)); - strlcpy(g_defaults.core_info_dir, - "game:", sizeof(g_defaults.core_info_dir)); - strlcpy(g_defaults.config_path, - "game:\\retroarch.cfg", sizeof(g_defaults.config_path)); - strlcpy(g_defaults.screenshot_dir, - "game:", sizeof(g_defaults.screenshot_dir)); - strlcpy(g_defaults.savestate_dir, - "game:\\savestates", sizeof(g_defaults.savestate_dir)); - strlcpy(g_defaults.playlist_dir, - "game:\\playlists", sizeof(g_defaults.playlist_dir)); - strlcpy(g_defaults.sram_dir, - "game:\\savefiles", sizeof(g_defaults.sram_dir)); - strlcpy(g_defaults.system_dir, - "game:\\system", sizeof(g_defaults.system_dir)); + strlcpy(g_defaults.dir.core, "game:", sizeof(g_defaults.dir.core)); + strlcpy(g_defaults.dir.core_info, + "game:", sizeof(g_defaults.dir.core_info)); + strlcpy(g_defaults.path.config, + "game:\\retroarch.cfg", sizeof(g_defaults.path.config)); + strlcpy(g_defaults.dir.screenshot, + "game:", sizeof(g_defaults.dir.screenshot)); + strlcpy(g_defaults.dir.savestate, + "game:\\savestates", sizeof(g_defaults.dir.savestate)); + strlcpy(g_defaults.dir.playlist, + "game:\\playlists", sizeof(g_defaults.dir.playlist)); + strlcpy(g_defaults.dir.sram, + "game:\\savefiles", sizeof(g_defaults.dir.sram)); + strlcpy(g_defaults.dir.system, + "game:\\system", sizeof(g_defaults.dir.system)); #endif #ifndef IS_SALAMANDER diff --git a/frontend/frontend.c b/frontend/frontend.c index d555421bb4..612caa50d0 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -40,24 +40,26 @@ void main_exit_save_config(void) global_t *global = global_get_ptr(); rarch_system_info_t *info = rarch_system_info_get_ptr(); - if (settings->config_save_on_exit && *global->config_path) + if (settings->config_save_on_exit && *global->path.config) { /* restore original paths in case per-core organization is enabled */ if (settings->sort_savefiles_enable && orig_savefile_dir[0] != '\0') - strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir)); + strlcpy(global->dir.savefile, orig_savefile_dir, + sizeof(global->dir.savefile)); if (settings->sort_savestates_enable && orig_savestate_dir[0] != '\0') - strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); + strlcpy(global->dir.savestate, orig_savestate_dir, + sizeof(global->dir.savestate)); /* Save last core-specific config to the default config location, * needed on consoles for core switching and reusing last good * config for new cores. */ - config_save_file(global->config_path); + config_save_file(global->path.config); /* Flush out the core specific config. */ - if (*global->core_specific_config_path && + if (*global->path.core_specific_config && settings->core_specific_config) - config_save_file(global->core_specific_config_path); + config_save_file(global->path.core_specific_config); } event_command(EVENT_CMD_AUTOSAVE_STATE); @@ -81,7 +83,7 @@ void main_exit(void *args) main_exit_save_config(); - if (global->main_is_init) + if (global->inited.main) { #ifdef HAVE_MENU /* Do not want menu context to live any more. */ @@ -125,50 +127,50 @@ void main_exit(void *args) static void check_defaults_dirs(void) { - if (*g_defaults.core_assets_dir) - path_mkdir(g_defaults.core_assets_dir); - if (*g_defaults.remap_dir) - path_mkdir(g_defaults.remap_dir); - if (*g_defaults.autoconfig_dir) - path_mkdir(g_defaults.autoconfig_dir); - if (*g_defaults.audio_filter_dir) - path_mkdir(g_defaults.audio_filter_dir); - if (*g_defaults.video_filter_dir) - path_mkdir(g_defaults.video_filter_dir); - if (*g_defaults.assets_dir) - path_mkdir(g_defaults.assets_dir); - if (*g_defaults.playlist_dir) - path_mkdir(g_defaults.playlist_dir); - if (*g_defaults.core_dir) - path_mkdir(g_defaults.core_dir); - if (*g_defaults.core_info_dir) - path_mkdir(g_defaults.core_info_dir); - if (*g_defaults.overlay_dir) - path_mkdir(g_defaults.overlay_dir); - if (*g_defaults.port_dir) - path_mkdir(g_defaults.port_dir); - if (*g_defaults.shader_dir) - path_mkdir(g_defaults.shader_dir); - if (*g_defaults.savestate_dir) - path_mkdir(g_defaults.savestate_dir); - if (*g_defaults.sram_dir) - path_mkdir(g_defaults.sram_dir); - if (*g_defaults.system_dir) - path_mkdir(g_defaults.system_dir); - if (*g_defaults.resampler_dir) - path_mkdir(g_defaults.resampler_dir); - if (*g_defaults.menu_config_dir) - path_mkdir(g_defaults.menu_config_dir); - if (*g_defaults.content_history_dir) - path_mkdir(g_defaults.content_history_dir); - if (*g_defaults.extraction_dir) - path_mkdir(g_defaults.extraction_dir); - if (*g_defaults.database_dir) - path_mkdir(g_defaults.database_dir); - if (*g_defaults.cursor_dir) - path_mkdir(g_defaults.cursor_dir); - if (*g_defaults.cheats_dir) - path_mkdir(g_defaults.cheats_dir); + if (*g_defaults.dir.core_assets) + path_mkdir(g_defaults.dir.core_assets); + if (*g_defaults.dir.remap) + path_mkdir(g_defaults.dir.remap); + if (*g_defaults.dir.autoconfig) + path_mkdir(g_defaults.dir.autoconfig); + if (*g_defaults.dir.audio_filter) + path_mkdir(g_defaults.dir.audio_filter); + if (*g_defaults.dir.video_filter) + path_mkdir(g_defaults.dir.video_filter); + if (*g_defaults.dir.assets) + path_mkdir(g_defaults.dir.assets); + if (*g_defaults.dir.playlist) + path_mkdir(g_defaults.dir.playlist); + if (*g_defaults.dir.core) + path_mkdir(g_defaults.dir.core); + if (*g_defaults.dir.core_info) + path_mkdir(g_defaults.dir.core_info); + if (*g_defaults.dir.overlay) + path_mkdir(g_defaults.dir.overlay); + if (*g_defaults.dir.port) + path_mkdir(g_defaults.dir.port); + if (*g_defaults.dir.shader) + path_mkdir(g_defaults.dir.shader); + if (*g_defaults.dir.savestate) + path_mkdir(g_defaults.dir.savestate); + if (*g_defaults.dir.sram) + path_mkdir(g_defaults.dir.sram); + if (*g_defaults.dir.system) + path_mkdir(g_defaults.dir.system); + if (*g_defaults.dir.resampler) + path_mkdir(g_defaults.dir.resampler); + if (*g_defaults.dir.menu_config) + path_mkdir(g_defaults.dir.menu_config); + if (*g_defaults.dir.content_history) + path_mkdir(g_defaults.dir.content_history); + if (*g_defaults.dir.extraction) + path_mkdir(g_defaults.dir.extraction); + if (*g_defaults.dir.database) + path_mkdir(g_defaults.dir.database); + if (*g_defaults.dir.cursor) + path_mkdir(g_defaults.dir.cursor); + if (*g_defaults.dir.cheats) + path_mkdir(g_defaults.dir.cheats); } static void history_playlist_push(content_playlist_t *playlist, @@ -179,7 +181,7 @@ static void history_playlist_push(content_playlist_t *playlist, global_t *global = global_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); - if (!playlist || (global->core_type == CORE_TYPE_DUMMY) || !info) + if (!playlist || (global->inited.core.type == CORE_TYPE_DUMMY) || !info) return; /* Path can be relative here. @@ -251,7 +253,7 @@ bool main_load_content(int argc, char **argv, void *args, rarch_argc_ptr = (int*)&rarch_argc; } - if (global->main_is_init) + if (global->inited.main) rarch_main_deinit(); if ((ret = rarch_main_init(*rarch_argc_ptr, rarch_argv_ptr))) @@ -322,10 +324,10 @@ int rarch_main(int argc, char *argv[], void *data) global_t *global = global_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); - if (global->content_is_init || system->no_content) + if (global->inited.content || system->no_content) history_playlist_push( g_defaults.history, - global->fullpath, + global->path.fullpath, settings->libretro, system ? &system->info : NULL); } diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index b026c31847..78d6174efa 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -89,11 +89,11 @@ static void find_and_set_first_file(char *s, size_t len, char first_file[PATH_MAX_LENGTH] = {0}; find_first_libretro_core(first_file, sizeof(first_file), - g_defaults.core_dir, ext); + g_defaults.dir.core, ext); if (first_file[0] != '\0') { - fill_pathname_join(s, g_defaults.core_dir, first_file, len); + fill_pathname_join(s, g_defaults.dir.core, first_file, len); RARCH_LOG("libretro_path now set to: %s.\n", s); } else @@ -105,13 +105,13 @@ static void salamander_init(char *s, size_t len) /* normal executable loading path */ bool config_file_exists = false; - if (path_file_exists(g_defaults.config_path)) + if (path_file_exists(g_defaults.path.config)) config_file_exists = true; if (config_file_exists) { char tmp_str[PATH_MAX_LENGTH]; - config_file_t * conf = (config_file_t*)config_file_new(g_defaults.config_path); + config_file_t * conf = (config_file_t*)config_file_new(g_defaults.path.config); if (conf) { @@ -137,7 +137,7 @@ static void salamander_init(char *s, size_t len) if (conf) { config_set_string(conf, "libretro_path", s); - config_file_write(conf, g_defaults.config_path); + config_file_write(conf, g_defaults.path.config); config_file_free(conf); } } diff --git a/general.h b/general.h index ae4a19af9c..80650c274a 100644 --- a/general.h +++ b/general.h @@ -71,33 +71,40 @@ enum sound_mode_enums struct defaults { - char core_assets_dir[PATH_MAX_LENGTH]; - char menu_config_dir[PATH_MAX_LENGTH]; - char config_path[PATH_MAX_LENGTH]; - char core_path[PATH_MAX_LENGTH]; - char autoconfig_dir[PATH_MAX_LENGTH]; - char audio_filter_dir[PATH_MAX_LENGTH]; - char video_filter_dir[PATH_MAX_LENGTH]; - char assets_dir[PATH_MAX_LENGTH]; - char core_dir[PATH_MAX_LENGTH]; - char core_info_dir[PATH_MAX_LENGTH]; - char overlay_dir[PATH_MAX_LENGTH]; - char osk_overlay_dir[PATH_MAX_LENGTH]; - char port_dir[PATH_MAX_LENGTH]; - char shader_dir[PATH_MAX_LENGTH]; - char savestate_dir[PATH_MAX_LENGTH]; - char resampler_dir[PATH_MAX_LENGTH]; - char sram_dir[PATH_MAX_LENGTH]; - char screenshot_dir[PATH_MAX_LENGTH]; - char system_dir[PATH_MAX_LENGTH]; - char playlist_dir[PATH_MAX_LENGTH]; - char content_history_dir[PATH_MAX_LENGTH]; - char remap_dir[PATH_MAX_LENGTH]; - char extraction_dir[PATH_MAX_LENGTH]; - char wallpapers_dir[PATH_MAX_LENGTH]; - char database_dir[PATH_MAX_LENGTH]; - char cursor_dir[PATH_MAX_LENGTH]; - char cheats_dir[PATH_MAX_LENGTH]; + struct + { + char core_assets[PATH_MAX_LENGTH]; + char menu_config[PATH_MAX_LENGTH]; + char autoconfig[PATH_MAX_LENGTH]; + char audio_filter[PATH_MAX_LENGTH]; + char video_filter[PATH_MAX_LENGTH]; + char assets[PATH_MAX_LENGTH]; + char core[PATH_MAX_LENGTH]; + char core_info[PATH_MAX_LENGTH]; + char overlay[PATH_MAX_LENGTH]; + char osk_overlay[PATH_MAX_LENGTH]; + char port[PATH_MAX_LENGTH]; + char shader[PATH_MAX_LENGTH]; + char savestate[PATH_MAX_LENGTH]; + char resampler[PATH_MAX_LENGTH]; + char sram[PATH_MAX_LENGTH]; + char screenshot[PATH_MAX_LENGTH]; + char system[PATH_MAX_LENGTH]; + char playlist[PATH_MAX_LENGTH]; + char content_history[PATH_MAX_LENGTH]; + char remap[PATH_MAX_LENGTH]; + char extraction[PATH_MAX_LENGTH]; + char wallpapers[PATH_MAX_LENGTH]; + char database[PATH_MAX_LENGTH]; + char cursor[PATH_MAX_LENGTH]; + char cheats[PATH_MAX_LENGTH]; + } dir; + + struct + { + char config[PATH_MAX_LENGTH]; + char core[PATH_MAX_LENGTH]; + } path; struct { @@ -146,7 +153,7 @@ static INLINE void rarch_fail(int error_code, const char *error) /* We cannot longjmp unless we're in rarch_main_init(). * If not, something went very wrong, and we should * just exit right away. */ - rarch_assert(global->error_in_init); + rarch_assert(global->inited.error); strlcpy(global->error_string, error, sizeof(global->error_string)); diff --git a/libretro_version_1.c b/libretro_version_1.c index ff958198d5..a11d863839 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -131,13 +131,13 @@ static bool input_apply_turbo(unsigned port, unsigned id, bool res) settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - if (res && global->turbo_frame_enable[port]) - global->turbo_enable[port] |= (1 << id); + if (res && global->turbo.frame_enable[port]) + global->turbo.enable[port] |= (1 << id); else if (!res) - global->turbo_enable[port] &= ~(1 << id); + global->turbo.enable[port] &= ~(1 << id); - if (global->turbo_enable[port] & (1 << id)) - return res && ((global->turbo_count % settings->input.turbo_period) + if (global->turbo.enable[port] & (1 << id)) + return res && ((global->turbo.count % settings->input.turbo_period) < settings->input.turbo_duty_cycle); return res; } @@ -283,10 +283,10 @@ void retro_init_libretro_cbs(void *data) if (!driver->netplay_data) return; - if (global->netplay_is_spectate) + if (global->netplay.is_spectate) { pretro_set_input_state( - (global->netplay_is_client ? + (global->netplay.is_client ? input_state_spectate_client : input_state_spectate) ); } diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 7cfd35f85c..242c50306c 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -330,9 +330,9 @@ static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) info->setting = menu_setting_find(info->label); - if (global->core_info) + if (global->core_info.list) strlcpy(info->exts, core_info_list_get_all_extensions( - global->core_info), sizeof(info->exts)); + global->core_info.list), sizeof(info->exts)); else if (global->menu.info.valid_extensions) { if (*global->menu.info.valid_extensions) @@ -585,9 +585,9 @@ static int deferred_push_detect_core_list(menu_displaylist_info_t *info) global_t *global = global_get_ptr(); info->type_default = MENU_FILE_PLAIN; - if (global->core_info) + if (global->core_info.list) strlcpy(info->exts, core_info_list_get_all_extensions( - global->core_info), sizeof(info->exts)); + global->core_info.list), sizeof(info->exts)); (void)settings; diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index ebb5bc5f58..d2e0e1c724 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -80,8 +80,8 @@ static void menu_action_setting_disp_set_label_configurations( *w = 19; strlcpy(s2, path, len2); - if (global && *global->config_path) - fill_pathname_base(s, global->config_path, + if (global && *global->path.config) + fill_pathname_base(s, global->path.config, len); else strlcpy(s, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), len); diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index c15364d034..69cdbdace7 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -81,7 +81,7 @@ static int rarch_defer_core_wrapper(menu_displaylist_info_t *info, sizeof(menu_path_new)); } - ret = rarch_defer_core(global->core_info, + ret = rarch_defer_core(global->core_info.list, menu_path_new, path, menu_label, menu->deferred_path, sizeof(menu->deferred_path)); @@ -165,7 +165,7 @@ static int action_ok_file_load_detect_core(const char *path, settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - strlcpy(global->fullpath, detect_content_path, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, detect_content_path, sizeof(global->path.fullpath)); strlcpy(settings->libretro, path, sizeof(settings->libretro)); event_command(EVENT_CMD_LOAD_CORE); menu_common_load_content(false, CORE_TYPE_PLAIN); @@ -910,7 +910,7 @@ static int action_ok_remap_file_save_game(const char *path, settings_t *settings = config_get_ptr(); rarch_system_info_t *info = rarch_system_info_get_ptr(); const char *core_name = info ? info->info.library_name : NULL; - const char *game_name = global ? path_basename(global->basename) : NULL; + const char *game_name = global ? path_basename(global->name.base) : NULL; fill_pathname_join(directory,settings->input_remapping_directory,core_name,PATH_MAX_LENGTH); fill_pathname_join(file,core_name,game_name,PATH_MAX_LENGTH); @@ -984,8 +984,8 @@ static int action_ok_core_load_deferred(const char *path, if (path) strlcpy(settings->libretro, path, sizeof(settings->libretro)); - strlcpy(global->fullpath, menu->deferred_path, - sizeof(global->fullpath)); + strlcpy(global->path.fullpath, menu->deferred_path, + sizeof(global->path.fullpath)); menu_common_load_content(false, CORE_TYPE_PLAIN); @@ -1051,7 +1051,7 @@ static int action_ok_core_load(const char *path, if (menu->load_no_content && settings->core.set_supports_no_game_enable) { - *global->fullpath = '\0'; + *global->path.fullpath = '\0'; menu_common_load_content(false, CORE_TYPE_PLAIN); return -1; @@ -1263,8 +1263,8 @@ static int action_ok_file_load_ffmpeg(const char *path, menu_list_get_last(menu_list->menu_stack, &menu_path, NULL, NULL, NULL); - fill_pathname_join(global->fullpath, menu_path, path, - sizeof(global->fullpath)); + fill_pathname_join(global->path.fullpath, menu_path, path, + sizeof(global->path.fullpath)); menu_common_load_content(true, CORE_TYPE_FFMPEG); @@ -1285,8 +1285,8 @@ static int action_ok_file_load_imageviewer(const char *path, menu_list_get_last(menu_list->menu_stack, &menu_path, NULL, NULL, NULL); - fill_pathname_join(global->fullpath, menu_path, path, - sizeof(global->fullpath)); + fill_pathname_join(global->path.fullpath, menu_path, path, + sizeof(global->path.fullpath)); menu_common_load_content(true, CORE_TYPE_IMAGEVIEWER); @@ -1331,11 +1331,11 @@ static int action_ok_file_load(const char *path, else { if (type == MENU_FILE_IN_CARCHIVE) - fill_pathname_join_delim(global->fullpath, menu_path_new, path, - '#',sizeof(global->fullpath)); + fill_pathname_join_delim(global->path.fullpath, menu_path_new, path, + '#',sizeof(global->path.fullpath)); else - fill_pathname_join(global->fullpath, menu_path_new, path, - sizeof(global->fullpath)); + fill_pathname_join(global->path.fullpath, menu_path_new, path, + sizeof(global->path.fullpath)); menu_common_load_content(true, CORE_TYPE_PLAIN); @@ -1648,12 +1648,12 @@ static int action_ok_file_load_or_resume(const char *path, if (!menu) return -1; - if (!strcmp(menu->deferred_path, global->fullpath)) + if (!strcmp(menu->deferred_path, global->path.fullpath)) return generic_action_ok_command(EVENT_CMD_RESUME); else { - strlcpy(global->fullpath, - menu->deferred_path, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, + menu->deferred_path, sizeof(global->path.fullpath)); event_command(EVENT_CMD_LOAD_CORE); rarch_main_set_state(RARCH_ACTION_STATE_LOAD_CONTENT); return -1; @@ -1804,7 +1804,7 @@ static int action_ok_load_archive(const char *path, fill_pathname_join(detect_content_path, menu_path, content_path, sizeof(detect_content_path)); - strlcpy(global->fullpath, detect_content_path, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, detect_content_path, sizeof(global->path.fullpath)); event_command(EVENT_CMD_LOAD_CORE); menu_common_load_content(false, CORE_TYPE_PLAIN); @@ -1827,7 +1827,7 @@ static int action_ok_load_archive_detect_core(const char *path, if (!menu || !menu_list) return -1; - ret = rarch_defer_core(global->core_info, menu_path, content_path, label, + ret = rarch_defer_core(global->core_info.list, menu_path, content_path, label, menu->deferred_path, sizeof(menu->deferred_path)); fill_pathname_join(detect_content_path, menu_path, content_path, diff --git a/menu/menu.c b/menu/menu.c index f42425d2a6..ae9a2bc486 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -41,15 +41,15 @@ static void menu_environment_get(int *argc, char *argv[], return; wrap_args->no_content = menu->load_no_content; - if (!global->has_set_verbosity) + if (!global->has_set.verbosity) wrap_args->verbose = global->verbosity; - wrap_args->config_path = *global->config_path ? global->config_path : NULL; - wrap_args->sram_path = *global->savefile_dir ? global->savefile_dir : NULL; - wrap_args->state_path = *global->savestate_dir ? global->savestate_dir : NULL; - wrap_args->content_path = *global->fullpath ? global->fullpath : NULL; + wrap_args->config_path = *global->path.config ? global->path.config : NULL; + wrap_args->sram_path = *global->dir.savefile ? global->dir.savefile : NULL; + wrap_args->state_path = *global->dir.savestate ? global->dir.savestate : NULL; + wrap_args->content_path = *global->path.fullpath ? global->path.fullpath : NULL; - if (!global->has_set_libretro) + if (!global->has_set.libretro) wrap_args->libretro_path = *settings->libretro ? settings->libretro : NULL; wrap_args->touched = true; } @@ -62,18 +62,18 @@ static void menu_push_to_history_playlist(void) if (!settings->history_list_enable) return; - if (*global->fullpath) + if (*global->path.fullpath) { char tmp[PATH_MAX_LENGTH] = {0}; char str[PATH_MAX_LENGTH] = {0}; - fill_pathname_base(tmp, global->fullpath, sizeof(tmp)); + fill_pathname_base(tmp, global->path.fullpath, sizeof(tmp)); snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp); rarch_main_msg_queue_push(str, 1, 1, false); } content_playlist_push(g_defaults.history, - global->fullpath, + global->path.fullpath, NULL, settings->libretro, global->menu.info.library_name, @@ -110,7 +110,7 @@ bool menu_load_content(enum rarch_core_type type) char name[PATH_MAX_LENGTH] = {0}; char msg[PATH_MAX_LENGTH] = {0}; - fill_pathname_base(name, global->fullpath, sizeof(name)); + fill_pathname_base(name, global->path.fullpath, sizeof(name)); snprintf(msg, sizeof(msg), "Failed to load %s.\n", name); rarch_main_msg_queue_push(msg, 1, 90, false); @@ -124,7 +124,7 @@ bool menu_load_content(enum rarch_core_type type) event_command(EVENT_CMD_HISTORY_INIT); - if (*global->fullpath || (menu && menu->load_no_content)) + if (*global->path.fullpath || (menu && menu->load_no_content)) menu_push_to_history_playlist(); event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO); @@ -218,8 +218,8 @@ void *menu_init(const void *data) if (menu_init_entries(&menu->entries) != 0) goto error; - global->core_info_current = (core_info_t*)calloc(1, sizeof(core_info_t)); - if (!global->core_info_current) + global->core_info.current = (core_info_t*)calloc(1, sizeof(core_info_t)); + if (!global->core_info.current) goto error; #ifdef HAVE_SHADER_MANAGER @@ -261,9 +261,9 @@ error: if (menu->entries.menu_list) menu_list_free(menu->entries.menu_list); menu->entries.menu_list = NULL; - if (global->core_info_current) - free(global->core_info_current); - global->core_info_current = NULL; + if (global->core_info.current) + free(global->core_info.current); + global->core_info.current = NULL; if (menu->shader) free(menu->shader); menu->shader = NULL; @@ -324,12 +324,12 @@ void menu_free(menu_handle_t *menu) event_command(EVENT_CMD_HISTORY_DEINIT); - if (global->core_info) - core_info_list_free(global->core_info); + if (global->core_info.list) + core_info_list_free(global->core_info.list); - if (global->core_info_current) - free(global->core_info_current); - global->core_info_current = NULL; + if (global->core_info.current) + free(global->core_info.current); + global->core_info.current = NULL; menu_driver_unset_alive(); diff --git a/menu/menu_display.c b/menu/menu_display.c index 66002adb45..d6f7af8ba5 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -79,7 +79,7 @@ void menu_display_fb(void) if (!settings->menu.pause_libretro) { - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) { bool block_libretro_input = driver->block_libretro_input; driver->block_libretro_input = true; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 942e982453..a5ec08874b 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -145,7 +145,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info) char tmp[PATH_MAX_LENGTH] = {0}; settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - core_info_t *core_info = global ? (core_info_t*)global->core_info_current : NULL; + core_info_t *core_info = global ? (core_info_t*)global->core_info.current : NULL; if (!core_info || !core_info->data) { @@ -241,7 +241,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info) if (core_info->firmware_count > 0) { core_info_list_update_missing_firmware( - global->core_info, core_info->path, + global->core_info.list, core_info->path, settings->system_directory); strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_FIRMWARE), sizeof(tmp)); @@ -1582,7 +1582,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t if (!menu) return -1; - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) { rarch_system_info_t *system = rarch_system_info_get_ptr(); @@ -1621,7 +1621,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t menu_hash_to_str(MENU_LABEL_CORE_OPTIONS), MENU_SETTING_ACTION, 0, 0); - if (global->has_set_input_descriptors) + if (global->has_set.input_descriptors) menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS), menu_hash_to_str(MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS), @@ -1630,7 +1630,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t menu_hash_to_str(MENU_LABEL_VALUE_CORE_CHEAT_OPTIONS), menu_hash_to_str(MENU_LABEL_CORE_CHEAT_OPTIONS), MENU_SETTING_ACTION, 0, 0); - if ((global->core_type != CORE_TYPE_DUMMY) && system && system->disk_control.get_num_images) + if ((global->inited.core.type != CORE_TYPE_DUMMY) && system && system->disk_control.get_num_images) menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DISK_OPTIONS), menu_hash_to_str(MENU_LABEL_DISK_OPTIONS), @@ -1664,8 +1664,8 @@ static int menu_displaylist_parse_horizontal_content_actions(menu_displaylist_in if (!menu) return -1; - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY) - && !strcmp(menu->deferred_path, global->fullpath)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY) + && !strcmp(menu->deferred_path, global->path.fullpath)) menu_displaylist_parse_load_content_settings(info); else menu_list_push(info->list, "Run", "collection", @@ -1766,7 +1766,7 @@ static int menu_displaylist_parse_load_content_list(menu_displaylist_info_t *inf menu_hash_to_str(MENU_LABEL_LOAD_CONTENT), MENU_SETTING_ACTION, 0, 0); - if (global->core_info && core_info_list_num_info_files(global->core_info)) + if (core_info_list_num_info_files(global->core_info.list)) { menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DETECT_CORE_LIST), @@ -2156,8 +2156,7 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n fill_pathname_join(core_path, dir, path, sizeof(core_path)); - if (global->core_info && - core_info_list_get_display_name(global->core_info, + if (core_info_list_get_display_name(global->core_info.list, core_path, display_name, sizeof(display_name))) menu_list_set_alt_at_offset(info->list, i, display_name); } @@ -2516,7 +2515,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) { const core_info_t *core_info = NULL; - core_info_list_get_supported_cores(global->core_info, + core_info_list_get_supported_cores(global->core_info.list, menu->deferred_path, &core_info, &list_size); if (list_size <= 0) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index db4230089f..a7d0247fff 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2268,7 +2268,7 @@ static void general_write_handler(void *data) break; case MENU_LABEL_LOG_VERBOSITY: global->verbosity = *setting->value.boolean; - global->has_set_verbosity = *setting->value.boolean; + global->has_set.verbosity = *setting->value.boolean; break; case MENU_LABEL_VIDEO_SMOOTH: video_driver_set_filtering(1, settings->video.smooth); @@ -2306,25 +2306,25 @@ static void general_write_handler(void *data) break; case MENU_LABEL_NETPLAY_IP_ADDRESS: #ifdef HAVE_NETPLAY - global->has_set_netplay_ip_address = (setting->value.string[0] != '\0'); + global->has_set.netplay_ip_address = (setting->value.string[0] != '\0'); #endif break; case MENU_LABEL_NETPLAY_MODE: #ifdef HAVE_NETPLAY - if (!global->netplay_is_client) - *global->netplay_server = '\0'; - global->has_set_netplay_mode = true; + if (!global->netplay.is_client) + *global->netplay.server = '\0'; + global->has_set.netplay_mode = true; #endif break; case MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE: #ifdef HAVE_NETPLAY - if (global->netplay_is_spectate) - *global->netplay_server = '\0'; + if (global->netplay.is_spectate) + *global->netplay.server = '\0'; #endif break; case MENU_LABEL_NETPLAY_DELAY_FRAMES: #ifdef HAVE_NETPLAY - global->has_set_netplay_delay_frames = (global->netplay_sync_frames > 0); + global->has_set.netplay_delay_frames = (global->netplay.sync_frames > 0); #endif break; } @@ -2501,7 +2501,7 @@ static bool setting_append_list_main_menu_options( START_GROUP(group_info,main_menu, parent_group); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) { CONFIG_ACTION( menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), @@ -4633,7 +4633,7 @@ static bool setting_append_list_overlay_options( settings->input.overlay, menu_hash_to_str(MENU_LABEL_OVERLAY_PRESET), menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_PRESET), - global->overlay_dir, + global->dir.overlay, group_info.name, subgroup_info.name, parent_group, @@ -4681,7 +4681,7 @@ static bool setting_append_list_overlay_options( settings->osk.overlay, menu_hash_to_str(MENU_LABEL_KEYBOARD_OVERLAY_PRESET), menu_hash_to_str(MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET), - global->osk_overlay_dir, + global->dir.osk_overlay, group_info.name, subgroup_info.name, parent_group, @@ -5243,7 +5243,7 @@ static bool setting_append_list_netplay_options( START_SUB_GROUP(list, list_info, "Netplay", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( - global->netplay_enable, + global->netplay.enable, menu_hash_to_str(MENU_LABEL_NETPLAY_ENABLE), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_ENABLE), false, @@ -5269,7 +5269,7 @@ static bool setting_append_list_netplay_options( general_read_handler); CONFIG_STRING( - global->netplay_server, + global->netplay.server, menu_hash_to_str(MENU_LABEL_NETPLAY_IP_ADDRESS), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS), "", @@ -5281,7 +5281,7 @@ static bool setting_append_list_netplay_options( settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); CONFIG_BOOL( - global->netplay_is_client, + global->netplay.is_client, menu_hash_to_str(MENU_LABEL_NETPLAY_MODE), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_MODE), false, @@ -5294,7 +5294,7 @@ static bool setting_append_list_netplay_options( general_read_handler); CONFIG_BOOL( - global->netplay_is_spectate, + global->netplay.is_spectate, menu_hash_to_str(MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE), false, @@ -5307,7 +5307,7 @@ static bool setting_append_list_netplay_options( general_read_handler); CONFIG_UINT( - global->netplay_sync_frames, + global->netplay.sync_frames, menu_hash_to_str(MENU_LABEL_NETPLAY_DELAY_FRAMES), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES), 0, @@ -5320,7 +5320,7 @@ static bool setting_append_list_netplay_options( settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); CONFIG_UINT( - global->netplay_port, + global->netplay.port, menu_hash_to_str(MENU_LABEL_NETPLAY_TCP_UDP_PORT), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_TCP_UDP_PORT), RARCH_DEFAULT_PORT, @@ -5691,7 +5691,7 @@ static bool setting_append_list_directory_options( settings->libretro_directory, menu_hash_to_str(MENU_LABEL_LIBRETRO_DIR_PATH), menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH), - g_defaults.core_dir, + g_defaults.dir.core, menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), group_info.name, subgroup_info.name, @@ -5708,7 +5708,7 @@ static bool setting_append_list_directory_options( settings->libretro_info_path, menu_hash_to_str(MENU_LABEL_LIBRETRO_INFO_PATH), menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_INFO_PATH), - g_defaults.core_info_dir, + g_defaults.dir.core_info, menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), group_info.name, subgroup_info.name, @@ -5807,7 +5807,7 @@ static bool setting_append_list_directory_options( settings->video.shader_dir, menu_hash_to_str(MENU_LABEL_VIDEO_SHADER_DIR), menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SHADER_DIR), - g_defaults.shader_dir, + g_defaults.dir.shader, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), group_info.name, subgroup_info.name, @@ -5855,10 +5855,10 @@ static bool setting_append_list_directory_options( } #ifdef HAVE_OVERLAY CONFIG_DIR( - global->overlay_dir, + global->dir.overlay, menu_hash_to_str(MENU_LABEL_OVERLAY_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_DIRECTORY), - g_defaults.overlay_dir, + g_defaults.dir.overlay, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), group_info.name, subgroup_info.name, @@ -5871,10 +5871,10 @@ static bool setting_append_list_directory_options( SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); CONFIG_DIR( - global->osk_overlay_dir, + global->dir.osk_overlay, menu_hash_to_str(MENU_LABEL_OSK_OVERLAY_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_OSK_OVERLAY_DIRECTORY), - g_defaults.osk_overlay_dir, + g_defaults.dir.osk_overlay, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), group_info.name, subgroup_info.name, @@ -5952,7 +5952,7 @@ static bool setting_append_list_directory_options( SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); CONFIG_DIR( - global->savefile_dir, + global->dir.savefile, menu_hash_to_str(MENU_LABEL_SAVEFILE_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_SAVEFILE_DIRECTORY), "", @@ -5968,7 +5968,7 @@ static bool setting_append_list_directory_options( SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); CONFIG_DIR( - global->savestate_dir, + global->dir.savestate, menu_hash_to_str(MENU_LABEL_SAVESTATE_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_DIRECTORY), "", @@ -6115,7 +6115,7 @@ static bool setting_append_list_input_player_options( if ( settings->input.input_descriptor_label_show && (i < RARCH_FIRST_META_KEY) - && (global->has_set_input_descriptors) + && (global->has_set.input_descriptors) && (i != RARCH_TURBO_ENABLE) ) { diff --git a/menu/menu_shader.c b/menu/menu_shader.c index ede4fe10ff..047874104c 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -47,11 +47,11 @@ void menu_shader_manager_init(menu_handle_t *menu) shader = (struct video_shader*)menu->shader; - if (*global->core_specific_config_path + if (*global->path.core_specific_config && settings->core_specific_config) - config_path = global->core_specific_config_path; - else if (*global->config_path) - config_path = global->config_path; + config_path = global->path.core_specific_config; + else if (*global->path.config) + config_path = global->path.config; /* In a multi-config setting, we can't have * conflicts on menu.cgp/menu.glslp. */ @@ -236,9 +236,9 @@ void menu_shader_manager_save_preset( strlcpy(buffer, conf_path, sizeof(buffer)); } - if (*global->config_path) + if (*global->path.config) fill_pathname_basedir(config_directory, - global->config_path, sizeof(config_directory)); + global->path.config, sizeof(config_directory)); dirs[0] = settings->video.shader_dir; dirs[1] = settings->menu_config_directory; diff --git a/menu/menu_video.c b/menu/menu_video.c index ac07f7a1bb..91ed5424ad 100644 --- a/menu/menu_video.c +++ b/menu/menu_video.c @@ -129,7 +129,7 @@ void menu_video_frame_background( menu_display_set_viewport(); if ((settings->menu.pause_libretro - || !global->main_is_init || (global->core_type == CORE_TYPE_DUMMY)) + || !global->inited.main || (global->inited.core.type == CORE_TYPE_DUMMY)) && !force_transparency && texture) coords.color = color; diff --git a/netplay.c b/netplay.c index 114f332a3b..4983cc1ad2 100644 --- a/netplay.c +++ b/netplay.c @@ -1655,7 +1655,7 @@ bool init_netplay(void) settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - if (!global->netplay_enable) + if (!global->netplay.enable) return false; if (global->bsv.movie_start_playback) @@ -1666,24 +1666,24 @@ bool init_netplay(void) retro_set_default_callbacks(&cbs); - if (*global->netplay_server) + if (*global->netplay.server) { RARCH_LOG("Connecting to netplay host...\n"); - global->netplay_is_client = true; + global->netplay.is_client = true; } else RARCH_LOG("Waiting for client...\n"); driver->netplay_data = (netplay_t*)netplay_new( - global->netplay_is_client ? global->netplay_server : NULL, - global->netplay_port ? global->netplay_port : RARCH_DEFAULT_PORT, - global->netplay_sync_frames, &cbs, global->netplay_is_spectate, + global->netplay.is_client ? global->netplay.server : NULL, + global->netplay.port ? global->netplay.port : RARCH_DEFAULT_PORT, + global->netplay.sync_frames, &cbs, global->netplay.is_spectate, settings->username); if (driver->netplay_data) return true; - global->netplay_is_client = false; + global->netplay.is_client = false; RARCH_WARN("%s\n", msg_hash_to_str(MSG_NETPLAY_FAILED)); rarch_main_msg_queue_push_new( diff --git a/patch.c b/patch.c index 481fcf2a8f..e2eff32aec 100644 --- a/patch.c +++ b/patch.c @@ -518,42 +518,42 @@ error: static bool try_bps_patch(uint8_t **buf, ssize_t *size) { global_t *global = global_get_ptr(); - bool allow_bps = !global->ups_pref && !global->ips_pref; + bool allow_bps = !global->patch.ups_pref && !global->patch.ips_pref; if (!allow_bps) return false; - if (global->bps_name[0] == '\0') + if (global->name.bps[0] == '\0') return false; - return apply_patch_content(buf, size, "BPS", global->bps_name, + return apply_patch_content(buf, size, "BPS", global->name.bps, bps_apply_patch); } static bool try_ups_patch(uint8_t **buf, ssize_t *size) { global_t *global = global_get_ptr(); - bool allow_ups = !global->bps_pref && !global->ips_pref; + bool allow_ups = !global->patch.bps_pref && !global->patch.ips_pref; if (!allow_ups) return false; - if (global->ups_name[0] == '\0') + if (global->name.ups[0] == '\0') return false; - return apply_patch_content(buf, size, "UPS", global->ups_name, + return apply_patch_content(buf, size, "UPS", global->name.ups, ups_apply_patch); } static bool try_ips_patch(uint8_t **buf, ssize_t *size) { global_t *global = global_get_ptr(); - bool allow_ips = !global->ups_pref && !global->bps_pref; + bool allow_ips = !global->patch.ups_pref && !global->patch.bps_pref; if (!allow_ips) return false; - if (global->ips_name[0] == '\0') + if (global->name.ips[0] == '\0') return false; - return apply_patch_content(buf, size, "IPS", global->ips_name, + return apply_patch_content(buf, size, "IPS", global->name.ips, ips_apply_patch); } @@ -569,7 +569,7 @@ void patch_content(uint8_t **buf, ssize_t *size) { global_t *global = global_get_ptr(); - if (global->ips_pref + global->bps_pref + global->ups_pref > 1) + if (global->patch.ips_pref + global->patch.bps_pref + global->patch.ups_pref > 1) { RARCH_WARN("Several patches are explicitly defined, ignoring all ...\n"); return; diff --git a/record/record_driver.c b/record/record_driver.c index dfbf37e242..779a98d625 100644 --- a/record/record_driver.c +++ b/record/record_driver.c @@ -299,7 +299,7 @@ bool recording_init(void) if (!global->record.enable) return false; - if (global->core_type == CORE_TYPE_DUMMY) + if (global->inited.core.type == CORE_TYPE_DUMMY) { RARCH_WARN(msg_hash_to_str(MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED)); return false; diff --git a/retroarch.c b/retroarch.c index 557a2c85df..fce65e751d 100644 --- a/retroarch.c +++ b/retroarch.c @@ -245,8 +245,8 @@ static void set_basename(const char *path) char *dst = NULL; global_t *global = global_get_ptr(); - strlcpy(global->fullpath, path, sizeof(global->fullpath)); - strlcpy(global->basename, path, sizeof(global->basename)); + strlcpy(global->path.fullpath, path, sizeof(global->path.fullpath)); + strlcpy(global->name.base, path, sizeof(global->name.base)); #ifdef HAVE_COMPRESSION /* Removing extension is a bit tricky for compressed files. @@ -268,11 +268,11 @@ static void set_basename(const char *path) * directory then and the name of srm and states are meaningful. * */ - path_basedir(global->basename); - fill_pathname_dir(global->basename, path, "", sizeof(global->basename)); + path_basedir(global->name.base); + fill_pathname_dir(global->name.base, path, "", sizeof(global->name.base)); #endif - if ((dst = strrchr(global->basename, '.'))) + if ((dst = strrchr(global->name.base, '.'))) *dst = '\0'; } @@ -297,17 +297,17 @@ static void set_special_paths(char **argv, unsigned num_content) /* We defer SRAM path updates until we can resolve it. * It is more complicated for special content types. */ - if (!global->has_set_state_path) - fill_pathname_noext(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); + if (!global->has_set.state_path) + fill_pathname_noext(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); - if (path_is_directory(global->savestate_name)) + if (path_is_directory(global->name.savestate)) { - fill_pathname_dir(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); + fill_pathname_dir(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVESTATE_TO), - global->savestate_name); + global->name.savestate); } /* If this is already set, @@ -337,76 +337,79 @@ void set_paths_redirect(const char *path) (global_library_name_hash != MENU_VALUE_NO_CORE)) { /* per-core saves: append the library_name to the save location */ - if (settings->sort_savefiles_enable && global->savefile_dir[0] != '\0') + if (settings->sort_savefiles_enable && global->dir.savefile[0] != '\0') { - strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(global->savefile_dir)); + strlcpy(orig_savefile_dir,global->dir.savefile, + sizeof(orig_savefile_dir)); fill_pathname_dir( - global->savefile_dir, - global->savefile_dir, + global->dir.savefile, + global->dir.savefile, info->info.library_name, - sizeof(global->savefile_dir)); + sizeof(global->dir.savefile)); /* If path doesn't exist, try to create it, * if everything fails revert to the original path. */ - if(!path_is_directory(global->savefile_dir) && global->savestate_dir[0] != '\0') - if(!path_mkdir(global->savefile_dir)) - strlcpy(global->savefile_dir, + if(!path_is_directory(global->dir.savefile) && global->dir.savestate[0] != '\0') + if(!path_mkdir(global->dir.savefile)) + strlcpy(global->dir.savefile, orig_savefile_dir, - sizeof(global->savefile_dir)); + sizeof(global->dir.savefile)); } /* per-core states: append the library_name to the save location */ - if (settings->sort_savestates_enable && global->savefile_dir[0] != '\0') + if (settings->sort_savestates_enable && global->dir.savefile[0] != '\0') { strlcpy(orig_savestate_dir, - global->savestate_dir, - sizeof(global->savestate_dir)); - fill_pathname_dir(global->savestate_dir, - global->savestate_dir, + global->dir.savestate, + sizeof(orig_savestate_dir)); + fill_pathname_dir(global->dir.savestate, + global->dir.savestate, info->info.library_name, - sizeof(global->savestate_dir)); + sizeof(global->dir.savestate)); /* If path doesn't exist, try to create it. * If everything fails, revert to the original path. */ - if(!path_is_directory(global->savestate_dir)) - if(!path_mkdir(global->savestate_dir)) - strlcpy(global->savestate_dir, + if(!path_is_directory(global->dir.savestate)) + if(!path_mkdir(global->dir.savestate)) + strlcpy(global->dir.savestate, orig_savestate_dir, - sizeof(global->savestate_dir)); + sizeof(global->dir.savestate)); } } - if(path_is_directory(global->savefile_dir)) - strlcpy(global->savefile_name,global->savefile_dir,sizeof(global->savefile_dir)); + if(path_is_directory(global->dir.savefile)) + strlcpy(global->name.savefile, global->dir.savefile, + sizeof(global->name.savefile)); - if(path_is_directory(global->savestate_dir)) - strlcpy(global->savestate_name,global->savestate_dir,sizeof(global->savestate_dir)); + if(path_is_directory(global->dir.savestate)) + strlcpy(global->name.savestate, global->dir.savestate, + sizeof(global->name.savestate)); - if (path_is_directory(global->savefile_name)) + if (path_is_directory(global->name.savefile)) { - fill_pathname_dir(global->savefile_name, global->basename, - ".srm", sizeof(global->savefile_name)); + fill_pathname_dir(global->name.savefile, global->name.base, + ".srm", sizeof(global->name.savefile)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVEFILE_TO), - global->savefile_name); + global->name.savefile); } - if (path_is_directory(global->savestate_name)) + if (path_is_directory(global->name.savestate)) { - fill_pathname_dir(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); + fill_pathname_dir(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVESTATE_TO), - global->savestate_name); + global->name.savestate); } - if (path_is_directory(global->cheatfile_name)) + if (path_is_directory(global->name.cheatfile)) { - fill_pathname_dir(global->cheatfile_name, global->basename, - ".state", sizeof(global->cheatfile_name)); + fill_pathname_dir(global->name.cheatfile, global->name.base, + ".state", sizeof(global->name.cheatfile)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_CHEATFILE_TO), - global->cheatfile_name); + global->name.cheatfile); } } @@ -417,14 +420,14 @@ void rarch_set_paths(const char *path) set_basename(path); - if (!global->has_set_save_path) - fill_pathname_noext(global->savefile_name, global->basename, - ".srm", sizeof(global->savefile_name)); - if (!global->has_set_state_path) - fill_pathname_noext(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); - fill_pathname_noext(global->cheatfile_name, global->basename, - ".cht", sizeof(global->cheatfile_name)); + if (!global->has_set.save_path) + fill_pathname_noext(global->name.savefile, global->name.base, + ".srm", sizeof(global->name.savefile)); + if (!global->has_set.state_path) + fill_pathname_noext(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); + fill_pathname_noext(global->name.cheatfile, global->name.base, + ".cht", sizeof(global->name.cheatfile)); set_paths_redirect(path); } @@ -555,36 +558,36 @@ static void parse_input(int argc, char *argv[]) { NULL, 0, NULL, 0 } }; - global->libretro_no_content = false; - global->core_type = CORE_TYPE_PLAIN; + global->inited.core.no_content = false; + global->inited.core.type = CORE_TYPE_PLAIN; *global->subsystem = '\0'; - global->has_set_save_path = false; - global->has_set_state_path = false; - global->has_set_libretro = false; - global->has_set_libretro_directory = false; - global->has_set_verbosity = false; + global->has_set.save_path = false; + global->has_set.state_path = false; + global->has_set.libretro = false; + global->has_set.libretro_directory = false; + global->has_set.verbosity = false; - global->has_set_netplay_mode = false; - global->has_set_username = false; - global->has_set_netplay_ip_address = false; - global->has_set_netplay_delay_frames = false; - global->has_set_netplay_ip_port = false; + global->has_set.netplay_mode = false; + global->has_set.username = false; + global->has_set.netplay_ip_address = false; + global->has_set.netplay_delay_frames = false; + global->has_set.netplay_ip_port = false; - global->has_set_ups_pref = false; - global->has_set_bps_pref = false; - global->has_set_ips_pref = false; - global->ups_pref = false; - global->bps_pref = false; - global->ips_pref = false; - *global->ups_name = '\0'; - *global->bps_name = '\0'; - *global->ips_name = '\0'; + global->has_set.ups_pref = false; + global->has_set.bps_pref = false; + global->has_set.ips_pref = false; + global->patch.ups_pref = false; + global->patch.bps_pref = false; + global->patch.ips_pref = false; + *global->name.ups = '\0'; + *global->name.bps = '\0'; + *global->name.ips = '\0'; global->overrides_active = false; if (argc < 2) { - global->core_type = CORE_TYPE_DUMMY; + global->inited.core.type = CORE_TYPE_DUMMY; return; } @@ -627,7 +630,7 @@ static void parse_input(int argc, char *argv[]) rarch_fail(1, "parse_input()"); } settings->input.libretro_device[port - 1] = id; - global->has_set_libretro_device[port - 1] = true; + global->has_set.libretro_device[port - 1] = true; break; } @@ -640,13 +643,13 @@ static void parse_input(int argc, char *argv[]) rarch_fail(1, "parse_input()"); } settings->input.libretro_device[port - 1] = RETRO_DEVICE_ANALOG; - global->has_set_libretro_device[port - 1] = true; + global->has_set.libretro_device[port - 1] = true; break; case 's': - strlcpy(global->savefile_name, optarg, - sizeof(global->savefile_name)); - global->has_set_save_path = true; + strlcpy(global->name.savefile, optarg, + sizeof(global->name.savefile)); + global->has_set.save_path = true; break; case 'f': @@ -654,14 +657,14 @@ static void parse_input(int argc, char *argv[]) break; case 'S': - strlcpy(global->savestate_name, optarg, - sizeof(global->savestate_name)); - global->has_set_state_path = true; + strlcpy(global->name.savestate, optarg, + sizeof(global->name.savestate)); + global->has_set.state_path = true; break; case 'v': global->verbosity = true; - global->has_set_verbosity = true; + global->has_set.verbosity = true; break; case 'N': @@ -673,12 +676,12 @@ static void parse_input(int argc, char *argv[]) rarch_fail(1, "parse_input()"); } settings->input.libretro_device[port - 1] = RETRO_DEVICE_NONE; - global->has_set_libretro_device[port - 1] = true; + global->has_set.libretro_device[port - 1] = true; break; case 'c': - strlcpy(global->config_path, optarg, - sizeof(global->config_path)); + strlcpy(global->path.config, optarg, + sizeof(global->path.config)); break; case 'r': @@ -694,15 +697,15 @@ static void parse_input(int argc, char *argv[]) *settings->libretro = '\0'; strlcpy(settings->libretro_directory, optarg, sizeof(settings->libretro_directory)); - global->has_set_libretro = true; - global->has_set_libretro_directory = true; + global->has_set.libretro = true; + global->has_set.libretro_directory = true; RARCH_WARN("Using old --libretro behavior. Setting libretro_directory to \"%s\" instead.\n", optarg); } else { strlcpy(settings->libretro, optarg, sizeof(settings->libretro)); - global->has_set_libretro = true; + global->has_set.libretro = true; } break; #endif @@ -717,13 +720,13 @@ static void parse_input(int argc, char *argv[]) case 'M': if (!strcmp(optarg, "noload-nosave")) { - global->sram_load_disable = true; - global->sram_save_disable = true; + global->sram.load_disable = true; + global->sram.save_disable = true; } else if (!strcmp(optarg, "noload-save")) - global->sram_load_disable = true; + global->sram.load_disable = true; else if (!strcmp(optarg, "load-nosave")) - global->sram_save_disable = true; + global->sram.save_disable = true; else if (strcmp(optarg, "load-save") != 0) { RARCH_ERR("Invalid argument in --sram-mode.\n"); @@ -734,47 +737,47 @@ static void parse_input(int argc, char *argv[]) #ifdef HAVE_NETPLAY case 'H': - global->has_set_netplay_ip_address = true; - global->netplay_enable = true; - *global->netplay_server = '\0'; + global->has_set.netplay_ip_address = true; + global->netplay.enable = true; + *global->netplay.server = '\0'; break; case 'C': - global->has_set_netplay_ip_address = true; - global->netplay_enable = true; - strlcpy(global->netplay_server, optarg, - sizeof(global->netplay_server)); + global->has_set.netplay_ip_address = true; + global->netplay.enable = true; + strlcpy(global->netplay.server, optarg, + sizeof(global->netplay.server)); break; case 'F': - global->netplay_sync_frames = strtol(optarg, NULL, 0); - global->has_set_netplay_delay_frames = true; + global->netplay.sync_frames = strtol(optarg, NULL, 0); + global->has_set.netplay_delay_frames = true; break; #endif case RA_OPT_BPS: - strlcpy(global->bps_name, optarg, - sizeof(global->bps_name)); - global->bps_pref = true; - global->has_set_bps_pref = true; + strlcpy(global->name.bps, optarg, + sizeof(global->name.bps)); + global->patch.bps_pref = true; + global->has_set.bps_pref = true; break; case 'U': - strlcpy(global->ups_name, optarg, - sizeof(global->ups_name)); - global->ups_pref = true; - global->has_set_ups_pref = true; + strlcpy(global->name.ups, optarg, + sizeof(global->name.ups)); + global->patch.ups_pref = true; + global->has_set.ups_pref = true; break; case RA_OPT_IPS: - strlcpy(global->ips_name, optarg, - sizeof(global->ips_name)); - global->ips_pref = true; - global->has_set_ips_pref = true; + strlcpy(global->name.ips, optarg, + sizeof(global->name.ips)); + global->patch.ips_pref = true; + global->has_set.ips_pref = true; break; case RA_OPT_NO_PATCH: - global->block_patch = true; + global->patch.block_patch = true; break; case 'D': @@ -784,23 +787,23 @@ static void parse_input(int argc, char *argv[]) break; case RA_OPT_MENU: - global->core_type = CORE_TYPE_DUMMY; + global->inited.core.type = CORE_TYPE_DUMMY; break; #ifdef HAVE_NETPLAY case RA_OPT_PORT: - global->has_set_netplay_ip_port = true; - global->netplay_port = strtoul(optarg, NULL, 0); + global->has_set.netplay_ip_port = true; + global->netplay.port = strtoul(optarg, NULL, 0); break; case RA_OPT_SPECTATE: - global->has_set_netplay_mode = true; - global->netplay_is_spectate = true; + global->has_set.netplay_mode = true; + global->netplay.is_spectate = true; break; #endif case RA_OPT_NICK: - global->has_set_username = true; + global->has_set.username = true; strlcpy(settings->username, optarg, sizeof(settings->username)); break; @@ -815,8 +818,8 @@ static void parse_input(int argc, char *argv[]) #endif case RA_OPT_APPENDCONFIG: - strlcpy(global->append_config_path, optarg, - sizeof(global->append_config_path)); + strlcpy(global->path.append_config, optarg, + sizeof(global->path.append_config)); break; case RA_OPT_SIZE: @@ -872,7 +875,7 @@ static void parse_input(int argc, char *argv[]) } } - if (global->core_type == CORE_TYPE_DUMMY) + if (global->inited.core.type == CORE_TYPE_DUMMY) { if (optind < argc) { @@ -885,19 +888,19 @@ static void parse_input(int argc, char *argv[]) else if (*global->subsystem && optind < argc) set_special_paths(argv + optind, argc - optind); else - global->libretro_no_content = true; + global->inited.core.no_content = true; /* Copy SRM/state dirs used, so they can be reused on reentrancy. */ - if (global->has_set_save_path && - path_is_directory(global->savefile_name)) - strlcpy(global->savefile_dir, global->savefile_name, - sizeof(global->savefile_dir)); + if (global->has_set.save_path && + path_is_directory(global->name.savefile)) + strlcpy(global->dir.savefile, global->name.savefile, + sizeof(global->dir.savefile)); - if (global->has_set_state_path && - path_is_directory(global->savestate_name)) - strlcpy(global->savestate_dir, global->savestate_name, - sizeof(global->savestate_dir)); + if (global->has_set.state_path && + path_is_directory(global->name.savestate)) + strlcpy(global->dir.savestate, global->name.savestate, + sizeof(global->dir.savestate)); } static void rarch_init_savefile_paths(void) @@ -926,7 +929,7 @@ static void rarch_init_savefile_paths(void) global->subsystem_fullpaths ? global->subsystem_fullpaths->size : 0); - bool use_sram_dir = path_is_directory(global->savefile_dir); + bool use_sram_dir = path_is_directory(global->dir.savefile); for (i = 0; i < num_content; i++) { @@ -944,7 +947,7 @@ static void rarch_init_savefile_paths(void) if (use_sram_dir) { /* Redirect content fullpath to save directory. */ - strlcpy(path, global->savefile_dir, sizeof(path)); + strlcpy(path, global->dir.savefile, sizeof(path)); fill_pathname_dir(path, global->subsystem_fullpaths->elems[i].data, ext, sizeof(path)); @@ -961,16 +964,16 @@ static void rarch_init_savefile_paths(void) } /* Let other relevant paths be inferred from the main SRAM location. */ - if (!global->has_set_save_path) - fill_pathname_noext(global->savefile_name, global->basename, ".srm", - sizeof(global->savefile_name)); - if (path_is_directory(global->savefile_name)) + if (!global->has_set.save_path) + fill_pathname_noext(global->name.savefile, global->name.base, ".srm", + sizeof(global->name.savefile)); + if (path_is_directory(global->name.savefile)) { - fill_pathname_dir(global->savefile_name, global->basename, ".srm", - sizeof(global->savefile_name)); + fill_pathname_dir(global->name.savefile, global->name.base, ".srm", + sizeof(global->name.savefile)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVEFILE_TO), - global->savefile_name); + global->name.savefile); } } else @@ -979,12 +982,12 @@ static void rarch_init_savefile_paths(void) char savefile_name_rtc[PATH_MAX_LENGTH] = {0}; attr.i = RETRO_MEMORY_SAVE_RAM; - string_list_append(global->savefiles, global->savefile_name, attr); + string_list_append(global->savefiles, global->name.savefile, attr); /* Infer .rtc save path from save ram path. */ attr.i = RETRO_MEMORY_RTC; fill_pathname(savefile_name_rtc, - global->savefile_name, ".rtc", sizeof(savefile_name_rtc)); + global->name.savefile, ".rtc", sizeof(savefile_name_rtc)); string_list_append(global->savefiles, savefile_name_rtc, attr); } } @@ -994,21 +997,21 @@ void rarch_fill_pathnames(void) global_t *global = global_get_ptr(); rarch_init_savefile_paths(); - fill_pathname(global->bsv.movie_path, global->savefile_name, "", + strlcpy(global->bsv.movie_path, global->name.savefile, sizeof(global->bsv.movie_path)); - if (!*global->basename) + if (!*global->name.base) return; - if (!*global->ups_name) - fill_pathname_noext(global->ups_name, global->basename, ".ups", - sizeof(global->ups_name)); - if (!*global->bps_name) - fill_pathname_noext(global->bps_name, global->basename, ".bps", - sizeof(global->bps_name)); - if (!*global->ips_name) - fill_pathname_noext(global->ips_name, global->basename, ".ips", - sizeof(global->ips_name)); + if (!*global->name.ups) + fill_pathname_noext(global->name.ups, global->name.base, ".ups", + sizeof(global->name.ups)); + if (!*global->name.bps) + fill_pathname_noext(global->name.bps, global->name.base, ".bps", + sizeof(global->name.bps)); + if (!*global->name.ips) + fill_pathname_noext(global->name.ips, global->name.base, ".ips", + sizeof(global->name.ips)); } static bool init_state(void) @@ -1029,7 +1032,7 @@ static void main_clear_state_drivers(void) bool inited = false; if (!global) return; - inited = global->main_is_init; + inited = global->inited.main; if (!inited) return; @@ -1181,8 +1184,8 @@ int rarch_main_init(int argc, char *argv[]) RARCH_ERR("Fatal error received in: \"%s\"\n", global->error_string); return sjlj_ret; } - global->error_in_init = true; - global->log_file = stderr; + global->inited.error = true; + global->log_file = stderr; parse_input(argc, argv); if (global->verbosity) @@ -1209,15 +1212,15 @@ int rarch_main_init(int argc, char *argv[]) if (settings && (settings->multimedia.builtin_mediaplayer_enable || settings->multimedia.builtin_imageviewer_enable)) { - switch (rarch_path_is_media_type(global->fullpath)) + switch (rarch_path_is_media_type(global->path.fullpath)) { case RARCH_CONTENT_MOVIE: case RARCH_CONTENT_MUSIC: if (settings->multimedia.builtin_mediaplayer_enable) { #ifdef HAVE_FFMPEG - global->has_set_libretro = false; - global->core_type = CORE_TYPE_FFMPEG; + global->has_set.libretro = false; + global->inited.core.type = CORE_TYPE_FFMPEG; #endif } break; @@ -1225,8 +1228,8 @@ int rarch_main_init(int argc, char *argv[]) case RARCH_CONTENT_IMAGE: if (settings->multimedia.builtin_imageviewer_enable) { - global->has_set_libretro = false; - global->core_type = CORE_TYPE_IMAGEVIEWER; + global->has_set.libretro = false; + global->inited.core.type = CORE_TYPE_IMAGEVIEWER; } break; #endif @@ -1236,7 +1239,7 @@ int rarch_main_init(int argc, char *argv[]) } } - init_libretro_sym(global->core_type); + init_libretro_sym(global->inited.core.type); rarch_system_info_init(); init_drivers_pre(); @@ -1278,14 +1281,14 @@ int rarch_main_init(int argc, char *argv[]) } #endif - global->error_in_init = false; - global->main_is_init = true; + global->inited.error = false; + global->inited.main = true; return 0; error: event_command(EVENT_CMD_CORE_DEINIT); - global->main_is_init = false; + global->inited.main = false; return 1; } @@ -1476,7 +1479,7 @@ void rarch_main_deinit(void) event_command(EVENT_CMD_NETPLAY_DEINIT); event_command(EVENT_CMD_COMMAND_DEINIT); - if (global->use_sram) + if (global->sram.use) event_command(EVENT_CMD_AUTOSAVE_DEINIT); event_command(EVENT_CMD_RECORD_DEINIT); @@ -1494,7 +1497,7 @@ void rarch_main_deinit(void) event_command(EVENT_CMD_SUBSYSTEM_FULLPATHS_DEINIT); event_command(EVENT_CMD_SAVEFILES_DEINIT); - global->main_is_init = false; + global->inited.main = false; } /** @@ -1573,7 +1576,7 @@ int rarch_defer_core(core_info_list_t *core_info, const char *dir, if (menu_label_hash == MENU_LABEL_LOAD_CONTENT) { - info = (const core_info_t*)&global->core_info_current; + info = (const core_info_t*)&global->core_info.current; if (info) { @@ -1589,7 +1592,7 @@ int rarch_defer_core(core_info_list_t *core_info, const char *dir, if (supported != 1) return 0; - strlcpy(global->fullpath, s, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, s, sizeof(global->path.fullpath)); if (path_file_exists(new_core_path)) strlcpy(settings->libretro, new_core_path, @@ -1624,13 +1627,13 @@ bool rarch_replace_config(const char *path) /* If config file to be replaced is the same as the * current config file, exit. */ - if (!strcmp(path, global->config_path)) + if (!strcmp(path, global->path.config)) return false; - if (settings->config_save_on_exit && *global->config_path) - config_save_file(global->config_path); + if (settings->config_save_on_exit && *global->path.config) + config_save_file(global->path.config); - strlcpy(global->config_path, path, sizeof(global->config_path)); + strlcpy(global->path.config, path, sizeof(global->path.config)); global->block_config_read = false; *settings->libretro = '\0'; /* Load core in new config. */ diff --git a/runloop.c b/runloop.c index a22a64097b..a3f689f0fc 100644 --- a/runloop.c +++ b/runloop.c @@ -423,7 +423,7 @@ static void do_state_check_menu_toggle(settings_t *settings, global_t *global) { if (menu_driver_alive()) { - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); return; } @@ -459,7 +459,7 @@ static int do_pre_state_checks(settings_t *settings, event_command(EVENT_CMD_GRAB_MOUSE_TOGGLE); #ifdef HAVE_MENU - if (cmd->menu_pressed || (global->core_type == CORE_TYPE_DUMMY)) + if (cmd->menu_pressed || (global->inited.core.type == CORE_TYPE_DUMMY)) do_state_check_menu_toggle(settings, global); #endif @@ -751,7 +751,7 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, if (!driver->input || !driver->input_data) return 0; - global->turbo_count++; + global->turbo.count++; driver->block_libretro_input = check_block_hotkey(driver, settings, driver->input->key_pressed( @@ -764,13 +764,13 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, input_push_analog_dpad(settings->input.autoconf_binds[i], settings->input.analog_dpad_mode[i]); - global->turbo_frame_enable[i] = 0; + global->turbo.frame_enable[i] = 0; } if (!driver->block_libretro_input) { for (i = 0; i < settings->input.max_users; i++) - global->turbo_frame_enable[i] = input_driver_state(binds, + global->turbo.frame_enable[i] = input_driver_state(binds, i, RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE); } diff --git a/runloop.h b/runloop.h index 1fb7dc9242..9b914e3205 100644 --- a/runloop.h +++ b/runloop.h @@ -74,45 +74,65 @@ typedef struct global struct string_list *temporary_content; - core_info_list_t *core_info; - core_info_t *core_info_current; + struct + { + core_info_list_t *list; + core_info_t *current; + } core_info; uint32_t content_crc; - char gb_rom_path[PATH_MAX_LENGTH]; - char bsx_rom_path[PATH_MAX_LENGTH]; - char sufami_rom_path[2][PATH_MAX_LENGTH]; - bool has_set_input_descriptors; - bool has_set_save_path; - bool has_set_state_path; - bool has_set_libretro_device[MAX_USERS]; - bool has_set_libretro; - bool has_set_libretro_directory; - bool has_set_verbosity; + struct + { + char gb_rom[PATH_MAX_LENGTH]; + char bsx_rom[PATH_MAX_LENGTH]; + char sufami_rom[2][PATH_MAX_LENGTH]; + /* Config associated with global "default" config. */ + char config[PATH_MAX_LENGTH]; + char append_config[PATH_MAX_LENGTH]; + char input_config[PATH_MAX_LENGTH]; +#ifdef HAVE_FILE_LOGGER + char default_log[PATH_MAX_LENGTH]; +#endif + char fullpath[PATH_MAX_LENGTH]; + /* Config file associated with per-core configs. */ + char core_specific_config[PATH_MAX_LENGTH]; + } path; - bool has_set_netplay_mode; - bool has_set_username; - bool has_set_netplay_ip_address; - bool has_set_netplay_delay_frames; - bool has_set_netplay_ip_port; + struct + { + bool input_descriptors; + bool save_path; + bool state_path; + bool libretro_device[MAX_USERS]; + bool libretro; + bool libretro_directory; + bool verbosity; + + bool netplay_mode; + bool username; + bool netplay_ip_address; + bool netplay_delay_frames; + bool netplay_ip_port; + + bool ups_pref; + bool bps_pref; + bool ips_pref; + } has_set; - bool has_set_ups_pref; - bool has_set_bps_pref; - bool has_set_ips_pref; bool overrides_active; - /* Config associated with global "default" config. */ - char config_path[PATH_MAX_LENGTH]; - char append_config_path[PATH_MAX_LENGTH]; - char input_config_path[PATH_MAX_LENGTH]; - -#ifdef HAVE_FILE_LOGGER - char default_log_file[PATH_MAX_LENGTH]; -#endif - - char basename[PATH_MAX_LENGTH]; - char fullpath[PATH_MAX_LENGTH]; + struct + { + char base[PATH_MAX_LENGTH]; + char savefile[PATH_MAX_LENGTH]; + char savestate[PATH_MAX_LENGTH]; + char cheatfile[PATH_MAX_LENGTH]; + char ups[PATH_MAX_LENGTH]; + char bps[PATH_MAX_LENGTH]; + char ips[PATH_MAX_LENGTH]; + } name; /* A list of save types and associated paths for all content. */ struct string_list *savefiles; @@ -121,26 +141,24 @@ typedef struct global char subsystem[PATH_MAX_LENGTH]; struct string_list *subsystem_fullpaths; - char savefile_name[PATH_MAX_LENGTH]; - char savestate_name[PATH_MAX_LENGTH]; - char cheatfile_name[PATH_MAX_LENGTH]; - - /* Used on reentrancy to use a savestate dir. */ - char savefile_dir[PATH_MAX_LENGTH]; - char savestate_dir[PATH_MAX_LENGTH]; - + struct + { + /* Used on reentrancy to use a savestate dir. */ + char savefile[PATH_MAX_LENGTH]; + char savestate[PATH_MAX_LENGTH]; #ifdef HAVE_OVERLAY - char overlay_dir[PATH_MAX_LENGTH]; - char osk_overlay_dir[PATH_MAX_LENGTH]; + char overlay[PATH_MAX_LENGTH]; + char osk_overlay[PATH_MAX_LENGTH]; #endif + } dir; - bool block_patch; - bool ups_pref; - bool bps_pref; - bool ips_pref; - char ups_name[PATH_MAX_LENGTH]; - char bps_name[PATH_MAX_LENGTH]; - char ips_name[PATH_MAX_LENGTH]; + struct + { + bool block_patch; + bool ups_pref; + bool bps_pref; + bool ips_pref; + } patch; struct { @@ -180,28 +198,39 @@ typedef struct global bool movie_end; } bsv; - bool sram_load_disable; - bool sram_save_disable; - bool use_sram; - + struct + { + bool load_disable; + bool save_disable; + bool use; + } sram; /* Turbo support. */ - bool turbo_frame_enable[MAX_USERS]; - uint16_t turbo_enable[MAX_USERS]; - unsigned turbo_count; + struct + { + bool frame_enable[MAX_USERS]; + uint16_t enable[MAX_USERS]; + unsigned count; + } turbo; /* Autosave support. */ - autosave_t **autosave; - unsigned num_autosave; + struct + { + autosave_t **list; + unsigned num; + } autosave; #ifdef HAVE_NETPLAY /* Netplay. */ - char netplay_server[PATH_MAX_LENGTH]; - bool netplay_enable; - bool netplay_is_client; - bool netplay_is_spectate; - unsigned netplay_sync_frames; - unsigned netplay_port; + struct + { + char server[PATH_MAX_LENGTH]; + bool enable; + bool is_client; + bool is_spectate; + unsigned sync_frames; + unsigned port; + } netplay; #endif /* Recording. */ @@ -275,18 +304,20 @@ typedef struct global * will write to this file. */ FILE *log_file; - bool main_is_init; - bool content_is_init; - bool error_in_init; - char error_string[PATH_MAX_LENGTH]; + struct + { + bool main; + bool content; + bool error; + struct + { + bool no_content; + enum rarch_core_type type; + } core; + } inited; + jmp_buf error_sjlj_context; - - bool libretro_no_content; - enum rarch_core_type core_type; - - /* Config file associated with per-core configs. */ - char core_specific_config_path[PATH_MAX_LENGTH]; - + char error_string[PATH_MAX_LENGTH]; retro_keyboard_event_t frontend_key_event; } global_t; diff --git a/screenshot.c b/screenshot.c index f5beade3c4..44793c15e7 100644 --- a/screenshot.c +++ b/screenshot.c @@ -203,7 +203,7 @@ static bool take_screenshot_viewport(void) if (!*settings->screenshot_directory) { - fill_pathname_basedir(screenshot_path, global->basename, + fill_pathname_basedir(screenshot_path, global->name.base, sizeof(screenshot_path)); screenshot_dir = screenshot_path; } @@ -237,7 +237,7 @@ static bool take_screenshot_raw(void) if (!*settings->screenshot_directory) { - fill_pathname_basedir(screenshot_path, global->basename, + fill_pathname_basedir(screenshot_path, global->name.base, sizeof(screenshot_path)); screenshot_dir = screenshot_path; } @@ -268,7 +268,7 @@ bool take_screenshot(void) (const struct retro_hw_render_callback*)video_driver_callback(); /* No way to infer screenshot directory. */ - if ((!*settings->screenshot_directory) && (!*global->basename)) + if ((!*settings->screenshot_directory) && (!*global->name.base)) return false; viewport_read = (settings->video.gpu_screenshot || diff --git a/tasks/task_http.c b/tasks/task_http.c index 73af83fca5..125275c6fd 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -230,7 +230,7 @@ static int cb_update_databases(void *data, size_t len) static int cb_update_overlays(void *data, size_t len) { global_t *global = global_get_ptr(); - return cb_generic_download(data, len, global->overlay_dir); + return cb_generic_download(data, len, global->dir.overlay); } static int cb_update_cheats(void *data, size_t len) From 0d1496d691d86a5245ed5b1b20f031b526b6374c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 17:21:37 +0200 Subject: [PATCH 079/822] (Cocoa) Some buildfixes --- ui/drivers/ui_cocoa.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 420845a825..30adf86ed2 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -246,7 +246,7 @@ static void poll_iteration(void) NSApplicationTerminateReply reply = NSTerminateNow; global_t *global = global_get_ptr(); - if (global && global->main_is_init) + if (global && global->inited.main) reply = NSTerminateCancel; ui_companion_event_command(EVENT_CMD_QUIT); @@ -264,7 +264,7 @@ static void poll_iteration(void) const char *core_name = global ? global->menu.info.library_name : NULL; if (global) - strlcpy(global->fullpath, __core.UTF8String, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, __core.UTF8String, sizeof(global->path.fullpath)); if (core_name) ui_companion_event_command(EVENT_CMD_LOAD_CONTENT); @@ -300,7 +300,7 @@ static void poll_iteration(void) if (menu->load_no_content && settings->core.set_supports_no_game_enable) { - *global->fullpath = '\0'; + *global->path.fullpath = '\0'; menu_common_load_content(false, CORE_TYPE_PLAIN); } } @@ -330,7 +330,7 @@ static void poll_iteration(void) const char *core_name = global ? global->menu.info.library_name : NULL; if (global) - strlcpy(global->fullpath, __core.UTF8String, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, __core.UTF8String, sizeof(global->path.fullpath)); if (core_name) ui_companion_event_command(EVENT_CMD_LOAD_CONTENT); From 1faa62e9020ea62746c078c8f4b1773df36656f4 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 27 Jul 2015 17:22:43 +0200 Subject: [PATCH 080/822] Remove two unused variables --- frontend/frontend.c | 1 - retroarch.c | 1 - 2 files changed, 2 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 612caa50d0..5c17f59110 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -38,7 +38,6 @@ void main_exit_save_config(void) { settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - rarch_system_info_t *info = rarch_system_info_get_ptr(); if (settings->config_save_on_exit && *global->path.config) { diff --git a/retroarch.c b/retroarch.c index fce65e751d..ef1a4268bc 100644 --- a/retroarch.c +++ b/retroarch.c @@ -415,7 +415,6 @@ void set_paths_redirect(const char *path) void rarch_set_paths(const char *path) { - settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); set_basename(path); From 8a56d6d67defa614adda49dc47f3c5a862e8f612 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 27 Jul 2015 17:24:25 +0200 Subject: [PATCH 081/822] Remove unused variables --- command_event.c | 2 +- menu/menu_input.c | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/command_event.c b/command_event.c index 840be2c942..4d2cc94a8e 100644 --- a/command_event.c +++ b/command_event.c @@ -534,7 +534,7 @@ static void event_deinit_core(bool reinit) { global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); - rarch_system_info_t *info = rarch_system_info_get_ptr(); + pretro_unload_game(); pretro_deinit(); diff --git a/menu/menu_input.c b/menu/menu_input.c index 1aa0376d14..215ac15f05 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -220,9 +220,8 @@ void menu_input_key_event(bool down, unsigned keycode, static void menu_input_poll_bind_state(struct menu_bind_state *state, unsigned port) { - unsigned i, b, a, h; + unsigned b, a, h; const input_device_driver_t *joypad = input_driver_get_joypad_driver(); - settings_t *settings = config_get_ptr(); if (!state) return; @@ -263,9 +262,8 @@ static void menu_input_poll_bind_state(struct menu_bind_state *state, unsigned p static void menu_input_poll_bind_get_rested_axes(struct menu_bind_state *state, unsigned port) { - unsigned i, a; + unsigned a; const input_device_driver_t *joypad = input_driver_get_joypad_driver(); - settings_t *settings = config_get_ptr(); if (!state) return; From e9ea6b1584d71b215e2ce02530bac2c74b90cd81 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 17:27:16 +0200 Subject: [PATCH 082/822] Change rules for append_plugs --- audio/audio_dsp_filter.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/audio/audio_dsp_filter.c b/audio/audio_dsp_filter.c index c26dc1ba15..c3963627b5 100644 --- a/audio/audio_dsp_filter.c +++ b/audio/audio_dsp_filter.c @@ -247,9 +247,11 @@ rarch_dsp_filter_t *rarch_dsp_filter_new( goto error; #endif -#if defined(HAVE_DYLIB) +#if !defined(EMSCRIPTEN) +#if defined(HAVE_DYLIB) || defined(RARCH_CONSOLE) if (!append_plugs(dsp, plugs)) goto error; +#endif #endif if (plugs) From e829c1802e39c1a2a59cfd083573402f3e3866fe Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 17:28:13 +0200 Subject: [PATCH 083/822] Fix menu_hash_es.c if HAVE_NETWORKING is not defined - too many arguments passed --- menu/intl/menu_hash_es.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index f567f4da3b..f9578e3b0b 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -2053,8 +2053,6 @@ int menu_hash_get_help_es(uint32_t hash, char *s, size_t len) "Puedes conseguir ncleos si los\n" "trasladas a mano en la carpeta\n" "'%s'.", - menu_hash_to_str(MENU_LABEL_VALUE_ONLINE_UPDATER), - menu_hash_to_str(MENU_LABEL_VALUE_CORE_UPDATER_LIST), menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH) #endif ); From ad3a53520dddd45e9d310e5bafb914d47537dd07 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 19:28:41 +0200 Subject: [PATCH 084/822] Cleanups --- frontend/drivers/platform_ps3.c | 99 +++++++++++++++------------------ 1 file changed, 46 insertions(+), 53 deletions(-) diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c index 07120213be..0f28c2710f 100644 --- a/frontend/drivers/platform_ps3.c +++ b/frontend/drivers/platform_ps3.c @@ -54,6 +54,7 @@ SYS_PROCESS_PARAM(1001, 0x200000) static bool multiman_detected = false; #endif +#ifndef IS_SALAMANDER static bool exit_spawn = false; static bool exitspawn_start_game = false; @@ -61,6 +62,7 @@ static void frontend_ps3_shutdown(bool unused) { sys_process_exit(0); } +#endif #ifdef HAVE_SYSUTILS static void callback_sysutil_exit(uint64_t status, @@ -320,52 +322,59 @@ static void frontend_ps3_deinit(void *data) #endif } +#ifndef IS_SALAMANDER static void frontend_ps3_set_fork(bool exit, bool start_game) { exit_spawn = exitspawn; exitspawn_start_game = start_game; } - -static void frontend_ps3_exec(const char *path, bool should_load_game) -{ - unsigned i; - char spawn_data[256] = {0}; - - (void)should_load_game; - -#ifndef IS_SALAMANDER - global_t *global = global_get_ptr(); - bool original_verbose = global->verbosity; - char game_path[256] = {0}; - - global->verbosity = true; - - game_path[0] = '\0'; #endif - RARCH_LOG("Attempt to load executable: [%s].\n", path); +static int frontend_ps3_exec_exitspawn(const char *path, + char const *argv[], char const *envp[]) +{ + int ret; + unsigned i; + char spawn_data[256]; + SceNpDrmKey *license_data = NULL; for(i = 0; i < sizeof(spawn_data); ++i) spawn_data[i] = i & 0xff; - SceNpDrmKey * k_licensee = NULL; - int ret; -#ifdef IS_SALAMANDER - const char * const spawn_argv[] = { NULL}; - - ret = sceNpDrmProcessExitSpawn2(k_licensee, path, - (const char** const)spawn_argv, NULL, (sys_addr_t)spawn_data, + ret = sceNpDrmProcessExitSpawn2(license_data, path, + (const char** const)argv, envp, (sys_addr_t)spawn_data, 256, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); if(ret < 0) { RARCH_WARN("SELF file is not of NPDRM type, trying another approach to boot it...\n"); - sys_game_process_exitspawn(path, (const char** const)spawn_argv, - NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); + sys_game_process_exitspawn(path, (const char** const)argv, + envp, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); } -#else + + return ret; +} + +static void frontend_ps3_exec(const char *path, bool should_load_game) +{ + int ret = 0; + + (void)should_load_game; + (void)ret; + +#ifndef IS_SALAMANDER + global_t *global = global_get_ptr(); + bool original_verbose = global->verbosity; + + global->verbosity = true; +#endif + + RARCH_LOG("Attempt to load executable: [%s].\n", path); + +#ifndef IS_SALAMANDER if (should_load_game && global->path.fullpath[0] != '\0') { + char game_path[256]; strlcpy(game_path, global->path.fullpath, sizeof(game_path)); const char * const spawn_argv[] = { @@ -373,33 +382,15 @@ static void frontend_ps3_exec(const char *path, bool should_load_game) NULL }; - ret = sceNpDrmProcessExitSpawn2(k_licensee, path, - (const char** const)spawn_argv, NULL, - (sys_addr_t)spawn_data, 256, 1000, - SYS_PROCESS_PRIMARY_STACK_SIZE_1M); - - if(ret < 0) - { - RARCH_WARN("SELF file is not of NPDRM type, trying another approach to boot it...\n"); - sys_game_process_exitspawn(path, (const char** const)spawn_argv, - NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); - } + ret = frontend_ps3_exec_exitspawn(path, + (const char** const)spawn_argv, NULL); } else - { - const char * const spawn_argv[] = {NULL}; - ret = sceNpDrmProcessExitSpawn2(k_licensee, path, - (const char** const)spawn_argv, NULL, (sys_addr_t)spawn_data, - 256, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); - - if(ret < 0) - { - RARCH_WARN("SELF file is not of NPDRM type, trying another approach to boot it...\n"); - sys_game_process_exitspawn(path, (const char** const)spawn_argv, - NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); - } - } #endif + { + ret = frontend_ps3_exec_exitspawn(path, + NULL, NULL); + } sceNpTerm(); sys_net_finalize_network(); @@ -445,8 +436,6 @@ static void frontend_ps3_exitspawn(char *core_path, size_t core_path_size) global->verbosity = original_verbose; #endif #endif - - return; } static int frontend_ps3_get_rating(void) @@ -498,7 +487,11 @@ frontend_ctx_driver_t frontend_ctx_ps3 = { frontend_ps3_exitspawn, NULL, /* process_args */ frontend_ps3_exec, +#ifdef IS_SALAMANDER + NULL, +#else frontend_ps3_set_fork, +#endif NULL, /* shutdown */ NULL, /* get_name */ NULL, /* get_os */ From 4410c52d68b74a89355f143c5f7d6898b0f0cc44 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 27 Jul 2015 20:12:24 +0200 Subject: [PATCH 085/822] Use sceNpDrmProcessExitSpawn instead of sceNpDrmProcessExitspawn2 - makes it work --- frontend/drivers/platform_ps3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c index 0f28c2710f..12ae4aafbd 100644 --- a/frontend/drivers/platform_ps3.c +++ b/frontend/drivers/platform_ps3.c @@ -341,7 +341,7 @@ static int frontend_ps3_exec_exitspawn(const char *path, for(i = 0; i < sizeof(spawn_data); ++i) spawn_data[i] = i & 0xff; - ret = sceNpDrmProcessExitSpawn2(license_data, path, + ret = sceNpDrmProcessExitSpawn(license_data, path, (const char** const)argv, envp, (sys_addr_t)spawn_data, 256, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); From 103987fab831ebe34911ede3b37eef22e1355a21 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 28 Jul 2015 01:02:32 +0200 Subject: [PATCH 086/822] (Win32) Buildfix --- gfx/common/win32_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index 328b1dfea5..d76e8934bb 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -99,7 +99,7 @@ LRESULT win32_menu_loop(HWND owner, WPARAM wparam) cmd = EVENT_CMD_LOAD_CORE; break; case ID_M_LOAD_CONTENT: - strlcpy(global->fullpath, win32_file, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, win32_file, sizeof(global->path.fullpath)); cmd = EVENT_CMD_LOAD_CONTENT; do_wm_close = true; break; From 12d7b079ebfd876ce8bd6f188603d9fed6253cd8 Mon Sep 17 00:00:00 2001 From: Monroe88 Date: Mon, 27 Jul 2015 20:06:45 -0500 Subject: [PATCH 087/822] (command_event.c) Set index to appended disk in event_disk_control_append_image --- command_event.c | 108 ++++++++++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/command_event.c b/command_event.c index 4d2cc94a8e..5ebd9f9be6 100644 --- a/command_event.c +++ b/command_event.c @@ -256,60 +256,6 @@ static void event_disk_control_set_eject(bool new_state, bool print_log) } } -/** - * event_disk_control_append_image: - * @path : Path to disk image. - * - * Appends disk image to disk image list. - **/ -void event_disk_control_append_image(const char *path) -{ - unsigned new_idx; - char msg[PATH_MAX_LENGTH] = {0}; - struct retro_game_info info = {0}; - global_t *global = global_get_ptr(); - rarch_system_info_t *sysinfo = rarch_system_info_get_ptr(); - const struct retro_disk_control_callback *control = - sysinfo ? (const struct retro_disk_control_callback*)&sysinfo->disk_control - : NULL; - - if (!control) - return; - - event_disk_control_set_eject(true, false); - - control->add_image_index(); - new_idx = control->get_num_images(); - if (!new_idx) - return; - new_idx--; - - info.path = path; - control->replace_image_index(new_idx, &info); - - snprintf(msg, sizeof(msg), "%s: ", msg_hash_to_str(MSG_APPENDED_DISK)); - strlcat(msg, path, sizeof(msg)); - RARCH_LOG("%s\n", msg); - rarch_main_msg_queue_push(msg, 0, 180, true); - - event_command(EVENT_CMD_AUTOSAVE_DEINIT); - - /* TODO: Need to figure out what to do with subsystems case. */ - if (!*global->subsystem) - { - /* Update paths for our new image. - * If we actually use append_image, we assume that we - * started out in a single disk case, and that this way - * of doing it makes the most sense. */ - rarch_set_paths(path); - rarch_fill_pathnames(); - } - - event_command(EVENT_CMD_AUTOSAVE_INIT); - - event_disk_control_set_eject(false, false); -} - /** * event_check_disk_eject: * @control : Handle to disk control handle. @@ -377,6 +323,60 @@ static void event_disk_control_set_index(unsigned idx) } } +/** + * event_disk_control_append_image: + * @path : Path to disk image. + * + * Appends disk image to disk image list. + **/ +void event_disk_control_append_image(const char *path) +{ + unsigned new_idx; + char msg[PATH_MAX_LENGTH] = {0}; + struct retro_game_info info = {0}; + global_t *global = global_get_ptr(); + rarch_system_info_t *sysinfo = rarch_system_info_get_ptr(); + const struct retro_disk_control_callback *control = + sysinfo ? (const struct retro_disk_control_callback*)&sysinfo->disk_control + : NULL; + + if (!control) + return; + + event_disk_control_set_eject(true, false); + + control->add_image_index(); + new_idx = control->get_num_images(); + if (!new_idx) + return; + new_idx--; + + info.path = path; + control->replace_image_index(new_idx, &info); + + snprintf(msg, sizeof(msg), "%s: ", msg_hash_to_str(MSG_APPENDED_DISK)); + strlcat(msg, path, sizeof(msg)); + RARCH_LOG("%s\n", msg); + rarch_main_msg_queue_push(msg, 0, 180, true); + + event_command(EVENT_CMD_AUTOSAVE_DEINIT); + + /* TODO: Need to figure out what to do with subsystems case. */ + if (!*global->subsystem) + { + /* Update paths for our new image. + * If we actually use append_image, we assume that we + * started out in a single disk case, and that this way + * of doing it makes the most sense. */ + rarch_set_paths(path); + rarch_fill_pathnames(); + } + + event_command(EVENT_CMD_AUTOSAVE_INIT); + event_disk_control_set_index(new_idx); + event_disk_control_set_eject(false, false); +} + /** * event_check_disk_prev: * @control : Handle to disk control handle. From 7431529e8971d68db8b72b7480374a66c8b7bb66 Mon Sep 17 00:00:00 2001 From: slotek Date: Wed, 29 Jul 2015 10:12:31 -0600 Subject: [PATCH 088/822] Restore generic Mac OS X joypad functionality --- input/connect/joypad_connection.c | 2 +- input/drivers_hid/iohidmanager_hid.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/input/connect/joypad_connection.c b/input/connect/joypad_connection.c index 227e5e321a..5beda8da98 100644 --- a/input/connect/joypad_connection.c +++ b/input/connect/joypad_connection.c @@ -105,7 +105,7 @@ int32_t pad_connection_pad_init(joypad_connection_t *joyconn, } } - return -1; + return pad; } void pad_connection_pad_deinit(joypad_connection_t *joyconn, uint32_t pad) diff --git a/input/drivers_hid/iohidmanager_hid.c b/input/drivers_hid/iohidmanager_hid.c index 565ff0bbe8..8f23c36cba 100644 --- a/input/drivers_hid/iohidmanager_hid.c +++ b/input/drivers_hid/iohidmanager_hid.c @@ -59,9 +59,11 @@ static uint64_t iohidmanager_hid_joypad_get_buttons(void *data, unsigned port) static bool iohidmanager_hid_joypad_button(void *data, unsigned port, uint16_t joykey) { + driver_t *driver = driver_get_ptr(); + cocoa_input_data_t *apple = (cocoa_input_data_t*)driver->input_data; uint64_t buttons = iohidmanager_hid_joypad_get_buttons(data, port); - if (joykey == NO_BTN) + if (!apple || joykey == NO_BTN) return false; /* Check hat. */ @@ -70,7 +72,8 @@ static bool iohidmanager_hid_joypad_button(void *data, unsigned port, uint16_t j /* Check the button. */ if ((port < MAX_USERS) && (joykey < 32)) - return ((buttons & (1 << joykey)) != 0); + return ((apple->buttons[port] & (1 << joykey)) != 0) || + ((buttons & (1 << joykey)) != 0); return false; } @@ -85,22 +88,26 @@ static bool iohidmanager_hid_joypad_rumble(void *data, unsigned pad, static int16_t iohidmanager_hid_joypad_axis(void *data, unsigned port, uint32_t joyaxis) { + driver_t *driver = driver_get_ptr(); + cocoa_input_data_t *apple = (cocoa_input_data_t*)driver->input_data; iohidmanager_hid_t *hid = (iohidmanager_hid_t*)data; int16_t val = 0; - if (joyaxis == AXIS_NONE) + if (!apple || joyaxis == AXIS_NONE) return 0; if (AXIS_NEG_GET(joyaxis) < 4) { - val = pad_connection_get_axis(&hid->slots[port], port, AXIS_NEG_GET(joyaxis)); + val = apple->axes[port][AXIS_NEG_GET(joyaxis)]; + val += pad_connection_get_axis(&hid->slots[port], port, AXIS_NEG_GET(joyaxis)); if (val >= 0) val = 0; } else if(AXIS_POS_GET(joyaxis) < 4) { - val = pad_connection_get_axis(&hid->slots[port], port, AXIS_POS_GET(joyaxis)); + val = apple->axes[port][AXIS_POS_GET(joyaxis)]; + val += pad_connection_get_axis(&hid->slots[port], port, AXIS_POS_GET(joyaxis)); if (val <= 0) val = 0; From c6481b1930298179999147dbb7640b6793b91aec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Thu, 30 Jul 2015 00:25:09 +0200 Subject: [PATCH 089/822] Fix autoconfig saving for udev --- input/drivers_joypad/udev_joypad.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/input/drivers_joypad/udev_joypad.c b/input/drivers_joypad/udev_joypad.c index 2a611fc1ca..bb006ff34e 100644 --- a/input/drivers_joypad/udev_joypad.c +++ b/input/drivers_joypad/udev_joypad.c @@ -289,6 +289,9 @@ static int udev_add_pad(struct udev_device *dev, unsigned p, int fd, const char strlcpy(params.name, pad->ident, sizeof(params.name)); params.vid = pad->vid; params.pid = pad->pid; + settings->input.pid[p] = params.pid; + settings->input.vid[p] = params.vid; + strlcpy(settings->input.device_names[p], params.name, sizeof(settings->input.device_names[p])); strlcpy(params.driver, udev_joypad.ident, sizeof(params.driver)); input_config_autoconfigure_joypad(¶ms); From bb7960c50014b8fcd4f341a32185c1bf6f191df9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 30 Jul 2015 03:31:48 +0200 Subject: [PATCH 090/822] Fixes --- cores/libretro-test-gl/Makefile | 9 ++-- cores/libretro-test-gl/libretro-test.c | 21 ++++---- cores/libretro-test/Makefile | 6 +-- cores/libretro-test/libretro-test.c | 53 +++++++++++-------- .../include/glsym/rglgen_headers.h | 2 +- 5 files changed, 50 insertions(+), 41 deletions(-) diff --git a/cores/libretro-test-gl/Makefile b/cores/libretro-test-gl/Makefile index b492df3a31..f3e35dce53 100644 --- a/cores/libretro-test-gl/Makefile +++ b/cores/libretro-test-gl/Makefile @@ -67,7 +67,7 @@ else ifeq ($(platform), ios) DEFINES := -DIOS CFLAGS += -DGLES $(DEFINES) CC = clang -arch armv7 -isysroot $(IOSSDK) -else ifeq ($(platform), qnx) +else ifneq (,$(findstring qnx,$(platform))) TARGET := $(TARGET_NAME)_libretro_qnx.so fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T @@ -77,6 +77,7 @@ else ifeq ($(platform), qnx) AR = qcc -Vgcc_ntoarmv7le CFLAGS += -DGLES GL_LIB := -lGLESv2 + GLES := 1 else ifneq (,$(findstring armv,$(platform))) CC = gcc TARGET := $(TARGET_NAME)_libretro.so @@ -117,10 +118,10 @@ else CFLAGS += -O3 endif -ifeq ($(platform), qnx) - CFLAGS += -Wc,-std=gnu99 +ifneq (,$(findstring qnx,$(platform))) + CFLAGS += -Wc,-std=c99 else - CFLAGS += -std=gnu99 + CFLAGS += -std=gnu99 endif OBJECTS := libretro-test.o ../../libretro-common/glsym/rglgen.o diff --git a/cores/libretro-test-gl/libretro-test.c b/cores/libretro-test-gl/libretro-test.c index 4d900ce6a5..b0ee3aea50 100644 --- a/cores/libretro-test-gl/libretro-test.c +++ b/cores/libretro-test-gl/libretro-test.c @@ -50,16 +50,6 @@ static GLuint fbo; static GLuint rbo_color, rbo_depth_stencil; #endif -static const GLfloat vertex_data[] = { - -0.5, -0.5, - 0.5, -0.5, - -0.5, 0.5, - 0.5, 0.5, - 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 0.0, 1.0, - 0.0, 1.0, 1.0, 1.0, - 1.0, 0.0, 1.0, 1.0, -}; #ifdef CORE static const char *vertex_shader[] = { @@ -182,6 +172,17 @@ static void init_multisample(unsigned samples) static void setup_vao(void) { + static const GLfloat vertex_data[] = { + -0.5, -0.5, + 0.5, -0.5, + -0.5, 0.5, + 0.5, 0.5, + 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 0.0, 1.0, + 0.0, 1.0, 1.0, 1.0, + 1.0, 0.0, 1.0, 1.0, + }; + #ifdef CORE glGenVertexArrays(1, &vao); #endif diff --git a/cores/libretro-test/Makefile b/cores/libretro-test/Makefile index 25fbd88f5b..c3bea09abe 100644 --- a/cores/libretro-test/Makefile +++ b/cores/libretro-test/Makefile @@ -38,7 +38,7 @@ else ifeq ($(platform), ios) SHARED := -dynamiclib DEFINES := -DIOS CC = clang -arch armv7 -isysroot $(IOSSDK) -else ifeq ($(platform), qnx) +else ifneq (,$(findstring qnx,$(platform))) TARGET := $(TARGET_NAME)_libretro_qnx.so fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined @@ -63,8 +63,8 @@ endif OBJECTS := libretro-test.o CFLAGS += -Wall -pedantic $(fpic) -ifeq ($(platform), qnx) -CFLAGS += -Wc,-std=gnu99 +ifneq (,$(findstring qnx,$(platform))) +CFLAGS += -Wc,-std=c99 else CFLAGS += -std=gnu99 endif diff --git a/cores/libretro-test/libretro-test.c b/cores/libretro-test/libretro-test.c index 6e70d7d1d7..d6f619c0a0 100644 --- a/cores/libretro-test/libretro-test.c +++ b/cores/libretro-test/libretro-test.c @@ -6,8 +6,13 @@ #include #include +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + static uint16_t *frame_buf; static struct retro_log_callback logging; +static retro_log_printf_t log_cb; static bool use_audio_cb; static float last_aspect; static float last_sample_rate; @@ -39,7 +44,7 @@ unsigned retro_api_version(void) void retro_set_controller_port_device(unsigned port, unsigned device) { - logging.log(RETRO_LOG_INFO, "Plugging device %u into port %u.\n", device, port); + log_cb(RETRO_LOG_INFO, "Plugging device %u into port %u.\n", device, port); } void retro_get_system_info(struct retro_system_info *info) @@ -112,8 +117,10 @@ void retro_set_environment(retro_environment_t cb) bool no_content = true; cb(RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME, &no_content); - if (!cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &logging)) - logging.log = fallback_log; + if (cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &logging)) + log_cb = logging.log; + else + log_cb = fallback_log; static const struct retro_subsystem_memory_info mem1[] = {{ "ram1", 0x400 }, { "ram2", 0x401 }}; static const struct retro_subsystem_memory_info mem2[] = {{ "ram3", 0x402 }, { "ram4", 0x403 }}; @@ -197,10 +204,10 @@ static void update_input(void) dir_x++; if (input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0, RETROK_RETURN)) - logging.log(RETRO_LOG_INFO, "Return key is pressed!\n"); + log_cb(RETRO_LOG_INFO, "Return key is pressed!\n"); if (input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0, RETROK_x)) - logging.log(RETRO_LOG_INFO, "x key is pressed!\n"); + log_cb(RETRO_LOG_INFO, "x key is pressed!\n"); int16_t mouse_x = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_X); int16_t mouse_y = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_Y); @@ -210,19 +217,19 @@ static void update_input(void) bool mouse_up = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELUP); bool mouse_middle = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_MIDDLE); if (mouse_x) - logging.log(RETRO_LOG_INFO, "Mouse X: %d\n", mouse_x); + log_cb(RETRO_LOG_INFO, "Mouse X: %d\n", mouse_x); if (mouse_y) - logging.log(RETRO_LOG_INFO, "Mouse Y: %d\n", mouse_y); + log_cb(RETRO_LOG_INFO, "Mouse Y: %d\n", mouse_y); if (mouse_l) - logging.log(RETRO_LOG_INFO, "Mouse L pressed.\n"); + log_cb(RETRO_LOG_INFO, "Mouse L pressed.\n"); if (mouse_r) - logging.log(RETRO_LOG_INFO, "Mouse R pressed.\n"); + log_cb(RETRO_LOG_INFO, "Mouse R pressed.\n"); if (mouse_down) - logging.log(RETRO_LOG_INFO, "Mouse wheeldown pressed.\n"); + log_cb(RETRO_LOG_INFO, "Mouse wheeldown pressed.\n"); if (mouse_up) - logging.log(RETRO_LOG_INFO, "Mouse wheelup pressed.\n"); + log_cb(RETRO_LOG_INFO, "Mouse wheelup pressed.\n"); if (mouse_middle) - logging.log(RETRO_LOG_INFO, "Mouse middle pressed.\n"); + log_cb(RETRO_LOG_INFO, "Mouse middle pressed.\n"); mouse_rel_x += mouse_x; mouse_rel_y += mouse_y; @@ -239,7 +246,7 @@ static void update_input(void) int16_t pointer_x = input_state_cb(0, RETRO_DEVICE_POINTER, 0, RETRO_DEVICE_ID_POINTER_X); int16_t pointer_y = input_state_cb(0, RETRO_DEVICE_POINTER, 0, RETRO_DEVICE_ID_POINTER_Y); if (pointer_pressed) - logging.log(RETRO_LOG_INFO, "Pointer: (%6d, %6d).\n", pointer_x, pointer_y); + log_cb(RETRO_LOG_INFO, "Pointer: (%6d, %6d).\n", pointer_x, pointer_y); dir_x += input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X) / 5000; dir_y += input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y) / 5000; @@ -258,11 +265,11 @@ static void update_input(void) bool start = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START); bool select = input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT); if (old_start != start) - logging.log(RETRO_LOG_INFO, "Strong rumble: %s.\n", start ? "ON": "OFF"); + log_cb(RETRO_LOG_INFO, "Strong rumble: %s.\n", start ? "ON": "OFF"); rumble.set_rumble_state(0, RETRO_RUMBLE_STRONG, start * strength_strong); if (old_select != select) - logging.log(RETRO_LOG_INFO, "Weak rumble: %s.\n", select ? "ON": "OFF"); + log_cb(RETRO_LOG_INFO, "Weak rumble: %s.\n", select ? "ON": "OFF"); rumble.set_rumble_state(0, RETRO_RUMBLE_WEAK, select * strength_weak); old_start = start; @@ -298,13 +305,13 @@ static void check_variables(void) struct retro_variable var = {0}; var.key = "test_opt0"; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) - logging.log(RETRO_LOG_INFO, "Key -> Val: %s -> %s.\n", var.key, var.value); + log_cb(RETRO_LOG_INFO, "Key -> Val: %s -> %s.\n", var.key, var.value); var.key = "test_opt1"; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) - logging.log(RETRO_LOG_INFO, "Key -> Val: %s -> %s.\n", var.key, var.value); + log_cb(RETRO_LOG_INFO, "Key -> Val: %s -> %s.\n", var.key, var.value); var.key = "test_opt2"; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) - logging.log(RETRO_LOG_INFO, "Key -> Val: %s -> %s.\n", var.key, var.value); + log_cb(RETRO_LOG_INFO, "Key -> Val: %s -> %s.\n", var.key, var.value); float last = last_aspect; float last_rate = last_sample_rate; @@ -323,7 +330,7 @@ static void check_variables(void) ret = environ_cb(RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO, &info); else // If only aspect changed, take the simpler path. ret = environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, &info.geometry); - logging.log(RETRO_LOG_INFO, "SET_SYSTEM_AV_INFO/SET_GEOMETRY = %u.\n", ret); + log_cb(RETRO_LOG_INFO, "SET_SYSTEM_AV_INFO/SET_GEOMETRY = %u.\n", ret); } } @@ -358,7 +365,7 @@ void retro_run(void) static void keyboard_cb(bool down, unsigned keycode, uint32_t character, uint16_t mod) { - logging.log(RETRO_LOG_INFO, "Down: %s, Code: %d, Char: %u, Mod: %u.\n", + log_cb(RETRO_LOG_INFO, "Down: %s, Code: %d, Char: %u, Mod: %u.\n", down ? "yes" : "no", keycode, character, mod); } @@ -378,16 +385,16 @@ bool retro_load_game(const struct retro_game_info *info) enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565; if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) { - logging.log(RETRO_LOG_INFO, "RGB565 is not supported.\n"); + log_cb(RETRO_LOG_INFO, "RGB565 is not supported.\n"); return false; } struct retro_keyboard_callback cb = { keyboard_cb }; environ_cb(RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK, &cb); if (environ_cb(RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE, &rumble)) - logging.log(RETRO_LOG_INFO, "Rumble environment supported.\n"); + log_cb(RETRO_LOG_INFO, "Rumble environment supported.\n"); else - logging.log(RETRO_LOG_INFO, "Rumble environment not supported.\n"); + log_cb(RETRO_LOG_INFO, "Rumble environment not supported.\n"); struct retro_audio_callback audio_cb = { audio_callback, audio_set_state }; use_audio_cb = environ_cb(RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK, &audio_cb); diff --git a/libretro-common/include/glsym/rglgen_headers.h b/libretro-common/include/glsym/rglgen_headers.h index 24a0da2a55..46195ad655 100644 --- a/libretro-common/include/glsym/rglgen_headers.h +++ b/libretro-common/include/glsym/rglgen_headers.h @@ -49,7 +49,7 @@ #include #elif defined(HAVE_OPENGLES3) #include -#include // There are no GLES3 extensions yet. +#include /* There are no GLES3 extensions yet. */ #elif defined(HAVE_OPENGLES2) #include #include From 973be7030d29f358fa81389fc0a1912756f08fbe Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 30 Jul 2015 04:58:01 +0200 Subject: [PATCH 091/822] Don't assume IOS define --- libretro-common/libco/armeabi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/libco/armeabi.c b/libretro-common/libco/armeabi.c index dd2259da1a..24dc88b747 100644 --- a/libretro-common/libco/armeabi.c +++ b/libretro-common/libco/armeabi.c @@ -11,7 +11,7 @@ #include #include -#ifndef IOS +#ifndef __APPLE__ #include #endif From a095ccbdb630677f172d9a41c7bf3531bc0b2899 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 30 Jul 2015 05:46:15 +0200 Subject: [PATCH 092/822] (libco) Always use posix_memalign for iOS --- libretro-common/libco/armeabi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/libco/armeabi.c b/libretro-common/libco/armeabi.c index 24dc88b747..8ef0299b88 100644 --- a/libretro-common/libco/armeabi.c +++ b/libretro-common/libco/armeabi.c @@ -46,7 +46,7 @@ cothread_t co_create(unsigned int size, void (*entrypoint)(void)) { size = (size + 1023) & ~1023; cothread_t handle = 0; -#if HAVE_POSIX_MEMALIGN >= 1 +#if defined(__APPLE__) || HAVE_POSIX_MEMALIGN >= 1 if (posix_memalign(&handle, 1024, size + 256) < 0) return 0; #else From 1489839384a139c1137337a191afd2b7ed83fbd3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 1 Aug 2015 05:19:44 +0200 Subject: [PATCH 093/822] (OSX) Add HAVE_COCOA and HAVE_COCOATOUCH ifdefs to iohidmanager_hid.c --- input/drivers_hid/iohidmanager_hid.c | 41 ++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/input/drivers_hid/iohidmanager_hid.c b/input/drivers_hid/iohidmanager_hid.c index 8f23c36cba..2670500b47 100644 --- a/input/drivers_hid/iohidmanager_hid.c +++ b/input/drivers_hid/iohidmanager_hid.c @@ -60,11 +60,17 @@ static uint64_t iohidmanager_hid_joypad_get_buttons(void *data, unsigned port) static bool iohidmanager_hid_joypad_button(void *data, unsigned port, uint16_t joykey) { driver_t *driver = driver_get_ptr(); +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) cocoa_input_data_t *apple = (cocoa_input_data_t*)driver->input_data; +#endif uint64_t buttons = iohidmanager_hid_joypad_get_buttons(data, port); - if (!apple || joykey == NO_BTN) + if (joykey == NO_BTN) return false; +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) + if (!apple) + return false; +#endif /* Check hat. */ if (GET_HAT_DIR(joykey)) @@ -72,8 +78,11 @@ static bool iohidmanager_hid_joypad_button(void *data, unsigned port, uint16_t j /* Check the button. */ if ((port < MAX_USERS) && (joykey < 32)) - return ((apple->buttons[port] & (1 << joykey)) != 0) || - ((buttons & (1 << joykey)) != 0); + return ((buttons & (1 << joykey)) != 0) +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) + || ((apple->buttons[port] & (1 << joykey)) != 0) +#endif + ; return false; } @@ -89,16 +98,24 @@ static bool iohidmanager_hid_joypad_rumble(void *data, unsigned pad, static int16_t iohidmanager_hid_joypad_axis(void *data, unsigned port, uint32_t joyaxis) { driver_t *driver = driver_get_ptr(); +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) cocoa_input_data_t *apple = (cocoa_input_data_t*)driver->input_data; +#endif iohidmanager_hid_t *hid = (iohidmanager_hid_t*)data; int16_t val = 0; - if (!apple || joyaxis == AXIS_NONE) + if (joyaxis == AXIS_NONE) return 0; +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) + if (!apple) + return 0; +#endif if (AXIS_NEG_GET(joyaxis) < 4) { - val = apple->axes[port][AXIS_NEG_GET(joyaxis)]; +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) + val += apple->axes[port][AXIS_NEG_GET(joyaxis)]; +#endif val += pad_connection_get_axis(&hid->slots[port], port, AXIS_NEG_GET(joyaxis)); if (val >= 0) @@ -106,7 +123,9 @@ static int16_t iohidmanager_hid_joypad_axis(void *data, unsigned port, uint32_t } else if(AXIS_POS_GET(joyaxis) < 4) { - val = apple->axes[port][AXIS_POS_GET(joyaxis)]; +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) + val += apple->axes[port][AXIS_POS_GET(joyaxis)]; +#endif val += pad_connection_get_axis(&hid->slots[port], port, AXIS_POS_GET(joyaxis)); if (val <= 0) @@ -147,7 +166,9 @@ static void iohidmanager_hid_device_input_callback(void *data, IOReturn result, void* sender, IOHIDValueRef value) { driver_t *driver = driver_get_ptr(); +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) cocoa_input_data_t *apple = (cocoa_input_data_t*)driver->input_data; +#endif struct iohidmanager_hid_adapter *adapter = (struct iohidmanager_hid_adapter*)data; IOHIDElementRef element = IOHIDValueGetElement(value); uint32_t type = IOHIDElementGetType(element); @@ -187,8 +208,10 @@ static void iohidmanager_hid_device_input_callback(void *data, IOReturn result, if (use != axis_use_ids[i]) continue; +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) apple->axes[adapter->slot][i] = ((val * 2.0f) - 1.0f) * 32767.0f; +#endif } } break; @@ -204,10 +227,12 @@ static void iohidmanager_hid_device_input_callback(void *data, IOReturn result, CFIndex state = IOHIDValueGetIntegerValue(value); unsigned id = use - 1; +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) if (state) BIT64_SET(apple->buttons[adapter->slot], id); else BIT64_CLEAR(apple->buttons[adapter->slot], id); +#endif } break; } @@ -218,7 +243,9 @@ static void iohidmanager_hid_device_input_callback(void *data, IOReturn result, static void iohidmanager_hid_device_remove(void *data, IOReturn result, void* sender) { driver_t *driver = driver_get_ptr(); +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) cocoa_input_data_t *apple = (cocoa_input_data_t*)driver->input_data; +#endif struct iohidmanager_hid_adapter *adapter = (struct iohidmanager_hid_adapter*)data; iohidmanager_hid_t *hid = driver ? (iohidmanager_hid_t*)driver->hid_data : NULL; @@ -226,8 +253,10 @@ static void iohidmanager_hid_device_remove(void *data, IOReturn result, void* se { input_config_autoconfigure_disconnect(adapter->slot, adapter->name); +#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) apple->buttons[adapter->slot] = 0; memset(apple->axes[adapter->slot], 0, sizeof(apple->axes)); +#endif pad_connection_pad_deinit(&hid->slots[adapter->slot], adapter->slot); free(adapter); From 9864e27491fd84211357fafd00fff2dae67eb61b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 1 Aug 2015 05:28:04 +0200 Subject: [PATCH 094/822] (cores) Add more liberal rules --- cores/libretro-test-gl/Makefile | 2 +- cores/libretro-test/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cores/libretro-test-gl/Makefile b/cores/libretro-test-gl/Makefile index f3e35dce53..f70178d36f 100644 --- a/cores/libretro-test-gl/Makefile +++ b/cores/libretro-test-gl/Makefile @@ -38,7 +38,7 @@ ifeq ($(platform), unix) fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined GL_LIB := -lGL -else ifeq ($(platform), osx) +else ifneq (,$(findstring osx,$(platform))) TARGET := $(TARGET_NAME)_libretro.dylib fpic := -fPIC SHARED := -dynamiclib diff --git a/cores/libretro-test/Makefile b/cores/libretro-test/Makefile index c3bea09abe..8556c99756 100644 --- a/cores/libretro-test/Makefile +++ b/cores/libretro-test/Makefile @@ -28,7 +28,7 @@ else ifeq ($(platform), linux-portable) fpic := -fPIC -nostdlib SHARED := -shared -Wl,--version-script=link.T LIBM := -else ifeq ($(platform), osx) +else ifneq (,$(findstring osx,$(platform))) TARGET := $(TARGET_NAME)_libretro.dylib fpic := -fPIC SHARED := -dynamiclib From 9b8daf02ffa1bb78745e34a6c47974785776f175 Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 31 Jul 2015 22:37:03 -0500 Subject: [PATCH 095/822] fix messages --- configuration.c | 4 ++-- dynamic.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configuration.c b/configuration.c index f7e063b055..8f6174bfbd 100644 --- a/configuration.c +++ b/configuration.c @@ -1712,13 +1712,13 @@ static bool config_load_file(const char *path, bool set_defaults) if (!config_get_path(conf, "system_directory", settings->system_directory, sizeof(settings->system_directory))) { - RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR\n"); + RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR\n"); *settings->system_directory = '\0'; } if (!strcmp(settings->system_directory, "default")) { - RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR\n"); + RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR\n"); *settings->system_directory = '\0'; } diff --git a/dynamic.c b/dynamic.c index 3d62694de7..fa75f79fc6 100644 --- a/dynamic.c +++ b/dynamic.c @@ -754,7 +754,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY: if (!settings->system_directory || settings->system_directory[0] == '\0') { - RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",global->path.fullpath); + RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",global->path.fullpath); fill_pathname_basedir(buf, global->path.fullpath, sizeof(buf)); From 4097f971316b69a05f96faea76051c4c4e8df41d Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 31 Jul 2015 22:37:22 -0500 Subject: [PATCH 096/822] add hack for remote type devices --- input/drivers/android_input.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index f1f75fe808..49d14dc08a 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -656,6 +656,22 @@ static void handle_hotplug(android_input_t *android, *port = 0; strlcpy(name_buf, "Generic GPIO Device", sizeof(name_buf)); } + else if (strstr(device_name, "Amazon Fire TV Remote") + || strstr(device_name, "Nexus Remote")) + { + /* hack for remote control type devices, set them always to port 0 */ + *port = 0; + strlcpy(name_buf, device_name, sizeof(name_buf)); + } + else if ( *port==1 && ( strstr(android->pad_states[0].name,"Amazon Fire TV Remote") + || strstr(android->pad_states[0].name,"Nexus Remote"))) + { + /* and then when we are binding a new controller in port 1 and one of those remotes + * was bound to port 0, bind the device as port 0 too + */ + *port = 0; + strlcpy(name_buf, device_name, sizeof(name_buf)); + } else if ( strstr(device_name, "PLAYSTATION(R)3") || strstr(device_name, "Dualshock3") || From 65081a0f9d1e817864159b2d9fdc95de7b0fa9a2 Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 31 Jul 2015 23:09:25 -0500 Subject: [PATCH 097/822] reduce OSD spam --- input/drivers/android_input.c | 16 ++++++++++------ input/input_autodetect.c | 32 ++++++++++++++++++++++---------- input/input_driver.c | 6 ++++++ 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 49d14dc08a..547b18a613 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -654,20 +654,24 @@ static void handle_hotplug(android_input_t *android, { /* If built-in shield controller is detected bind the virtual and gpio devices to the same port*/ *port = 0; - strlcpy(name_buf, "Generic GPIO Device", sizeof(name_buf)); + strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); } - else if (strstr(device_name, "Amazon Fire TV Remote") - || strstr(device_name, "Nexus Remote")) + else if (strstr(device_name, "Amazon Fire TV Remote") + || strstr(device_name, "Nexus Remote") + || strstr(device_name, "SHIELD Remote")) { /* hack for remote control type devices, set them always to port 0 */ *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); } - else if ( *port==1 && ( strstr(android->pad_states[0].name,"Amazon Fire TV Remote") - || strstr(android->pad_states[0].name,"Nexus Remote"))) + else if ( *port==1 && ( strstr(android->pad_states[0].name,"Amazon Fire TV Remote") + || strstr(android->pad_states[0].name,"Nexus Remote") + || strstr(android->pad_states[0].name,"SHIELD Remote"))) { /* and then when we are binding a new controller in port 1 and one of those remotes - * was bound to port 0, bind the device as port 0 too + * was bound to port 0, bind the device as port 0 too, it causes all the controllers to + * rebind on the first button press but at least the remotes can be used to navigate + * the user interface */ *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 41ce193da5..fc57a23258 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -37,6 +37,7 @@ enum AUTODETECT_MATCH_NAME }; #endif +bool remote_is_bound = false; static void input_autoconfigure_joypad_conf(config_file_t *conf, struct retro_keybind *binds) @@ -112,10 +113,12 @@ static void input_autoconfigure_joypad_add( autoconfig_params_t *params) { char msg[PATH_MAX_LENGTH] = {0}; - char buf[PATH_MAX_LENGTH] = {0}; + char display_name[PATH_MAX_LENGTH] = {0}; + char device_type[PATH_MAX_LENGTH] = {0}; settings_t *settings = config_get_ptr(); - config_get_array(conf, "input_display_name", buf, sizeof(buf)); + config_get_array(conf, "input_device_display_name", display_name, sizeof(display_name)); + config_get_array(conf, "input_device_type", device_type, sizeof(device_type)); /* This will be the case if input driver is reinitialized. * No reason to spam autoconfigure messages every time. */ @@ -124,20 +127,29 @@ static void input_autoconfigure_joypad_add( if (!settings) return; - + settings->input.autoconfigured[params->idx] = true; input_autoconfigure_joypad_conf(conf, settings->input.autoconf_binds[params->idx]); - if (buf[0] != '\0' || strcmp(buf, "")) - snprintf(msg, sizeof(msg), "%s configured in port #%u.", - buf, params->idx); + if (!strcmp(device_type,"remote")) + { + snprintf(msg, sizeof(msg), "%s configured for gui navigation", + params->name, params->idx); + remote_is_bound = true; + } else - snprintf(msg, sizeof(msg), "%s configured in port #%u.", - params->name, params->idx); + { + if (display_name[0] != '\0' || strcmp(display_name, "")) + snprintf(msg, sizeof(msg), "%s configured in port #%u.", + display_name, params->idx); + else + snprintf(msg, sizeof(msg), "%s configured in port #%u.", + params->name, params->idx); + } - if (!block_osd_spam) - rarch_main_msg_queue_push(msg, 0, 60, false); + if (!block_osd_spam) + rarch_main_msg_queue_push(msg, 0, 60, false); RARCH_LOG("%s\n", msg); } diff --git a/input/input_driver.c b/input/input_driver.c index 61b426cdc1..5a94202d10 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -214,7 +214,10 @@ retro_input_t input_driver_keys_pressed(void) state = input->key_pressed(driver->input_data, key); if (key >= RARCH_FIRST_META_KEY) + { state |= input->meta_key_pressed(driver->input_data, key); + RARCH_LOG("TEST1 \n TEST1 \n"); + } #ifdef HAVE_OVERLAY state |= input_overlay_key_pressed(key); @@ -222,7 +225,10 @@ retro_input_t input_driver_keys_pressed(void) #ifdef HAVE_COMMAND if (driver->command) + { state |= rarch_cmd_get(driver->command, key); + RARCH_LOG("TEST2 \n TEST2 \n"); + } #endif if (state) From 028b28bf6b8331e7b11c200b1169a411cebe464a Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 31 Jul 2015 23:19:57 -0500 Subject: [PATCH 098/822] remove bogus messages that I shouldn't have commited --- input/input_driver.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/input/input_driver.c b/input/input_driver.c index 5a94202d10..61b426cdc1 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -214,10 +214,7 @@ retro_input_t input_driver_keys_pressed(void) state = input->key_pressed(driver->input_data, key); if (key >= RARCH_FIRST_META_KEY) - { state |= input->meta_key_pressed(driver->input_data, key); - RARCH_LOG("TEST1 \n TEST1 \n"); - } #ifdef HAVE_OVERLAY state |= input_overlay_key_pressed(key); @@ -225,10 +222,7 @@ retro_input_t input_driver_keys_pressed(void) #ifdef HAVE_COMMAND if (driver->command) - { state |= rarch_cmd_get(driver->command, key); - RARCH_LOG("TEST2 \n TEST2 \n"); - } #endif if (state) From 6fbfc27a1f5cbc7d1cffbcde04f05afb496843fc Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 31 Jul 2015 23:40:30 -0500 Subject: [PATCH 099/822] reduce OSD spam --- input/input_autodetect.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index fc57a23258..1b0940b1ad 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -127,14 +127,14 @@ static void input_autoconfigure_joypad_add( if (!settings) return; - + settings->input.autoconfigured[params->idx] = true; input_autoconfigure_joypad_conf(conf, settings->input.autoconf_binds[params->idx]); - if (!strcmp(device_type,"remote")) + if (!strcmp(device_type,"remote") && !remote_is_bound) { - snprintf(msg, sizeof(msg), "%s configured for gui navigation", + snprintf(msg, sizeof(msg), "%s configured", params->name, params->idx); remote_is_bound = true; } From 801ad5c4ff409f92038d7d9a9c05491e37846f7d Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 31 Jul 2015 23:49:38 -0500 Subject: [PATCH 100/822] reduce OSD spam --- input/input_autodetect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 1b0940b1ad..5c2277e6c8 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -148,7 +148,7 @@ static void input_autoconfigure_joypad_add( params->name, params->idx); } - if (!block_osd_spam) + if (!block_osd_spam && !remote_is_bound) rarch_main_msg_queue_push(msg, 0, 60, false); RARCH_LOG("%s\n", msg); From 916190e6832de2288c76b4acd31a52526c7f9cf6 Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 1 Aug 2015 00:07:28 -0500 Subject: [PATCH 101/822] cleaner approach to reduce OSD spam --- input/input_autodetect.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 5c2277e6c8..09d2e3f553 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -132,10 +132,13 @@ static void input_autoconfigure_joypad_add( input_autoconfigure_joypad_conf(conf, settings->input.autoconf_binds[params->idx]); - if (!strcmp(device_type,"remote") && !remote_is_bound) + if (!strcmp(device_type,"remote")) { snprintf(msg, sizeof(msg), "%s configured", params->name, params->idx); + + if(!remote_is_bound) + rarch_main_msg_queue_push(msg, 0, 60, false); remote_is_bound = true; } else @@ -146,11 +149,10 @@ static void input_autoconfigure_joypad_add( else snprintf(msg, sizeof(msg), "%s configured in port #%u.", params->name, params->idx); + if (!block_osd_spam) + rarch_main_msg_queue_push(msg, 0, 60, false); } - if (!block_osd_spam && !remote_is_bound) - rarch_main_msg_queue_push(msg, 0, 60, false); - RARCH_LOG("%s\n", msg); } From 652e61470776b39a0732461309ced6c24bae62cf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 1 Aug 2015 23:58:30 +0200 Subject: [PATCH 102/822] (libretro-test-gl) Lower requirements to OSX 10.1 --- cores/libretro-test-gl/Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cores/libretro-test-gl/Makefile b/cores/libretro-test-gl/Makefile index f70178d36f..3d14a3cd52 100644 --- a/cores/libretro-test-gl/Makefile +++ b/cores/libretro-test-gl/Makefile @@ -49,9 +49,7 @@ else ifneq (,$(findstring osx,$(platform))) endif OSXVER = `sw_vers -productVersion | cut -d. -f 2` OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` - ifeq ($(OSX_LT_MAVERICKS),"YES") - fpic += -mmacosx-version-min=10.5 - endif + fpic += -mmacosx-version-min=10.1 else ifeq ($(platform), pi) TARGET := $(TARGET_NAME)_libretro.so fpic := -fPIC From e43f54f7c1cc1b790e0c79a4f4b5cfe4e56b9a40 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 19:49:34 +0200 Subject: [PATCH 103/822] Take max frames out of runloop --- retroarch.c | 3 +-- runloop.c | 3 +-- runloop.h | 7 ++----- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/retroarch.c b/retroarch.c index ef1a4268bc..c347334c66 100644 --- a/retroarch.c +++ b/retroarch.c @@ -505,7 +505,6 @@ enum rarch_content_type rarch_path_is_media_type(const char *path) static void parse_input(int argc, char *argv[]) { const char *optstring = NULL; - runloop_t *runloop = rarch_main_get_ptr(); global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); @@ -839,7 +838,7 @@ static void parse_input(int argc, char *argv[]) break; case RA_OPT_MAX_FRAMES: - runloop->frames.video.max = strtoul(optarg, NULL, 10); + global->max_frames = strtoul(optarg, NULL, 10); break; case RA_OPT_SUBSYSTEM: diff --git a/runloop.c b/runloop.c index a3f689f0fc..642ef4e97e 100644 --- a/runloop.c +++ b/runloop.c @@ -616,8 +616,7 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, bool video_alive = video && video->alive(driver->video_data); bool movie_end = (global->bsv.movie_end && global->bsv.eof_exit); uint64_t frame_count = video_driver_get_frame_count(); - bool frame_count_end = (runloop->frames.video.max && - frame_count >= runloop->frames.video.max); + bool frame_count_end = global->max_frames && (frame_count >= global->max_frames); if (shutdown_pressed || cmd->quit_key_pressed || frame_count_end || movie_end || !video_alive) diff --git a/runloop.h b/runloop.h index 9b914e3205..d46ea7fdd4 100644 --- a/runloop.h +++ b/runloop.h @@ -44,11 +44,6 @@ typedef struct runloop struct { - struct - { - unsigned max; - } video; - struct { retro_time_t minimum_time; @@ -67,6 +62,8 @@ typedef struct rarch_resolution typedef struct global { + unsigned max_frames; + bool verbosity; bool perfcnt_enable; bool force_fullscreen; From bd6ee135e9288091b99aa5953dbe50a74cb8f7b1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 20:03:14 +0200 Subject: [PATCH 104/822] Take out runloop_t dependencies --- audio/audio_driver.c | 7 ++--- command_event.c | 12 ++++---- gfx/drivers/gl.c | 7 ++--- gfx/video_thread_wrapper.c | 5 ++-- runloop.c | 56 ++++++++++++++++++-------------------- runloop.h | 4 +-- screenshot.c | 6 ++-- 7 files changed, 44 insertions(+), 53 deletions(-) diff --git a/audio/audio_driver.c b/audio/audio_driver.c index eb26cb3a3d..359f2751ae 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -23,7 +23,6 @@ #include "../driver.h" #include "../general.h" #include "../retroarch.h" -#include "../runloop.h" #include "../performance.h" #ifndef AUDIO_BUFFER_FREE_SAMPLES_COUNT @@ -601,7 +600,7 @@ bool audio_driver_flush(const int16_t *data, size_t samples) size_t output_size = sizeof(float); struct resampler_data src_data = {0}; struct rarch_dsp_data dsp_data = {0}; - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); driver_t *driver = driver_get_ptr(); const audio_driver_t *audio = driver ? (const audio_driver_t*)driver->audio : NULL; @@ -617,7 +616,7 @@ bool audio_driver_flush(const int16_t *data, size_t samples) driver->recording->push_audio(driver->recording_data, &ffemu_data); } - if (runloop->is_paused || settings->audio.mute_enable) + if (global->is_paused || settings->audio.mute_enable) return true; if (!driver->audio_active || !audio_data.data) return false; @@ -654,7 +653,7 @@ bool audio_driver_flush(const int16_t *data, size_t samples) audio_driver_readjust_input_rate(); src_data.ratio = audio_data.src_ratio; - if (runloop->is_slowmotion) + if (global->is_slowmotion) src_data.ratio *= settings->slowmotion_ratio; RARCH_PERFORMANCE_INIT(resampler_proc); diff --git a/command_event.c b/command_event.c index 5ebd9f9be6..e4d4c442f1 100644 --- a/command_event.c +++ b/command_event.c @@ -19,8 +19,6 @@ #include "general.h" #include "performance.h" -#include "runloop_data.h" -#include "runloop.h" #include "dynamic.h" #include "content.h" #include "screenshot.h" @@ -28,6 +26,7 @@ #include "retroarch.h" #include "dir_list_special.h" +#include "runloop_data.h" #include "configuration.h" #include "input/input_remapping.h" @@ -1025,7 +1024,6 @@ bool event_command(enum event_command cmd) { unsigned i = 0; bool boolean = false; - runloop_t *runloop = rarch_main_get_ptr(); driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); @@ -1426,7 +1424,7 @@ bool event_command(enum event_command cmd) #endif break; case EVENT_CMD_PAUSE_CHECKS: - if (runloop->is_paused) + if (global->is_paused) { RARCH_LOG("%s\n", msg_hash_to_str(MSG_PAUSED)); event_command(EVENT_CMD_AUDIO_STOP); @@ -1441,15 +1439,15 @@ bool event_command(enum event_command cmd) } break; case EVENT_CMD_PAUSE_TOGGLE: - runloop->is_paused = !runloop->is_paused; + global->is_paused = !global->is_paused; event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_UNPAUSE: - runloop->is_paused = false; + global->is_paused = false; event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_PAUSE: - runloop->is_paused = true; + global->is_paused = true; event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_MENU_PAUSE_LIBRETRO: diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 9ceb367168..c82099cfc4 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -31,7 +31,6 @@ #include #include "../../general.h" #include "../../retroarch.h" -#include "../../runloop.h" #include #ifdef HAVE_CONFIG_H @@ -1526,9 +1525,9 @@ static bool gl_frame(void *data, const void *frame, { unsigned width, height; gl_t *gl = (gl_t*)data; - runloop_t *runloop = rarch_main_get_ptr(); driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); + global_t *global = global_get_ptr(); uint64_t frame_count = video_driver_get_frame_count(); const struct font_renderer *font_driver = driver ? driver->font_osd_driver : NULL; @@ -1715,8 +1714,8 @@ static bool gl_frame(void *data, const void *frame, /* Disable BFI during fast forward, slow-motion, * and pause to prevent flicker. */ if (settings->video.black_frame_insertion && - !driver->nonblock_state && !runloop->is_slowmotion - && !runloop->is_paused) + !driver->nonblock_state && !global->is_slowmotion + && !global->is_paused) { gfx_ctx_swap_buffers(gl); glClear(GL_COLOR_BUFFER_BIT); diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index 38feeb9374..7e64ccbf4e 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -16,7 +16,6 @@ #include "video_thread_wrapper.h" #include "../performance.h" -#include "../runloop.h" #include #include #include @@ -431,9 +430,9 @@ static bool thread_alive(void *data) { bool ret; thread_video_t *thr = (thread_video_t*)data; - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); - if (runloop->is_paused) + if (global->is_paused) { thread_packet_t pkt = { CMD_ALIVE }; thread_send_and_wait(thr, &pkt); diff --git a/runloop.c b/runloop.c index 642ef4e97e..651f2cd725 100644 --- a/runloop.c +++ b/runloop.c @@ -56,18 +56,18 @@ static struct global g_extern; * Returns: true if libretro pause key was toggled, otherwise false. **/ static bool check_pause(driver_t *driver, settings_t *settings, - runloop_t *runloop, + global_t *global, bool pause_pressed, bool frameadvance_pressed) { static bool old_focus = true; bool focus = true; enum event_command cmd = EVENT_CMD_NONE; - bool old_is_paused = runloop ? runloop->is_paused : false; + bool old_is_paused = global ? global->is_paused : false; const video_driver_t *video = driver ? (const video_driver_t*)driver->video : NULL; /* FRAMEADVANCE will set us into pause mode. */ - pause_pressed |= !runloop->is_paused && frameadvance_pressed; + pause_pressed |= !global->is_paused && frameadvance_pressed; if (settings->pause_nonactive) focus = video->focus(driver->video_data); @@ -84,7 +84,7 @@ static bool check_pause(driver_t *driver, settings_t *settings, if (cmd != EVENT_CMD_NONE) event_command(cmd); - if (runloop->is_paused == old_is_paused) + if (global->is_paused == old_is_paused) return false; return true; @@ -157,7 +157,7 @@ static void check_stateslots(settings_t *settings, * Checks if rewind toggle/hold was being pressed and/or held. **/ static void check_rewind(settings_t *settings, - global_t *global, runloop_t *runloop, bool pressed) + global_t *global, bool pressed) { static bool first = true; @@ -186,7 +186,7 @@ static void check_rewind(settings_t *settings, audio_driver_setup_rewind(); rarch_main_msg_queue_push_new(MSG_REWINDING, 0, - runloop->is_paused ? 1 : 30, true); + global->is_paused ? 1 : 30, true); pretro_unserialize(buf, global->rewind.size); if (global->bsv.movie) @@ -227,11 +227,11 @@ static void check_rewind(settings_t *settings, * Checks if slowmotion toggle/hold was being pressed and/or held. **/ static void check_slowmotion(settings_t *settings, global_t *global, - runloop_t *runloop, bool slowmotion_pressed) + bool slowmotion_pressed) { - runloop->is_slowmotion = slowmotion_pressed; + global->is_slowmotion = slowmotion_pressed; - if (!runloop->is_slowmotion) + if (!global->is_slowmotion) return; if (settings->video.black_frame_insertion) @@ -443,13 +443,12 @@ static void do_state_check_menu_toggle(settings_t *settings, global_t *global) * Returns: 0. **/ static int do_pre_state_checks(settings_t *settings, - global_t *global, runloop_t *runloop, - event_cmd_state_t *cmd) + global_t *global, event_cmd_state_t *cmd) { if (cmd->overlay_next_pressed) event_command(EVENT_CMD_OVERLAY_NEXT); - if (!runloop->is_paused || menu_driver_alive()) + if (!global->is_paused || menu_driver_alive()) { if (cmd->fullscreen_toggle) event_command(EVENT_CMD_FULLSCREEN_TOGGLE); @@ -481,7 +480,7 @@ static int do_netplay_state_checks( #endif static int do_pause_state_checks( - runloop_t *runloop, + global_t *global, bool pause_pressed, bool frameadvance_pressed, bool fullscreen_toggle_pressed, @@ -489,7 +488,7 @@ static int do_pause_state_checks( { bool check_is_oneshot = frameadvance_pressed || rewind_pressed; - if (!runloop->is_paused) + if (!global->is_paused) return 0; if (fullscreen_toggle_pressed) @@ -537,11 +536,11 @@ static int do_state_checks(driver_t *driver, settings_t *settings, cmd->fullscreen_toggle); #endif - check_pause(driver, settings, runloop, + check_pause(driver, settings, global, cmd->pause_pressed, cmd->frameadvance_pressed); if (do_pause_state_checks( - runloop, + global, cmd->pause_pressed, cmd->frameadvance_pressed, cmd->fullscreen_toggle, @@ -559,9 +558,8 @@ static int do_state_checks(driver_t *driver, settings_t *settings, else if (cmd->load_state_pressed) event_command(EVENT_CMD_LOAD_STATE); - check_rewind(settings, global, runloop, cmd->rewind_pressed); - check_slowmotion(settings, global, runloop, - cmd->slowmotion_pressed); + check_rewind(settings, global, cmd->rewind_pressed); + check_slowmotion(settings, global, cmd->slowmotion_pressed); if (cmd->movie_record) check_movie(global); @@ -608,7 +606,7 @@ static int do_state_checks(driver_t *driver, settings_t *settings, * Returns: 1 if any of the above conditions are true, otherwise 0. **/ static INLINE int time_to_exit(driver_t *driver, global_t *global, - runloop_t *runloop, event_cmd_state_t *cmd) + event_cmd_state_t *cmd) { const video_driver_t *video = driver ? (const video_driver_t*)driver->video : NULL; rarch_system_info_t *system = rarch_system_info_get_ptr(); @@ -630,19 +628,19 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, * Updates frame timing if frame timing callback is in use by the core. **/ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, - runloop_t *runloop) + global_t *global) { retro_time_t curr_time = rarch_get_time_usec(); rarch_system_info_t *system = rarch_system_info_get_ptr(); retro_time_t delta = curr_time - system->frame_time_last; - bool is_locked_fps = runloop->is_paused || driver->nonblock_state; + bool is_locked_fps = global->is_paused || driver->nonblock_state; is_locked_fps |= !!driver->recording_data; if (!system->frame_time_last || is_locked_fps) delta = system->frame_time.reference; - if (!is_locked_fps && runloop->is_slowmotion) + if (!is_locked_fps && global->is_slowmotion) delta /= settings->slowmotion_ratio; system->frame_time_last = curr_time; @@ -792,13 +790,13 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, * * Returns: always true (1). **/ -static bool input_flush(runloop_t *runloop, retro_input_t *input) +static bool input_flush(retro_input_t *input, global_t *global) { *input = 0; /* If core was paused before entering menu, evoke * pause toggle to wake it up. */ - if (runloop->is_paused) + if (global->is_paused) BIT64_SET(*input, RARCH_PAUSE_TOGGLE); return true; @@ -1032,19 +1030,19 @@ int rarch_main_iterate(void) last_input = input; if (driver->flushing_input) - driver->flushing_input = (input) ? input_flush(runloop, &input) : false; + driver->flushing_input = (input) ? input_flush(&input, global) : false; trigger_input = input & ~old_input; rarch_main_cmd_get_state(&cmd, input, old_input, trigger_input); - if (time_to_exit(driver, global, runloop, &cmd)) + if (time_to_exit(driver, global, &cmd)) return rarch_main_iterate_quit(settings, global); if (system->frame_time.callback) - rarch_update_frame_time(driver, settings, runloop); + rarch_update_frame_time(driver, settings, global); - do_pre_state_checks(settings, global, runloop, &cmd); + do_pre_state_checks(settings, global, &cmd); #ifdef HAVE_OVERLAY rarch_main_iterate_linefeed_overlay(driver, settings); diff --git a/runloop.h b/runloop.h index d46ea7fdd4..5c408d2438 100644 --- a/runloop.h +++ b/runloop.h @@ -37,10 +37,8 @@ extern "C" { typedef struct runloop { /* Lifecycle state checks. */ - bool is_paused; bool is_idle; bool ui_companion_is_on_foreground; - bool is_slowmotion; struct { @@ -62,6 +60,8 @@ typedef struct rarch_resolution typedef struct global { + bool is_slowmotion; + bool is_paused; unsigned max_frames; bool verbosity; diff --git a/screenshot.c b/screenshot.c index 44793c15e7..8baca05a6c 100644 --- a/screenshot.c +++ b/screenshot.c @@ -38,7 +38,6 @@ #include "msg_hash.h" #include "gfx/scaler/scaler.h" #include "retroarch.h" -#include "runloop.h" #include "screenshot.h" #include "gfx/video_driver.h" #include "gfx/video_viewport.h" @@ -260,7 +259,6 @@ bool take_screenshot(void) bool viewport_read = false; bool ret = true; const char *msg = NULL; - runloop_t *runloop = rarch_main_get_ptr(); driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); @@ -332,9 +330,9 @@ bool take_screenshot(void) msg = msg_hash_to_str(MSG_FAILED_TO_TAKE_SCREENSHOT); } - rarch_main_msg_queue_push(msg, 1, runloop->is_paused ? 1 : 180, true); + rarch_main_msg_queue_push(msg, 1, global->is_paused ? 1 : 180, true); - if (runloop->is_paused) + if (global->is_paused) video_driver_cached_frame(); return ret; From 3d36cb02ac892b220c836d05765ad6bd3a5a5053 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 20:15:46 +0200 Subject: [PATCH 105/822] No more separate runloop_t --- gfx/d3d/d3d.cpp | 2 -- gfx/video_driver.c | 4 ++-- input/drivers/android_input.c | 12 +++++----- menu/drivers/rgui.c | 5 ++-- menu/menu.c | 4 ++-- retroarch.c | 4 ++-- runloop.c | 43 +++++++++++++++++------------------ runloop.h | 23 +++++++------------ ui/drivers/ui_cocoatouch.m | 34 +++++++++++++-------------- 9 files changed, 60 insertions(+), 71 deletions(-) diff --git a/gfx/d3d/d3d.cpp b/gfx/d3d/d3d.cpp index 0b2f9ccb17..5afc6002dd 100644 --- a/gfx/d3d/d3d.cpp +++ b/gfx/d3d/d3d.cpp @@ -25,7 +25,6 @@ #include "d3d.h" #include "../video_viewport.h" #include "../video_monitor.h" -#include "../../runloop.h" #include "../../dynamic.h" #include "render_chain_driver.h" @@ -1633,7 +1632,6 @@ static bool d3d_frame(void *data, const void *frame, unsigned i = 0; d3d_video_t *d3d = (d3d_video_t*)data; LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev; - runloop_t *runloop = rarch_main_get_ptr(); driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); const font_renderer_t *font_ctx = driver->font_osd_driver; diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 2488ba4407..3a121d9b34 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -837,10 +837,10 @@ void video_driver_get_video_output_prev(void) void video_driver_cached_frame(void) { driver_t *driver = driver_get_ptr(); - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); void *recording = driver ? driver->recording_data : NULL; - if (runloop->is_idle) + if (global->is_idle) return; /* Cannot allow recording when pushing duped frames. */ diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 547b18a613..f88aec840b 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -295,7 +295,7 @@ static void engine_handle_cmd(void) { int8_t cmd; struct android_app *android_app = (struct android_app*)g_android; - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); driver_t *driver = driver_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); @@ -331,7 +331,7 @@ static void engine_handle_cmd(void) scond_broadcast(android_app->cond); slock_unlock(android_app->mutex); - if (runloop->is_paused) + if (global->is_paused) event_command(EVENT_CMD_REINIT); break; @@ -358,8 +358,8 @@ static void engine_handle_cmd(void) if (!system->shutdown) { RARCH_LOG("Pausing RetroArch.\n"); - runloop->is_paused = true; - runloop->is_idle = true; + global->is_paused = true; + global->is_idle = true; } break; @@ -388,8 +388,8 @@ static void engine_handle_cmd(void) break; case APP_CMD_GAINED_FOCUS: - runloop->is_paused = false; - runloop->is_idle = false; + global->is_paused = false; + global->is_idle = false; if ((android_app->sensor_state_mask & (UINT64_C(1) << RETRO_SENSOR_ACCELEROMETER_ENABLE)) diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 3fc25e3be1..9958efbe43 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -34,7 +34,6 @@ #include "../menu_video.h" #include "../../configuration.h" -#include "../../runloop.h" #include "../../gfx/drivers_font_renderer/bitmap.h" #define RGUI_TERM_START_X (frame_buf->width / 21) @@ -374,8 +373,8 @@ static void rgui_render(void) menu_display_t *disp = menu_display_get_ptr(); menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); - runloop_t *runloop = rarch_main_get_ptr(); driver_t *driver = driver_get_ptr(); + global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); menu_animation_t *anim = menu_animation_get_ptr(); uint64_t frame_count = video_driver_get_frame_count(); @@ -398,7 +397,7 @@ static void rgui_render(void) if (menu_entries_needs_refresh() && menu_driver_alive() && !disp->msg_force) return; - if (runloop->is_idle) + if (global->is_idle) return; if (!menu_display_update_pending()) diff --git a/menu/menu.c b/menu/menu.c index ae9a2bc486..b4cd42dfef 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -352,7 +352,7 @@ int menu_iterate(retro_input_t input, { int32_t ret = 0; unsigned action = 0; - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); menu_display_t *disp = menu_display_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr(); @@ -364,7 +364,7 @@ int menu_iterate(retro_input_t input, ret = menu_entry_iterate(action); - if (menu_driver_alive() && !runloop->is_idle) + if (menu_driver_alive() && !global->is_idle) menu_display_fb(); menu_driver_set_texture(); diff --git a/retroarch.c b/retroarch.c index c347334c66..e7e9433c7a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1153,12 +1153,12 @@ static void validate_cpu_features(void) **/ void rarch_init_system_av_info(void) { - runloop_t *runloop = rarch_main_get_ptr(); struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); + global_t *global = global_get_ptr(); pretro_get_system_av_info(av_info); - runloop->frames.limit.last_time = rarch_get_time_usec(); + global->frames.limit.last_time = rarch_get_time_usec(); } /** diff --git a/runloop.c b/runloop.c index 651f2cd725..91defaaaab 100644 --- a/runloop.c +++ b/runloop.c @@ -42,7 +42,6 @@ #include "netplay.h" #endif -static struct runloop g_runloop; static struct global g_extern; /** @@ -511,9 +510,9 @@ static int do_pause_state_checks( * Returns: 1 if RetroArch is in pause mode, 0 otherwise. **/ static int do_state_checks(driver_t *driver, settings_t *settings, - global_t *global, runloop_t *runloop, event_cmd_state_t *cmd) + global_t *global, event_cmd_state_t *cmd) { - if (runloop->is_idle) + if (global->is_idle) return 1; if (cmd->screenshot_pressed) @@ -656,7 +655,7 @@ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, * * Limit frame time if fast forward ratio throttle is enabled. **/ -static void rarch_limit_frame_time(settings_t *settings, runloop_t *runloop) +static void rarch_limit_frame_time(settings_t *settings, global_t *global) { retro_time_t target = 0; retro_time_t to_sleep_ms = 0; @@ -666,23 +665,23 @@ static void rarch_limit_frame_time(settings_t *settings, runloop_t *runloop) double effective_fps = av_info->timing.fps * settings->fastforward_ratio; double mft_f = 1000000.0f / effective_fps; - runloop->frames.limit.minimum_time = (retro_time_t) roundf(mft_f); + global->frames.limit.minimum_time = (retro_time_t) roundf(mft_f); - target = runloop->frames.limit.last_time + - runloop->frames.limit.minimum_time; + target = global->frames.limit.last_time + + global->frames.limit.minimum_time; to_sleep_ms = (target - current) / 1000; if (to_sleep_ms <= 0) { - runloop->frames.limit.last_time = rarch_get_time_usec(); + global->frames.limit.last_time = rarch_get_time_usec(); return; } rarch_sleep((unsigned int)to_sleep_ms); /* Combat jitter a bit. */ - runloop->frames.limit.last_time += - runloop->frames.limit.minimum_time; + global->frames.limit.last_time += + global->frames.limit.minimum_time; } /** @@ -866,14 +865,15 @@ global_t *global_get_ptr(void) return &g_extern; } -runloop_t *rarch_main_get_ptr(void) -{ - return &g_runloop; -} - void rarch_main_state_free(void) { - memset(&g_runloop, 0, sizeof(g_runloop)); + g_extern.is_idle = false; + g_extern.ui_companion_is_on_foreground = false; + g_extern.frames.limit.minimum_time = 0.0; + g_extern.frames.limit.last_time = 0.0; + g_extern.is_slowmotion = false; + g_extern.is_paused = false; + g_extern.max_frames = 0; } void rarch_main_global_free(void) @@ -913,10 +913,10 @@ void rarch_main_clear_state(void) bool rarch_main_is_idle(void) { - runloop_t *runloop = rarch_main_get_ptr(); - if (!runloop) + global_t *global = global_get_ptr(); + if (!global) return false; - return runloop->is_idle; + return global->is_idle; } static bool rarch_main_cmd_get_state_menu_toggle_button_combo( @@ -1022,7 +1022,6 @@ int rarch_main_iterate(void) driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - runloop_t *runloop = rarch_main_get_ptr(); retro_input_t input = input_keys_pressed(driver, settings, global); rarch_system_info_t *system = rarch_system_info_get_ptr(); @@ -1068,7 +1067,7 @@ int rarch_main_iterate(void) return rarch_main_iterate_quit(settings, global); } - if (do_state_checks(driver, settings, global, runloop, &cmd)) + if (do_state_checks(driver, settings, global, &cmd)) { /* RetroArch has been paused */ driver->retro_ctx.poll_cb(); @@ -1134,7 +1133,7 @@ int rarch_main_iterate(void) success: if (settings->fastforward_ratio_throttle_enable) - rarch_limit_frame_time(settings, runloop); + rarch_limit_frame_time(settings, global); return ret; } diff --git a/runloop.h b/runloop.h index 5c408d2438..ce03a7fd33 100644 --- a/runloop.h +++ b/runloop.h @@ -32,9 +32,15 @@ extern "C" { #endif -/* All libretro runloop-related globals go here. */ +typedef struct rarch_resolution +{ + unsigned idx; + unsigned id; +} rarch_resolution_t; -typedef struct runloop +/* All run-time- / command line flag-related globals go here. */ + +typedef struct global { /* Lifecycle state checks. */ bool is_idle; @@ -48,18 +54,7 @@ typedef struct runloop retro_time_t last_time; } limit; } frames; -} runloop_t; -typedef struct rarch_resolution -{ - unsigned idx; - unsigned id; -} rarch_resolution_t; - -/* All run-time- / command line flag-related globals go here. */ - -typedef struct global -{ bool is_slowmotion; bool is_paused; unsigned max_frames; @@ -318,8 +313,6 @@ typedef struct global retro_keyboard_event_t frontend_key_event; } global_t; -runloop_t *rarch_main_get_ptr(void); - global_t *global_get_ptr(void); /** diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 9d7bd48380..928b118bb9 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -44,9 +44,9 @@ void apple_rarch_exited(void); static void rarch_draw(void) { - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); int ret = 0; - bool iterate = iterate_observer && !runloop->is_paused; + bool iterate = iterate_observer && !global->is_paused; if (iterate) { @@ -70,7 +70,7 @@ static void rarch_draw(void) return; } - if (runloop->is_idle) + if (global->is_idle) return; CFRunLoopWakeUp(CFRunLoopGetMain()); } @@ -398,7 +398,7 @@ void apple_stop_iterate_timer() - (void)showGameView { - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); [self popToRootViewControllerAnimated:NO]; [self setToolbarHidden:true animated:NO]; @@ -406,20 +406,20 @@ void apple_stop_iterate_timer() [[UIApplication sharedApplication] setIdleTimerDisabled:true]; [self.window setRootViewController:[CocoaView get]]; - runloop->is_paused = false; - runloop->is_idle = false; - runloop->ui_companion_is_on_foreground = false; + global->is_paused = false; + global->is_idle = false; + global->ui_companion_is_on_foreground = false; } - (IBAction)showPauseMenu:(id)sender { - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); - if (runloop) + if (global) { - runloop->is_paused = true; - runloop->is_idle = true; - runloop->ui_companion_is_on_foreground = true; + global->is_paused = true; + global->is_idle = true; + global->ui_companion_is_on_foreground = true; } [[UIApplication sharedApplication] setStatusBarHidden:false withAnimation:UIStatusBarAnimationNone]; @@ -429,9 +429,9 @@ void apple_stop_iterate_timer() - (void)toggleUI { - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); - if (runloop->ui_companion_is_on_foreground) + if (global->ui_companion_is_on_foreground) { [self showGameView]; } @@ -505,15 +505,15 @@ typedef struct ui_companion_cocoatouch static void ui_companion_cocoatouch_switch_to_ios(void *data) { RetroArch_iOS *ap = NULL; - runloop_t *runloop = rarch_main_get_ptr(); + global_t *global = global_get_ptr(); (void)data; if (!apple_platform) return; - ap = (RetroArch_iOS *)apple_platform; - runloop->is_idle = true; + ap = (RetroArch_iOS *)apple_platform; + global->is_idle = true; [ap showPauseMenu:ap]; } From 30a39d6d88f4839fc0f3ec496e3abd44c80ecc73 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 20:17:03 +0200 Subject: [PATCH 106/822] Get rid of warnings --- input/input_autodetect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 09d2e3f553..9fd0834646 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -135,7 +135,7 @@ static void input_autoconfigure_joypad_add( if (!strcmp(device_type,"remote")) { snprintf(msg, sizeof(msg), "%s configured", - params->name, params->idx); + params->name); if(!remote_is_bound) rarch_main_msg_queue_push(msg, 0, 60, false); From d98902c21ef4f7feab625fc11b5347faaf648a2f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 20:39:58 +0200 Subject: [PATCH 107/822] Don't use video_driver_get_frame_count in crucial runloop function --- runloop.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runloop.c b/runloop.c index 91defaaaab..ef9a0ae256 100644 --- a/runloop.c +++ b/runloop.c @@ -612,7 +612,8 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, bool shutdown_pressed = system && system->shutdown; bool video_alive = video && video->alive(driver->video_data); bool movie_end = (global->bsv.movie_end && global->bsv.eof_exit); - uint64_t frame_count = video_driver_get_frame_count(); + uint64_t frame_count = (driver && driver->video_poke && driver->video_poke->get_frame_count) ? + driver->video_poke->get_frame_count(driver->video_data) : 0; bool frame_count_end = global->max_frames && (frame_count >= global->max_frames); if (shutdown_pressed || cmd->quit_key_pressed || frame_count_end || movie_end From 0c023dcb68b3608290407768c921d9a122fcaad1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 23:01:07 +0200 Subject: [PATCH 108/822] Reimplement frame count --- gfx/d3d/d3d.cpp | 11 +---------- gfx/drivers/ctr_gfx.c | 16 +++------------- gfx/drivers/dispmanx_gfx.c | 11 +---------- gfx/drivers/exynos_gfx.c | 13 +------------ gfx/drivers/gl.c | 14 +------------- gfx/drivers/gx_gfx.c | 12 ------------ gfx/drivers/nullgfx.c | 3 ++- gfx/drivers/omap_gfx.c | 14 +------------- gfx/drivers/psp1_gfx.c | 14 ++------------ gfx/drivers/sdl2_gfx.c | 15 ++------------- gfx/drivers/sdl_gfx.c | 15 ++------------- gfx/drivers/sunxi_gfx.c | 14 +------------- gfx/drivers/vg.c | 6 ++---- gfx/drivers/xenon360_gfx.c | 6 ++---- gfx/drivers/xvideo.c | 6 ++---- gfx/video_context_driver.c | 4 ++-- gfx/video_driver.c | 31 +++++++++++-------------------- gfx/video_driver.h | 7 +++---- gfx/video_thread_wrapper.c | 21 +++++---------------- gfx/video_thread_wrapper.h | 1 + libretro_version_1.c | 8 +++++++- menu/drivers/glui.c | 8 ++++---- menu/drivers/rgui.c | 8 ++++---- menu/drivers/rmenu.c | 8 ++++---- menu/drivers/xmb.c | 6 +++--- runloop.c | 5 ++--- 26 files changed, 69 insertions(+), 208 deletions(-) diff --git a/gfx/d3d/d3d.cpp b/gfx/d3d/d3d.cpp index 5afc6002dd..aa3b234438 100644 --- a/gfx/d3d/d3d.cpp +++ b/gfx/d3d/d3d.cpp @@ -1624,7 +1624,7 @@ static void d3d_get_overlay_interface(void *data, static bool d3d_frame(void *data, const void *frame, unsigned frame_width, unsigned frame_height, - unsigned pitch, + uint64_t frame_count, unsigned pitch, const char *msg) { unsigned width, height; @@ -1975,16 +1975,7 @@ static void d3d_set_menu_texture_enable(void *data, } #endif -static uint64_t d3d_get_frame_count(void *data) -{ - d3d_video_t *d3d = (d3d_video_t*)data; - if (!d3d) - return 0; - return d3d->frame_count; -} - static const video_poke_interface_t d3d_poke_interface = { - d3d_get_frame_count, NULL, NULL, NULL, /* get_video_output_size */ diff --git a/gfx/drivers/ctr_gfx.c b/gfx/drivers/ctr_gfx.c index b25dcd2f80..804f4027a3 100644 --- a/gfx/drivers/ctr_gfx.c +++ b/gfx/drivers/ctr_gfx.c @@ -63,7 +63,6 @@ typedef struct ctr_video ctr_vertex_t* frame_coords; }menu; - uint64_t frame_count; uint32_t* display_list; int display_list_size; void* texture_linear; @@ -217,7 +216,9 @@ static void* ctr_init(const video_info_t* video, } static bool ctr_frame(void* data, const void* frame, - unsigned width, unsigned height, unsigned pitch, const char* msg) + unsigned width, unsigned height, + uint64_t frame_count, + unsigned pitch, const char* msg) { ctr_video_t* ctr = (ctr_video_t*)data; settings_t* settings = config_get_ptr(); @@ -362,8 +363,6 @@ static bool ctr_frame(void* data, const void* frame, RARCH_PERFORMANCE_STOP(ctrframe_f); - ctr->frame_count++; - return true; } @@ -501,17 +500,8 @@ static void ctr_viewport_info(void* data, struct video_viewport* vp) return; } -static uint64_t ctr_get_frame_count(void *data) -{ - ctr_video_t* ctr = (ctr_video_t*)data; - if (!ctr) - return 0; - return ctr->frame_count; -} - static const video_poke_interface_t ctr_poke_interface = { - ctr_get_frame_count, NULL, ctr_set_filtering, NULL, /* get_video_output_size */ diff --git a/gfx/drivers/dispmanx_gfx.c b/gfx/drivers/dispmanx_gfx.c index b7e26b7d1b..88e0f3ffd5 100644 --- a/gfx/drivers/dispmanx_gfx.c +++ b/gfx/drivers/dispmanx_gfx.c @@ -77,7 +77,6 @@ struct dispmanx_surface struct dispmanx_video { - uint64_t frame_count; DISPMANX_DISPLAY_HANDLE_T display; DISPMANX_UPDATE_HANDLE_T update; uint32_t vc_image_ptr; @@ -395,7 +394,7 @@ static void *dispmanx_gfx_init(const video_info_t *video, } static bool dispmanx_gfx_frame(void *data, const void *frame, unsigned width, - unsigned height, unsigned pitch, const char *msg) + unsigned height, uint64_t frame_count, unsigned pitch, const char *msg) { struct dispmanx_video *_dispvars = data; @@ -435,7 +434,6 @@ static bool dispmanx_gfx_frame(void *data, const void *frame, unsigned width, /* Update main surface: locate free page, blit and flip. */ dispmanx_surface_update(_dispvars, frame, _dispvars->main_surface); - _dispvars->frame_count++; return true; } @@ -554,12 +552,6 @@ static bool dispmanx_gfx_read_viewport(void *data, uint8_t *buffer) return true; } -static uint64_t dispmanx_gfx_get_frame_count(void *data) -{ - struct dispmanx_video *_dispvars = data; - return _dispvars->frame_count; -} - static void dispmanx_set_aspect_ratio (void *data, unsigned aspect_ratio_idx) { struct dispmanx_video *_dispvars = data; @@ -602,7 +594,6 @@ static void dispmanx_set_aspect_ratio (void *data, unsigned aspect_ratio_idx) } static const video_poke_interface_t dispmanx_poke_interface = { - dispmanx_gfx_get_frame_count, NULL, /* set_video_mode */ NULL, /* set_filtering */ NULL, /* get_video_output_size */ diff --git a/gfx/drivers/exynos_gfx.c b/gfx/drivers/exynos_gfx.c index 2656c2aac9..b583d1f21e 100644 --- a/gfx/drivers/exynos_gfx.c +++ b/gfx/drivers/exynos_gfx.c @@ -1405,7 +1405,7 @@ static void exynos_gfx_free(void *data) } static bool exynos_gfx_frame(void *data, const void *frame, unsigned width, - unsigned height, unsigned pitch, const char *msg) + unsigned height, uint64_t frame_count, unsigned pitch, const char *msg) { struct exynos_video *vid = data; struct exynos_page *page = NULL; @@ -1472,8 +1472,6 @@ static bool exynos_gfx_frame(void *data, const void *frame, unsigned width, if (exynos_flip(vid->data, page) != 0) goto fail; - vid->frame_count++; - return true; fail: @@ -1625,16 +1623,7 @@ static void exynos_show_mouse(void *data, bool state) (void)state; } -static uint64_t exynos_get_frame_count(void *data) -{ - struct exynos_video *vid = data; - if (!vid) - return 0; - return vid->frame_count; -} - static const video_poke_interface_t exynos_poke_interface = { - exynos_get_frame_count, NULL, /* set_video_mode */ NULL, /* set_filtering */ NULL, /* get_video_output_size */ diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index c82099cfc4..8c2c53ab8d 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1521,6 +1521,7 @@ static INLINE void gl_draw_texture(gl_t *gl) static bool gl_frame(void *data, const void *frame, unsigned frame_width, unsigned frame_height, + uint64_t frame_count, unsigned pitch, const char *msg) { unsigned width, height; @@ -1528,7 +1529,6 @@ static bool gl_frame(void *data, const void *frame, driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - uint64_t frame_count = video_driver_get_frame_count(); const struct font_renderer *font_driver = driver ? driver->font_osd_driver : NULL; RARCH_PERFORMANCE_INIT(frame_run); @@ -1754,8 +1754,6 @@ static bool gl_frame(void *data, const void *frame, context_bind_hw_render(gl, true); - gl->frame_count++; - return true; } @@ -3252,17 +3250,7 @@ static void gl_get_video_output_next(void *data) gfx_ctx_get_video_output_next(data); } -static uint64_t gl_get_frame_count(void *data) -{ - gl_t *gl = (gl_t*)data; - if (!gl) - return 0; - return gl->frame_count; -} - - static const video_poke_interface_t gl_poke_interface = { - gl_get_frame_count, gl_set_video_mode, NULL, gl_get_video_output_size, diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index f957f0717c..1f042bbc23 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -47,7 +47,6 @@ struct gx_overlay_data typedef struct gx_video { - uint64_t frame_count; bool should_resize; bool keep_aspect; bool double_strike; @@ -1166,8 +1165,6 @@ static bool gx_frame(void *data, const void *frame, RARCH_PERFORMANCE_STOP(gx_frame); - gx->frame_count++; - return true; } @@ -1309,16 +1306,7 @@ static void gx_get_video_output_next(void *data) } } -static uint64_t gx_get_frame_count(void *data) -{ - gx_video_t *gx = (gx_video_t*)data; - if (!gx) - return 0; - return gx->frame_count; -} - static const video_poke_interface_t gx_poke_interface = { - gx_get_frame_count, gx_set_video_mode, NULL, gx_get_video_output_size, diff --git a/gfx/drivers/nullgfx.c b/gfx/drivers/nullgfx.c index a9c92ce0bb..4e83fa3adb 100644 --- a/gfx/drivers/nullgfx.c +++ b/gfx/drivers/nullgfx.c @@ -29,7 +29,8 @@ static void *null_gfx_init(const video_info_t *video, } static bool null_gfx_frame(void *data, const void *frame, - unsigned width, unsigned height, unsigned pitch, const char *msg) + unsigned width, unsigned height, uint64_t frame_count, + unsigned pitch, const char *msg) { (void)data; (void)frame; diff --git a/gfx/drivers/omap_gfx.c b/gfx/drivers/omap_gfx.c index c38dff6ae0..4b8b8f7441 100644 --- a/gfx/drivers/omap_gfx.c +++ b/gfx/drivers/omap_gfx.c @@ -775,7 +775,6 @@ static void omapfb_blit_frame(omapfb_data_t *pdata, const void *src, typedef struct omap_video { - uint64_t frame_count; omapfb_data_t *omap; void *font; @@ -975,7 +974,7 @@ fail: } static bool omap_gfx_frame(void *data, const void *frame, unsigned width, - unsigned height, unsigned pitch, const char *msg) + unsigned height, uint64_t frame_count, unsigned pitch, const char *msg) { omap_video_t *vid = (omap_video_t*)data; @@ -1005,8 +1004,6 @@ static bool omap_gfx_frame(void *data, const void *frame, unsigned width, if (msg) omap_render_msg(vid, msg); - vid->frame_count++; - return true; } @@ -1133,16 +1130,7 @@ static void omap_gfx_set_texture_enable(void *data, bool state, bool full_screen (void) full_screen; } -static uint64_t omap_gfx_get_frame_count(void *data) -{ - omap_video_t *vid = (omap_video_t*)data; - if (!vid) - return 0; - return vid->frame_count; -} - static const video_poke_interface_t omap_gfx_poke_interface = { - omap_gfx_get_frame_count, NULL, NULL, /* set_filtering */ NULL, /* get_video_output_size */ diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c index b6cbb828a0..2dc6e2f4c7 100644 --- a/gfx/drivers/psp1_gfx.c +++ b/gfx/drivers/psp1_gfx.c @@ -85,7 +85,6 @@ typedef struct psp1_menu_frame typedef struct psp1_video { - uint64_t frame_count; void* main_dList; void* frame_dList; void* draw_buffer; @@ -464,7 +463,8 @@ error: //#define DISPLAY_FPS static bool psp_frame(void *data, const void *frame, - unsigned width, unsigned height, unsigned pitch, const char *msg) + unsigned width, unsigned height, uint64_t frame_count, + unsigned pitch, const char *msg) { static char fps_txt[128] = {0}; static char fps_text_buf[128] = {0}; @@ -526,7 +526,6 @@ static bool psp_frame(void *data, const void *frame, #endif psp->draw_buffer = FROM_GU_POINTER(sceGuSwapBuffers()); - psp->frame_count++; RARCH_PERFORMANCE_INIT(psp_frame_run); RARCH_PERFORMANCE_START(psp_frame_run); @@ -838,16 +837,7 @@ static void psp_viewport_info(void *data, struct video_viewport *vp) *vp = psp->vp; } -static uint64_t psp_get_frame_count(void *data) -{ - psp1_video_t *psp = (psp1_video_t*)data; - if (!psp) - return 0; - return psp->frame_count; -} - static const video_poke_interface_t psp_poke_interface = { - psp_get_frame_count, NULL, psp_set_filtering, NULL, /* get_video_output_size */ diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c index fab49ad730..eeae213622 100644 --- a/gfx/drivers/sdl2_gfx.c +++ b/gfx/drivers/sdl2_gfx.c @@ -50,7 +50,6 @@ typedef struct sdl2_tex typedef struct _sdl2_video { - uint64_t frame_count; SDL_Window *window; SDL_Renderer *renderer; @@ -491,7 +490,8 @@ static void check_window(sdl2_video_t *vid) } static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width, - unsigned height, unsigned pitch, const char *msg) + unsigned height, uint64_t frame_count, + unsigned pitch, const char *msg) { char buf[128] = {0}; sdl2_video_t *vid = (sdl2_video_t*)data; @@ -530,8 +530,6 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width, if (video_monitor_get_fps(buf, sizeof(buf), NULL, 0)) SDL_SetWindowTitle(vid->window, buf); - vid->frame_count++; - return true; } @@ -734,16 +732,7 @@ static void sdl2_grab_mouse_toggle(void *data) SDL_SetWindowGrab(vid->window, SDL_GetWindowGrab(vid->window)); } -static uint64_t sdl2_get_frame_count(void *data) -{ - sdl2_video_t *vid = (sdl2_video_t*)data; - if (!vid) - return 0; - return vid->frame_count; -} - static video_poke_interface_t sdl2_video_poke_interface = { - sdl2_get_frame_count, NULL, sdl2_poke_set_filtering, NULL, /* get_video_output_size */ diff --git a/gfx/drivers/sdl_gfx.c b/gfx/drivers/sdl_gfx.c index e88f401392..5aaf4bfa2b 100644 --- a/gfx/drivers/sdl_gfx.c +++ b/gfx/drivers/sdl_gfx.c @@ -46,7 +46,6 @@ typedef struct sdl_menu_frame typedef struct sdl_video { - uint64_t frame_count; SDL_Surface *screen; bool quitting; @@ -346,7 +345,8 @@ static void sdl_gfx_check_window(sdl_video_t *vid) } static bool sdl_gfx_frame(void *data, const void *frame, unsigned width, - unsigned height, unsigned pitch, const char *msg) + unsigned height, uint64_t frame_count, + unsigned pitch, const char *msg) { char buf[128] = {0}; sdl_video_t *vid = (sdl_video_t*)data; @@ -378,8 +378,6 @@ static bool sdl_gfx_frame(void *data, const void *frame, unsigned width, SDL_Flip(vid->screen); - vid->frame_count++; - return true; } @@ -516,16 +514,7 @@ static void sdl_grab_mouse_toggle(void *data) SDL_WM_GrabInput(mode == SDL_GRAB_ON ? SDL_GRAB_OFF : SDL_GRAB_ON); } -static void sdl_get_frame_count(void *data) -{ - sdl_video_t *vid = (sdl_video_t*)data; - if (!vid) - return 0; - return vid->frame_count; -} - static const video_poke_interface_t sdl_poke_interface = { - sdl_get_frame_count, NULL, sdl_set_filtering, NULL, /* get_video_output_size */ diff --git a/gfx/drivers/sunxi_gfx.c b/gfx/drivers/sunxi_gfx.c index b3ec46706a..a57abda817 100644 --- a/gfx/drivers/sunxi_gfx.c +++ b/gfx/drivers/sunxi_gfx.c @@ -499,7 +499,6 @@ struct sunxi_page struct sunxi_video { - uint64_t frame_count; void *font; const font_renderer_driver_t *font_driver; @@ -761,7 +760,7 @@ static void sunxi_setup_scale (void *data, } static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, - unsigned height, unsigned pitch, const char *msg) + unsigned height, uint64_t frame_count, unsigned pitch, const char *msg) { struct sunxi_video *_dispvars = (struct sunxi_video*)data; @@ -788,8 +787,6 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, sunxi_update_main(frame, _dispvars); - _dispvars->frame_count++; - return true; } @@ -920,14 +917,6 @@ static void sunxi_set_texture_frame(void *data, const void *frame, bool rgb32, } } -static uint64_t sunxi_get_frame_count(void *data) -{ - struct sunxi_video *_dispvars = (struct sunxi_video*)data; - if (!_dispvars) - return 0; - return _dispvars->frame_count; -} - static void sunxi_set_aspect_ratio (void *data, unsigned aspect_ratio_idx) { struct sunxi_video *_dispvars = (struct sunxi_video*)data; @@ -940,7 +929,6 @@ static void sunxi_set_aspect_ratio (void *data, unsigned aspect_ratio_idx) } static const video_poke_interface_t sunxi_poke_interface = { - sunxi_get_frame_count, NULL, /* set_video_mode */ NULL, /* set_filtering */ NULL, /* get_video_output_size */ diff --git a/gfx/drivers/vg.c b/gfx/drivers/vg.c index 9f627b5ec6..2a88d8af8a 100644 --- a/gfx/drivers/vg.c +++ b/gfx/drivers/vg.c @@ -34,7 +34,6 @@ typedef struct { - uint64_t frame_count; bool should_resize; float mScreenAspect; bool mKeepAspect; @@ -311,7 +310,8 @@ static void vg_copy_frame(void *data, const void *frame, } static bool vg_frame(void *data, const void *frame, - unsigned frame_width, unsigned frame_height, unsigned pitch, const char *msg) + unsigned frame_width, unsigned frame_height, + uint64_t frame_count, unsigned pitch, const char *msg) { unsigned width, height; vg_t *vg = (vg_t*)data; @@ -359,8 +359,6 @@ static bool vg_frame(void *data, const void *frame, gfx_ctx_swap_buffers(vg); - vg->frame_count++; - return true; } diff --git a/gfx/drivers/xenon360_gfx.c b/gfx/drivers/xenon360_gfx.c index 5fd5f00a00..7781130030 100644 --- a/gfx/drivers/xenon360_gfx.c +++ b/gfx/drivers/xenon360_gfx.c @@ -84,7 +84,6 @@ static bool g_quitting; typedef struct gl { - uint64_t frame_count; unsigned char *screen; struct XenosVertexBuffer *vb; struct XenosDevice * gl_device; @@ -194,7 +193,8 @@ static void *xenon360_gfx_init(const video_info_t *video, const input_driver_t * return gl; } -static bool xenon360_gfx_frame(void *data, const void *frame, unsigned width, unsigned height, unsigned pitch, const char *msg) +static bool xenon360_gfx_frame(void *data, const void *frame, unsigned width, unsigned height, + uint64_t frame_count, unsigned pitch, const char *msg) { gl_t *vid = data; @@ -239,8 +239,6 @@ static bool xenon360_gfx_frame(void *data, const void *frame, unsigned width, un Xe_Resolve(vid->gl_device); Xe_Sync(vid->gl_device); - vid->frame_count++; - return true; } diff --git a/gfx/drivers/xvideo.c b/gfx/drivers/xvideo.c index 7cd24d1700..b4e2bde24b 100644 --- a/gfx/drivers/xvideo.c +++ b/gfx/drivers/xvideo.c @@ -39,7 +39,6 @@ typedef struct xv { - uint64_t frame_count; Display *display; GC gc; Window window; @@ -763,7 +762,8 @@ static void xv_render_msg(xv_t *xv, const char *msg, } static bool xv_frame(void *data, const void *frame, unsigned width, - unsigned height, unsigned pitch, const char *msg) + unsigned height, uint64_t frame_count, + unsigned pitch, const char *msg) { XWindowAttributes target; char buf[128] = {0}; @@ -794,8 +794,6 @@ static bool xv_frame(void *data, const void *frame, unsigned width, if (video_monitor_get_fps(buf, sizeof(buf), NULL, 0)) XStoreName(xv->display, xv->window, buf); - xv->frame_count++; - return true; } diff --git a/gfx/video_context_driver.c b/gfx/video_context_driver.c index 5dd4a89b8f..75297de9b2 100644 --- a/gfx/video_context_driver.c +++ b/gfx/video_context_driver.c @@ -236,13 +236,13 @@ bool gfx_ctx_check_window(void *data, bool *quit, bool *resize, unsigned *width, unsigned *height) { const gfx_ctx_driver_t *ctx = gfx_ctx_get_ptr(); - uint64_t frame_count = video_driver_get_frame_count(); + uint64_t *frame_count = video_driver_get_frame_count(); if (!data) return false; ctx->check_window(data, quit, resize, width, height, - (unsigned int)frame_count); + (unsigned int)*frame_count); return true; } diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 3a121d9b34..6147591506 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -283,22 +283,11 @@ uintptr_t video_driver_get_current_framebuffer(void) return 0; } -uint64_t video_driver_get_frame_count(void) -{ - static bool warn_once = true; - driver_t *driver = driver_get_ptr(); - const video_poke_interface_t *poke = video_driver_get_poke_ptr(driver); +static uint64_t video_frame_count; - if (!poke || !poke->get_frame_count) - { - if (warn_once) - { - RARCH_WARN("Frame count not implemented!\n"); - warn_once = false; - } - return 0; - } - return poke->get_frame_count(driver->video_data); +uint64_t *video_driver_get_frame_count(void) +{ + return &video_frame_count; } retro_proc_address_t video_driver_get_proc_address(const char *sym) @@ -395,6 +384,9 @@ static void init_video_input(const input_driver_t *tmp) { driver_t *driver = driver_get_ptr(); + /* Reset video frame count */ + video_frame_count = 0; + /* Video driver didn't provide an input driver, * so we use configured one. */ RARCH_LOG("Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.\n"); @@ -1091,14 +1083,13 @@ bool video_monitor_get_fps(char *buf, size_t size, retro_time_t new_time; static retro_time_t curr_time; static retro_time_t fps_time; - uint64_t frame_count = video_driver_get_frame_count(); rarch_system_info_t *system = rarch_system_info_get_ptr(); *buf = '\0'; new_time = rarch_get_time_usec(); - if (frame_count) + if (video_frame_count) { bool ret = false; unsigned write_index = video_state.frame_time_samples_count++ & @@ -1107,19 +1098,19 @@ bool video_monitor_get_fps(char *buf, size_t size, video_state.frame_time_samples[write_index] = new_time - fps_time; fps_time = new_time; - if ((frame_count % FPS_UPDATE_INTERVAL) == 0) + if ((video_frame_count % FPS_UPDATE_INTERVAL) == 0) { last_fps = TIME_TO_FPS(curr_time, new_time, FPS_UPDATE_INTERVAL); curr_time = new_time; snprintf(buf, size, "%s || FPS: %6.1f || Frames: " U64_SIGN, - system->title_buf, last_fps, (unsigned long long)frame_count); + system->title_buf, last_fps, (unsigned long long)video_frame_count); ret = true; } if (buf_fps) snprintf(buf_fps, size_fps, "FPS: %6.1f || Frames: " U64_SIGN, - last_fps, (unsigned long long)frame_count); + last_fps, (unsigned long long)video_frame_count); return ret; } diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 48d2a25973..7eef275889 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -100,7 +100,6 @@ enum texture_filter_type typedef struct video_poke_interface { - uint64_t (*get_frame_count)(void *data); void (*set_video_mode)(void *data, unsigned width, unsigned height, bool fullscreen); void (*set_filtering)(void *data, unsigned index, bool smooth); void (*get_video_output_size)(void *data, unsigned *width, unsigned *height); @@ -138,7 +137,7 @@ typedef struct video_driver /* msg is for showing a message on the screen along with the video frame. */ bool (*frame)(void *data, const void *frame, unsigned width, - unsigned height, unsigned pitch, const char *msg); + unsigned height, uint64_t frame_count, unsigned pitch, const char *msg); /* Should we care about syncing to vblank? Fast forwarding. */ void (*set_nonblock_state)(void *data, bool toggle); @@ -338,8 +337,6 @@ void video_driver_set_size_width(unsigned width); void video_driver_set_size_height(unsigned width); -uint64_t video_driver_get_frame_count(void); - float video_driver_get_aspect_ratio(void); void video_driver_set_aspect_ratio_value(float value); @@ -383,6 +380,8 @@ void video_driver_cached_frame_get(const void **data, unsigned *width, bool video_driver_cached_frame_has_valid_fb(void); +uint64_t *video_driver_get_frame_count(void); + #ifdef __cplusplus } #endif diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index 7e64ccbf4e..aafc2bcfcf 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -395,6 +395,7 @@ static void thread_loop(void *data) if (thr->driver && thr->driver->frame) ret = thr->driver->frame(thr->driver_data, thr->frame.buffer, thr->frame.width, thr->frame.height, + thr->frame.count, thr->frame.pitch, *thr->frame.msg ? thr->frame.msg : NULL); slock_unlock(thr->frame.lock); @@ -483,7 +484,8 @@ static bool thread_has_windowed(void *data) } static bool thread_frame(void *data, const void *frame_, - unsigned width, unsigned height, unsigned pitch, const char *msg) + unsigned width, unsigned height, uint64_t frame_count, + unsigned pitch, const char *msg) { unsigned copy_stride; const uint8_t *src = NULL; @@ -498,7 +500,7 @@ static bool thread_frame(void *data, const void *frame_, if (thr->driver && thr->driver->frame) return thr->driver->frame(thr->driver_data, frame_, - width, height, pitch, msg); + width, height, frame_count, pitch, msg); return false; } @@ -549,6 +551,7 @@ static bool thread_frame(void *data, const void *frame_, thr->frame.updated = true; thr->frame.width = width; thr->frame.height = height; + thr->frame.count = frame_count; thr->frame.pitch = copy_stride; if (msg) @@ -994,21 +997,7 @@ static struct video_shader *thread_get_current_shader(void *data) return thr->poke->get_current_shader(thr->driver_data); } -static uint64_t thread_get_frame_count(void *data) -{ - uint64_t ret; - thread_video_t *thr = (thread_video_t*)data; - if (!thr) - return 0; - - slock_lock(thr->lock); - ret = thr->hit_count+thr->miss_count; - slock_unlock(thr->lock); - return ret; -} - static const video_poke_interface_t thread_poke = { - thread_get_frame_count, thread_set_video_mode, thread_set_filtering, thread_get_video_output_size, diff --git a/gfx/video_thread_wrapper.h b/gfx/video_thread_wrapper.h index 2e01c7b8f4..4817e4e717 100644 --- a/gfx/video_thread_wrapper.h +++ b/gfx/video_thread_wrapper.h @@ -213,6 +213,7 @@ typedef struct thread_video unsigned pitch; bool updated; bool within_thread; + uint64_t count; char msg[PATH_MAX_LENGTH]; } frame; diff --git a/libretro_version_1.c b/libretro_version_1.c index a11d863839..82c88af5b4 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -56,6 +56,7 @@ static void video_frame(const void *data, unsigned width, unsigned height, size_t pitch) { + uint64_t *frame_count = NULL; unsigned output_width = 0; unsigned output_height = 0; unsigned output_pitch = 0; @@ -105,8 +106,13 @@ static void video_frame(const void *data, unsigned width, pitch = output_pitch; } - if (!video->frame(driver->video_data, data, width, height, pitch, driver->current_msg)) + frame_count = video_driver_get_frame_count(); + + if (!video->frame(driver->video_data, data, width, height, *frame_count, + pitch, driver->current_msg)) driver->video_active = false; + + *frame_count = *frame_count + 1; } /** diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index ba508323e5..fc2e2d09ed 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -341,7 +341,7 @@ static void glui_render_menu_list(glui_handle_t *glui, { unsigned width, height; size_t i = 0; - uint64_t frame_count = video_driver_get_frame_count(); + uint64_t *frame_count = video_driver_get_frame_count(); size_t end = menu_entries_get_end(); menu_display_t *disp = menu_display_get_ptr(); menu_entries_t *entries = menu_entries_get_ptr(); @@ -367,7 +367,7 @@ static void glui_render_menu_list(glui_handle_t *glui, entry_selected = entries->navigation.selection_ptr == i; - glui_render_label_value(glui, y, width, frame_count / 40, + glui_render_label_value(glui, y, width, *frame_count / 40, entry_selected ? hover_color : normal_color, entry_selected, entry.path, entry.value); } @@ -390,7 +390,7 @@ static void glui_frame(void) menu_display_t *disp = menu_display_get_ptr(); settings_t *settings = config_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr(); - uint64_t frame_count = video_driver_get_frame_count(); + uint64_t *frame_count = video_driver_get_frame_count(); const uint32_t normal_color = FONT_COLOR_ARGB_TO_RGBA( settings->menu.entry_normal_color); const uint32_t hover_color = FONT_COLOR_ARGB_TO_RGBA( @@ -443,7 +443,7 @@ static void glui_frame(void) ticker_limit = (width - glui->margin*2) / glui->glyph_width - strlen(menu_hash_to_str(MENU_VALUE_BACK)) * 2; menu_animation_ticker_str(title_buf, ticker_limit, - frame_count / 100, title, true); + *frame_count / 100, title, true); glui_blit_line(width / 2, 0, title_buf, title_color, TEXT_ALIGN_CENTER); diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 9958efbe43..db90ca0d47 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -377,7 +377,7 @@ static void rgui_render(void) global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); menu_animation_t *anim = menu_animation_get_ptr(); - uint64_t frame_count = video_driver_get_frame_count(); + uint64_t *frame_count = video_driver_get_frame_count(); rgui_t *rgui = NULL; title[0] = '\0'; @@ -466,7 +466,7 @@ static void rgui_render(void) menu_entries_get_title(title, sizeof(title)); menu_animation_ticker_str(title_buf, RGUI_TERM_WIDTH - 10, - frame_count / RGUI_TERM_START_X, title, true); + *frame_count / RGUI_TERM_START_X, title, true); hover_color = HOVER_COLOR(settings); normal_color = NORMAL_COLOR(settings); @@ -527,9 +527,9 @@ static void rgui_render(void) menu_entry_get_path(i, entry_path, sizeof(entry_path)); menu_animation_ticker_str(entry_title_buf, RGUI_TERM_WIDTH - (entry_spacing + 1 + 2), - frame_count / RGUI_TERM_START_X, entry_path, entry_selected); + *frame_count / RGUI_TERM_START_X, entry_path, entry_selected); menu_animation_ticker_str(type_str_buf, entry_spacing, - frame_count / RGUI_TERM_START_X, + *frame_count / RGUI_TERM_START_X, entry_value, entry_selected); snprintf(message, sizeof(message), "%c %-*.*s %-*s", diff --git a/menu/drivers/rmenu.c b/menu/drivers/rmenu.c index b70529018f..2c961afe95 100644 --- a/menu/drivers/rmenu.c +++ b/menu/drivers/rmenu.c @@ -133,7 +133,7 @@ static void rmenu_render(void) menu_animation_t *anim = menu_animation_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); - uint64_t frame_count = video_driver_get_frame_count(); + uint64_t *frame_count = video_driver_get_frame_count(); size_t entries_end = menu_entries_get_end(); if (!menu) @@ -172,7 +172,7 @@ static void rmenu_render(void) menu_entries_get_title(title, sizeof(title)); menu_animation_ticker_str(title_buf, RMENU_TERM_WIDTH, - frame_count / 15, title, true); + *frame_count / 15, title, true); font_parms.x = POSITION_EDGE_MIN + POSITION_OFFSET; font_parms.y = POSITION_EDGE_MIN + POSITION_RENDER_OFFSET @@ -207,9 +207,9 @@ static void rmenu_render(void) menu_entry_get_path(i, entry_path, sizeof(entry_path)); menu_animation_ticker_str(entry_title_buf, RMENU_TERM_WIDTH - (entry_spacing + 1 + 2), - frame_count / 15, entry_path, entry_selected); + *frame_count / 15, entry_path, entry_selected); menu_animation_ticker_str(type_str_buf, entry_spacing, - frame_count / 15, entry_value, entry_selected); + *frame_count / 15, entry_value, entry_selected); snprintf(message, sizeof(message), "%c %s", entry_selected ? '>' : ' ', entry_title_buf); diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index ac617af6e4..26f832163c 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1230,7 +1230,7 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl, const char *label = NULL; xmb_node_t *core_node = NULL; size_t end = 0; - uint64_t frame_count = video_driver_get_frame_count(); + uint64_t *frame_count = video_driver_get_frame_count(); menu_handle_t *menu = menu_driver_get_ptr(); settings_t *settings = config_get_ptr(); @@ -1390,7 +1390,7 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl, } menu_animation_ticker_str(name, ticker_limit, - frame_count / 20, entry.path, + *frame_count / 20, entry.path, (i == current)); xmb_draw_text(menu, xmb, name, @@ -1400,7 +1400,7 @@ static void xmb_draw_items(xmb_handle_t *xmb, gl_t *gl, 1, node->label_alpha, TEXT_ALIGN_LEFT); menu_animation_ticker_str(value, 35, - frame_count / 20, entry.value, + *frame_count / 20, entry.value, (i == current)); diff --git a/runloop.c b/runloop.c index ef9a0ae256..7bc9705874 100644 --- a/runloop.c +++ b/runloop.c @@ -612,9 +612,8 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, bool shutdown_pressed = system && system->shutdown; bool video_alive = video && video->alive(driver->video_data); bool movie_end = (global->bsv.movie_end && global->bsv.eof_exit); - uint64_t frame_count = (driver && driver->video_poke && driver->video_poke->get_frame_count) ? - driver->video_poke->get_frame_count(driver->video_data) : 0; - bool frame_count_end = global->max_frames && (frame_count >= global->max_frames); + uint64_t *frame_count = video_driver_get_frame_count(); + bool frame_count_end = global->max_frames && (*frame_count >= global->max_frames); if (shutdown_pressed || cmd->quit_key_pressed || frame_count_end || movie_end || !video_alive) From 157ca684a0f42f9f2457c05594c22be1e65ce1d5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 23:24:28 +0200 Subject: [PATCH 109/822] Pass pointers to input_apply_turbo --- libretro_version_1.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libretro_version_1.c b/libretro_version_1.c index 82c88af5b4..7d66f34a24 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -132,11 +132,9 @@ static void video_frame(const void *data, unsigned width, * key ID, otherwise the value of @res will be returned. * **/ -static bool input_apply_turbo(unsigned port, unsigned id, bool res) +static bool input_apply_turbo(global_t *global, settings_t *settings, + unsigned port, unsigned id, bool res) { - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - if (res && global->turbo.frame_enable[port]) global->turbo.enable[port] |= (1 << id); else if (!res) @@ -206,7 +204,7 @@ static int16_t input_state(unsigned port, unsigned device, /* Don't allow turbo for D-pad. */ if (device == RETRO_DEVICE_JOYPAD && (id < RETRO_DEVICE_ID_JOYPAD_UP || id > RETRO_DEVICE_ID_JOYPAD_RIGHT)) - res = input_apply_turbo(port, id, res); + res = input_apply_turbo(global, settings, port, id, res); if (global->bsv.movie && !global->bsv.movie_playback) bsv_movie_set_input(global->bsv.movie, res); From f710b61edbd866075332581772eb7cf37d503f50 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 23:28:34 +0200 Subject: [PATCH 110/822] Don't make input_apply_turbo a separate function again --- libretro_version_1.c | 53 ++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/libretro_version_1.c b/libretro_version_1.c index 7d66f34a24..df1a8632c3 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -115,37 +115,6 @@ static void video_frame(const void *data, unsigned width, *frame_count = *frame_count + 1; } -/** - * input_apply_turbo: - * @port : user number - * @id : identifier of the key - * @res : boolean return value. FIXME/TODO: to be refactored. - * - * Apply turbo button if activated. - * - * If turbo button is held, all buttons pressed except - * for D-pad will go into a turbo mode. Until the button is - * released again, the input state will be modulated by a - * periodic pulse defined by the configured duty cycle. - * - * Returns: 1 (true) if turbo button is enabled for this - * key ID, otherwise the value of @res will be returned. - * - **/ -static bool input_apply_turbo(global_t *global, settings_t *settings, - unsigned port, unsigned id, bool res) -{ - if (res && global->turbo.frame_enable[port]) - global->turbo.enable[port] |= (1 << id); - else if (!res) - global->turbo.enable[port] &= ~(1 << id); - - if (global->turbo.enable[port] & (1 << id)) - return res && ((global->turbo.count % settings->input.turbo_period) - < settings->input.turbo_duty_cycle); - return res; -} - /** * input_state: * @port : user number. @@ -204,7 +173,27 @@ static int16_t input_state(unsigned port, unsigned device, /* Don't allow turbo for D-pad. */ if (device == RETRO_DEVICE_JOYPAD && (id < RETRO_DEVICE_ID_JOYPAD_UP || id > RETRO_DEVICE_ID_JOYPAD_RIGHT)) - res = input_apply_turbo(global, settings, port, id, res); + { + /* + * Apply turbo button if activated. + * + * If turbo button is held, all buttons pressed except + * for D-pad will go into a turbo mode. Until the button is + * released again, the input state will be modulated by a + * periodic pulse defined by the configured duty cycle. + */ + if (res && global->turbo.frame_enable[port]) + global->turbo.enable[port] |= (1 << id); + else if (!res) + global->turbo.enable[port] &= ~(1 << id); + + if (global->turbo.enable[port] & (1 << id)) + { + /* if turbo button is enabled for this key ID */ + res = res && ((global->turbo.count % settings->input.turbo_period) + < settings->input.turbo_duty_cycle); + } + } if (global->bsv.movie && !global->bsv.movie_playback) bsv_movie_set_input(global->bsv.movie, res); From 821688f976b1c9cc3ce423445144d24d92d6a73c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 23:34:13 +0200 Subject: [PATCH 111/822] Take turbo_enable array out of global struct --- libretro_version_1.c | 7 ++++--- runloop.h | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libretro_version_1.c b/libretro_version_1.c index df1a8632c3..636865fb82 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -174,6 +174,7 @@ static int16_t input_state(unsigned port, unsigned device, if (device == RETRO_DEVICE_JOYPAD && (id < RETRO_DEVICE_ID_JOYPAD_UP || id > RETRO_DEVICE_ID_JOYPAD_RIGHT)) { + static uint16_t turbo_enable[MAX_USERS]; /* * Apply turbo button if activated. * @@ -183,11 +184,11 @@ static int16_t input_state(unsigned port, unsigned device, * periodic pulse defined by the configured duty cycle. */ if (res && global->turbo.frame_enable[port]) - global->turbo.enable[port] |= (1 << id); + turbo_enable[port] |= (1 << id); else if (!res) - global->turbo.enable[port] &= ~(1 << id); + turbo_enable[port] &= ~(1 << id); - if (global->turbo.enable[port] & (1 << id)) + if (turbo_enable[port] & (1 << id)) { /* if turbo button is enabled for this key ID */ res = res && ((global->turbo.count % settings->input.turbo_period) diff --git a/runloop.h b/runloop.h index ce03a7fd33..5808e3bb0d 100644 --- a/runloop.h +++ b/runloop.h @@ -201,7 +201,6 @@ typedef struct global struct { bool frame_enable[MAX_USERS]; - uint16_t enable[MAX_USERS]; unsigned count; } turbo; From 1e344bc85c409c2fa365a01c50e45716b21bc884 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 23:40:01 +0200 Subject: [PATCH 112/822] Revert "Take turbo_enable array out of global struct" This reverts commit 821688f976b1c9cc3ce423445144d24d92d6a73c. --- libretro_version_1.c | 7 +++---- runloop.h | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libretro_version_1.c b/libretro_version_1.c index 636865fb82..df1a8632c3 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -174,7 +174,6 @@ static int16_t input_state(unsigned port, unsigned device, if (device == RETRO_DEVICE_JOYPAD && (id < RETRO_DEVICE_ID_JOYPAD_UP || id > RETRO_DEVICE_ID_JOYPAD_RIGHT)) { - static uint16_t turbo_enable[MAX_USERS]; /* * Apply turbo button if activated. * @@ -184,11 +183,11 @@ static int16_t input_state(unsigned port, unsigned device, * periodic pulse defined by the configured duty cycle. */ if (res && global->turbo.frame_enable[port]) - turbo_enable[port] |= (1 << id); + global->turbo.enable[port] |= (1 << id); else if (!res) - turbo_enable[port] &= ~(1 << id); + global->turbo.enable[port] &= ~(1 << id); - if (turbo_enable[port] & (1 << id)) + if (global->turbo.enable[port] & (1 << id)) { /* if turbo button is enabled for this key ID */ res = res && ((global->turbo.count % settings->input.turbo_period) diff --git a/runloop.h b/runloop.h index 5808e3bb0d..ce03a7fd33 100644 --- a/runloop.h +++ b/runloop.h @@ -201,6 +201,7 @@ typedef struct global struct { bool frame_enable[MAX_USERS]; + uint16_t enable[MAX_USERS]; unsigned count; } turbo; From d184e9b99e166414dd48d64c1abaf224ef1faef8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 23:46:50 +0200 Subject: [PATCH 113/822] (runloop) Less pointer grabbing --- runloop.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/runloop.c b/runloop.c index 7bc9705874..e67ffa5458 100644 --- a/runloop.c +++ b/runloop.c @@ -605,10 +605,10 @@ static int do_state_checks(driver_t *driver, settings_t *settings, * Returns: 1 if any of the above conditions are true, otherwise 0. **/ static INLINE int time_to_exit(driver_t *driver, global_t *global, + rarch_system_info_t *system, event_cmd_state_t *cmd) { const video_driver_t *video = driver ? (const video_driver_t*)driver->video : NULL; - rarch_system_info_t *system = rarch_system_info_get_ptr(); bool shutdown_pressed = system && system->shutdown; bool video_alive = video && video->alive(driver->video_data); bool movie_end = (global->bsv.movie_end && global->bsv.eof_exit); @@ -627,10 +627,10 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, * Updates frame timing if frame timing callback is in use by the core. **/ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, + rarch_system_info_t *system, global_t *global) { retro_time_t curr_time = rarch_get_time_usec(); - rarch_system_info_t *system = rarch_system_info_get_ptr(); retro_time_t delta = curr_time - system->frame_time_last; bool is_locked_fps = global->is_paused || driver->nonblock_state; @@ -812,9 +812,10 @@ static bool input_flush(retro_input_t *input, global_t *global) * * Returns: -1 if we are about to quit, otherwise 0. **/ -static int rarch_main_iterate_quit(settings_t *settings, global_t *global) +static int rarch_main_iterate_quit(settings_t *settings, + rarch_system_info_t *system, + global_t *global) { - rarch_system_info_t *system = rarch_system_info_get_ptr(); if (global->core_shutdown_initiated && settings->load_dummy_on_core_shutdown) @@ -1035,11 +1036,11 @@ int rarch_main_iterate(void) rarch_main_cmd_get_state(&cmd, input, old_input, trigger_input); - if (time_to_exit(driver, global, &cmd)) - return rarch_main_iterate_quit(settings, global); + if (time_to_exit(driver, global, system, &cmd)) + return rarch_main_iterate_quit(settings, system, global); if (system->frame_time.callback) - rarch_update_frame_time(driver, settings, global); + rarch_update_frame_time(driver, settings, system, global); do_pre_state_checks(settings, global, &cmd); @@ -1064,7 +1065,7 @@ int rarch_main_iterate(void) if (global->exec) { global->exec = false; - return rarch_main_iterate_quit(settings, global); + return rarch_main_iterate_quit(settings, system, global); } if (do_state_checks(driver, settings, global, &cmd)) From 89d8b246b07e11347a1bc1f6b617da7742e34756 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 3 Aug 2015 23:48:58 +0200 Subject: [PATCH 114/822] (runloop) Less pointer grabbing --- runloop.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/runloop.c b/runloop.c index e67ffa5458..e0723d9515 100644 --- a/runloop.c +++ b/runloop.c @@ -921,15 +921,10 @@ bool rarch_main_is_idle(void) } static bool rarch_main_cmd_get_state_menu_toggle_button_combo( + driver_t *driver, settings_t *settings, retro_input_t input, retro_input_t old_input, retro_input_t trigger_input) { - driver_t *driver = driver_get_ptr(); - settings_t *settings = config_get_ptr(); - - if (!settings) - return false; - switch (settings->input.menu_toggle_gamepad_combo) { case 0: @@ -956,7 +951,8 @@ static bool rarch_main_cmd_get_state_menu_toggle_button_combo( return true; } -static void rarch_main_cmd_get_state(event_cmd_state_t *cmd, +static void rarch_main_cmd_get_state(driver_t *driver, + settings_t *settings, event_cmd_state_t *cmd, retro_input_t input, retro_input_t old_input, retro_input_t trigger_input) { @@ -968,7 +964,8 @@ static void rarch_main_cmd_get_state(event_cmd_state_t *cmd, cmd->grab_mouse_pressed = BIT64_GET(trigger_input, RARCH_GRAB_MOUSE_TOGGLE); #ifdef HAVE_MENU cmd->menu_pressed = BIT64_GET(trigger_input, RARCH_MENU_TOGGLE) || - rarch_main_cmd_get_state_menu_toggle_button_combo(input, + rarch_main_cmd_get_state_menu_toggle_button_combo(driver, + settings, input, old_input, trigger_input); #endif cmd->quit_key_pressed = BIT64_GET(input, RARCH_QUIT_KEY); @@ -1034,7 +1031,7 @@ int rarch_main_iterate(void) trigger_input = input & ~old_input; - rarch_main_cmd_get_state(&cmd, input, old_input, trigger_input); + rarch_main_cmd_get_state(driver, settings, &cmd, input, old_input, trigger_input); if (time_to_exit(driver, global, system, &cmd)) return rarch_main_iterate_quit(settings, system, global); From 36398585225abef6a465e78ca1572c2e22c7f78f Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 5 Aug 2015 04:11:20 +0200 Subject: [PATCH 115/822] (iOS) Create ObjC version of dir_list --- griffin/griffin.c | 2 + griffin/griffin_objc.m | 1 + libretro-common/file/dir_list_obj.m | 226 ++++++++++++++++++++++++++++ 3 files changed, 229 insertions(+) create mode 100644 libretro-common/file/dir_list_obj.m diff --git a/griffin/griffin.c b/griffin/griffin.c index 46848fdbd1..a6c3aa3c4c 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -575,7 +575,9 @@ FILE #include "../content.c" #include "../libretro-common/file/file_path.c" #include "../file_path_special.c" +#ifndef IOS #include "../libretro-common/file/dir_list.c" +#endif #include "../dir_list_special.c" #include "../libretro-common/string/string_list.c" #include "../libretro-common/string/stdstring.c" diff --git a/griffin/griffin_objc.m b/griffin/griffin_objc.m index 3629921122..6385a12a97 100644 --- a/griffin/griffin_objc.m +++ b/griffin/griffin_objc.m @@ -34,6 +34,7 @@ #if defined(HAVE_COCOATOUCH) #if TARGET_OS_IPHONE +#include "../libretro-common/file/dir_list_obj.m" #include "../ui/drivers/cocoa/cocoatouch_menu.m" #include "../ui/drivers/cocoa/cocoatouch_browser.m" diff --git a/libretro-common/file/dir_list_obj.m b/libretro-common/file/dir_list_obj.m new file mode 100644 index 0000000000..b1325acee1 --- /dev/null +++ b/libretro-common/file/dir_list_obj.m @@ -0,0 +1,226 @@ +/* Copyright (C) 2010-2015 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (dir_list.c). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +static int qstrcmp_plain(const void *a_, const void *b_) +{ + const struct string_list_elem *a = (const struct string_list_elem*)a_; + const struct string_list_elem *b = (const struct string_list_elem*)b_; + + return strcasecmp(a->data, b->data); +} + +static int qstrcmp_dir(const void *a_, const void *b_) +{ + const struct string_list_elem *a = (const struct string_list_elem*)a_; + const struct string_list_elem *b = (const struct string_list_elem*)b_; + int a_type = a->attr.i; + int b_type = b->attr.i; + + + /* Sort directories before files. */ + if (a_type != b_type) + return b_type - a_type; + return strcasecmp(a->data, b->data); +} + +/** + * dir_list_sort: + * @list : pointer to the directory listing. + * @dir_first : move the directories in the listing to the top? + * + * Sorts a directory listing. + * + **/ +void dir_list_sort(struct string_list *list, bool dir_first) +{ + if (list) + qsort(list->elems, list->size, sizeof(struct string_list_elem), + dir_first ? qstrcmp_dir : qstrcmp_plain); +} + +/** + * dir_list_free: + * @list : pointer to the directory listing + * + * Frees a directory listing. + * + **/ +void dir_list_free(struct string_list *list) +{ + string_list_free(list); +} + +/** + * + * dirent_is_directory: + * @path : path to the directory entry. + * @entry : pointer to the directory entry. + * + * Is the directory listing entry a directory? + * + * Returns: true if directory listing entry is + * a directory, false if not. + */ + +static bool dirent_is_directory(const char *path) +{ + BOOL is_directory; + BOOL file_exists_at_path = [[NSFileManager defaultManager] fileExistsAtPath:@(path) isDirectory:&is_directory]; + + (void)file_exists_at_path; + + return is_directory; +} + +/** + * parse_dir_entry: + * @name : name of the directory listing entry. + * @file_path : file path of the directory listing entry. + * @is_dir : is the directory listing a directory? + * @include_dirs : include directories as part of the finished directory listing? + * @list : pointer to directory listing. + * @ext_list : pointer to allowed file extensions listing. + * @file_ext : file extension of the directory listing entry. + * + * Parses a directory listing. + * + * Returns: zero on success, -1 on error, 1 if we should + * continue to the next entry in the directory listing. + **/ +static int parse_dir_entry(const char *name, char *file_path, + bool is_dir, bool include_dirs, + struct string_list *list, struct string_list *ext_list, + const char *file_ext) +{ + union string_list_elem_attr attr; + bool is_compressed_file = false; + bool supported_by_core = false; + + attr.i = RARCH_FILETYPE_UNSET; + + if (!is_dir) + { + is_compressed_file = path_is_compressed_file(file_path); + if (string_list_find_elem_prefix(ext_list, ".", file_ext)) + supported_by_core = true; + } + + if (!include_dirs && is_dir) + return 1; + + if (!strcmp(name, ".") || !strcmp(name, "..")) + return 1; + + if (!is_compressed_file && !is_dir && ext_list && !supported_by_core) + return 1; + + if (is_dir) + attr.i = RARCH_DIRECTORY; + if (is_compressed_file) + attr.i = RARCH_COMPRESSED_ARCHIVE; + /* The order of these ifs is important. + * If the file format is explicitly supported by the libretro-core, we + * need to immediately load it and not designate it as a compressed file. + * + * Example: .zip could be supported as a image by the core and as a + * compressed_file. In that case, we have to interpret it as a image. + * + * */ + if (supported_by_core) + attr.i = RARCH_PLAIN_FILE; + + if (!string_list_append(list, file_path, attr)) + return -1; + + return 0; +} + +/** + * dir_list_new: + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? + * + * Create a directory listing. + * + * Returns: pointer to a directory listing of type 'struct string_list *' on success, + * NULL in case of error. Has to be freed manually. + **/ +struct string_list *dir_list_new(const char *dir, + const char *ext, bool include_dirs) +{ + NSArray *entries = NULL; + char path_buf[PATH_MAX_LENGTH] = {0}; + struct string_list *ext_list = NULL; + struct string_list *list = NULL; + + (void)path_buf; + + if (!(list = string_list_new())) + return NULL; + + if (ext) + ext_list = string_split(ext, "|"); + + entries = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@(dir) error:nil]; + + for (NSString *name in entries) + { + int ret = 0; + char file_path[PATH_MAX_LENGTH] = {0}; + const char *file_ext = path_get_extension([name UTF8String]); + bool is_dir = false; + + fill_pathname_join(file_path, dir, [name UTF8String], sizeof(file_path)); + + is_dir = dirent_is_directory(file_path); + + ret = parse_dir_entry([name UTF8String], file_path, is_dir, + include_dirs, list, ext_list, file_ext); + + if (ret == -1) + goto error; + + if (ret == 1) + continue; + } + + string_list_free(ext_list); + return list; + +error: + string_list_free(list); + string_list_free(ext_list); + return NULL; +} From 747a2263c8eb7d7a8683aeea25d5af8b2ad3c9dc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 05:55:04 +0200 Subject: [PATCH 116/822] (menu_cbs_select.c) Implement action_select_directory --- menu/cbs/menu_cbs_ok.c | 2 +- menu/cbs/menu_cbs_select.c | 14 +++++++++++--- menu/menu_cbs.h | 3 +++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 69cdbdace7..f4e8989c61 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1124,7 +1124,7 @@ static int action_ok_compressed_archive_push(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } -static int action_ok_directory_push(const char *path, +int action_ok_directory_push(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { menu_displaylist_info_t info = {0}; diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index 5c77020cab..54082cd438 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -51,12 +51,18 @@ static int action_select_default(const char *path, const char *label, unsigned t return ret; } -static int action_select_directory(const char *path, const char *label, unsigned type, +static int action_select_directory_stub(const char *path, const char *label, unsigned type, size_t idx) { return 0; } +static int action_select_directory(const char *path, const char *label, unsigned type, + size_t idx) +{ + return action_ok_directory_push(path, label, type, idx, 0 /* ignored */); +} + static int action_select_core_setting(const char *path, const char *label, unsigned type, size_t idx) { @@ -90,11 +96,13 @@ static int menu_cbs_init_bind_select_compare_type( { switch (type) { - case MENU_FILE_PATH: case MENU_FILE_DIRECTORY: - case MENU_FILE_USE_DIRECTORY: cbs->action_select = action_select_directory; break; + case MENU_FILE_PATH: + case MENU_FILE_USE_DIRECTORY: + cbs->action_select = action_select_directory_stub; + break; default: return -1; } diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 3590e04edf..7d4a2b38eb 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -33,6 +33,9 @@ extern char core_updater_path[PATH_MAX_LENGTH]; /* Function callbacks */ +int action_ok_directory_push(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx); + int core_setting_right(unsigned type, const char *label, bool wraparound); From 6a582dcdac88f23d773b7e597b792a71440a7dcb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 09:41:02 +0200 Subject: [PATCH 117/822] (menu_cbs_select.c) Hook up 'Use This Directory' --- menu/cbs/menu_cbs_ok.c | 2 +- menu/cbs/menu_cbs_select.c | 10 +++++++++- menu/menu_cbs.h | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index f4e8989c61..827913c957 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -926,7 +926,7 @@ static int action_ok_remap_file_save_game(const char *path, return 0; } -static int action_ok_path_use_directory(const char *path, +int action_ok_path_use_directory(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { return menu_entry_pathdir_set_value(0, NULL); diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index 54082cd438..4a49dd79f2 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -51,6 +51,12 @@ static int action_select_default(const char *path, const char *label, unsigned t return ret; } +static int action_select_path_use_directory(const char *path, + const char *label, unsigned type, size_t idx) +{ + return action_ok_path_use_directory(path, label, type, idx, 0 /* unused */); +} + static int action_select_directory_stub(const char *path, const char *label, unsigned type, size_t idx) { @@ -99,8 +105,10 @@ static int menu_cbs_init_bind_select_compare_type( case MENU_FILE_DIRECTORY: cbs->action_select = action_select_directory; break; - case MENU_FILE_PATH: case MENU_FILE_USE_DIRECTORY: + cbs->action_select = action_select_path_use_directory; + break; + case MENU_FILE_PATH: cbs->action_select = action_select_directory_stub; break; default: diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 7d4a2b38eb..4122eeda27 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -33,6 +33,9 @@ extern char core_updater_path[PATH_MAX_LENGTH]; /* Function callbacks */ +int action_ok_path_use_directory(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx); + int action_ok_directory_push(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx); From c415d90beb8f674b5f490b9966e7d3bf83a50073 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 5 Aug 2015 09:51:17 +0200 Subject: [PATCH 118/822] (iOS) Start not using the cocoatouch browser anymore --- ui/drivers/cocoa/cocoatouch_menu.m | 41 ------------------------------ 1 file changed, 41 deletions(-) diff --git a/ui/drivers/cocoa/cocoatouch_menu.m b/ui/drivers/cocoa/cocoatouch_menu.m index b0b35ca21e..09377228b2 100644 --- a/ui/drivers/cocoa/cocoatouch_menu.m +++ b/ui/drivers/cocoa/cocoatouch_menu.m @@ -324,47 +324,6 @@ static void RunActionSheet(const char* title, const struct string_list* items, - (void)wasSelectedOnTableView:(UITableView*)tableView ofController:(UIViewController*)controller { - char pathdir[PATH_MAX_LENGTH], pathdir_ext[PATH_MAX_LENGTH]; - NSString *path; - RADirectoryList* list; - RAMenuItemPathDir __weak* weakSelf = self; - - menu_entry_pathdir_selected(self.i); - menu_entry_pathdir_get_value(self.i, pathdir, sizeof(pathdir)); - menu_entry_pathdir_extensions(self.i, pathdir_ext, sizeof(pathdir_ext)); - - path = BOXSTRING(pathdir); - - if ( menu_entry_get_type(self.i) == MENU_ENTRY_PATH ) - path = [path stringByDeletingLastPathComponent]; - - list = - [[RADirectoryList alloc] - initWithPath:path - extensions:pathdir_ext - action:^(RADirectoryList* list, RADirectoryItem* item) { - const char *newval = ""; - if (item) { - if (list.forDirectory && !item.isDirectory) - return; - - newval = [item.path UTF8String]; - } else { - if (!list.allowBlank) - return; - } - - menu_entry_pathdir_set_value(self.i, newval); - [[list navigationController] popViewControllerAnimated:YES]; - menu_entry_select(self.i); - [weakSelf.parentTable reloadData]; - }]; - - list.allowBlank = menu_entry_pathdir_allow_empty(self.i); - // JM: Is this just Dir vs Path? - list.forDirectory = menu_entry_pathdir_for_directory(self.i); - - [controller.navigationController pushViewController:list animated:YES]; } @end From 6bdfc2f2006993c45f87eaf061d9855b5b3fbb22 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 10:01:55 +0200 Subject: [PATCH 119/822] Take out unnecessary logging --- menu/cbs/menu_cbs_ok.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 827913c957..31847a807c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1359,8 +1359,6 @@ static int action_ok_set_path(const char *path, menu_list_get_last_stack(menu_list, &menu_path, &menu_label, NULL, NULL); - RARCH_LOG("menu_label: %s\n", menu_label); - setting = menu_setting_find(menu_label); if (!setting) @@ -1368,7 +1366,6 @@ static int action_ok_set_path(const char *path, menu_action_setting_set_current_string_path(setting, menu_path, path); - RARCH_LOG("setting name: %s\n", setting->name); menu_list_pop_stack_by_needle(menu_list, setting->name); return 0; From afcf53aaef2b3e422314ffe24d5c6ea694ae9d73 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 10:16:46 +0200 Subject: [PATCH 120/822] (menu_cbs_select.c) Hook up ST_DIR --- menu/cbs/menu_cbs_ok.c | 2 +- menu/cbs/menu_cbs_select.c | 23 +++++++++++++++++++++++ menu/menu_cbs.h | 3 +++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 31847a807c..5ccea16fa3 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -365,7 +365,7 @@ static int action_ok_shader_parameters(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } -static int action_ok_push_generic_list(const char *path, +int action_ok_push_generic_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { menu_displaylist_info_t info = {0}; diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index 4a49dd79f2..39a0fa0c8d 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -87,6 +87,12 @@ static int action_select_input_desc(const char *path, const char *label, unsigne return action_right_input_desc(type, label, true); } +static int action_select_push_generic_list(const char *path, const char *label, unsigned type, + size_t idx) +{ + return action_ok_push_generic_list(path, label, type, idx, 0 /* unused */); +} + static int menu_cbs_init_bind_select_compare_type( menu_file_list_cbs_t *cbs, unsigned type) { @@ -119,6 +125,20 @@ static int menu_cbs_init_bind_select_compare_type( return 0; } +static int menu_cbs_init_bind_select_compare_label(menu_file_list_cbs_t *cbs, + const char *label, uint32_t hash, const char *elem0) +{ + rarch_setting_t *setting = menu_setting_find(label); + + if (setting && setting->browser_selection_type == ST_DIR) + { + cbs->action_select = action_select_push_generic_list; + return 0; + } + + return -1; +} + int menu_cbs_init_bind_select(menu_file_list_cbs_t *cbs, const char *path, const char *label, unsigned type, size_t idx, const char *elem0, const char *elem1, @@ -129,6 +149,9 @@ int menu_cbs_init_bind_select(menu_file_list_cbs_t *cbs, cbs->action_select = action_select_default; + if (menu_cbs_init_bind_select_compare_label(cbs, label, label_hash, elem0) == 0) + return 0; + if (menu_cbs_init_bind_select_compare_type(cbs, type) == 0) return 0; diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 4122eeda27..d82b9b2655 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -33,6 +33,9 @@ extern char core_updater_path[PATH_MAX_LENGTH]; /* Function callbacks */ +int action_ok_push_generic_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx); + int action_ok_path_use_directory(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx); From e873783dca2668c0bf2cc1f36a4b0954372aa379 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 5 Aug 2015 11:41:41 +0200 Subject: [PATCH 121/822] (UI) Refactor --- ui/drivers/ui_cocoatouch.m | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 928b118bb9..2dd24f2eab 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -42,6 +42,15 @@ static CFRunLoopTimerRef iterate_timer; /* forward declaration */ void apple_rarch_exited(void); +static void rarch_enable_ui(void) +{ + global_t *global = global_get_ptr(); + + global->is_paused = true; + global->is_idle = true; + global->ui_companion_is_on_foreground = true; +} + static void rarch_draw(void) { global_t *global = global_get_ptr(); @@ -413,14 +422,7 @@ void apple_stop_iterate_timer() - (IBAction)showPauseMenu:(id)sender { - global_t *global = global_get_ptr(); - - if (global) - { - global->is_paused = true; - global->is_idle = true; - global->ui_companion_is_on_foreground = true; - } + rarch_enable_ui(); [[UIApplication sharedApplication] setStatusBarHidden:false withAnimation:UIStatusBarAnimationNone]; [[UIApplication sharedApplication] setIdleTimerDisabled:false]; @@ -505,7 +507,6 @@ typedef struct ui_companion_cocoatouch static void ui_companion_cocoatouch_switch_to_ios(void *data) { RetroArch_iOS *ap = NULL; - global_t *global = global_get_ptr(); (void)data; @@ -513,7 +514,6 @@ static void ui_companion_cocoatouch_switch_to_ios(void *data) return; ap = (RetroArch_iOS *)apple_platform; - global->is_idle = true; [ap showPauseMenu:ap]; } @@ -563,6 +563,8 @@ static void *ui_companion_cocoatouch_init(void) if (!handle) return NULL; + + rarch_enable_ui(); return handle; } From 3f46a74f088b152fa595e31ba3464267fed93a04 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 5 Aug 2015 12:06:37 +0200 Subject: [PATCH 122/822] (UI CocoaTouch) Cleanups --- ui/drivers/ui_cocoatouch.m | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 2dd24f2eab..33e2d5080c 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -51,6 +51,15 @@ static void rarch_enable_ui(void) global->ui_companion_is_on_foreground = true; } +static void rarch_disable_ui(void) +{ + global_t *global = global_get_ptr(); + + global->is_paused = false; + global->is_idle = false; + global->ui_companion_is_on_foreground = false; +} + static void rarch_draw(void) { global_t *global = global_get_ptr(); @@ -300,7 +309,7 @@ enum [self apple_start_iteration]; } -void apple_start_iterate_observer() +void apple_start_iterate_observer(void) { if (iterate_observer) return; @@ -310,7 +319,7 @@ void apple_start_iterate_observer() CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes); } -void apple_start_iterate_timer() +void apple_start_iterate_timer(void) { CFTimeInterval interval; @@ -329,7 +338,7 @@ void apple_start_iterate_timer() apple_start_iterate_timer(); } -void apple_stop_iterate_observer() +void apple_stop_iterate_observer(void) { if (!iterate_observer) return; @@ -339,7 +348,7 @@ void apple_stop_iterate_observer() iterate_observer = NULL; } -void apple_stop_iterate_timer() +void apple_stop_iterate_timer(void) { if (!iterate_timer) return; @@ -407,17 +416,13 @@ void apple_stop_iterate_timer() - (void)showGameView { - global_t *global = global_get_ptr(); - [self popToRootViewControllerAnimated:NO]; [self setToolbarHidden:true animated:NO]; [[UIApplication sharedApplication] setStatusBarHidden:true withAnimation:UIStatusBarAnimationNone]; [[UIApplication sharedApplication] setIdleTimerDisabled:true]; [self.window setRootViewController:[CocoaView get]]; - global->is_paused = false; - global->is_idle = false; - global->ui_companion_is_on_foreground = false; + rarch_disable_ui(); } - (IBAction)showPauseMenu:(id)sender From 74ee9b05f3e105b4ff7f6ef934beb0ccee844a96 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 12:40:47 +0200 Subject: [PATCH 123/822] Create rarch_main_set_idle - make 'idle' variable self-contained --- gfx/video_driver.c | 3 +-- input/drivers/android_input.c | 4 ++-- menu/drivers/rgui.c | 2 +- menu/menu.c | 2 +- runloop.c | 16 ++++++++++------ runloop.h | 3 ++- ui/drivers/ui_cocoatouch.m | 16 ++++++++-------- 7 files changed, 25 insertions(+), 21 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 6147591506..0522f3da11 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -829,10 +829,9 @@ void video_driver_get_video_output_prev(void) void video_driver_cached_frame(void) { driver_t *driver = driver_get_ptr(); - global_t *global = global_get_ptr(); void *recording = driver ? driver->recording_data : NULL; - if (global->is_idle) + if (rarch_main_is_idle()) return; /* Cannot allow recording when pushing duped frames. */ diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index f88aec840b..d2f74366e8 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -359,7 +359,7 @@ static void engine_handle_cmd(void) { RARCH_LOG("Pausing RetroArch.\n"); global->is_paused = true; - global->is_idle = true; + rarch_main_set_idle(true); } break; @@ -389,7 +389,7 @@ static void engine_handle_cmd(void) case APP_CMD_GAINED_FOCUS: global->is_paused = false; - global->is_idle = false; + rarch_main_set_idle(false); if ((android_app->sensor_state_mask & (UINT64_C(1) << RETRO_SENSOR_ACCELEROMETER_ENABLE)) diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index db90ca0d47..0328d108ed 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -397,7 +397,7 @@ static void rgui_render(void) if (menu_entries_needs_refresh() && menu_driver_alive() && !disp->msg_force) return; - if (global->is_idle) + if (rarch_main_is_idle()) return; if (!menu_display_update_pending()) diff --git a/menu/menu.c b/menu/menu.c index b4cd42dfef..3cd699082f 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -364,7 +364,7 @@ int menu_iterate(retro_input_t input, ret = menu_entry_iterate(action); - if (menu_driver_alive() && !global->is_idle) + if (menu_driver_alive() && !rarch_main_is_idle()) menu_display_fb(); menu_driver_set_texture(); diff --git a/runloop.c b/runloop.c index e0723d9515..9b11e845bd 100644 --- a/runloop.c +++ b/runloop.c @@ -44,6 +44,8 @@ static struct global g_extern; +static bool main_is_idle; + /** * check_pause: * @pressed : was libretro pause key pressed? @@ -512,7 +514,7 @@ static int do_pause_state_checks( static int do_state_checks(driver_t *driver, settings_t *settings, global_t *global, event_cmd_state_t *cmd) { - if (global->is_idle) + if (main_is_idle) return 1; if (cmd->screenshot_pressed) @@ -868,7 +870,7 @@ global_t *global_get_ptr(void) void rarch_main_state_free(void) { - g_extern.is_idle = false; + main_is_idle = false; g_extern.ui_companion_is_on_foreground = false; g_extern.frames.limit.minimum_time = 0.0; g_extern.frames.limit.last_time = 0.0; @@ -912,12 +914,14 @@ void rarch_main_clear_state(void) rarch_main_global_free(); } +void rarch_main_set_idle(unsigned enable) +{ + main_is_idle = enable; +} + bool rarch_main_is_idle(void) { - global_t *global = global_get_ptr(); - if (!global) - return false; - return global->is_idle; + return main_is_idle; } static bool rarch_main_cmd_get_state_menu_toggle_button_combo( diff --git a/runloop.h b/runloop.h index ce03a7fd33..e3b5081b76 100644 --- a/runloop.h +++ b/runloop.h @@ -43,7 +43,6 @@ typedef struct rarch_resolution typedef struct global { /* Lifecycle state checks. */ - bool is_idle; bool ui_companion_is_on_foreground; struct @@ -345,6 +344,8 @@ FILE *rarch_main_log_file(void); bool rarch_main_is_idle(void); +void rarch_main_set_idle(unsigned enable); + void rarch_main_state_free(void); void rarch_main_global_free(void); diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 33e2d5080c..69501b4ba0 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -45,19 +45,19 @@ void apple_rarch_exited(void); static void rarch_enable_ui(void) { global_t *global = global_get_ptr(); - + global->is_paused = true; - global->is_idle = true; global->ui_companion_is_on_foreground = true; + rarch_main_set_idle(true); } static void rarch_disable_ui(void) { - global_t *global = global_get_ptr(); - - global->is_paused = false; - global->is_idle = false; - global->ui_companion_is_on_foreground = false; + global_t *global = global_get_ptr(); + + global->is_paused = false; + global->ui_companion_is_on_foreground = false; + rarch_main_set_idle(false); } static void rarch_draw(void) @@ -88,7 +88,7 @@ static void rarch_draw(void) return; } - if (global->is_idle) + if (rarch_main_is_idle()) return; CFRunLoopWakeUp(CFRunLoopGetMain()); } From ccac72f1e78713c4d2d1350aed87ee0ee3db08da Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 12:58:25 +0200 Subject: [PATCH 124/822] Refactor is_paused --- audio/audio_driver.c | 2 +- command_event.c | 8 ++++---- gfx/drivers/gl.c | 2 +- gfx/video_thread_wrapper.c | 3 +-- input/drivers/android_input.c | 7 +++---- runloop.c | 38 +++++++++++++++++++++-------------- runloop.h | 5 ++++- screenshot.c | 4 ++-- ui/drivers/ui_cocoatouch.m | 6 +++--- 9 files changed, 42 insertions(+), 33 deletions(-) diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 359f2751ae..561690e6a1 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -616,7 +616,7 @@ bool audio_driver_flush(const int16_t *data, size_t samples) driver->recording->push_audio(driver->recording_data, &ffemu_data); } - if (global->is_paused || settings->audio.mute_enable) + if (rarch_main_is_paused() || settings->audio.mute_enable) return true; if (!driver->audio_active || !audio_data.data) return false; diff --git a/command_event.c b/command_event.c index e4d4c442f1..2fd26f7070 100644 --- a/command_event.c +++ b/command_event.c @@ -1424,7 +1424,7 @@ bool event_command(enum event_command cmd) #endif break; case EVENT_CMD_PAUSE_CHECKS: - if (global->is_paused) + if (rarch_main_is_paused()) { RARCH_LOG("%s\n", msg_hash_to_str(MSG_PAUSED)); event_command(EVENT_CMD_AUDIO_STOP); @@ -1439,15 +1439,15 @@ bool event_command(enum event_command cmd) } break; case EVENT_CMD_PAUSE_TOGGLE: - global->is_paused = !global->is_paused; + rarch_main_set_pause(!rarch_main_is_paused()); event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_UNPAUSE: - global->is_paused = false; + rarch_main_set_pause(false); event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_PAUSE: - global->is_paused = true; + rarch_main_set_pause(true); event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_MENU_PAUSE_LIBRETRO: diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 8c2c53ab8d..bb39a98fd4 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1715,7 +1715,7 @@ static bool gl_frame(void *data, const void *frame, * and pause to prevent flicker. */ if (settings->video.black_frame_insertion && !driver->nonblock_state && !global->is_slowmotion - && !global->is_paused) + && !rarch_main_is_paused()) { gfx_ctx_swap_buffers(gl); glClear(GL_COLOR_BUFFER_BIT); diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index aafc2bcfcf..4faf5a9823 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -431,9 +431,8 @@ static bool thread_alive(void *data) { bool ret; thread_video_t *thr = (thread_video_t*)data; - global_t *global = global_get_ptr(); - if (global->is_paused) + if (rarch_main_is_paused()) { thread_packet_t pkt = { CMD_ALIVE }; thread_send_and_wait(thr, &pkt); diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index d2f74366e8..ca07060c0c 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -295,7 +295,6 @@ static void engine_handle_cmd(void) { int8_t cmd; struct android_app *android_app = (struct android_app*)g_android; - global_t *global = global_get_ptr(); driver_t *driver = driver_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); @@ -331,7 +330,7 @@ static void engine_handle_cmd(void) scond_broadcast(android_app->cond); slock_unlock(android_app->mutex); - if (global->is_paused) + if (rarch_main_is_paused()) event_command(EVENT_CMD_REINIT); break; @@ -358,7 +357,7 @@ static void engine_handle_cmd(void) if (!system->shutdown) { RARCH_LOG("Pausing RetroArch.\n"); - global->is_paused = true; + rarch_main_set_paused(true); rarch_main_set_idle(true); } break; @@ -388,7 +387,7 @@ static void engine_handle_cmd(void) break; case APP_CMD_GAINED_FOCUS: - global->is_paused = false; + rarch_main_set_paused(false); rarch_main_set_idle(false); if ((android_app->sensor_state_mask diff --git a/runloop.c b/runloop.c index 9b11e845bd..0774797a45 100644 --- a/runloop.c +++ b/runloop.c @@ -45,6 +45,7 @@ static struct global g_extern; static bool main_is_idle; +static bool main_is_paused; /** * check_pause: @@ -57,18 +58,17 @@ static bool main_is_idle; * Returns: true if libretro pause key was toggled, otherwise false. **/ static bool check_pause(driver_t *driver, settings_t *settings, - global_t *global, bool pause_pressed, bool frameadvance_pressed) { static bool old_focus = true; bool focus = true; enum event_command cmd = EVENT_CMD_NONE; - bool old_is_paused = global ? global->is_paused : false; + bool old_is_paused = main_is_paused; const video_driver_t *video = driver ? (const video_driver_t*)driver->video : NULL; /* FRAMEADVANCE will set us into pause mode. */ - pause_pressed |= !global->is_paused && frameadvance_pressed; + pause_pressed |= !main_is_paused && frameadvance_pressed; if (settings->pause_nonactive) focus = video->focus(driver->video_data); @@ -85,7 +85,7 @@ static bool check_pause(driver_t *driver, settings_t *settings, if (cmd != EVENT_CMD_NONE) event_command(cmd); - if (global->is_paused == old_is_paused) + if (main_is_paused == old_is_paused) return false; return true; @@ -187,7 +187,7 @@ static void check_rewind(settings_t *settings, audio_driver_setup_rewind(); rarch_main_msg_queue_push_new(MSG_REWINDING, 0, - global->is_paused ? 1 : 30, true); + main_is_paused ? 1 : 30, true); pretro_unserialize(buf, global->rewind.size); if (global->bsv.movie) @@ -449,7 +449,7 @@ static int do_pre_state_checks(settings_t *settings, if (cmd->overlay_next_pressed) event_command(EVENT_CMD_OVERLAY_NEXT); - if (!global->is_paused || menu_driver_alive()) + if (!main_is_paused || menu_driver_alive()) { if (cmd->fullscreen_toggle) event_command(EVENT_CMD_FULLSCREEN_TOGGLE); @@ -481,7 +481,6 @@ static int do_netplay_state_checks( #endif static int do_pause_state_checks( - global_t *global, bool pause_pressed, bool frameadvance_pressed, bool fullscreen_toggle_pressed, @@ -489,7 +488,7 @@ static int do_pause_state_checks( { bool check_is_oneshot = frameadvance_pressed || rewind_pressed; - if (!global->is_paused) + if (!main_is_paused) return 0; if (fullscreen_toggle_pressed) @@ -537,11 +536,10 @@ static int do_state_checks(driver_t *driver, settings_t *settings, cmd->fullscreen_toggle); #endif - check_pause(driver, settings, global, + check_pause(driver, settings, cmd->pause_pressed, cmd->frameadvance_pressed); if (do_pause_state_checks( - global, cmd->pause_pressed, cmd->frameadvance_pressed, cmd->fullscreen_toggle, @@ -634,7 +632,7 @@ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, { retro_time_t curr_time = rarch_get_time_usec(); retro_time_t delta = curr_time - system->frame_time_last; - bool is_locked_fps = global->is_paused || driver->nonblock_state; + bool is_locked_fps = main_is_paused || driver->nonblock_state; is_locked_fps |= !!driver->recording_data; @@ -791,13 +789,13 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, * * Returns: always true (1). **/ -static bool input_flush(retro_input_t *input, global_t *global) +static bool input_flush(retro_input_t *input) { *input = 0; /* If core was paused before entering menu, evoke * pause toggle to wake it up. */ - if (global->is_paused) + if (main_is_paused) BIT64_SET(*input, RARCH_PAUSE_TOGGLE); return true; @@ -871,11 +869,11 @@ global_t *global_get_ptr(void) void rarch_main_state_free(void) { main_is_idle = false; + main_is_paused = false; g_extern.ui_companion_is_on_foreground = false; g_extern.frames.limit.minimum_time = 0.0; g_extern.frames.limit.last_time = 0.0; g_extern.is_slowmotion = false; - g_extern.is_paused = false; g_extern.max_frames = 0; } @@ -914,11 +912,21 @@ void rarch_main_clear_state(void) rarch_main_global_free(); } +void rarch_main_set_pause(unsigned enable) +{ + main_is_paused = enable; +} + void rarch_main_set_idle(unsigned enable) { main_is_idle = enable; } +bool rarch_main_is_paused(void) +{ + return main_is_paused; +} + bool rarch_main_is_idle(void) { return main_is_idle; @@ -1031,7 +1039,7 @@ int rarch_main_iterate(void) last_input = input; if (driver->flushing_input) - driver->flushing_input = (input) ? input_flush(&input, global) : false; + driver->flushing_input = (input) ? input_flush(&input) : false; trigger_input = input & ~old_input; diff --git a/runloop.h b/runloop.h index e3b5081b76..d6026b47aa 100644 --- a/runloop.h +++ b/runloop.h @@ -55,7 +55,6 @@ typedef struct global } frames; bool is_slowmotion; - bool is_paused; unsigned max_frames; bool verbosity; @@ -344,6 +343,10 @@ FILE *rarch_main_log_file(void); bool rarch_main_is_idle(void); +bool rarch_main_is_paused(void); + +void rarch_main_set_pause(unsigned enable); + void rarch_main_set_idle(unsigned enable); void rarch_main_state_free(void); diff --git a/screenshot.c b/screenshot.c index 8baca05a6c..c3d5558275 100644 --- a/screenshot.c +++ b/screenshot.c @@ -330,9 +330,9 @@ bool take_screenshot(void) msg = msg_hash_to_str(MSG_FAILED_TO_TAKE_SCREENSHOT); } - rarch_main_msg_queue_push(msg, 1, global->is_paused ? 1 : 180, true); + rarch_main_msg_queue_push(msg, 1, rarch_main_is_paused() ? 1 : 180, true); - if (global->is_paused) + if (rarch_main_is_paused()) video_driver_cached_frame(); return ret; diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 69501b4ba0..4b2816f676 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -46,8 +46,8 @@ static void rarch_enable_ui(void) { global_t *global = global_get_ptr(); - global->is_paused = true; global->ui_companion_is_on_foreground = true; + rarch_main_set_paused(true); rarch_main_set_idle(true); } @@ -55,8 +55,8 @@ static void rarch_disable_ui(void) { global_t *global = global_get_ptr(); - global->is_paused = false; global->ui_companion_is_on_foreground = false; + rarch_main_set_paused(false); rarch_main_set_idle(false); } @@ -64,7 +64,7 @@ static void rarch_draw(void) { global_t *global = global_get_ptr(); int ret = 0; - bool iterate = iterate_observer && !global->is_paused; + bool iterate = iterate_observer && !(rarch_main_is_paused()); if (iterate) { From b4c5f982455df467f3a7bc6c7a08ac21fb6eec51 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 12:59:33 +0200 Subject: [PATCH 125/822] Cleanups --- input/drivers/android_input.c | 4 ++-- ui/drivers/ui_cocoatouch.m | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index ca07060c0c..880864d39a 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -357,7 +357,7 @@ static void engine_handle_cmd(void) if (!system->shutdown) { RARCH_LOG("Pausing RetroArch.\n"); - rarch_main_set_paused(true); + rarch_main_set_pause(true); rarch_main_set_idle(true); } break; @@ -387,7 +387,7 @@ static void engine_handle_cmd(void) break; case APP_CMD_GAINED_FOCUS: - rarch_main_set_paused(false); + rarch_main_set_pause(false); rarch_main_set_idle(false); if ((android_app->sensor_state_mask diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 4b2816f676..d2df26ef69 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -47,7 +47,7 @@ static void rarch_enable_ui(void) global_t *global = global_get_ptr(); global->ui_companion_is_on_foreground = true; - rarch_main_set_paused(true); + rarch_main_set_pause(true); rarch_main_set_idle(true); } @@ -56,7 +56,7 @@ static void rarch_disable_ui(void) global_t *global = global_get_ptr(); global->ui_companion_is_on_foreground = false; - rarch_main_set_paused(false); + rarch_main_set_pause(false); rarch_main_set_idle(false); } From b18442dc5a039d092dfd7617ee8f3f82a11f673e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 13:06:44 +0200 Subject: [PATCH 126/822] Refactor is_slowmotion --- audio/audio_driver.c | 2 +- gfx/drivers/gl.c | 2 +- runloop.c | 24 +++++++++++++++++------- runloop.h | 5 ++++- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 561690e6a1..338f24f139 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -653,7 +653,7 @@ bool audio_driver_flush(const int16_t *data, size_t samples) audio_driver_readjust_input_rate(); src_data.ratio = audio_data.src_ratio; - if (global->is_slowmotion) + if (rarch_main_is_slowmotion()) src_data.ratio *= settings->slowmotion_ratio; RARCH_PERFORMANCE_INIT(resampler_proc); diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index bb39a98fd4..36ae7e693a 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1714,7 +1714,7 @@ static bool gl_frame(void *data, const void *frame, /* Disable BFI during fast forward, slow-motion, * and pause to prevent flicker. */ if (settings->video.black_frame_insertion && - !driver->nonblock_state && !global->is_slowmotion + !driver->nonblock_state && (!(rarch_main_is_slowmotion())) && !rarch_main_is_paused()) { gfx_ctx_swap_buffers(gl); diff --git a/runloop.c b/runloop.c index 0774797a45..c19e939d31 100644 --- a/runloop.c +++ b/runloop.c @@ -46,6 +46,7 @@ static struct global g_extern; static bool main_is_idle; static bool main_is_paused; +static bool main_is_slowmotion; /** * check_pause: @@ -230,9 +231,9 @@ static void check_rewind(settings_t *settings, static void check_slowmotion(settings_t *settings, global_t *global, bool slowmotion_pressed) { - global->is_slowmotion = slowmotion_pressed; + main_is_slowmotion = slowmotion_pressed; - if (!global->is_slowmotion) + if (!main_is_slowmotion) return; if (settings->video.black_frame_insertion) @@ -627,8 +628,7 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, * Updates frame timing if frame timing callback is in use by the core. **/ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, - rarch_system_info_t *system, - global_t *global) + rarch_system_info_t *system) { retro_time_t curr_time = rarch_get_time_usec(); retro_time_t delta = curr_time - system->frame_time_last; @@ -639,7 +639,7 @@ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, if (!system->frame_time_last || is_locked_fps) delta = system->frame_time.reference; - if (!is_locked_fps && global->is_slowmotion) + if (!is_locked_fps && main_is_slowmotion) delta /= settings->slowmotion_ratio; system->frame_time_last = curr_time; @@ -870,10 +870,10 @@ void rarch_main_state_free(void) { main_is_idle = false; main_is_paused = false; + main_is_slowmotion = false; g_extern.ui_companion_is_on_foreground = false; g_extern.frames.limit.minimum_time = 0.0; g_extern.frames.limit.last_time = 0.0; - g_extern.is_slowmotion = false; g_extern.max_frames = 0; } @@ -912,6 +912,11 @@ void rarch_main_clear_state(void) rarch_main_global_free(); } +void rarch_main_set_slowmotion(unsigned enable) +{ + main_is_slowmotion = enable; +} + void rarch_main_set_pause(unsigned enable) { main_is_paused = enable; @@ -932,6 +937,11 @@ bool rarch_main_is_idle(void) return main_is_idle; } +bool rarch_main_is_slowmotion(void) +{ + return main_is_slowmotion; +} + static bool rarch_main_cmd_get_state_menu_toggle_button_combo( driver_t *driver, settings_t *settings, retro_input_t input, retro_input_t old_input, @@ -1049,7 +1059,7 @@ int rarch_main_iterate(void) return rarch_main_iterate_quit(settings, system, global); if (system->frame_time.callback) - rarch_update_frame_time(driver, settings, system, global); + rarch_update_frame_time(driver, settings, system); do_pre_state_checks(settings, global, &cmd); diff --git a/runloop.h b/runloop.h index d6026b47aa..e7bfb779b9 100644 --- a/runloop.h +++ b/runloop.h @@ -54,7 +54,6 @@ typedef struct global } limit; } frames; - bool is_slowmotion; unsigned max_frames; bool verbosity; @@ -343,8 +342,12 @@ FILE *rarch_main_log_file(void); bool rarch_main_is_idle(void); +bool rarch_main_is_slowmotion(void); + bool rarch_main_is_paused(void); +void rarch_main_set_slowmotion(unsigned enable); + void rarch_main_set_pause(unsigned enable); void rarch_main_set_idle(unsigned enable); From 5bafed71eac67846b5b44c3dbfc0888810097de9 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Wed, 5 Aug 2015 13:09:11 +0200 Subject: [PATCH 127/822] removed unused variables --- audio/audio_driver.c | 1 - gfx/drivers/gl.c | 1 - menu/drivers/rgui.c | 1 - menu/menu.c | 1 - ui/drivers/ui_cocoatouch.m | 8 +------- 5 files changed, 1 insertion(+), 11 deletions(-) diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 338f24f139..e6929470f3 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -600,7 +600,6 @@ bool audio_driver_flush(const int16_t *data, size_t samples) size_t output_size = sizeof(float); struct resampler_data src_data = {0}; struct rarch_dsp_data dsp_data = {0}; - global_t *global = global_get_ptr(); driver_t *driver = driver_get_ptr(); const audio_driver_t *audio = driver ? (const audio_driver_t*)driver->audio : NULL; diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 36ae7e693a..fe0fadd5c9 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1528,7 +1528,6 @@ static bool gl_frame(void *data, const void *frame, gl_t *gl = (gl_t*)data; driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); const struct font_renderer *font_driver = driver ? driver->font_osd_driver : NULL; RARCH_PERFORMANCE_INIT(frame_run); diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 0328d108ed..508ebb8e3c 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -374,7 +374,6 @@ static void rgui_render(void) menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); driver_t *driver = driver_get_ptr(); - global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); menu_animation_t *anim = menu_animation_get_ptr(); uint64_t *frame_count = video_driver_get_frame_count(); diff --git a/menu/menu.c b/menu/menu.c index 3cd699082f..835d4c9c47 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -352,7 +352,6 @@ int menu_iterate(retro_input_t input, { int32_t ret = 0; unsigned action = 0; - global_t *global = global_get_ptr(); menu_display_t *disp = menu_display_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr(); diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index d2df26ef69..5c10bfc9e5 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -62,14 +62,8 @@ static void rarch_disable_ui(void) static void rarch_draw(void) { - global_t *global = global_get_ptr(); - int ret = 0; bool iterate = iterate_observer && !(rarch_main_is_paused()); - - if (iterate) - { - ret = rarch_main_iterate(); - } + int ret = iterate ? rarch_main_iterate() : 0; rarch_main_data_iterate(); From 4cc71c0574bbb9c7a356e885afb6cff36e640f99 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 13:56:59 +0200 Subject: [PATCH 128/822] Refactor ui_companion_is_on_foreground --- runloop.c | 1 - runloop.h | 3 --- ui/drivers/ui_cocoatouch.m | 12 +++--------- ui/ui_companion_driver.c | 14 ++++++++++++++ ui/ui_companion_driver.h | 4 ++++ 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/runloop.c b/runloop.c index c19e939d31..3cb36486bf 100644 --- a/runloop.c +++ b/runloop.c @@ -871,7 +871,6 @@ void rarch_main_state_free(void) main_is_idle = false; main_is_paused = false; main_is_slowmotion = false; - g_extern.ui_companion_is_on_foreground = false; g_extern.frames.limit.minimum_time = 0.0; g_extern.frames.limit.last_time = 0.0; g_extern.max_frames = 0; diff --git a/runloop.h b/runloop.h index e7bfb779b9..2ee96196b3 100644 --- a/runloop.h +++ b/runloop.h @@ -42,9 +42,6 @@ typedef struct rarch_resolution typedef struct global { - /* Lifecycle state checks. */ - bool ui_companion_is_on_foreground; - struct { struct diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 5c10bfc9e5..ce373cb2d2 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -44,18 +44,14 @@ void apple_rarch_exited(void); static void rarch_enable_ui(void) { - global_t *global = global_get_ptr(); - - global->ui_companion_is_on_foreground = true; + ui_companion_set_foreground(true); rarch_main_set_pause(true); rarch_main_set_idle(true); } static void rarch_disable_ui(void) { - global_t *global = global_get_ptr(); - - global->ui_companion_is_on_foreground = false; + ui_companion_set_foreground(false); rarch_main_set_pause(false); rarch_main_set_idle(false); } @@ -430,9 +426,7 @@ void apple_stop_iterate_timer(void) - (void)toggleUI { - global_t *global = global_get_ptr(); - - if (global->ui_companion_is_on_foreground) + if (ui_companion_is_on_foreground()) { [self showGameView]; } diff --git a/ui/ui_companion_driver.c b/ui/ui_companion_driver.c index 382308f101..e5ffd18a69 100644 --- a/ui/ui_companion_driver.c +++ b/ui/ui_companion_driver.c @@ -17,10 +17,14 @@ #include "../driver.h" #include +#include + #ifdef HAVE_CONFIG_H #include "../config.h" #endif +static bool main_ui_companion_is_on_foreground; + static const ui_companion_driver_t *ui_companion_drivers[] = { #ifdef HAVE_COCOA &ui_companion_cocoa, @@ -56,6 +60,16 @@ const ui_companion_driver_t *ui_companion_find_driver(const char *ident) return NULL; } +void ui_companion_set_foreground(unsigned enable) +{ + main_ui_companion_is_on_foreground = enable; +} + +bool ui_companion_is_on_foreground(void) +{ + return main_ui_companion_is_on_foreground; +} + /** * ui_companion_init_first: * diff --git a/ui/ui_companion_driver.h b/ui/ui_companion_driver.h index 6176c14e91..17f08ec4c9 100644 --- a/ui/ui_companion_driver.h +++ b/ui/ui_companion_driver.h @@ -70,6 +70,10 @@ const ui_companion_driver_t *ui_companion_get_ptr(void); **/ const ui_companion_driver_t *ui_companion_init_first(void); +bool ui_companion_is_on_foreground(void); + +void ui_companion_set_foreground(unsigned enable); + void ui_companion_event_command(enum event_command action); #ifdef __cplusplus From a1e631345353487ee2d595d021738966358e7402 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 14:24:21 +0200 Subject: [PATCH 129/822] Refactor away input_flush --- runloop.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/runloop.c b/runloop.c index 3cb36486bf..cc68fcb311 100644 --- a/runloop.c +++ b/runloop.c @@ -781,26 +781,6 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, return ret; } -/** - * input_flush: - * @input : input sample for this frame - * - * Resets input sample. - * - * Returns: always true (1). - **/ -static bool input_flush(retro_input_t *input) -{ - *input = 0; - - /* If core was paused before entering menu, evoke - * pause toggle to wake it up. */ - if (main_is_paused) - BIT64_SET(*input, RARCH_PAUSE_TOGGLE); - - return true; -} - /** * rarch_main_load_dummy_core: * @@ -1048,7 +1028,15 @@ int rarch_main_iterate(void) last_input = input; if (driver->flushing_input) - driver->flushing_input = (input) ? input_flush(&input) : false; + { + input = 0; + /* If core was paused before entering menu, evoke + * pause toggle to wake it up. */ + if (main_is_paused) + BIT64_SET(input, RARCH_PAUSE_TOGGLE); + + driver->flushing_input = false; + } trigger_input = input & ~old_input; From f39ab89867600c7d608fca8e0e692cf0b5c2f12f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 14:36:35 +0200 Subject: [PATCH 130/822] (runloop.c) Refactors --- retroarch.c | 3 +-- runloop.c | 38 +++++++++++++++++++------------------- runloop.h | 12 +++--------- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/retroarch.c b/retroarch.c index e7e9433c7a..a16a788e90 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1155,10 +1155,9 @@ void rarch_init_system_av_info(void) { struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); - global_t *global = global_get_ptr(); pretro_get_system_av_info(av_info); - global->frames.limit.last_time = rarch_get_time_usec(); + rarch_main_set_frame_limit_last_time(rarch_get_time_usec()); } /** diff --git a/runloop.c b/runloop.c index cc68fcb311..21287e07b8 100644 --- a/runloop.c +++ b/runloop.c @@ -48,6 +48,8 @@ static bool main_is_idle; static bool main_is_paused; static bool main_is_slowmotion; +static retro_time_t frame_limit_last_time; + /** * check_pause: * @pressed : was libretro pause key pressed? @@ -655,33 +657,27 @@ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, * * Limit frame time if fast forward ratio throttle is enabled. **/ -static void rarch_limit_frame_time(settings_t *settings, global_t *global) +static void rarch_limit_frame_time(settings_t *settings) { - retro_time_t target = 0; - retro_time_t to_sleep_ms = 0; - retro_time_t current = rarch_get_time_usec(); - struct retro_system_av_info *av_info = + retro_time_t current = rarch_get_time_usec(); + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); - double effective_fps = av_info->timing.fps * settings->fastforward_ratio; - double mft_f = 1000000.0f / effective_fps; - - global->frames.limit.minimum_time = (retro_time_t) roundf(mft_f); - - target = global->frames.limit.last_time + - global->frames.limit.minimum_time; - to_sleep_ms = (target - current) / 1000; + double effective_fps = av_info->timing.fps * settings->fastforward_ratio; + double mft_f = 1000000.0f / effective_fps; + retro_time_t frame_limit_minimum_time = (retro_time_t) roundf(mft_f); + retro_time_t target = frame_limit_last_time + frame_limit_minimum_time; + retro_time_t to_sleep_ms = (target - current) / 1000; if (to_sleep_ms <= 0) { - global->frames.limit.last_time = rarch_get_time_usec(); + frame_limit_last_time = rarch_get_time_usec(); return; } rarch_sleep((unsigned int)to_sleep_ms); /* Combat jitter a bit. */ - global->frames.limit.last_time += - global->frames.limit.minimum_time; + frame_limit_last_time += frame_limit_minimum_time; } /** @@ -851,11 +847,15 @@ void rarch_main_state_free(void) main_is_idle = false; main_is_paused = false; main_is_slowmotion = false; - g_extern.frames.limit.minimum_time = 0.0; - g_extern.frames.limit.last_time = 0.0; + frame_limit_last_time = 0.0; g_extern.max_frames = 0; } +void rarch_main_set_frame_limit_last_time(retro_time_t t) +{ + frame_limit_last_time = t; +} + void rarch_main_global_free(void) { event_command(EVENT_CMD_TEMPORARY_CONTENT_DEINIT); @@ -1140,7 +1140,7 @@ int rarch_main_iterate(void) success: if (settings->fastforward_ratio_throttle_enable) - rarch_limit_frame_time(settings, global); + rarch_limit_frame_time(settings); return ret; } diff --git a/runloop.h b/runloop.h index 2ee96196b3..bb17fcb3b2 100644 --- a/runloop.h +++ b/runloop.h @@ -27,6 +27,7 @@ #include "cheats.h" #include "dynamic.h" #include "system.h" +#include "performance.h" #ifdef __cplusplus extern "C" { @@ -42,15 +43,6 @@ typedef struct rarch_resolution typedef struct global { - struct - { - struct - { - retro_time_t minimum_time; - retro_time_t last_time; - } limit; - } frames; - unsigned max_frames; bool verbosity; @@ -347,6 +339,8 @@ void rarch_main_set_slowmotion(unsigned enable); void rarch_main_set_pause(unsigned enable); +void rarch_main_set_frame_limit_last_time(retro_time_t t); + void rarch_main_set_idle(unsigned enable); void rarch_main_state_free(void); From adb28bb3410da117943c5870d18712ca356f32f5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 14:45:56 +0200 Subject: [PATCH 131/822] Refactor max_frames --- retroarch.c | 2 +- runloop.c | 11 +++++++++-- runloop.h | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/retroarch.c b/retroarch.c index a16a788e90..41adaff453 100644 --- a/retroarch.c +++ b/retroarch.c @@ -838,7 +838,7 @@ static void parse_input(int argc, char *argv[]) break; case RA_OPT_MAX_FRAMES: - global->max_frames = strtoul(optarg, NULL, 10); + rarch_main_set_max_frames(strtoul(optarg, NULL, 10)); break; case RA_OPT_SUBSYSTEM: diff --git a/runloop.c b/runloop.c index 21287e07b8..cc9d6f73f7 100644 --- a/runloop.c +++ b/runloop.c @@ -48,6 +48,8 @@ static bool main_is_idle; static bool main_is_paused; static bool main_is_slowmotion; +static unsigned main_max_frames; + static retro_time_t frame_limit_last_time; /** @@ -616,7 +618,7 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, bool video_alive = video && video->alive(driver->video_data); bool movie_end = (global->bsv.movie_end && global->bsv.eof_exit); uint64_t *frame_count = video_driver_get_frame_count(); - bool frame_count_end = global->max_frames && (*frame_count >= global->max_frames); + bool frame_count_end = main_max_frames && (*frame_count >= main_max_frames); if (shutdown_pressed || cmd->quit_key_pressed || frame_count_end || movie_end || !video_alive) @@ -848,7 +850,7 @@ void rarch_main_state_free(void) main_is_paused = false; main_is_slowmotion = false; frame_limit_last_time = 0.0; - g_extern.max_frames = 0; + main_max_frames = 0; } void rarch_main_set_frame_limit_last_time(retro_time_t t) @@ -896,6 +898,11 @@ void rarch_main_set_slowmotion(unsigned enable) main_is_slowmotion = enable; } +void rarch_main_set_max_frames(unsigned val) +{ + main_max_frames = val; +} + void rarch_main_set_pause(unsigned enable) { main_is_paused = enable; diff --git a/runloop.h b/runloop.h index bb17fcb3b2..c499562ec3 100644 --- a/runloop.h +++ b/runloop.h @@ -43,8 +43,6 @@ typedef struct rarch_resolution typedef struct global { - unsigned max_frames; - bool verbosity; bool perfcnt_enable; bool force_fullscreen; @@ -341,6 +339,8 @@ void rarch_main_set_pause(unsigned enable); void rarch_main_set_frame_limit_last_time(retro_time_t t); +void rarch_main_set_max_frames(unsigned val); + void rarch_main_set_idle(unsigned enable); void rarch_main_state_free(void); From 517ec935b7703302a69f3878a8f27a47adc74dff Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 14:57:06 +0200 Subject: [PATCH 132/822] Cleanup --- runloop.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/runloop.c b/runloop.c index cc9d6f73f7..b0ab70baa5 100644 --- a/runloop.c +++ b/runloop.c @@ -659,12 +659,11 @@ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, * * Limit frame time if fast forward ratio throttle is enabled. **/ -static void rarch_limit_frame_time(settings_t *settings) +static void rarch_limit_frame_time(float fastforward_ratio) { retro_time_t current = rarch_get_time_usec(); - struct retro_system_av_info *av_info = - video_viewport_get_system_av_info(); - double effective_fps = av_info->timing.fps * settings->fastforward_ratio; + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); + double effective_fps = av_info->timing.fps * fastforward_ratio; double mft_f = 1000000.0f / effective_fps; retro_time_t frame_limit_minimum_time = (retro_time_t) roundf(mft_f); retro_time_t target = frame_limit_last_time + frame_limit_minimum_time; @@ -1147,7 +1146,7 @@ int rarch_main_iterate(void) success: if (settings->fastforward_ratio_throttle_enable) - rarch_limit_frame_time(settings); + rarch_limit_frame_time(settings->fastforward_ratio); return ret; } From 77baab15771434de60332a9116f1a8571bee2564 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 14:59:55 +0200 Subject: [PATCH 133/822] Cleanups #2 --- runloop.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/runloop.c b/runloop.c index b0ab70baa5..5809021111 100644 --- a/runloop.c +++ b/runloop.c @@ -631,11 +631,11 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, * * Updates frame timing if frame timing callback is in use by the core. **/ -static void rarch_update_frame_time(driver_t *driver, settings_t *settings, +static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, rarch_system_info_t *system) { - retro_time_t curr_time = rarch_get_time_usec(); - retro_time_t delta = curr_time - system->frame_time_last; + retro_time_t current = rarch_get_time_usec(); + retro_time_t delta = current - system->frame_time_last; bool is_locked_fps = main_is_paused || driver->nonblock_state; is_locked_fps |= !!driver->recording_data; @@ -644,9 +644,9 @@ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, delta = system->frame_time.reference; if (!is_locked_fps && main_is_slowmotion) - delta /= settings->slowmotion_ratio; + delta /= slowmotion_ratio; - system->frame_time_last = curr_time; + system->frame_time_last = current; if (is_locked_fps) system->frame_time_last = 0; @@ -1052,7 +1052,7 @@ int rarch_main_iterate(void) return rarch_main_iterate_quit(settings, system, global); if (system->frame_time.callback) - rarch_update_frame_time(driver, settings, system); + rarch_update_frame_time(driver, settings->slowmotion_ratio, system); do_pre_state_checks(settings, global, &cmd); From e418067610f044ec1c774b39838be2cdd25901df Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 15:04:57 +0200 Subject: [PATCH 134/822] Cleanup --- runloop.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/runloop.c b/runloop.c index 5809021111..355f5175bc 100644 --- a/runloop.c +++ b/runloop.c @@ -636,9 +636,8 @@ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, { retro_time_t current = rarch_get_time_usec(); retro_time_t delta = current - system->frame_time_last; - bool is_locked_fps = main_is_paused || driver->nonblock_state; - - is_locked_fps |= !!driver->recording_data; + bool is_locked_fps = (main_is_paused || driver->nonblock_state) | + !!driver->recording_data; if (!system->frame_time_last || is_locked_fps) delta = system->frame_time.reference; From 9b43c973bb8e81e395b303778f531c014fdf93b7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 15:08:09 +0200 Subject: [PATCH 135/822] Cleanups --- runloop.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/runloop.c b/runloop.c index 355f5175bc..981fe873f3 100644 --- a/runloop.c +++ b/runloop.c @@ -614,14 +614,13 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, event_cmd_state_t *cmd) { const video_driver_t *video = driver ? (const video_driver_t*)driver->video : NULL; - bool shutdown_pressed = system && system->shutdown; + bool shutdown_pressed = (system && system->shutdown) || cmd->quit_key_pressed; bool video_alive = video && video->alive(driver->video_data); bool movie_end = (global->bsv.movie_end && global->bsv.eof_exit); uint64_t *frame_count = video_driver_get_frame_count(); bool frame_count_end = main_max_frames && (*frame_count >= main_max_frames); - if (shutdown_pressed || cmd->quit_key_pressed || frame_count_end || movie_end - || !video_alive) + if (shutdown_pressed || frame_count_end || movie_end || !video_alive) return 1; return 0; } From 3e21d0a0d076e4abb9a02a7abe6d55655db33e70 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 15:48:54 +0200 Subject: [PATCH 136/822] (runloop) Add quit goto --- runloop.c | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/runloop.c b/runloop.c index 981fe873f3..5122d8c277 100644 --- a/runloop.c +++ b/runloop.c @@ -652,11 +652,6 @@ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, system->frame_time.callback(delta); } -/** - * rarch_limit_frame_time: - * - * Limit frame time if fast forward ratio throttle is enabled. - **/ static void rarch_limit_frame_time(float fastforward_ratio) { retro_time_t current = rarch_get_time_usec(); @@ -787,25 +782,6 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, * * Returns: -1 if we are about to quit, otherwise 0. **/ -static int rarch_main_iterate_quit(settings_t *settings, - rarch_system_info_t *system, - global_t *global) -{ - - if (global->core_shutdown_initiated - && settings->load_dummy_on_core_shutdown) - { - if (!event_command(EVENT_CMD_PREPARE_DUMMY)) - return -1; - - system->shutdown = false; - global->core_shutdown_initiated = false; - - return 0; - } - - return -1; -} #ifdef HAVE_OVERLAY static void rarch_main_iterate_linefeed_overlay(driver_t *driver, @@ -1047,7 +1023,7 @@ int rarch_main_iterate(void) rarch_main_cmd_get_state(driver, settings, &cmd, input, old_input, trigger_input); if (time_to_exit(driver, global, system, &cmd)) - return rarch_main_iterate_quit(settings, system, global); + goto quit; if (system->frame_time.callback) rarch_update_frame_time(driver, settings->slowmotion_ratio, system); @@ -1075,7 +1051,7 @@ int rarch_main_iterate(void) if (global->exec) { global->exec = false; - return rarch_main_iterate_quit(settings, system, global); + goto quit; } if (do_state_checks(driver, settings, global, &cmd)) @@ -1143,8 +1119,29 @@ int rarch_main_iterate(void) #endif success: + /* Limit frame time if fast forward ratio throttle is enabled. */ if (settings->fastforward_ratio_throttle_enable) rarch_limit_frame_time(settings->fastforward_ratio); return ret; + +quit: + /* Quits out of RetroArch main loop. + * On special case, loads dummy core + * instead of exiting RetroArch completely. + * Aborts core shutdown if invoked. + */ + if (global->core_shutdown_initiated + && settings->load_dummy_on_core_shutdown) + { + if (!event_command(EVENT_CMD_PREPARE_DUMMY)) + return -1; + + system->shutdown = false; + global->core_shutdown_initiated = false; + + return 0; + } + + return -1; } From 4f698815925b08b070510925109575251d86ad3d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 15:54:21 +0200 Subject: [PATCH 137/822] Cleanups --- runloop.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runloop.c b/runloop.c index 5122d8c277..28201fc799 100644 --- a/runloop.c +++ b/runloop.c @@ -994,8 +994,8 @@ static void rarch_main_cmd_get_state(driver_t *driver, int rarch_main_iterate(void) { unsigned i; - retro_input_t trigger_input, old_input; - event_cmd_state_t cmd = {0}; + retro_input_t trigger_input; + event_cmd_state_t cmd; int ret = 0; static retro_input_t last_input = 0; driver_t *driver = driver_get_ptr(); @@ -1003,8 +1003,8 @@ int rarch_main_iterate(void) global_t *global = global_get_ptr(); retro_input_t input = input_keys_pressed(driver, settings, global); rarch_system_info_t *system = rarch_system_info_get_ptr(); + retro_input_t old_input = last_input; - old_input = last_input; last_input = input; if (driver->flushing_input) From f967c88ff074dc2237c79a5398f18b5f85da258b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 02:31:50 +0200 Subject: [PATCH 138/822] (runloop_data.c) Cleanups --- runloop_data.c | 15 +++++++-------- tasks/task_database.c | 7 ++++--- tasks/task_http.c | 12 +++++++++--- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/runloop_data.c b/runloop_data.c index adac44f6d7..84072b269c 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -131,28 +131,27 @@ static void data_runloop_iterate(bool is_thread) bool rarch_main_data_active(void) { - bool active = false; #ifdef HAVE_LIBRETRODB if (rarch_main_data_db_is_active()) - active = true; + return true; #endif #ifdef HAVE_OVERLAY if (input_overlay_data_is_active()) - active = true; + return true; #endif if (rarch_main_data_nbio_image_get_handle()) - active = true; + return true; if (rarch_main_data_nbio_get_handle()) - active = true; + return true; #ifdef HAVE_NETWORKING if (rarch_main_data_http_get_handle()) - active = true; + return true; if (rarch_main_data_http_conn_get_handle()) - active = true; + return true; #endif - return active; + return false; } #ifdef HAVE_THREADS diff --git a/tasks/task_database.c b/tasks/task_database.c index 11332bb64d..d9edcdcac1 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -362,8 +362,8 @@ static int database_info_iterate(database_state_handle_t *state, database_info_h static int database_info_poll(db_handle_t *db) { + char elem0[PATH_MAX_LENGTH]; uint32_t cb_type_hash = 0; - char elem0[PATH_MAX_LENGTH] = {0}; struct string_list *str_list = NULL; const char *path = msg_queue_pull(db->msg_queue); @@ -374,9 +374,10 @@ static int database_info_poll(db_handle_t *db) if (!str_list) goto error; + if (str_list->size < 1) + goto error; - if (str_list->size > 0) - strlcpy(elem0, str_list->elems[0].data, sizeof(elem0)); + strlcpy(elem0, str_list->elems[0].data, sizeof(elem0)); if (str_list->size > 1) cb_type_hash = msg_hash_calculate(str_list->elems[1].data); diff --git a/tasks/task_http.c b/tasks/task_http.c index 125275c6fd..5e9ecd6668 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -375,10 +375,11 @@ static int rarch_main_data_http_iterate_poll(http_handle_t *http) str_list = string_split(url, "|"); if (!str_list) - return -1; + goto error; + if (str_list->size < 1) + goto error; - if (str_list->size > 0) - strlcpy(elem0, str_list->elems[0].data, sizeof(elem0)); + strlcpy(elem0, str_list->elems[0].data, sizeof(elem0)); http->connection.handle = net_http_connection_new(elem0); @@ -398,6 +399,11 @@ static int rarch_main_data_http_iterate_poll(http_handle_t *http) string_list_free(str_list); return 0; + +error: + if (str_list) + string_list_free(str_list); + return -1; } /** From 98f46f9e17bb42ee072252ccc8b6017035295776 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 02:35:49 +0200 Subject: [PATCH 139/822] (runloop_data.c) Cleanups --- runloop_data.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/runloop_data.c b/runloop_data.c index 84072b269c..7598999c5c 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -320,7 +320,7 @@ void rarch_main_data_msg_queue_push(unsigned type, const char *msg, const char *msg2, unsigned prio, unsigned duration, bool flush) { - char new_msg[PATH_MAX_LENGTH] = {0}; + char new_msg[PATH_MAX_LENGTH]; msg_queue_t *queue = NULL; switch(type) @@ -329,14 +329,10 @@ void rarch_main_data_msg_queue_push(unsigned type, break; case DATA_TYPE_FILE: queue = rarch_main_data_nbio_get_msg_queue_ptr(); - if (!queue) - return; snprintf(new_msg, sizeof(new_msg), "%s|%s", msg, msg2); break; case DATA_TYPE_IMAGE: queue = rarch_main_data_nbio_image_get_msg_queue_ptr(); - if (!queue) - return; snprintf(new_msg, sizeof(new_msg), "%s|%s", msg, msg2); break; #ifdef HAVE_NETWORKING From 3a25e601408268415948885f3c98518a96346cae Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 02:52:37 +0200 Subject: [PATCH 140/822] (runloop_data.c) refactor --- runloop_data.c | 72 ++++++++++++++++++++------------------------------ 1 file changed, 28 insertions(+), 44 deletions(-) diff --git a/runloop_data.c b/runloop_data.c index 7598999c5c..456f07e525 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -57,48 +57,38 @@ static char data_runloop_msg[PATH_MAX_LENGTH]; static data_runloop_t g_data_runloop; -static data_runloop_t *rarch_main_data_get_ptr(void) -{ - return &g_data_runloop; -} - #ifdef HAVE_THREADS -static void data_runloop_thread_deinit(data_runloop_t *runloop) +static void data_runloop_thread_deinit(void) { - if (!runloop->thread_inited) + if (!g_data_runloop.thread_inited) { - slock_lock(runloop->cond_lock); - runloop->alive = false; - scond_signal(runloop->cond); - slock_unlock(runloop->cond_lock); - sthread_join(runloop->thread); + slock_lock(g_data_runloop.cond_lock); + g_data_runloop.alive = false; + scond_signal(g_data_runloop.cond); + slock_unlock(g_data_runloop.cond_lock); + sthread_join(g_data_runloop.thread); - slock_free(runloop->lock); - slock_free(runloop->cond_lock); + slock_free(g_data_runloop.lock); + slock_free(g_data_runloop.cond_lock); rarch_main_data_overlay_thread_uninit(); - scond_free(runloop->cond); + scond_free(g_data_runloop.cond); } } #endif void rarch_main_data_deinit(void) { - data_runloop_t *runloop = rarch_main_data_get_ptr(); - - if (!runloop) - return; - #ifdef HAVE_THREADS - if (runloop->thread_inited) + if (g_data_runloop.thread_inited) { - data_runloop_thread_deinit(runloop); + data_runloop_thread_deinit(); - runloop->thread_inited = false; - runloop->thread_code = THREAD_CODE_DEINIT; + g_data_runloop.thread_inited = false; + g_data_runloop.thread_code = THREAD_CODE_DEINIT; } #endif - runloop->inited = false; + g_data_runloop.inited = false; } void rarch_main_data_free(void) @@ -191,47 +181,41 @@ static void data_thread_loop(void *data) #ifdef HAVE_THREADS static void rarch_main_data_thread_init(void) { - data_runloop_t *runloop = rarch_main_data_get_ptr(); - - if (!runloop) - return; - - runloop->lock = slock_new(); - runloop->cond_lock = slock_new(); - runloop->cond = scond_new(); + g_data_runloop.lock = slock_new(); + g_data_runloop.cond_lock = slock_new(); + g_data_runloop.cond = scond_new(); #ifdef HAVE_OVERLAY rarch_main_data_overlay_thread_init(); #endif - runloop->thread = sthread_create(data_thread_loop, runloop); + g_data_runloop.thread = sthread_create(data_thread_loop, &g_data_runloop); - if (!runloop->thread) + if (!g_data_runloop.thread) goto error; - slock_lock(runloop->lock); - runloop->thread_inited = true; - runloop->alive = true; - runloop->thread_code = THREAD_CODE_ALIVE; - slock_unlock(runloop->lock); + slock_lock(g_data_runloop.lock); + g_data_runloop.thread_inited = true; + g_data_runloop.alive = true; + g_data_runloop.thread_code = THREAD_CODE_ALIVE; + slock_unlock(g_data_runloop.lock); return; error: - data_runloop_thread_deinit(runloop); + data_runloop_thread_deinit(); } #endif void rarch_main_data_iterate(void) { - data_runloop_t *runloop = rarch_main_data_get_ptr(); settings_t *settings = config_get_ptr(); (void)settings; #ifdef HAVE_THREADS if (settings->menu.threaded_data_runloop_enable) { - switch (runloop->thread_code) + switch (g_data_runloop.thread_code) { case THREAD_CODE_INIT: rarch_main_data_thread_init(); @@ -271,7 +255,7 @@ void rarch_main_data_iterate(void) #endif #ifdef HAVE_THREADS - if (settings->menu.threaded_data_runloop_enable && runloop->alive) + if (settings->menu.threaded_data_runloop_enable && g_data_runloop.alive) return; #endif From 6cee3c6701699174715482cec3830ca77b1f9112 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 02:56:44 +0200 Subject: [PATCH 141/822] Cleanups --- runloop.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/runloop.c b/runloop.c index 28201fc799..516b778dc6 100644 --- a/runloop.c +++ b/runloop.c @@ -134,7 +134,7 @@ static void check_fast_forward_button(driver_t *driver, static void check_stateslots(settings_t *settings, bool pressed_increase, bool pressed_decrease) { - char msg[PATH_MAX_LENGTH] = {0}; + char msg[PATH_MAX_LENGTH]; /* Save state slots */ if (pressed_increase) @@ -249,13 +249,12 @@ static void check_slowmotion(settings_t *settings, global_t *global, rarch_main_msg_queue_push_new(MSG_SLOW_MOTION, 0, 30, true); } -static bool check_movie_init(void) +static bool check_movie_init(global_t *global) { - char path[PATH_MAX_LENGTH] = {0}; - char msg[PATH_MAX_LENGTH] = {0}; + char path[PATH_MAX_LENGTH]; + char msg[PATH_MAX_LENGTH]; bool ret = true; settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); if (global->bsv.movie) return false; @@ -267,6 +266,7 @@ static bool check_movie_init(void) global->bsv.movie_path, settings->state_slot); else strlcpy(path, global->bsv.movie_path, sizeof(path)); + strlcat(path, ".bsv", sizeof(path)); snprintf(msg, sizeof(msg), "%s \"%s\".", @@ -347,7 +347,7 @@ static bool check_movie(global_t *global) if (global->bsv.movie_playback) return check_movie_playback(global); if (!global->bsv.movie) - return check_movie_init(); + return check_movie_init(global); return check_movie_record(global); } @@ -371,7 +371,7 @@ static void check_shader_dir(global_t *global, bool pressed_next, bool pressed_prev) { uint32_t ext_hash; - char msg[PATH_MAX_LENGTH] = {0}; + char msg[PATH_MAX_LENGTH]; const char *shader = NULL; const char *ext = NULL; enum rarch_shader_type type = RARCH_SHADER_NONE; From d279b158c93cdd110e23c5a6dc1d06f4c6da2ce5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 03:09:42 +0200 Subject: [PATCH 142/822] Bring back input_flush --- runloop.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/runloop.c b/runloop.c index 516b778dc6..8d8403fc00 100644 --- a/runloop.c +++ b/runloop.c @@ -983,6 +983,18 @@ static void rarch_main_cmd_get_state(driver_t *driver, RARCH_CHEAT_TOGGLE); } +static bool input_flush(retro_input_t *input) +{ + *input = 0; + + /* If core was paused before entering menu, evoke + * pause toggle to wake it up. */ + if (main_is_paused) + BIT64_SET(*input, RARCH_PAUSE_TOGGLE); + + return true; +} + /** * rarch_main_iterate: * @@ -1008,15 +1020,7 @@ int rarch_main_iterate(void) last_input = input; if (driver->flushing_input) - { - input = 0; - /* If core was paused before entering menu, evoke - * pause toggle to wake it up. */ - if (main_is_paused) - BIT64_SET(input, RARCH_PAUSE_TOGGLE); - - driver->flushing_input = false; - } + driver->flushing_input = (input) ? input_flush(&input) : false; trigger_input = input & ~old_input; From 0595393cc0dc99db55a276081ea4ce07edc03b10 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 03:10:52 +0200 Subject: [PATCH 143/822] input_state - cleanup --- libretro_version_1.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libretro_version_1.c b/libretro_version_1.c index df1a8632c3..813c8a02fb 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -156,7 +156,7 @@ static int16_t input_state(unsigned port, unsigned device, if (settings->input.remap_binds_enable) input_remapping_state(port, &device, &idx, &id); - if (!driver->block_libretro_input) + if (!driver->flushing_input && !driver->block_libretro_input) { if (((id < RARCH_FIRST_META_KEY) || (device == RETRO_DEVICE_KEYBOARD))) res = input->input_state(driver->input_data, libretro_input_binds, port, device, idx, id); @@ -166,10 +166,6 @@ static int16_t input_state(unsigned port, unsigned device, #endif } - /* flushing_input will be cleared in rarch_main_iterate. */ - if (driver->flushing_input) - res = 0; - /* Don't allow turbo for D-pad. */ if (device == RETRO_DEVICE_JOYPAD && (id < RETRO_DEVICE_ID_JOYPAD_UP || id > RETRO_DEVICE_ID_JOYPAD_RIGHT)) From 18af1a74a6ac19f6aeb3719117579249a0a56f3f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 03:17:56 +0200 Subject: [PATCH 144/822] Refactor input_flush --- runloop.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/runloop.c b/runloop.c index 8d8403fc00..0c2cba12ee 100644 --- a/runloop.c +++ b/runloop.c @@ -983,16 +983,16 @@ static void rarch_main_cmd_get_state(driver_t *driver, RARCH_CHEAT_TOGGLE); } -static bool input_flush(retro_input_t *input) +static INLINE bool input_flush(void) { - *input = 0; + retro_input_t input = 0; /* If core was paused before entering menu, evoke * pause toggle to wake it up. */ if (main_is_paused) - BIT64_SET(*input, RARCH_PAUSE_TOGGLE); + BIT64_SET(input, RARCH_PAUSE_TOGGLE); - return true; + return input; } /** @@ -1020,7 +1020,14 @@ int rarch_main_iterate(void) last_input = input; if (driver->flushing_input) - driver->flushing_input = (input) ? input_flush(&input) : false; + { + driver->flushing_input = false; + if (input) + { + input = input_flush(); + driver->flushing_input = true; + } + } trigger_input = input & ~old_input; From b6812cc36554f57ae58e629510aa2a6528245b7b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 03:20:15 +0200 Subject: [PATCH 145/822] Refactor away input_flush --- runloop.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/runloop.c b/runloop.c index 0c2cba12ee..7478029589 100644 --- a/runloop.c +++ b/runloop.c @@ -983,18 +983,6 @@ static void rarch_main_cmd_get_state(driver_t *driver, RARCH_CHEAT_TOGGLE); } -static INLINE bool input_flush(void) -{ - retro_input_t input = 0; - - /* If core was paused before entering menu, evoke - * pause toggle to wake it up. */ - if (main_is_paused) - BIT64_SET(input, RARCH_PAUSE_TOGGLE); - - return input; -} - /** * rarch_main_iterate: * @@ -1024,7 +1012,12 @@ int rarch_main_iterate(void) driver->flushing_input = false; if (input) { - input = input_flush(); + input = 0; + + /* If core was paused before entering menu, evoke + * pause toggle to wake it up. */ + if (main_is_paused) + BIT64_SET(input, RARCH_PAUSE_TOGGLE); driver->flushing_input = true; } } From 00af8fa7dbffa4daf4d143dbbb2fcec7ab75e9f3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 03:43:19 +0200 Subject: [PATCH 146/822] Cleanups --- runloop.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/runloop.c b/runloop.c index 7478029589..63b657e5a1 100644 --- a/runloop.c +++ b/runloop.c @@ -518,9 +518,6 @@ static int do_pause_state_checks( static int do_state_checks(driver_t *driver, settings_t *settings, global_t *global, event_cmd_state_t *cmd) { - if (main_is_idle) - return 1; - if (cmd->screenshot_pressed) event_command(EVENT_CMD_TAKE_SCREENSHOT); @@ -1058,7 +1055,7 @@ int rarch_main_iterate(void) goto quit; } - if (do_state_checks(driver, settings, global, &cmd)) + if (main_is_idle || do_state_checks(driver, settings, global, &cmd)) { /* RetroArch has been paused */ driver->retro_ctx.poll_cb(); From c9a3caeca57c9e956e2aeb81f74b92f4b0f89892 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 03:44:32 +0200 Subject: [PATCH 147/822] Cleanup --- runloop.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/runloop.c b/runloop.c index 63b657e5a1..ba15cfb791 100644 --- a/runloop.c +++ b/runloop.c @@ -486,7 +486,6 @@ static int do_netplay_state_checks( #endif static int do_pause_state_checks( - bool pause_pressed, bool frameadvance_pressed, bool fullscreen_toggle_pressed, bool rewind_pressed) @@ -542,7 +541,6 @@ static int do_state_checks(driver_t *driver, settings_t *settings, cmd->pause_pressed, cmd->frameadvance_pressed); if (do_pause_state_checks( - cmd->pause_pressed, cmd->frameadvance_pressed, cmd->fullscreen_toggle, cmd->rewind_pressed)) From 6b261aad872cc6ab3fcc00c2a3e9aaa13b5f6fed Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 03:58:45 +0200 Subject: [PATCH 148/822] rarch_main_data_nbio_iterate_poll - get rid of implicit memset --- tasks/task_file_transfer.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index 739c1b16ac..9ad2274918 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -497,7 +497,8 @@ static int cb_nbio_image_menu_boxart(void *data, size_t len) static int rarch_main_data_nbio_iterate_poll(nbio_handle_t *nbio) { - char elem0[PATH_MAX_LENGTH] = {0}; + char elem0[PATH_MAX_LENGTH]; + unsigned elem0_hash = 0; uint32_t cb_type_hash = 0; struct nbio_t* handle = NULL; struct string_list *str_list = NULL; @@ -517,26 +518,23 @@ static int rarch_main_data_nbio_iterate_poll(nbio_handle_t *nbio) str_list = string_split(path, "|"); - if (!str_list) + if (!str_list || (str_list->size < 1)) goto error; - if (str_list->size > 0) - { - unsigned elem0_hash = 0; - strlcpy(elem0, str_list->elems[0].data, sizeof(elem0)); - elem0_hash = djb2_calculate(elem0); + strlcpy(elem0, str_list->elems[0].data, sizeof(elem0)); + elem0_hash = djb2_calculate(elem0); - /* TODO/FIXME - should be able to deal with this - * in a better way. */ - switch(elem0_hash) - { - case CB_MENU_WALLPAPER: - case CB_MENU_BOXART: - goto error; - default: - break; - } + /* TODO/FIXME - should be able to deal with this + * in a better way. */ + switch(elem0_hash) + { + case CB_MENU_WALLPAPER: + case CB_MENU_BOXART: + goto error; + default: + break; } + if (str_list->size > 1) cb_type_hash = djb2_calculate(str_list->elems[1].data); From 2ea5dda56497ba07b3cb73ef4504e2dda57eec99 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 04:01:44 +0200 Subject: [PATCH 149/822] Refactor away rarch_main_data_nbio_get_ptr --- tasks/task_file_transfer.c | 29 ++++++++--------------------- tasks/tasks.h | 2 -- 2 files changed, 8 insertions(+), 23 deletions(-) diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index 9ad2274918..2384f7b434 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -80,15 +80,9 @@ typedef struct nbio_handle static nbio_handle_t *nbio_ptr; -void *rarch_main_data_nbio_get_ptr(void) -{ - return nbio_ptr; -} - msg_queue_t *rarch_main_data_nbio_get_msg_queue_ptr(void) { - nbio_handle_t *nbio = (nbio_handle_t*) - rarch_main_data_nbio_get_ptr(); + nbio_handle_t *nbio = (nbio_handle_t*)nbio_ptr; if (!nbio) return NULL; return nbio->msg_queue; @@ -96,8 +90,7 @@ msg_queue_t *rarch_main_data_nbio_get_msg_queue_ptr(void) void *rarch_main_data_nbio_get_handle(void) { - nbio_handle_t *nbio = (nbio_handle_t*) - rarch_main_data_nbio_get_ptr(); + nbio_handle_t *nbio = (nbio_handle_t*)nbio_ptr; if (!nbio) return NULL; return nbio->handle; @@ -105,8 +98,7 @@ void *rarch_main_data_nbio_get_handle(void) msg_queue_t *rarch_main_data_nbio_image_get_msg_queue_ptr(void) { - nbio_handle_t *nbio = (nbio_handle_t*) - rarch_main_data_nbio_get_ptr(); + nbio_handle_t *nbio = (nbio_handle_t*)nbio_ptr; if (!nbio) return NULL; #ifdef HAVE_RPNG @@ -118,8 +110,7 @@ msg_queue_t *rarch_main_data_nbio_image_get_msg_queue_ptr(void) void *rarch_main_data_nbio_image_get_handle(void) { - nbio_handle_t *nbio = (nbio_handle_t*) - rarch_main_data_nbio_get_ptr(); + nbio_handle_t *nbio = (nbio_handle_t*)nbio_ptr; if (!nbio) return NULL; #ifdef HAVE_RPNG @@ -354,8 +345,7 @@ static int rarch_main_data_image_iterate_transfer_parse(nbio_handle_t *nbio) void rarch_main_data_nbio_image_iterate(bool is_thread) { - nbio_handle_t *nbio = (nbio_handle_t*) - rarch_main_data_nbio_get_ptr(); + nbio_handle_t *nbio = (nbio_handle_t*)nbio_ptr; nbio_image_handle_t *image = nbio ? &nbio->image : NULL; if (!image || !nbio) @@ -389,8 +379,7 @@ void rarch_main_data_nbio_image_iterate(bool is_thread) void rarch_main_data_nbio_image_upload_iterate(bool is_thread) { - nbio_handle_t *nbio = (nbio_handle_t*) - rarch_main_data_nbio_get_ptr(); + nbio_handle_t *nbio = (nbio_handle_t*)nbio_ptr; nbio_image_handle_t *image = nbio ? &nbio->image : NULL; if (!image || !nbio) @@ -628,8 +617,7 @@ static int rarch_main_data_nbio_iterate_parse(nbio_handle_t *nbio) void rarch_main_data_nbio_iterate(bool is_thread) { - nbio_handle_t *nbio = (nbio_handle_t*) - rarch_main_data_nbio_get_ptr(); + nbio_handle_t *nbio = (nbio_handle_t*)nbio_ptr; if (!nbio) return; @@ -657,8 +645,7 @@ void rarch_main_data_nbio_iterate(bool is_thread) void rarch_main_data_nbio_init_msg_queue(void) { - nbio_handle_t *nbio = (nbio_handle_t*) - rarch_main_data_nbio_get_ptr(); + nbio_handle_t *nbio = (nbio_handle_t*)nbio_ptr; if (!nbio) return; diff --git a/tasks/tasks.h b/tasks/tasks.h index 15aff14076..90bb3577ac 100644 --- a/tasks/tasks.h +++ b/tasks/tasks.h @@ -37,8 +37,6 @@ msg_queue_t *rarch_main_data_nbio_get_msg_queue_ptr(void); msg_queue_t *rarch_main_data_nbio_image_get_msg_queue_ptr(void); -void *rarch_main_data_nbio_get_ptr(void); - void *rarch_main_data_nbio_get_handle(void); void *rarch_main_data_nbio_image_get_handle(void); From 52c2e76ec8d08891a73a385e11aca8f8291cd820 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 04:08:20 +0200 Subject: [PATCH 150/822] (task_http.c) Cleanups --- tasks/task_http.c | 34 +++++++++++----------------------- tasks/tasks.h | 2 -- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/tasks/task_http.c b/tasks/task_http.c index 5e9ecd6668..63e72b6ae6 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -71,17 +71,12 @@ int cb_core_content_list(void *data_, size_t len); static http_handle_t *http_ptr; -void *rarch_main_data_http_get_ptr(void) -{ - return http_ptr; -} - #ifdef HAVE_ZLIB static int zlib_extract_core_callback(const char *name, const char *valid_exts, const uint8_t *cdata, unsigned cmode, uint32_t csize, uint32_t size, uint32_t crc32, void *userdata) { - char path[PATH_MAX_LENGTH] = {0}; + char path[PATH_MAX_LENGTH]; /* Make directory */ fill_pathname_join(path, (const char*)userdata, name, sizeof(path)); @@ -122,9 +117,9 @@ error: static int cb_generic_download(void *data, size_t len, const char *dir_path) { + char msg[PATH_MAX_LENGTH]; + char output_path[PATH_MAX_LENGTH]; const char *file_ext = NULL; - char output_path[PATH_MAX_LENGTH] = {0}; - char msg[PATH_MAX_LENGTH] = {0}; settings_t *settings = config_get_ptr(); if (!data) @@ -361,7 +356,7 @@ static int cb_http_conn_default(void *data_, size_t len) **/ static int rarch_main_data_http_iterate_poll(http_handle_t *http) { - char elem0[PATH_MAX_LENGTH] = {0}; + char elem0[PATH_MAX_LENGTH]; struct string_list *str_list = NULL; const char *url = msg_queue_pull(http->msg_queue); @@ -374,9 +369,7 @@ static int rarch_main_data_http_iterate_poll(http_handle_t *http) str_list = string_split(url, "|"); - if (!str_list) - goto error; - if (str_list->size < 1) + if (!str_list || (str_list->size < 1)) goto error; strlcpy(elem0, str_list->elems[0].data, sizeof(elem0)); @@ -428,7 +421,7 @@ static int rarch_main_data_http_iterate_transfer(void *data) if (percent > 0) { - char tmp[PATH_MAX_LENGTH] = {0}; + char tmp[PATH_MAX_LENGTH]; snprintf(tmp, sizeof(tmp), "%s: %d%%", msg_hash_to_str(MSG_DOWNLOAD_PROGRESS), percent); @@ -443,8 +436,7 @@ static int rarch_main_data_http_iterate_transfer(void *data) void rarch_main_data_http_iterate(bool is_thread) { - http_handle_t *http = (http_handle_t*) - rarch_main_data_http_get_ptr(); + http_handle_t *http = (http_handle_t*)http_ptr; if (!http) return; @@ -477,8 +469,7 @@ void rarch_main_data_http_iterate(bool is_thread) void rarch_main_data_http_init_msg_queue(void) { - http_handle_t *http = (http_handle_t*) - rarch_main_data_http_get_ptr(); + http_handle_t *http = (http_handle_t*)http_ptr; if (!http) return; @@ -489,8 +480,7 @@ void rarch_main_data_http_init_msg_queue(void) msg_queue_t *rarch_main_data_http_get_msg_queue_ptr(void) { - http_handle_t *http = (http_handle_t*) - rarch_main_data_http_get_ptr(); + http_handle_t *http = (http_handle_t*)http_ptr; if (!http) return NULL; return http->msg_queue; @@ -498,8 +488,7 @@ msg_queue_t *rarch_main_data_http_get_msg_queue_ptr(void) void *rarch_main_data_http_get_handle(void) { - http_handle_t *http = (http_handle_t*) - rarch_main_data_http_get_ptr(); + http_handle_t *http = (http_handle_t*)http_ptr; if (!http) return NULL; if (http->handle == NULL) @@ -509,8 +498,7 @@ void *rarch_main_data_http_get_handle(void) void *rarch_main_data_http_conn_get_handle(void) { - http_handle_t *http = (http_handle_t*) - rarch_main_data_http_get_ptr(); + http_handle_t *http = (http_handle_t*)http_ptr; if (!http) return NULL; if (http->connection.handle == NULL) diff --git a/tasks/tasks.h b/tasks/tasks.h index 90bb3577ac..3342ba55db 100644 --- a/tasks/tasks.h +++ b/tasks/tasks.h @@ -63,8 +63,6 @@ void *rarch_main_data_http_conn_get_handle(void); void rarch_main_data_http_uninit(void); void rarch_main_data_http_init(void); - -void *rarch_main_data_http_get_ptr(void); #endif #ifdef HAVE_RPNG From c4ff5e73f1b41e149cad6d3fcaf7fd946211a8cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 04:14:49 +0200 Subject: [PATCH 151/822] (task_database.c) Refactor away get_ptr function --- tasks/task_database.c | 15 ++++----------- tasks/tasks.h | 2 -- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/tasks/task_database.c b/tasks/task_database.c index d9edcdcac1..099a9d6b0b 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -479,25 +479,18 @@ do_poll: } } -void *rarch_main_data_db_get_ptr(void) -{ - db_handle_t *db = db_ptr; - if (!db) - return NULL; - return db; -} void rarch_main_data_db_init_msg_queue(void) { - db_handle_t *db = (db_handle_t*)rarch_main_data_db_get_ptr(); + db_handle_t *db = (db_handle_t*)db_ptr; - if (!db->msg_queue) + if (!db || !db->msg_queue) rarch_assert(db->msg_queue = msg_queue_new(8)); } msg_queue_t *rarch_main_data_db_get_msg_queue_ptr(void) { - db_handle_t *db = (db_handle_t*)rarch_main_data_db_get_ptr(); + db_handle_t *db = (db_handle_t*)db_ptr; if (!db) return NULL; return db->msg_queue; @@ -519,7 +512,7 @@ void rarch_main_data_db_init(void) bool rarch_main_data_db_is_active(void) { - db_handle_t *db = (db_handle_t*)rarch_main_data_db_get_ptr(); + db_handle_t *db = (db_handle_t*)db_ptr; database_info_handle_t *dbi = db ? db->handle : NULL; if (dbi && dbi->status != DATABASE_STATUS_NONE) return true; diff --git a/tasks/tasks.h b/tasks/tasks.h index 3342ba55db..3f46225d62 100644 --- a/tasks/tasks.h +++ b/tasks/tasks.h @@ -79,8 +79,6 @@ bool rarch_main_data_db_pending_scan_finished(void); void rarch_main_data_db_init_msg_queue(void); -void *rarch_main_data_db_get_ptr(void); - msg_queue_t *rarch_main_data_db_get_msg_queue_ptr(void); void rarch_main_data_db_uninit(void); From a1a15164b8298a3d471ed1febf80f405202c9f8d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 05:14:12 +0200 Subject: [PATCH 152/822] Get rid of input_overlay_get_ptr --- input/input_overlay.c | 47 +++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/input/input_overlay.c b/input/input_overlay.c index c8a87d94fb..6e8517f05a 100644 --- a/input/input_overlay.c +++ b/input/input_overlay.c @@ -160,11 +160,6 @@ struct input_overlay static input_overlay_t *overlay_ptr; static input_overlay_state_t overlay_st_ptr; -static input_overlay_t *input_overlay_get_ptr(void) -{ - return overlay_ptr; -} - static input_overlay_state_t *input_overlay_get_state_ptr(void) { return &overlay_st_ptr; @@ -172,7 +167,7 @@ static input_overlay_state_t *input_overlay_get_state_ptr(void) bool input_overlay_data_is_active(void) { - input_overlay_t *overlay = input_overlay_get_ptr(); + input_overlay_t *overlay = overlay_ptr; if (!overlay) return false; @@ -232,7 +227,7 @@ static void input_overlay_scale(struct overlay *ol, float scale) static void input_overlay_set_vertex_geom(void) { size_t i; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -267,7 +262,7 @@ static void input_overlay_set_vertex_geom(void) void input_overlay_set_scale_factor(float scale) { size_t i; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -300,7 +295,7 @@ static void input_overlay_free_overlay(struct overlay *overlay) static void input_overlay_free_overlays(void) { size_t i; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -333,7 +328,7 @@ static bool input_overlay_load_desc_image( { char overlay_desc_image_key[64] = {0}; char image_path[PATH_MAX_LENGTH] = {0}; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; config_file_t *conf = ol ? config_file_new(ol->overlay_path) : NULL; if (!ol || !conf) @@ -381,7 +376,7 @@ static bool input_overlay_load_desc( const char *x = NULL; const char *y = NULL; const char *box = NULL; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; config_file_t *conf = ol ? config_file_new(ol->overlay_path) : NULL; if (!ol || !conf) @@ -622,7 +617,7 @@ static bool input_overlay_resolve_targets(struct overlay *ol, static void input_overlay_load_active(float opacity) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -645,7 +640,7 @@ static void input_overlay_load_active(float opacity) **/ static void input_overlay_enable(bool enable) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; ol->enable = enable; @@ -656,7 +651,7 @@ static void input_overlay_enable(bool enable) bool input_overlay_load_overlays_resolve_iterate(void) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; bool not_done = true; if (!ol) @@ -713,7 +708,7 @@ bool input_overlay_load_overlays_iterate(void) size_t i = 0; bool not_done = true; struct overlay *overlay = NULL; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return false; @@ -805,7 +800,7 @@ error: bool input_overlay_load_overlays(void) { unsigned i; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; config_file_t *conf = config_file_new(ol->overlay_path); if (!ol || !conf) @@ -960,7 +955,7 @@ error: bool input_overlay_new_done(void) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return false; @@ -1116,7 +1111,7 @@ static void input_overlay_poll(input_overlay_state_t *out, { size_t i; float x, y; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; memset(out, 0, sizeof(*out)); @@ -1230,7 +1225,7 @@ static void input_overlay_update_desc_geom(input_overlay_t *ol, void input_overlay_post_poll(float opacity) { size_t i; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -1276,7 +1271,7 @@ void input_overlay_post_poll(float opacity) void input_overlay_poll_clear(float opacity) { size_t i; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -1311,7 +1306,7 @@ void input_overlay_poll_clear(float opacity) **/ void input_overlay_next(float opacity) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -1333,7 +1328,7 @@ void input_overlay_next(float opacity) **/ bool input_overlay_full_screen(void) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return false; return ol->active->full_screen; @@ -1347,7 +1342,7 @@ bool input_overlay_full_screen(void) **/ void input_overlay_free(void) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -1411,7 +1406,7 @@ int input_overlay_new_ptr(void) void input_overlay_set_alpha_mod(float mod) { unsigned i; - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return; @@ -1422,7 +1417,7 @@ void input_overlay_set_alpha_mod(float mod) bool input_overlay_is_alive(void) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return false; return ol->alive; @@ -1430,7 +1425,7 @@ bool input_overlay_is_alive(void) enum overlay_status input_overlay_status(void) { - input_overlay_t *ol = input_overlay_get_ptr(); + input_overlay_t *ol = overlay_ptr; if (!ol) return OVERLAY_STATUS_NONE; return ol->state; From 6ae26e95ea9189d78d2bbfb7ebd702aa22c70e7d Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 6 Aug 2015 08:35:28 +0200 Subject: [PATCH 153/822] (iOS) Don't use iteration timers anymore --- ui/drivers/ui_cocoatouch.m | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index ce373cb2d2..9c05284780 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -37,7 +37,6 @@ static id apple_platform; static CFRunLoopObserverRef iterate_observer; -static CFRunLoopTimerRef iterate_timer; /* forward declaration */ void apple_rarch_exited(void); @@ -63,14 +62,6 @@ static void rarch_draw(void) rarch_main_data_iterate(); - if (iterate_timer) - { - if (rarch_main_data_active()) - CFRunLoopAddTimer(CFRunLoopGetMain(), iterate_timer, kCFRunLoopCommonModes); - else - CFRunLoopRemoveTimer(CFRunLoopGetMain(), iterate_timer, kCFRunLoopCommonModes); - } - if (ret == -1) { main_exit_save_config(); @@ -309,23 +300,9 @@ void apple_start_iterate_observer(void) CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes); } -void apple_start_iterate_timer(void) -{ - CFTimeInterval interval; - - if (iterate_timer) - return; - - // This number is a double measured in seconds. - interval = 1.0 / 60.0 / 1000.0; - - iterate_timer = CFRunLoopTimerCreate(0, interval, interval, 0, 0, rarch_draw_timer, 0); -} - - (void) apple_start_iteration { apple_start_iterate_observer(); - apple_start_iterate_timer(); } void apple_stop_iterate_observer(void) @@ -338,20 +315,9 @@ void apple_stop_iterate_observer(void) iterate_observer = NULL; } -void apple_stop_iterate_timer(void) -{ - if (!iterate_timer) - return; - - CFRunLoopTimerInvalidate(iterate_timer); - CFRelease(iterate_timer); - iterate_timer = NULL; -} - - (void) apple_stop_iteration { apple_stop_iterate_observer(); - apple_stop_iterate_timer(); } - (void)applicationDidEnterBackground:(UIApplication *)application From df0307348d0d74efee83957cc4543cf7a4c7e815 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 6 Aug 2015 08:36:46 +0200 Subject: [PATCH 154/822] Revert "(iOS) Don't use iteration timers anymore" This reverts commit 6ae26e95ea9189d78d2bbfb7ebd702aa22c70e7d. --- ui/drivers/ui_cocoatouch.m | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 9c05284780..ce373cb2d2 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -37,6 +37,7 @@ static id apple_platform; static CFRunLoopObserverRef iterate_observer; +static CFRunLoopTimerRef iterate_timer; /* forward declaration */ void apple_rarch_exited(void); @@ -62,6 +63,14 @@ static void rarch_draw(void) rarch_main_data_iterate(); + if (iterate_timer) + { + if (rarch_main_data_active()) + CFRunLoopAddTimer(CFRunLoopGetMain(), iterate_timer, kCFRunLoopCommonModes); + else + CFRunLoopRemoveTimer(CFRunLoopGetMain(), iterate_timer, kCFRunLoopCommonModes); + } + if (ret == -1) { main_exit_save_config(); @@ -300,9 +309,23 @@ void apple_start_iterate_observer(void) CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes); } +void apple_start_iterate_timer(void) +{ + CFTimeInterval interval; + + if (iterate_timer) + return; + + // This number is a double measured in seconds. + interval = 1.0 / 60.0 / 1000.0; + + iterate_timer = CFRunLoopTimerCreate(0, interval, interval, 0, 0, rarch_draw_timer, 0); +} + - (void) apple_start_iteration { apple_start_iterate_observer(); + apple_start_iterate_timer(); } void apple_stop_iterate_observer(void) @@ -315,9 +338,20 @@ void apple_stop_iterate_observer(void) iterate_observer = NULL; } +void apple_stop_iterate_timer(void) +{ + if (!iterate_timer) + return; + + CFRunLoopTimerInvalidate(iterate_timer); + CFRelease(iterate_timer); + iterate_timer = NULL; +} + - (void) apple_stop_iteration { apple_stop_iterate_observer(); + apple_stop_iterate_timer(); } - (void)applicationDidEnterBackground:(UIApplication *)application From 109dc850d04953704e92106b7df4a9059b237e35 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 6 Aug 2015 08:38:11 +0200 Subject: [PATCH 155/822] Revert "Revert "(iOS) Don't use iteration timers anymore"" This reverts commit df0307348d0d74efee83957cc4543cf7a4c7e815. --- ui/drivers/ui_cocoatouch.m | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index ce373cb2d2..9c05284780 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -37,7 +37,6 @@ static id apple_platform; static CFRunLoopObserverRef iterate_observer; -static CFRunLoopTimerRef iterate_timer; /* forward declaration */ void apple_rarch_exited(void); @@ -63,14 +62,6 @@ static void rarch_draw(void) rarch_main_data_iterate(); - if (iterate_timer) - { - if (rarch_main_data_active()) - CFRunLoopAddTimer(CFRunLoopGetMain(), iterate_timer, kCFRunLoopCommonModes); - else - CFRunLoopRemoveTimer(CFRunLoopGetMain(), iterate_timer, kCFRunLoopCommonModes); - } - if (ret == -1) { main_exit_save_config(); @@ -309,23 +300,9 @@ void apple_start_iterate_observer(void) CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes); } -void apple_start_iterate_timer(void) -{ - CFTimeInterval interval; - - if (iterate_timer) - return; - - // This number is a double measured in seconds. - interval = 1.0 / 60.0 / 1000.0; - - iterate_timer = CFRunLoopTimerCreate(0, interval, interval, 0, 0, rarch_draw_timer, 0); -} - - (void) apple_start_iteration { apple_start_iterate_observer(); - apple_start_iterate_timer(); } void apple_stop_iterate_observer(void) @@ -338,20 +315,9 @@ void apple_stop_iterate_observer(void) iterate_observer = NULL; } -void apple_stop_iterate_timer(void) -{ - if (!iterate_timer) - return; - - CFRunLoopTimerInvalidate(iterate_timer); - CFRelease(iterate_timer); - iterate_timer = NULL; -} - - (void) apple_stop_iteration { apple_stop_iterate_observer(); - apple_stop_iterate_timer(); } - (void)applicationDidEnterBackground:(UIApplication *)application From 65aa759ab8ea30583b1d1c4a7db01c55d274af63 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 6 Aug 2015 08:57:20 +0200 Subject: [PATCH 156/822] (iOS) There's currently a problem with enabling the UI companion driver at startup to boot, so launch into GLUI/RGUI mode first and allow the user himself to switch to CocoaTouch mode --- frontend/frontend.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/frontend.c b/frontend/frontend.c index 5c17f59110..1b02a5479c 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -334,11 +334,13 @@ int rarch_main(int argc, char *argv[], void *data) if (driver) driver->ui_companion = (ui_companion_driver_t*)ui_companion_init_first(); +#if 0 if (driver->ui_companion && driver->ui_companion->toggle) { if (settings->ui.companion_start_on_boot) driver->ui_companion->toggle(driver->ui_companion_data); } +#endif #ifndef HAVE_MAIN do{ From 447435c89ece9595976e7d3ffc849f42fa9aca78 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 6 Aug 2015 09:05:14 +0200 Subject: [PATCH 157/822] (iOS) Enable CoreText --- apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj b/apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj index 6642156640..e8468fc025 100644 --- a/apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj +++ b/apple/iOS/RetroArch_iOS.xcodeproj/project.pbxproj @@ -496,6 +496,7 @@ ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-DHAVE_NETPLAY", + "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", "-DHAVE_AVFOUNDATION", @@ -562,6 +563,7 @@ "-DNS_BLOCK_ASSERTIONS=1", "-DNDEBUG", "-DHAVE_NETPLAY", + "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", "-DHAVE_AVFOUNDATION", @@ -600,6 +602,7 @@ "-DNS_BLOCK_ASSERTIONS=1", "-DNDEBUG", "-DHAVE_NETPLAY", + "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", "-DHAVE_AVFOUNDATION", @@ -669,6 +672,7 @@ ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-DHAVE_NETPLAY", + "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", "-DHAVE_AVFOUNDATION", @@ -729,6 +733,7 @@ "-DNS_BLOCK_ASSERTIONS=1", "-DNDEBUG", "-DHAVE_NETPLAY", + "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", "-DHAVE_AVFOUNDATION", @@ -791,6 +796,7 @@ ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-DHAVE_NETPLAY", + "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", "-DHAVE_AVFOUNDATION", @@ -859,6 +865,7 @@ "-DNS_BLOCK_ASSERTIONS=1", "-DNDEBUG", "-DHAVE_NETPLAY", + "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", "-DHAVE_AVFOUNDATION", @@ -899,6 +906,7 @@ "-DNS_BLOCK_ASSERTIONS=1", "-DNDEBUG", "-DHAVE_NETPLAY", + "-DHAVE_CORETEXT", "-DHAVE_HID", "-DHAVE_NETWORKING", "-DHAVE_AVFOUNDATION", From 7d72e864c458e99620bc557b5f1330cb8ef4b10e Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 6 Aug 2015 14:21:15 +0200 Subject: [PATCH 158/822] (iOS) Fix lots of empty screen estate let for labels --- menu/drivers/glui.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index fc2e2d09ed..f70fbdf5f0 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -545,7 +545,7 @@ static void glui_layout(menu_handle_t *menu, glui_handle_t *glui) glui->line_height = scale_factor / 3; glui->margin = scale_factor / 6; menu->display.header_height = scale_factor / 3; - menu->display.font.size = scale_factor / 8; + menu->display.font.size = scale_factor / 10; /* we assume the average glyph aspect ratio is close to 3:4 */ glui->glyph_width = menu->display.font.size * 3/4; @@ -554,7 +554,7 @@ static void glui_layout(menu_handle_t *menu, glui_handle_t *glui) if (disp && disp->font.buf) /* calculate a more realistic ticker_limit */ { driver_t *driver = driver_get_ptr(); - int m_width = driver->font_osd_driver->get_message_width(disp->font.buf, "M", 1, 1); + int m_width = driver->font_osd_driver->get_message_width(disp->font.buf, "a", 1, 1); if (m_width) glui->glyph_width = m_width; From 786424b064cd44b7a1749e0136d1aa9e1109b213 Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 7 Aug 2015 01:50:02 -0500 Subject: [PATCH 159/822] Shield Console hack --- input/drivers/android_input.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 880864d39a..a410077f39 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -641,7 +641,7 @@ static void handle_hotplug(android_input_t *android, } else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.01")) { - /* Built-in shield contrlleris always user 1. FIXME: This is kinda ugly. + /* Built-in shield controller is always user 1. FIXME: This is kinda ugly. * We really need to find a way to detect useless input devices * like gpio-keys in a general way. */ @@ -655,6 +655,21 @@ static void handle_hotplug(android_input_t *android, *port = 0; strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); } + else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.03") && !strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03")) + { + /* Shield Controller is user 0 by default. FIXME: This is kinda ugly. + * this allows using the NVIDIA button as menu + */ + *port = 0; + strlcpy(name_buf, device_name, sizeof(name_buf)); + } + else if (strstr(device_name, "Virtual") || + (strstr(device_name, "gpio") && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03"))) + { + /* If the shield controller is detected bind the virtual and gpio devices to the same port*/ + *port = 0; + strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); + } else if (strstr(device_name, "Amazon Fire TV Remote") || strstr(device_name, "Nexus Remote") || strstr(device_name, "SHIELD Remote")) From 1edd7af424efb856a68c0c8296911414d5eea7c8 Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 7 Aug 2015 01:53:35 -0500 Subject: [PATCH 160/822] better all around hack for GPIO devices --- input/drivers/android_input.c | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index a410077f39..f805699f1e 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -641,7 +641,7 @@ static void handle_hotplug(android_input_t *android, } else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.01")) { - /* Built-in shield controller is always user 1. FIXME: This is kinda ugly. + /* Built-in shield contrlleris always user 1. FIXME: This is kinda ugly. * We really need to find a way to detect useless input devices * like gpio-keys in a general way. */ @@ -655,21 +655,6 @@ static void handle_hotplug(android_input_t *android, *port = 0; strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); } - else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.03") && !strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03")) - { - /* Shield Controller is user 0 by default. FIXME: This is kinda ugly. - * this allows using the NVIDIA button as menu - */ - *port = 0; - strlcpy(name_buf, device_name, sizeof(name_buf)); - } - else if (strstr(device_name, "Virtual") || - (strstr(device_name, "gpio") && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03"))) - { - /* If the shield controller is detected bind the virtual and gpio devices to the same port*/ - *port = 0; - strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); - } else if (strstr(device_name, "Amazon Fire TV Remote") || strstr(device_name, "Nexus Remote") || strstr(device_name, "SHIELD Remote")) @@ -680,7 +665,8 @@ static void handle_hotplug(android_input_t *android, } else if ( *port==1 && ( strstr(android->pad_states[0].name,"Amazon Fire TV Remote") || strstr(android->pad_states[0].name,"Nexus Remote") - || strstr(android->pad_states[0].name,"SHIELD Remote"))) + || strstr(android->pad_states[0].name,"SHIELD Remote") + || strstr(android->pad_states[0].name,"Generic I/O Device"))) { /* and then when we are binding a new controller in port 1 and one of those remotes * was bound to port 0, bind the device as port 0 too, it causes all the controllers to From bae6dd7c7991c8411e15bc5905825b13d53aeef4 Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 7 Aug 2015 01:59:50 -0500 Subject: [PATCH 161/822] better all around hack for GPIO devices --- input/drivers/android_input.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index f805699f1e..a41aa07c98 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -648,20 +648,18 @@ static void handle_hotplug(android_input_t *android, *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); } - else if (strstr(device_name, "Virtual") || - (strstr(device_name, "gpio") && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.01"))) - { - /* If built-in shield controller is detected bind the virtual and gpio devices to the same port*/ - *port = 0; - strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); - } else if (strstr(device_name, "Amazon Fire TV Remote") || strstr(device_name, "Nexus Remote") - || strstr(device_name, "SHIELD Remote")) + || strstr(device_name, "SHIELD Remote") + || strstr(device_name, "gpio") + || strstr(device_name, "Virtual")) { /* hack for remote control type devices, set them always to port 0 */ *port = 0; - strlcpy(name_buf, device_name, sizeof(name_buf)); + if (strstr(device_name, "Virtual") || (strstr(device_name, "gpio")) + strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); + else + strlcpy(name_buf, device_name, sizeof(name_buf)); } else if ( *port==1 && ( strstr(android->pad_states[0].name,"Amazon Fire TV Remote") || strstr(android->pad_states[0].name,"Nexus Remote") From c8671139e80de4d0a2e1286c74c3280c80e61f6b Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 7 Aug 2015 02:17:25 -0500 Subject: [PATCH 162/822] fix --- input/drivers/android_input.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index a41aa07c98..7b0e5ca9ca 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -656,9 +656,9 @@ static void handle_hotplug(android_input_t *android, { /* hack for remote control type devices, set them always to port 0 */ *port = 0; - if (strstr(device_name, "Virtual") || (strstr(device_name, "gpio")) + if (strstr(device_name, "Virtual") || (strstr(device_name, "gpio"))) strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); - else + else strlcpy(name_buf, device_name, sizeof(name_buf)); } else if ( *port==1 && ( strstr(android->pad_states[0].name,"Amazon Fire TV Remote") From a5c70560a3190b599387d2525d6bca6f66aedb53 Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 7 Aug 2015 13:51:19 -0500 Subject: [PATCH 163/822] remove the shield portable hack, it's not needed anymore --- input/drivers/android_input.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 7b0e5ca9ca..e6d2ad73ef 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -639,22 +639,15 @@ static void handle_hotplug(android_input_t *android, else if (strstr(device_name, "SideWinder")) strlcpy(name_buf, "SideWinder Classic", sizeof(name_buf)); } - else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.01")) - { - /* Built-in shield contrlleris always user 1. FIXME: This is kinda ugly. - * We really need to find a way to detect useless input devices - * like gpio-keys in a general way. - */ - *port = 0; - strlcpy(name_buf, device_name, sizeof(name_buf)); - } + /* Make sure generic I/O devices are always bound to port one + * should be easier to add these instead of one hack per device + */ else if (strstr(device_name, "Amazon Fire TV Remote") || strstr(device_name, "Nexus Remote") || strstr(device_name, "SHIELD Remote") || strstr(device_name, "gpio") || strstr(device_name, "Virtual")) { - /* hack for remote control type devices, set them always to port 0 */ *port = 0; if (strstr(device_name, "Virtual") || (strstr(device_name, "gpio"))) strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); @@ -666,10 +659,8 @@ static void handle_hotplug(android_input_t *android, || strstr(android->pad_states[0].name,"SHIELD Remote") || strstr(android->pad_states[0].name,"Generic I/O Device"))) { - /* and then when we are binding a new controller in port 1 and one of those remotes - * was bound to port 0, bind the device as port 0 too, it causes all the controllers to - * rebind on the first button press but at least the remotes can be used to navigate - * the user interface + /* then, when binding a new controller in port 1 and one of those remotes + * was bound to port 0, overwrite that binding */ *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); From d52ab85b6057a04522126287d84cb6a4ebdd87e1 Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 7 Aug 2015 13:52:05 -0500 Subject: [PATCH 164/822] remove comment --- input/drivers/android_input.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index e6d2ad73ef..d55184efdc 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -618,8 +618,6 @@ static void handle_hotplug(android_input_t *android, //For Xperia Play - count similar devices and bind them to the same 'user' //port // - //For nVidia Shield - see above - // //For TTT HT - keep track of how many of these 'pads' are already //connected, and based on that, assign one of them to be User 1 and //the other to be User 2. From 1bfd83932c9dbc72638775e44da76303817b0ce6 Mon Sep 17 00:00:00 2001 From: Felix Laurie von Massenbach Date: Sat, 8 Aug 2015 20:32:58 +0100 Subject: [PATCH 165/822] Fix indentation in cg2glsl.py. --- tools/cg2glsl.py | 1184 +++++++++++++++++++++++----------------------- 1 file changed, 592 insertions(+), 592 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 0664f9f4a8..c9d641fed8 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -18,602 +18,602 @@ import subprocess batch_mode = False def log(*arg): - if not batch_mode: - print(*arg) + if not batch_mode: + print(*arg) def remove_comments(source_lines): - ret = [] - killed_comments = [line.split('//')[0] for line in source_lines] - for i in filter(lambda line: len(line) > 0, killed_comments): - ret.append(i) - return ret + ret = [] + killed_comments = [line.split('//')[0] for line in source_lines] + for i in filter(lambda line: len(line) > 0, killed_comments): + ret.append(i) + return ret def keep_line_if(func, lines): - ret = [] - for i in filter(func, lines): - ret.append(i) - return ret + ret = [] + for i in filter(func, lines): + ret.append(i) + return ret def replace_global_in(source): - split_source = source.split('\n') - replace_table = [ - ('IN.video_size', 'InputSize'), - ('IN.texture_size', 'TextureSize'), - ('IN.output_size', 'OutputSize'), - ('IN.frame_count', 'FrameCount'), - ('IN.frame_direction', 'FrameDirection'), - ] + split_source = source.split('\n') + replace_table = [ + ('IN.video_size', 'InputSize'), + ('IN.texture_size', 'TextureSize'), + ('IN.output_size', 'OutputSize'), + ('IN.frame_count', 'FrameCount'), + ('IN.frame_direction', 'FrameDirection'), + ] - for line in split_source: - if ('//var' in line) or ('#var' in line): - for index, replace in enumerate(replace_table): - orig = line.split(' ')[2] - if replace[0] == orig: - replace_table[index] = (line.split(':')[2].split(' ')[1], replace_table[index][1]) + for line in split_source: + if ('//var' in line) or ('#var' in line): + for index, replace in enumerate(replace_table): + orig = line.split(' ')[2] + if replace[0] == orig: + replace_table[index] = (line.split(':')[2].split(' ')[1], replace_table[index][1]) - log('Replace globals:', replace_table) + log('Replace globals:', replace_table) - for replace in replace_table: - if replace[0]: - source = source.replace(replace[0], replace[1]) + for replace in replace_table: + if replace[0]: + source = source.replace(replace[0], replace[1]) - return source + return source def replace_global_vertex(source): - source = replace_global_in(source) - replace_table = [ - ('attribute', 'COMPAT_ATTRIBUTE'), - ('varying', 'COMPAT_VARYING'), - ('texture2D', 'COMPAT_TEXTURE'), - ('POSITION', 'VertexCoord'), - ('TEXCOORD1', 'LUTTexCoord'), - ('TEXCOORD0', 'TexCoord'), - ('TEXCOORD', 'TexCoord'), - ('uniform vec4 _modelViewProj1[4];', ''), - ('_modelViewProj1', 'MVPMatrix'), - ('_IN1._mvp_matrix[0]', 'MVPMatrix[0]'), - ('_IN1._mvp_matrix[1]', 'MVPMatrix[1]'), - ('_IN1._mvp_matrix[2]', 'MVPMatrix[2]'), - ('_IN1._mvp_matrix[3]', 'MVPMatrix[3]'), + source = replace_global_in(source) + replace_table = [ + ('attribute', 'COMPAT_ATTRIBUTE'), + ('varying', 'COMPAT_VARYING'), + ('texture2D', 'COMPAT_TEXTURE'), + ('POSITION', 'VertexCoord'), + ('TEXCOORD1', 'LUTTexCoord'), + ('TEXCOORD0', 'TexCoord'), + ('TEXCOORD', 'TexCoord'), + ('uniform vec4 _modelViewProj1[4];', ''), + ('_modelViewProj1', 'MVPMatrix'), + ('_IN1._mvp_matrix[0]', 'MVPMatrix[0]'), + ('_IN1._mvp_matrix[1]', 'MVPMatrix[1]'), + ('_IN1._mvp_matrix[2]', 'MVPMatrix[2]'), + ('_IN1._mvp_matrix[3]', 'MVPMatrix[3]'), - ('FrameCount', 'float(FrameCount)'), - ('FrameDirection', 'float(FrameDirection)'), - ('input', 'input_dummy'), # 'input' is reserved in GLSL. - ('output', 'output_dummy'), # 'output' is reserved in GLSL. - ] + ('FrameCount', 'float(FrameCount)'), + ('FrameDirection', 'float(FrameDirection)'), + ('input', 'input_dummy'), # 'input' is reserved in GLSL. + ('output', 'output_dummy'), # 'output' is reserved in GLSL. + ] - for replacement in replace_table: - source = source.replace(replacement[0], replacement[1]) + for replacement in replace_table: + source = source.replace(replacement[0], replacement[1]) - return source + return source def translate_varyings(varyings, source, direction): - dictionary = {} - for varying in varyings: - for line in source: - if (varying in line) and (('//var' in line) or ('#var' in line)) and (direction in line): - log('Found line for', varying + ':', line) - dictionary[varying] = 'VAR' + line.split(':')[0].split('.')[-1].strip() - break + dictionary = {} + for varying in varyings: + for line in source: + if (varying in line) and (('//var' in line) or ('#var' in line)) and (direction in line): + log('Found line for', varying + ':', line) + dictionary[varying] = 'VAR' + line.split(':')[0].split('.')[-1].strip() + break - return dictionary + return dictionary def no_uniform(elem): - banned = [ - '_video_size', - '_texture_size', - '_output_size', - '_output_dummy_size', - '_frame_count', - '_frame_direction', - '_mvp_matrix', - '_vertex_coord', - 'sampler2D' - ] + banned = [ + '_video_size', + '_texture_size', + '_output_size', + '_output_dummy_size', + '_frame_count', + '_frame_direction', + '_mvp_matrix', + '_vertex_coord', + 'sampler2D' + ] - for ban in banned: - if ban in elem: - return False - return True + for ban in banned: + if ban in elem: + return False + return True def destructify_varyings(source, direction): - # We have to change varying structs that Cg support to single varyings for GL. - # Varying structs aren't supported until later versions - # of GLSL. + # We have to change varying structs that Cg support to single varyings for GL. + # Varying structs aren't supported until later versions + # of GLSL. - # Global structs are sometimes used to store temporary data. - # Don't try to remove this as it breaks compile. - vout_lines = [] - for line in source: - if (('//var' in line) or ('#var' in line)) and (('$vout.' in line) or ('$vin.' in line)): - vout_lines.append(line) + # Global structs are sometimes used to store temporary data. + # Don't try to remove this as it breaks compile. + vout_lines = [] + for line in source: + if (('//var' in line) or ('#var' in line)) and (('$vout.' in line) or ('$vin.' in line)): + vout_lines.append(line) - struct_types = [] - for line in source[1:]: - if 'struct' in line: - struct_type = line.split(' ')[1] - if struct_type not in struct_types: - struct_types.append(struct_type) + struct_types = [] + for line in source[1:]: + if 'struct' in line: + struct_type = line.split(' ')[1] + if struct_type not in struct_types: + struct_types.append(struct_type) - log('Struct types:', struct_types) + log('Struct types:', struct_types) - last_struct_decl_line = 0 - varyings = [] - varyings_name = [] - # Find all varyings in structs and make them "global" varyings. - for struct in struct_types: - for i, line in enumerate(source): - if ('struct ' + struct) in line: - j = i + 1 - while (j < len(source)) and ('};' not in source[j]): - j += 1 + last_struct_decl_line = 0 + varyings = [] + varyings_name = [] + # Find all varyings in structs and make them "global" varyings. + for struct in struct_types: + for i, line in enumerate(source): + if ('struct ' + struct) in line: + j = i + 1 + while (j < len(source)) and ('};' not in source[j]): + j += 1 - lines = ['COMPAT_VARYING ' + string for string in source[i + 1 : j]] - varyings.extend(lines) - names = [string.strip().split(' ')[1].split(';')[0].strip() for string in source[i + 1 : j]] - varyings_name.extend(names) - log('Found elements in struct', struct + ':', names) - last_struct_decl_line = j + lines = ['COMPAT_VARYING ' + string for string in source[i + 1 : j]] + varyings.extend(lines) + names = [string.strip().split(' ')[1].split(';')[0].strip() for string in source[i + 1 : j]] + varyings_name.extend(names) + log('Found elements in struct', struct + ':', names) + last_struct_decl_line = j - # Must have explicit uniform sampler2D in struct. - for index in range(i, j + 1): - if 'sampler2D' in source[index]: - source[index] = 'float _placeholder{};'.format(index) + # Must have explicit uniform sampler2D in struct. + for index in range(i, j + 1): + if 'sampler2D' in source[index]: + source[index] = 'float _placeholder{};'.format(index) - varyings_tmp = varyings - varyings = [] - variables = [] + varyings_tmp = varyings + varyings = [] + variables = [] - # Don't include useless varyings like IN.video_size, IN.texture_size, etc as they are not actual varyings ... - for i in filter(no_uniform, varyings_tmp): - varyings.append(i) + # Don't include useless varyings like IN.video_size, IN.texture_size, etc as they are not actual varyings ... + for i in filter(no_uniform, varyings_tmp): + varyings.append(i) - # Find any global variable struct that is supposed to be the output varying, and redirect all references to it to - # the actual varyings we just declared ... - # Globals only come before main() ... - # Make sure to only look after all struct declarations as there might be overlap. - for line in source[last_struct_decl_line:]: - if 'void main()' in line: - break + # Find any global variable struct that is supposed to be the output varying, and redirect all references to it to + # the actual varyings we just declared ... + # Globals only come before main() ... + # Make sure to only look after all struct declarations as there might be overlap. + for line in source[last_struct_decl_line:]: + if 'void main()' in line: + break - for struct in struct_types: - if struct in line: - decomment_line = line.split('//')[0].strip() - if len(decomment_line) == 0: - continue - variable = decomment_line.split(' ')[1].split(';')[0] + for struct in struct_types: + if struct in line: + decomment_line = line.split('//')[0].strip() + if len(decomment_line) == 0: + continue + variable = decomment_line.split(' ')[1].split(';')[0] - # Only redirect if the struct is actually used as vertex output. - for vout_line in vout_lines: - if variable in vout_line: - log('Found struct variable for', struct + ':', variable, 'in line:', line) - variables.append(variable) - break + # Only redirect if the struct is actually used as vertex output. + for vout_line in vout_lines: + if variable in vout_line: + log('Found struct variable for', struct + ':', variable, 'in line:', line) + variables.append(variable) + break - varyings_dict = translate_varyings(varyings_name, source, direction) - log('Varyings dict:', varyings_dict) + varyings_dict = translate_varyings(varyings_name, source, direction) + log('Varyings dict:', varyings_dict) - # Append all varyings. Keep the structs as they might be used as regular values. - for varying in varyings: - source.insert(1, varying) + # Append all varyings. Keep the structs as they might be used as regular values. + for varying in varyings: + source.insert(1, varying) - log('Variables:', variables) - log('Varying names:', varyings_name) + log('Variables:', variables) + log('Varying names:', varyings_name) - # Replace struct access with global access, e.g. (_co1._c00 => _c00) - # Also replace mangled Cg name with 'real' name. - for index, _ in enumerate(source): - for variable in variables: - for varying_name in varyings_dict: - trans_from = variable + '.' + varying_name - trans_to = varyings_dict[varying_name] - source[index] = source[index].replace(trans_from, trans_to); + # Replace struct access with global access, e.g. (_co1._c00 => _c00) + # Also replace mangled Cg name with 'real' name. + for index, _ in enumerate(source): + for variable in variables: + for varying_name in varyings_dict: + trans_from = variable + '.' + varying_name + trans_to = varyings_dict[varying_name] + source[index] = source[index].replace(trans_from, trans_to); - for index, _ in enumerate(source): - for varying_name in varyings_name: - if varying_name in varyings_dict: - source[index] = source[index].replace(varying_name, varyings_dict[varying_name]) + for index, _ in enumerate(source): + for varying_name in varyings_name: + if varying_name in varyings_dict: + source[index] = source[index].replace(varying_name, varyings_dict[varying_name]) - # Replace union . Sometimes we get collision in vertex and fragment. - for index, line in enumerate(source): - for struct_type in struct_types: - line = line.replace('uniform ' + struct_type, struct_type) - source[index] = line + # Replace union . Sometimes we get collision in vertex and fragment. + for index, line in enumerate(source): + for struct_type in struct_types: + line = line.replace('uniform ' + struct_type, struct_type) + source[index] = line - return source + return source def translate_varying(cg): - # Ye, it's ugly as shit. :( - #log('Translate:', cg) - translations = { - 'IN.tex_coord' : 'TexCoord', - 'IN.vertex_coord' : 'VertexCoord', - 'IN.lut_tex_coord' : 'LUTTexCoord', - 'ORIG.tex_coord' : 'OrigTexCoord', - 'PREV.tex_coord' : 'PrevTexCoord', - 'PREV1.tex_coord' : 'Prev1TexCoord', - 'PREV2.tex_coord' : 'Prev2TexCoord', - 'PREV3.tex_coord' : 'Prev3TexCoord', - 'PREV4.tex_coord' : 'Prev4TexCoord', - 'PREV5.tex_coord' : 'Prev5TexCoord', - 'PREV6.tex_coord' : 'Prev6TexCoord', - 'PASS1.tex_coord' : 'Pass1TexCoord', - 'PASS2.tex_coord' : 'Pass2TexCoord', - 'PASS3.tex_coord' : 'Pass3TexCoord', - 'PASS4.tex_coord' : 'Pass4TexCoord', - 'PASS5.tex_coord' : 'Pass5TexCoord', - 'PASS6.tex_coord' : 'Pass6TexCoord', - 'PASS7.tex_coord' : 'Pass7TexCoord', - 'PASS8.tex_coord' : 'Pass8TexCoord', - 'PASSPREV2.tex_coord' : 'PassPrev2TexCoord', - 'PASSPREV3.tex_coord' : 'PassPrev3TexCoord', - 'PASSPREV4.tex_coord' : 'PassPrev4TexCoord', - 'PASSPREV5.tex_coord' : 'PassPrev5TexCoord', - 'PASSPREV6.tex_coord' : 'PassPrev6TexCoord', - 'PASSPREV7.tex_coord' : 'PassPrev7TexCoord', - 'PASSPREV8.tex_coord' : 'PassPrev8TexCoord', - } + # Ye, it's ugly as shit. :( + #log('Translate:', cg) + translations = { + 'IN.tex_coord' : 'TexCoord', + 'IN.vertex_coord' : 'VertexCoord', + 'IN.lut_tex_coord' : 'LUTTexCoord', + 'ORIG.tex_coord' : 'OrigTexCoord', + 'PREV.tex_coord' : 'PrevTexCoord', + 'PREV1.tex_coord' : 'Prev1TexCoord', + 'PREV2.tex_coord' : 'Prev2TexCoord', + 'PREV3.tex_coord' : 'Prev3TexCoord', + 'PREV4.tex_coord' : 'Prev4TexCoord', + 'PREV5.tex_coord' : 'Prev5TexCoord', + 'PREV6.tex_coord' : 'Prev6TexCoord', + 'PASS1.tex_coord' : 'Pass1TexCoord', + 'PASS2.tex_coord' : 'Pass2TexCoord', + 'PASS3.tex_coord' : 'Pass3TexCoord', + 'PASS4.tex_coord' : 'Pass4TexCoord', + 'PASS5.tex_coord' : 'Pass5TexCoord', + 'PASS6.tex_coord' : 'Pass6TexCoord', + 'PASS7.tex_coord' : 'Pass7TexCoord', + 'PASS8.tex_coord' : 'Pass8TexCoord', + 'PASSPREV2.tex_coord' : 'PassPrev2TexCoord', + 'PASSPREV3.tex_coord' : 'PassPrev3TexCoord', + 'PASSPREV4.tex_coord' : 'PassPrev4TexCoord', + 'PASSPREV5.tex_coord' : 'PassPrev5TexCoord', + 'PASSPREV6.tex_coord' : 'PassPrev6TexCoord', + 'PASSPREV7.tex_coord' : 'PassPrev7TexCoord', + 'PASSPREV8.tex_coord' : 'PassPrev8TexCoord', + } - if cg in translations: - return translations[cg] - else: - return cg + if cg in translations: + return translations[cg] + else: + return cg def translate_texture_size(cg): - # Ye, it's ugly as shit. :( - #log('Translate:', cg) - translations = { - 'ORIG.texture_size' : 'OrigTextureSize', - 'PREV.texture_size' : 'PrevTextureSize', - 'PREV1.texture_size' : 'Prev1TextureSize', - 'PREV2.texture_size' : 'Prev2TextureSize', - 'PREV3.texture_size' : 'Prev3TextureSize', - 'PREV4.texture_size' : 'Prev4TextureSize', - 'PREV5.texture_size' : 'Prev5TextureSize', - 'PREV6.texture_size' : 'Prev6TextureSize', - 'PASS1.texture_size' : 'Pass1TextureSize', - 'PASS2.texture_size' : 'Pass2TextureSize', - 'PASS3.texture_size' : 'Pass3TextureSize', - 'PASS4.texture_size' : 'Pass4TextureSize', - 'PASS5.texture_size' : 'Pass5TextureSize', - 'PASS6.texture_size' : 'Pass6TextureSize', - 'PASS7.texture_size' : 'Pass7TextureSize', - 'PASS8.texture_size' : 'Pass8TextureSize', - 'PASSPREV2.texture_size' : 'PassPrev2TextureSize', - 'PASSPREV3.texture_size' : 'PassPrev3TextureSize', - 'PASSPREV4.texture_size' : 'PassPrev4TextureSize', - 'PASSPREV5.texture_size' : 'PassPrev5TextureSize', - 'PASSPREV6.texture_size' : 'PassPrev6TextureSize', - 'PASSPREV7.texture_size' : 'PassPrev7TextureSize', - 'PASSPREV8.texture_size' : 'PassPrev8TextureSize', - 'ORIG.video_size' : 'OrigInputSize', - 'PREV.video_size' : 'PrevInputSize', - 'PREV1.video_size' : 'Prev1InputSize', - 'PREV2.video_size' : 'Prev2InputSize', - 'PREV3.video_size' : 'Prev3InputSize', - 'PREV4.video_size' : 'Prev4InputSize', - 'PREV5.video_size' : 'Prev5InputSize', - 'PREV6.video_size' : 'Prev6InputSize', - 'PASS1.video_size' : 'Pass1InputSize', - 'PASS2.video_size' : 'Pass2InputSize', - 'PASS3.video_size' : 'Pass3InputSize', - 'PASS4.video_size' : 'Pass4InputSize', - 'PASS5.video_size' : 'Pass5InputSize', - 'PASS6.video_size' : 'Pass6InputSize', - 'PASS7.video_size' : 'Pass7InputSize', - 'PASS8.video_size' : 'Pass8InputSize', - 'PASSPREV2.video_size' : 'PassPrev2InputSize', - 'PASSPREV3.video_size' : 'PassPrev3InputSize', - 'PASSPREV4.video_size' : 'PassPrev4InputSize', - 'PASSPREV5.video_size' : 'PassPrev5InputSize', - 'PASSPREV6.video_size' : 'PassPrev6InputSize', - 'PASSPREV7.video_size' : 'PassPrev7InputSize', - 'PASSPREV8.video_size' : 'PassPrev8InputSize', - } + # Ye, it's ugly as shit. :( + #log('Translate:', cg) + translations = { + 'ORIG.texture_size' : 'OrigTextureSize', + 'PREV.texture_size' : 'PrevTextureSize', + 'PREV1.texture_size' : 'Prev1TextureSize', + 'PREV2.texture_size' : 'Prev2TextureSize', + 'PREV3.texture_size' : 'Prev3TextureSize', + 'PREV4.texture_size' : 'Prev4TextureSize', + 'PREV5.texture_size' : 'Prev5TextureSize', + 'PREV6.texture_size' : 'Prev6TextureSize', + 'PASS1.texture_size' : 'Pass1TextureSize', + 'PASS2.texture_size' : 'Pass2TextureSize', + 'PASS3.texture_size' : 'Pass3TextureSize', + 'PASS4.texture_size' : 'Pass4TextureSize', + 'PASS5.texture_size' : 'Pass5TextureSize', + 'PASS6.texture_size' : 'Pass6TextureSize', + 'PASS7.texture_size' : 'Pass7TextureSize', + 'PASS8.texture_size' : 'Pass8TextureSize', + 'PASSPREV2.texture_size' : 'PassPrev2TextureSize', + 'PASSPREV3.texture_size' : 'PassPrev3TextureSize', + 'PASSPREV4.texture_size' : 'PassPrev4TextureSize', + 'PASSPREV5.texture_size' : 'PassPrev5TextureSize', + 'PASSPREV6.texture_size' : 'PassPrev6TextureSize', + 'PASSPREV7.texture_size' : 'PassPrev7TextureSize', + 'PASSPREV8.texture_size' : 'PassPrev8TextureSize', + 'ORIG.video_size' : 'OrigInputSize', + 'PREV.video_size' : 'PrevInputSize', + 'PREV1.video_size' : 'Prev1InputSize', + 'PREV2.video_size' : 'Prev2InputSize', + 'PREV3.video_size' : 'Prev3InputSize', + 'PREV4.video_size' : 'Prev4InputSize', + 'PREV5.video_size' : 'Prev5InputSize', + 'PREV6.video_size' : 'Prev6InputSize', + 'PASS1.video_size' : 'Pass1InputSize', + 'PASS2.video_size' : 'Pass2InputSize', + 'PASS3.video_size' : 'Pass3InputSize', + 'PASS4.video_size' : 'Pass4InputSize', + 'PASS5.video_size' : 'Pass5InputSize', + 'PASS6.video_size' : 'Pass6InputSize', + 'PASS7.video_size' : 'Pass7InputSize', + 'PASS8.video_size' : 'Pass8InputSize', + 'PASSPREV2.video_size' : 'PassPrev2InputSize', + 'PASSPREV3.video_size' : 'PassPrev3InputSize', + 'PASSPREV4.video_size' : 'PassPrev4InputSize', + 'PASSPREV5.video_size' : 'PassPrev5InputSize', + 'PASSPREV6.video_size' : 'PassPrev6InputSize', + 'PASSPREV7.video_size' : 'PassPrev7InputSize', + 'PASSPREV8.video_size' : 'PassPrev8InputSize', + } - if cg in translations: - return translations[cg] - else: - return cg + if cg in translations: + return translations[cg] + else: + return cg def replace_varyings(source): - ret = [] - translations = [] - attribs = [] - uniforms = [] - for index, line in enumerate(source): - if (('//var' in line) or ('#var' in line)) and ('$vin.' in line): - orig = line.split(' ')[2] - translated = translate_varying(orig) - if translated != orig and translated not in attribs: - cg_attrib = line.split(':')[2].split(' ')[1] - if len(cg_attrib.strip()) > 0: - translations.append((cg_attrib, translated)) - attribs.append(translated) - elif ('//var' in line) or ('#var' in line): - orig = line.split(' ')[2] - translated = translate_texture_size(orig) - if translated != orig and translated not in uniforms: - cg_uniform = line.split(':')[2].split(' ')[1] - if len(cg_uniform.strip()) > 0: - translations.append((cg_uniform, translated)) - uniforms.append(translated) + ret = [] + translations = [] + attribs = [] + uniforms = [] + for index, line in enumerate(source): + if (('//var' in line) or ('#var' in line)) and ('$vin.' in line): + orig = line.split(' ')[2] + translated = translate_varying(orig) + if translated != orig and translated not in attribs: + cg_attrib = line.split(':')[2].split(' ')[1] + if len(cg_attrib.strip()) > 0: + translations.append((cg_attrib, translated)) + attribs.append(translated) + elif ('//var' in line) or ('#var' in line): + orig = line.split(' ')[2] + translated = translate_texture_size(orig) + if translated != orig and translated not in uniforms: + cg_uniform = line.split(':')[2].split(' ')[1] + if len(cg_uniform.strip()) > 0: + translations.append((cg_uniform, translated)) + uniforms.append(translated) - for index, line in enumerate(source): - if 'void main()' in line: - for attrib in attribs: - if attrib == 'VertexCoord': - source.insert(index, 'COMPAT_ATTRIBUTE vec4 ' + attrib + ';') - else: - source.insert(index, 'COMPAT_ATTRIBUTE vec2 ' + attrib + ';') - for uniform in uniforms: - source.insert(index, 'uniform COMPAT_PRECISION vec2 ' + uniform + ';') - break + for index, line in enumerate(source): + if 'void main()' in line: + for attrib in attribs: + if attrib == 'VertexCoord': + source.insert(index, 'COMPAT_ATTRIBUTE vec4 ' + attrib + ';') + else: + source.insert(index, 'COMPAT_ATTRIBUTE vec2 ' + attrib + ';') + for uniform in uniforms: + source.insert(index, 'uniform COMPAT_PRECISION vec2 ' + uniform + ';') + break - for line in source: - for trans in translations: - line = line.replace(trans[0], trans[1]) - ret.append(line) + for line in source: + for trans in translations: + line = line.replace(trans[0], trans[1]) + ret.append(line) - return ret + return ret def hack_source_vertex(source): - ref_index = 0 - for index, line in enumerate(source): - if 'void main()' in line: - source.insert(index, 'uniform COMPAT_PRECISION vec2 InputSize;') - source.insert(index, 'uniform COMPAT_PRECISION vec2 TextureSize;') - source.insert(index, 'uniform COMPAT_PRECISION vec2 OutputSize;') - source.insert(index, 'uniform int FrameCount;') - source.insert(index, 'uniform int FrameDirection;') - source.insert(index, 'uniform mat4 MVPMatrix;') + ref_index = 0 + for index, line in enumerate(source): + if 'void main()' in line: + source.insert(index, 'uniform COMPAT_PRECISION vec2 InputSize;') + source.insert(index, 'uniform COMPAT_PRECISION vec2 TextureSize;') + source.insert(index, 'uniform COMPAT_PRECISION vec2 OutputSize;') + source.insert(index, 'uniform int FrameCount;') + source.insert(index, 'uniform int FrameDirection;') + source.insert(index, 'uniform mat4 MVPMatrix;') - ref_index = index - break + ref_index = index + break - # Fix samplers in vertex shader (supported by GLSL). - translations = [] - added_samplers = [] - translated_samplers = [] - struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... - for line in source: - if ('TEXUNIT0' in line) and ('semantic' not in line): - main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') - if len(main_sampler[0]) > 0: - translations.append(main_sampler) - log('Vertex: Sampler:', main_sampler[0], '->', main_sampler[1]) - struct_texunit0 = '.' in main_sampler[0] - elif ('//var sampler2D' in line) or ('#var sampler2D' in line): - cg_texture = line.split(' ')[2] - translated = translate_texture(cg_texture) - orig_name = translated - new_name = line.split(':')[2].split(' ')[1] - log('Vertex: Sampler:', new_name, '->', orig_name) - if len(new_name) > 0: - if translated != cg_texture and translated not in translated_samplers: - translated_samplers.append(translated) - added_samplers.append('uniform sampler2D ' + translated + ';') - translations.append((new_name, orig_name)) + # Fix samplers in vertex shader (supported by GLSL). + translations = [] + added_samplers = [] + translated_samplers = [] + struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... + for line in source: + if ('TEXUNIT0' in line) and ('semantic' not in line): + main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') + if len(main_sampler[0]) > 0: + translations.append(main_sampler) + log('Vertex: Sampler:', main_sampler[0], '->', main_sampler[1]) + struct_texunit0 = '.' in main_sampler[0] + elif ('//var sampler2D' in line) or ('#var sampler2D' in line): + cg_texture = line.split(' ')[2] + translated = translate_texture(cg_texture) + orig_name = translated + new_name = line.split(':')[2].split(' ')[1] + log('Vertex: Sampler:', new_name, '->', orig_name) + if len(new_name) > 0: + if translated != cg_texture and translated not in translated_samplers: + translated_samplers.append(translated) + added_samplers.append('uniform sampler2D ' + translated + ';') + translations.append((new_name, orig_name)) - for sampler in added_samplers: - source.insert(ref_index, sampler) - if struct_texunit0: - source.insert(ref_index, 'uniform sampler2D Texture;') - for index, line in enumerate(source): - for translation in translations: - source[index] = source[index].replace(translation[0], translation[1]) + for sampler in added_samplers: + source.insert(ref_index, sampler) + if struct_texunit0: + source.insert(ref_index, 'uniform sampler2D Texture;') + for index, line in enumerate(source): + for translation in translations: + source[index] = source[index].replace(translation[0], translation[1]) - source = destructify_varyings(source, '$vout.') - source = replace_varyings(source) - return source + source = destructify_varyings(source, '$vout.') + source = replace_varyings(source) + return source def replace_global_fragment(source): - source = replace_global_in(source) - replace_table = [ - ('varying', 'COMPAT_VARYING'), - ('texture2D', 'COMPAT_TEXTURE'), - ('FrameCount', 'float(FrameCount)'), - ('FrameDirection', 'float(FrameDirection)'), - ('input', 'input_dummy'), - ('output', 'output_dummy'), # 'output' is reserved in GLSL. - ('gl_FragColor', 'FragColor'), - ] + source = replace_global_in(source) + replace_table = [ + ('varying', 'COMPAT_VARYING'), + ('texture2D', 'COMPAT_TEXTURE'), + ('FrameCount', 'float(FrameCount)'), + ('FrameDirection', 'float(FrameDirection)'), + ('input', 'input_dummy'), + ('output', 'output_dummy'), # 'output' is reserved in GLSL. + ('gl_FragColor', 'FragColor'), + ] - for replacement in replace_table: - source = source.replace(replacement[0], replacement[1]) + for replacement in replace_table: + source = source.replace(replacement[0], replacement[1]) - return source + return source def translate_texture(cg): - log('Translate:', cg) - translations = { - 'ORIG.texture' : 'OrigTexture', - 'PREV.texture' : 'PrevTexture', - 'PREV1.texture' : 'Prev1Texture', - 'PREV2.texture' : 'Prev2Texture', - 'PREV3.texture' : 'Prev3Texture', - 'PREV4.texture' : 'Prev4Texture', - 'PREV5.texture' : 'Prev5Texture', - 'PREV6.texture' : 'Prev6Texture', - 'PASS1.texture' : 'Pass1Texture', - 'PASS2.texture' : 'Pass2Texture', - 'PASS3.texture' : 'Pass3Texture', - 'PASS4.texture' : 'Pass4Texture', - 'PASS5.texture' : 'Pass5Texture', - 'PASS6.texture' : 'Pass6Texture', - 'PASS7.texture' : 'Pass7Texture', - 'PASS8.texture' : 'Pass8Texture', - 'PASSPREV2.texture' : 'PassPrev2Texture', - 'PASSPREV3.texture' : 'PassPrev3Texture', - 'PASSPREV4.texture' : 'PassPrev4Texture', - 'PASSPREV5.texture' : 'PassPrev5Texture', - 'PASSPREV6.texture' : 'PassPrev6Texture', - 'PASSPREV7.texture' : 'PassPrev7Texture', - 'PASSPREV8.texture' : 'PassPrev8Texture', - } + log('Translate:', cg) + translations = { + 'ORIG.texture' : 'OrigTexture', + 'PREV.texture' : 'PrevTexture', + 'PREV1.texture' : 'Prev1Texture', + 'PREV2.texture' : 'Prev2Texture', + 'PREV3.texture' : 'Prev3Texture', + 'PREV4.texture' : 'Prev4Texture', + 'PREV5.texture' : 'Prev5Texture', + 'PREV6.texture' : 'Prev6Texture', + 'PASS1.texture' : 'Pass1Texture', + 'PASS2.texture' : 'Pass2Texture', + 'PASS3.texture' : 'Pass3Texture', + 'PASS4.texture' : 'Pass4Texture', + 'PASS5.texture' : 'Pass5Texture', + 'PASS6.texture' : 'Pass6Texture', + 'PASS7.texture' : 'Pass7Texture', + 'PASS8.texture' : 'Pass8Texture', + 'PASSPREV2.texture' : 'PassPrev2Texture', + 'PASSPREV3.texture' : 'PassPrev3Texture', + 'PASSPREV4.texture' : 'PassPrev4Texture', + 'PASSPREV5.texture' : 'PassPrev5Texture', + 'PASSPREV6.texture' : 'PassPrev6Texture', + 'PASSPREV7.texture' : 'PassPrev7Texture', + 'PASSPREV8.texture' : 'PassPrev8Texture', + } - if cg in translations: - return translations[cg] - else: - return cg + if cg in translations: + return translations[cg] + else: + return cg def hack_source_fragment(source): - ref_index = 0 - for index, line in enumerate(source): - if 'void main()' in line: - source.insert(index, 'uniform COMPAT_PRECISION vec2 InputSize;') - source.insert(index, 'uniform COMPAT_PRECISION vec2 TextureSize;') - source.insert(index, 'uniform COMPAT_PRECISION vec2 OutputSize;') - source.insert(index, 'uniform int FrameCount;') - source.insert(index, 'uniform int FrameDirection;') - ref_index = index - break + ref_index = 0 + for index, line in enumerate(source): + if 'void main()' in line: + source.insert(index, 'uniform COMPAT_PRECISION vec2 InputSize;') + source.insert(index, 'uniform COMPAT_PRECISION vec2 TextureSize;') + source.insert(index, 'uniform COMPAT_PRECISION vec2 OutputSize;') + source.insert(index, 'uniform int FrameCount;') + source.insert(index, 'uniform int FrameDirection;') + ref_index = index + break - translations = [] - added_samplers = [] - translated_samplers = [] - uniforms = [] - struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... - for line in source: - if ('TEXUNIT0' in line) and ('semantic' not in line): - main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') - if len(main_sampler[0]) > 0: - translations.append(main_sampler) - log('Fragment: Sampler:', main_sampler[0], '->', main_sampler[1]) - struct_texunit0 = '.' in main_sampler[0] - elif ('//var sampler2D' in line) or ('#var sampler2D' in line): - cg_texture = line.split(' ')[2] - translated = translate_texture(cg_texture) - orig_name = translated - new_name = line.split(':')[2].split(' ')[1] - log('Fragment: Sampler:', new_name, '->', orig_name) - if len(new_name) > 0: - if translated != cg_texture and translated not in translated_samplers: - translated_samplers.append(translated) - added_samplers.append('uniform sampler2D ' + translated + ';') - translations.append((new_name, orig_name)) - elif ('//var' in line) or ('#var' in line): - orig = line.split(' ')[2] - translated = translate_texture_size(orig) - if translated != orig and translated not in uniforms: - cg_uniform = line.split(':')[2].split(' ')[1] - if len(cg_uniform.strip()) > 0: - translations.append((cg_uniform, translated)) - uniforms.append(translated) + translations = [] + added_samplers = [] + translated_samplers = [] + uniforms = [] + struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... + for line in source: + if ('TEXUNIT0' in line) and ('semantic' not in line): + main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') + if len(main_sampler[0]) > 0: + translations.append(main_sampler) + log('Fragment: Sampler:', main_sampler[0], '->', main_sampler[1]) + struct_texunit0 = '.' in main_sampler[0] + elif ('//var sampler2D' in line) or ('#var sampler2D' in line): + cg_texture = line.split(' ')[2] + translated = translate_texture(cg_texture) + orig_name = translated + new_name = line.split(':')[2].split(' ')[1] + log('Fragment: Sampler:', new_name, '->', orig_name) + if len(new_name) > 0: + if translated != cg_texture and translated not in translated_samplers: + translated_samplers.append(translated) + added_samplers.append('uniform sampler2D ' + translated + ';') + translations.append((new_name, orig_name)) + elif ('//var' in line) or ('#var' in line): + orig = line.split(' ')[2] + translated = translate_texture_size(orig) + if translated != orig and translated not in uniforms: + cg_uniform = line.split(':')[2].split(' ')[1] + if len(cg_uniform.strip()) > 0: + translations.append((cg_uniform, translated)) + uniforms.append(translated) - for sampler in added_samplers: - source.insert(ref_index, sampler) - for uniform in uniforms: - source.insert(ref_index, 'uniform COMPAT_PRECISION vec2 ' + uniform + ';') - if struct_texunit0: - source.insert(ref_index, 'uniform sampler2D Texture;') + for sampler in added_samplers: + source.insert(ref_index, sampler) + for uniform in uniforms: + source.insert(ref_index, 'uniform COMPAT_PRECISION vec2 ' + uniform + ';') + if struct_texunit0: + source.insert(ref_index, 'uniform sampler2D Texture;') - ret = [] - for line in source: - for translation in translations: - log('Translation:', translation[0], '->', translation[1]) - line = line.replace(translation[0], translation[1]) - ret.append(line) + ret = [] + for line in source: + for translation in translations: + log('Translation:', translation[0], '->', translation[1]) + line = line.replace(translation[0], translation[1]) + ret.append(line) - ret = destructify_varyings(ret, '$vin.') - return ret + ret = destructify_varyings(ret, '$vin.') + return ret def validate_shader(source, target): - log('Shader:') - log('===') - log(source) - log('===') + log('Shader:') + log('===') + log(source) + log('===') - command = ['cgc', '-noentry', '-ogles'] - p = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE) - stdout_ret, stderr_ret = p.communicate(source.encode()) + command = ['cgc', '-noentry', '-ogles'] + p = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE) + stdout_ret, stderr_ret = p.communicate(source.encode()) - log('CGC:', stderr_ret.decode()) + log('CGC:', stderr_ret.decode()) - return p.returncode == 0 + return p.returncode == 0 def preprocess_vertex(source_data): - input_data = source_data.split('\n') - ret = [] - for line in input_data: - if ('uniform' in line) and (('float4x4' in line) or ('half4x4' in line)): - ret.append('#pragma pack_matrix(column_major)\n') - ret.append(line) - ret.append('#pragma pack_matrix(row_major)\n') - else: - ret.append(line) - return '\n'.join(ret) + input_data = source_data.split('\n') + ret = [] + for line in input_data: + if ('uniform' in line) and (('float4x4' in line) or ('half4x4' in line)): + ret.append('#pragma pack_matrix(column_major)\n') + ret.append(line) + ret.append('#pragma pack_matrix(row_major)\n') + else: + ret.append(line) + return '\n'.join(ret) def convert(source, dest): - # Have to preprocess first to resolve #includes so we can hack potential vertex shaders. - inc_dir = os.path.split(source)[0] - vert_cmd_preprocess = ['cgc', '-E', '-I', '.' if inc_dir == '' else inc_dir, source] - p = subprocess.Popen(vert_cmd_preprocess, stderr = subprocess.PIPE, stdout = subprocess.PIPE) - source_data, stderr_ret = p.communicate() - log(stderr_ret.decode()) + # Have to preprocess first to resolve #includes so we can hack potential vertex shaders. + inc_dir = os.path.split(source)[0] + vert_cmd_preprocess = ['cgc', '-E', '-I', '.' if inc_dir == '' else inc_dir, source] + p = subprocess.Popen(vert_cmd_preprocess, stderr = subprocess.PIPE, stdout = subprocess.PIPE) + source_data, stderr_ret = p.communicate() + log(stderr_ret.decode()) - if p.returncode != 0: - log('Vertex preprocessing failed ...') + if p.returncode != 0: + log('Vertex preprocessing failed ...') - source_data = preprocess_vertex(source_data.decode()) + source_data = preprocess_vertex(source_data.decode()) - vert_cmd = ['cgc', '-profile', 'glesv', '-entry', 'main_vertex', '-quiet'] - p = subprocess.Popen(vert_cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE, stdout = subprocess.PIPE) - vertex_source, stderr_ret = p.communicate(input = source_data.encode()) - log(stderr_ret.decode()) - vertex_source = vertex_source.decode() + vert_cmd = ['cgc', '-profile', 'glesv', '-entry', 'main_vertex', '-quiet'] + p = subprocess.Popen(vert_cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE, stdout = subprocess.PIPE) + vertex_source, stderr_ret = p.communicate(input = source_data.encode()) + log(stderr_ret.decode()) + vertex_source = vertex_source.decode() - if p.returncode != 0: - log('Vertex compilation failed ...') - return 1 + if p.returncode != 0: + log('Vertex compilation failed ...') + return 1 - frag_cmd = ['cgc', '-profile', 'glesf', '-entry', 'main_fragment', '-quiet'] - p = subprocess.Popen(frag_cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE, stdout = subprocess.PIPE) - fragment_source, stderr_ret = p.communicate(input = source_data.encode()) - log(stderr_ret.decode()) - fragment_source = fragment_source.decode() + frag_cmd = ['cgc', '-profile', 'glesf', '-entry', 'main_fragment', '-quiet'] + p = subprocess.Popen(frag_cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE, stdout = subprocess.PIPE) + fragment_source, stderr_ret = p.communicate(input = source_data.encode()) + log(stderr_ret.decode()) + fragment_source = fragment_source.decode() - if p.returncode != 0: - log('Vertex compilation failed ...') - return 1 + if p.returncode != 0: + log('Vertex compilation failed ...') + return 1 - vertex_source = replace_global_vertex(vertex_source) - fragment_source = replace_global_fragment(fragment_source) + vertex_source = replace_global_vertex(vertex_source) + fragment_source = replace_global_fragment(fragment_source) - vertex_source = vertex_source.split('\n') - fragment_source = fragment_source.split('\n') + vertex_source = vertex_source.split('\n') + fragment_source = fragment_source.split('\n') - # Cg think we're using row-major matrices, but we're using column major. - # Also, Cg tends to compile matrix multiplications as dot products in GLSL. - # Hack in a fix for this. - log('Hacking vertex') - vertex_source = hack_source_vertex(vertex_source) - log('Hacking fragment') - fragment_source = hack_source_fragment(fragment_source) + # Cg think we're using row-major matrices, but we're using column major. + # Also, Cg tends to compile matrix multiplications as dot products in GLSL. + # Hack in a fix for this. + log('Hacking vertex') + vertex_source = hack_source_vertex(vertex_source) + log('Hacking fragment') + fragment_source = hack_source_fragment(fragment_source) - # We compile to GLES, but we really just want modern GL ... - vertex_source = keep_line_if(lambda line: 'precision' not in line, vertex_source) - fragment_source = keep_line_if(lambda line: 'precision' not in line, fragment_source) + # We compile to GLES, but we really just want modern GL ... + vertex_source = keep_line_if(lambda line: 'precision' not in line, vertex_source) + fragment_source = keep_line_if(lambda line: 'precision' not in line, fragment_source) - # Kill all comments. Cg adds lots of useless comments. - # Remove first line. It contains the name of the cg program. - vertex_source = remove_comments(vertex_source[1:]) - fragment_source = remove_comments(fragment_source[1:]) + # Kill all comments. Cg adds lots of useless comments. + # Remove first line. It contains the name of the cg program. + vertex_source = remove_comments(vertex_source[1:]) + fragment_source = remove_comments(fragment_source[1:]) - vert_hacks = [] - vert_hacks.append(''' + vert_hacks = [] + vert_hacks.append(''' #if __VERSION__ >= 130 #define COMPAT_VARYING out #define COMPAT_ATTRIBUTE in #define COMPAT_TEXTURE texture #else -#define COMPAT_VARYING varying -#define COMPAT_ATTRIBUTE attribute +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute #define COMPAT_TEXTURE texture2D #endif @@ -623,10 +623,10 @@ def convert(source, dest): #define COMPAT_PRECISION #endif''') - out_vertex = '\n'.join(vert_hacks + vertex_source) + out_vertex = '\n'.join(vert_hacks + vertex_source) - frag_hacks = [] - frag_hacks.append(''' + frag_hacks = [] + frag_hacks.append(''' #if __VERSION__ >= 130 #define COMPAT_VARYING in #define COMPAT_TEXTURE texture @@ -648,122 +648,122 @@ precision mediump float; #define COMPAT_PRECISION #endif''') - out_fragment = '\n'.join(frag_hacks + fragment_source) + out_fragment = '\n'.join(frag_hacks + fragment_source) - if not validate_shader(out_vertex, 'glesv'): - log('Vertex shader does not compile ...') - return 1 + if not validate_shader(out_vertex, 'glesv'): + log('Vertex shader does not compile ...') + return 1 - if not validate_shader(out_fragment, 'glesf'): - log('Fragment shader does not compile ...') - return 1 + if not validate_shader(out_fragment, 'glesf'): + log('Fragment shader does not compile ...') + return 1 - with open(dest, 'w') as f: - f.write('// GLSL shader autogenerated by cg2glsl.py.\n') - f.write('#if defined(VERTEX)\n') - f.write(out_vertex) - f.write('\n') - f.write('#elif defined(FRAGMENT)\n') - f.write(out_fragment) - f.write('\n') - f.write('#endif\n') - return 0 + with open(dest, 'w') as f: + f.write('// GLSL shader autogenerated by cg2glsl.py.\n') + f.write('#if defined(VERTEX)\n') + f.write(out_vertex) + f.write('\n') + f.write('#elif defined(FRAGMENT)\n') + f.write(out_fragment) + f.write('\n') + f.write('#endif\n') + return 0 def convert_cgp(source, dest): - string = '' - with open(source, 'r') as f: - string = f.read().replace('.cg', '.glsl') + string = '' + with open(source, 'r') as f: + string = f.read().replace('.cg', '.glsl') - open(dest, 'w').write(string) + open(dest, 'w').write(string) def path_ext(path): - _, ext = os.path.splitext(path) - return ext + _, ext = os.path.splitext(path) + return ext def convert_path(source, source_dir, dest_dir, conv): - index = 0 if source_dir[-1] == '/' else 1 - return os.path.join(dest_dir, source.replace(source_dir, '')[index:]).replace(conv[0], conv[1]) + index = 0 if source_dir[-1] == '/' else 1 + return os.path.join(dest_dir, source.replace(source_dir, '')[index:]).replace(conv[0], conv[1]) def main(): - if len(sys.argv) != 3: - print('Usage: {} prog.cg(p) prog.glsl(p)'.format(sys.argv[0])) - print('Batch mode usage: {} cg-dir out-xml-shader-dir'.format(sys.argv[0])) - print('Requires Python 3 and cgc (nvidia-cg-toolkit) 3.1.') - return 1 + if len(sys.argv) != 3: + print('Usage: {} prog.cg(p) prog.glsl(p)'.format(sys.argv[0])) + print('Batch mode usage: {} cg-dir out-xml-shader-dir'.format(sys.argv[0])) + print('Requires Python 3 and cgc (nvidia-cg-toolkit) 3.1.') + return 1 - if os.path.isdir(sys.argv[1]): - global batch_mode - batch_mode = True - try: - os.makedirs(sys.argv[2]) - except OSError as e: - if e.errno != errno.EEXIST: - raise + if os.path.isdir(sys.argv[1]): + global batch_mode + batch_mode = True + try: + os.makedirs(sys.argv[2]) + except OSError as e: + if e.errno != errno.EEXIST: + raise - failed_cnt = 0 - success_cnt = 0 - failed_files = [] - for dirname, _, filenames in os.walk(sys.argv[1]): - for source in filter(lambda path: path_ext(path) == '.cg', [os.path.join(dirname, filename) for filename in filenames]): - dest = convert_path(source, sys.argv[1], sys.argv[2], ('.cg', '.glsl')) - dirpath = os.path.split(dest)[0] - print('Dirpath:', dirpath) - if not os.path.isdir(dirpath): - try: - os.makedirs(dirpath) - except OSError as e: - if e.errno != errno.EEXIST: - raise + failed_cnt = 0 + success_cnt = 0 + failed_files = [] + for dirname, _, filenames in os.walk(sys.argv[1]): + for source in filter(lambda path: path_ext(path) == '.cg', [os.path.join(dirname, filename) for filename in filenames]): + dest = convert_path(source, sys.argv[1], sys.argv[2], ('.cg', '.glsl')) + dirpath = os.path.split(dest)[0] + print('Dirpath:', dirpath) + if not os.path.isdir(dirpath): + try: + os.makedirs(dirpath) + except OSError as e: + if e.errno != errno.EEXIST: + raise - try: - ret = convert(source, dest) - print(source, '->', dest, '...', 'succeeded!' if ret == 0 else 'failed!') + try: + ret = convert(source, dest) + print(source, '->', dest, '...', 'succeeded!' if ret == 0 else 'failed!') - if ret == 0: - success_cnt += 1 - else: - failed_cnt += 1 - failed_files.append(source) - except Exception as e: - print(e) - failed_files.append(source) - failed_cnt += 1 + if ret == 0: + success_cnt += 1 + else: + failed_cnt += 1 + failed_files.append(source) + except Exception as e: + print(e) + failed_files.append(source) + failed_cnt += 1 - for source in filter(lambda path: path_ext(path) == '.cgp', [os.path.join(dirname, filename) for filename in filenames]): - dest = convert_path(source, sys.argv[1], sys.argv[2], ('.cgp', '.glslp')) - dirpath = os.path.split(dest)[0] - print('Dirpath:', dirpath) - if not os.path.isdir(dirpath): - try: - os.makedirs(dirpath) - except OSError as e: - if e.errno != errno.EEXIST: - raise + for source in filter(lambda path: path_ext(path) == '.cgp', [os.path.join(dirname, filename) for filename in filenames]): + dest = convert_path(source, sys.argv[1], sys.argv[2], ('.cgp', '.glslp')) + dirpath = os.path.split(dest)[0] + print('Dirpath:', dirpath) + if not os.path.isdir(dirpath): + try: + os.makedirs(dirpath) + except OSError as e: + if e.errno != errno.EEXIST: + raise - try: - convert_cgp(source, dest) - success_cnt += 1 - except Exception as e: - print(e) - failed_files.append(source) - failed_cnt += 1 + try: + convert_cgp(source, dest) + success_cnt += 1 + except Exception as e: + print(e) + failed_files.append(source) + failed_cnt += 1 - print(success_cnt, 'shaders converted successfully.') - print(failed_cnt, 'shaders failed.') - if failed_cnt > 0: - print('Failed shaders:') - for path in failed_files: - print(path) + print(success_cnt, 'shaders converted successfully.') + print(failed_cnt, 'shaders failed.') + if failed_cnt > 0: + print('Failed shaders:') + for path in failed_files: + print(path) - else: - source = sys.argv[1] - dest = sys.argv[2] + else: + source = sys.argv[1] + dest = sys.argv[2] - if path_ext(source) == '.cgp': - sys.exit(convert_cgp(source, dest)) - else: - sys.exit(convert(source, dest)) + if path_ext(source) == '.cgp': + sys.exit(convert_cgp(source, dest)) + else: + sys.exit(convert(source, dest)) if __name__ == '__main__': - sys.exit(main()) + sys.exit(main()) From 1541db37e96f209462b977ffbbfdce4eb5397881 Mon Sep 17 00:00:00 2001 From: Felix Laurie von Massenbach Date: Sat, 8 Aug 2015 20:45:39 +0100 Subject: [PATCH 166/822] Make cg2glsl.py comply with PEP8. --- tools/cg2glsl.py | 265 +++++++++++++++++++++++++---------------------- 1 file changed, 142 insertions(+), 123 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index c9d641fed8..725e2734cb 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -6,21 +6,24 @@ Author: Hans-Kristian Arntzen (Themaister) License: Public domain """ -import sys -if sys.version_info<(3,0,0): - sys.stderr.write("You need python 3.0 or later to run this script\n") - exit(1) - import os import errno import subprocess +import sys + +if sys.version_info < (3, 0, 0): + sys.stderr.write("You need python 3.0 or later to run this script\n") + exit(1) + batch_mode = False + def log(*arg): if not batch_mode: print(*arg) + def remove_comments(source_lines): ret = [] killed_comments = [line.split('//')[0] for line in source_lines] @@ -28,12 +31,14 @@ def remove_comments(source_lines): ret.append(i) return ret + def keep_line_if(func, lines): ret = [] for i in filter(func, lines): ret.append(i) return ret + def replace_global_in(source): split_source = source.split('\n') replace_table = [ @@ -80,8 +85,8 @@ def replace_global_vertex(source): ('FrameCount', 'float(FrameCount)'), ('FrameDirection', 'float(FrameDirection)'), - ('input', 'input_dummy'), # 'input' is reserved in GLSL. - ('output', 'output_dummy'), # 'output' is reserved in GLSL. + ('input', 'input_dummy'), # 'input' is reserved in GLSL. + ('output', 'output_dummy'), # 'output' is reserved in GLSL. ] for replacement in replace_table: @@ -89,6 +94,7 @@ def replace_global_vertex(source): return source + def translate_varyings(varyings, source, direction): dictionary = {} for varying in varyings: @@ -100,6 +106,7 @@ def translate_varyings(varyings, source, direction): return dictionary + def no_uniform(elem): banned = [ '_video_size', @@ -118,6 +125,7 @@ def no_uniform(elem): return False return True + def destructify_varyings(source, direction): # We have to change varying structs that Cg support to single varyings for GL. # Varying structs aren't supported until later versions @@ -150,9 +158,9 @@ def destructify_varyings(source, direction): while (j < len(source)) and ('};' not in source[j]): j += 1 - lines = ['COMPAT_VARYING ' + string for string in source[i + 1 : j]] + lines = ['COMPAT_VARYING ' + string for string in source[(i + 1):j]] varyings.extend(lines) - names = [string.strip().split(' ')[1].split(';')[0].strip() for string in source[i + 1 : j]] + names = [string.strip().split(' ')[1].split(';')[0].strip() for string in source[(i + 1):j]] varyings_name.extend(names) log('Found elements in struct', struct + ':', names) last_struct_decl_line = j @@ -224,36 +232,37 @@ def destructify_varyings(source, direction): return source + def translate_varying(cg): # Ye, it's ugly as shit. :( - #log('Translate:', cg) + # log('Translate:', cg) translations = { - 'IN.tex_coord' : 'TexCoord', - 'IN.vertex_coord' : 'VertexCoord', - 'IN.lut_tex_coord' : 'LUTTexCoord', - 'ORIG.tex_coord' : 'OrigTexCoord', - 'PREV.tex_coord' : 'PrevTexCoord', - 'PREV1.tex_coord' : 'Prev1TexCoord', - 'PREV2.tex_coord' : 'Prev2TexCoord', - 'PREV3.tex_coord' : 'Prev3TexCoord', - 'PREV4.tex_coord' : 'Prev4TexCoord', - 'PREV5.tex_coord' : 'Prev5TexCoord', - 'PREV6.tex_coord' : 'Prev6TexCoord', - 'PASS1.tex_coord' : 'Pass1TexCoord', - 'PASS2.tex_coord' : 'Pass2TexCoord', - 'PASS3.tex_coord' : 'Pass3TexCoord', - 'PASS4.tex_coord' : 'Pass4TexCoord', - 'PASS5.tex_coord' : 'Pass5TexCoord', - 'PASS6.tex_coord' : 'Pass6TexCoord', - 'PASS7.tex_coord' : 'Pass7TexCoord', - 'PASS8.tex_coord' : 'Pass8TexCoord', - 'PASSPREV2.tex_coord' : 'PassPrev2TexCoord', - 'PASSPREV3.tex_coord' : 'PassPrev3TexCoord', - 'PASSPREV4.tex_coord' : 'PassPrev4TexCoord', - 'PASSPREV5.tex_coord' : 'PassPrev5TexCoord', - 'PASSPREV6.tex_coord' : 'PassPrev6TexCoord', - 'PASSPREV7.tex_coord' : 'PassPrev7TexCoord', - 'PASSPREV8.tex_coord' : 'PassPrev8TexCoord', + 'IN.tex_coord': 'TexCoord', + 'IN.vertex_coord': 'VertexCoord', + 'IN.lut_tex_coord': 'LUTTexCoord', + 'ORIG.tex_coord': 'OrigTexCoord', + 'PREV.tex_coord': 'PrevTexCoord', + 'PREV1.tex_coord': 'Prev1TexCoord', + 'PREV2.tex_coord': 'Prev2TexCoord', + 'PREV3.tex_coord': 'Prev3TexCoord', + 'PREV4.tex_coord': 'Prev4TexCoord', + 'PREV5.tex_coord': 'Prev5TexCoord', + 'PREV6.tex_coord': 'Prev6TexCoord', + 'PASS1.tex_coord': 'Pass1TexCoord', + 'PASS2.tex_coord': 'Pass2TexCoord', + 'PASS3.tex_coord': 'Pass3TexCoord', + 'PASS4.tex_coord': 'Pass4TexCoord', + 'PASS5.tex_coord': 'Pass5TexCoord', + 'PASS6.tex_coord': 'Pass6TexCoord', + 'PASS7.tex_coord': 'Pass7TexCoord', + 'PASS8.tex_coord': 'Pass8TexCoord', + 'PASSPREV2.tex_coord': 'PassPrev2TexCoord', + 'PASSPREV3.tex_coord': 'PassPrev3TexCoord', + 'PASSPREV4.tex_coord': 'PassPrev4TexCoord', + 'PASSPREV5.tex_coord': 'PassPrev5TexCoord', + 'PASSPREV6.tex_coord': 'PassPrev6TexCoord', + 'PASSPREV7.tex_coord': 'PassPrev7TexCoord', + 'PASSPREV8.tex_coord': 'PassPrev8TexCoord', } if cg in translations: @@ -261,56 +270,57 @@ def translate_varying(cg): else: return cg + def translate_texture_size(cg): # Ye, it's ugly as shit. :( - #log('Translate:', cg) + # log('Translate:', cg) translations = { - 'ORIG.texture_size' : 'OrigTextureSize', - 'PREV.texture_size' : 'PrevTextureSize', - 'PREV1.texture_size' : 'Prev1TextureSize', - 'PREV2.texture_size' : 'Prev2TextureSize', - 'PREV3.texture_size' : 'Prev3TextureSize', - 'PREV4.texture_size' : 'Prev4TextureSize', - 'PREV5.texture_size' : 'Prev5TextureSize', - 'PREV6.texture_size' : 'Prev6TextureSize', - 'PASS1.texture_size' : 'Pass1TextureSize', - 'PASS2.texture_size' : 'Pass2TextureSize', - 'PASS3.texture_size' : 'Pass3TextureSize', - 'PASS4.texture_size' : 'Pass4TextureSize', - 'PASS5.texture_size' : 'Pass5TextureSize', - 'PASS6.texture_size' : 'Pass6TextureSize', - 'PASS7.texture_size' : 'Pass7TextureSize', - 'PASS8.texture_size' : 'Pass8TextureSize', - 'PASSPREV2.texture_size' : 'PassPrev2TextureSize', - 'PASSPREV3.texture_size' : 'PassPrev3TextureSize', - 'PASSPREV4.texture_size' : 'PassPrev4TextureSize', - 'PASSPREV5.texture_size' : 'PassPrev5TextureSize', - 'PASSPREV6.texture_size' : 'PassPrev6TextureSize', - 'PASSPREV7.texture_size' : 'PassPrev7TextureSize', - 'PASSPREV8.texture_size' : 'PassPrev8TextureSize', - 'ORIG.video_size' : 'OrigInputSize', - 'PREV.video_size' : 'PrevInputSize', - 'PREV1.video_size' : 'Prev1InputSize', - 'PREV2.video_size' : 'Prev2InputSize', - 'PREV3.video_size' : 'Prev3InputSize', - 'PREV4.video_size' : 'Prev4InputSize', - 'PREV5.video_size' : 'Prev5InputSize', - 'PREV6.video_size' : 'Prev6InputSize', - 'PASS1.video_size' : 'Pass1InputSize', - 'PASS2.video_size' : 'Pass2InputSize', - 'PASS3.video_size' : 'Pass3InputSize', - 'PASS4.video_size' : 'Pass4InputSize', - 'PASS5.video_size' : 'Pass5InputSize', - 'PASS6.video_size' : 'Pass6InputSize', - 'PASS7.video_size' : 'Pass7InputSize', - 'PASS8.video_size' : 'Pass8InputSize', - 'PASSPREV2.video_size' : 'PassPrev2InputSize', - 'PASSPREV3.video_size' : 'PassPrev3InputSize', - 'PASSPREV4.video_size' : 'PassPrev4InputSize', - 'PASSPREV5.video_size' : 'PassPrev5InputSize', - 'PASSPREV6.video_size' : 'PassPrev6InputSize', - 'PASSPREV7.video_size' : 'PassPrev7InputSize', - 'PASSPREV8.video_size' : 'PassPrev8InputSize', + 'ORIG.texture_size': 'OrigTextureSize', + 'PREV.texture_size': 'PrevTextureSize', + 'PREV1.texture_size': 'Prev1TextureSize', + 'PREV2.texture_size': 'Prev2TextureSize', + 'PREV3.texture_size': 'Prev3TextureSize', + 'PREV4.texture_size': 'Prev4TextureSize', + 'PREV5.texture_size': 'Prev5TextureSize', + 'PREV6.texture_size': 'Prev6TextureSize', + 'PASS1.texture_size': 'Pass1TextureSize', + 'PASS2.texture_size': 'Pass2TextureSize', + 'PASS3.texture_size': 'Pass3TextureSize', + 'PASS4.texture_size': 'Pass4TextureSize', + 'PASS5.texture_size': 'Pass5TextureSize', + 'PASS6.texture_size': 'Pass6TextureSize', + 'PASS7.texture_size': 'Pass7TextureSize', + 'PASS8.texture_size': 'Pass8TextureSize', + 'PASSPREV2.texture_size': 'PassPrev2TextureSize', + 'PASSPREV3.texture_size': 'PassPrev3TextureSize', + 'PASSPREV4.texture_size': 'PassPrev4TextureSize', + 'PASSPREV5.texture_size': 'PassPrev5TextureSize', + 'PASSPREV6.texture_size': 'PassPrev6TextureSize', + 'PASSPREV7.texture_size': 'PassPrev7TextureSize', + 'PASSPREV8.texture_size': 'PassPrev8TextureSize', + 'ORIG.video_size': 'OrigInputSize', + 'PREV.video_size': 'PrevInputSize', + 'PREV1.video_size': 'Prev1InputSize', + 'PREV2.video_size': 'Prev2InputSize', + 'PREV3.video_size': 'Prev3InputSize', + 'PREV4.video_size': 'Prev4InputSize', + 'PREV5.video_size': 'Prev5InputSize', + 'PREV6.video_size': 'Prev6InputSize', + 'PASS1.video_size': 'Pass1InputSize', + 'PASS2.video_size': 'Pass2InputSize', + 'PASS3.video_size': 'Pass3InputSize', + 'PASS4.video_size': 'Pass4InputSize', + 'PASS5.video_size': 'Pass5InputSize', + 'PASS6.video_size': 'Pass6InputSize', + 'PASS7.video_size': 'Pass7InputSize', + 'PASS8.video_size': 'Pass8InputSize', + 'PASSPREV2.video_size': 'PassPrev2InputSize', + 'PASSPREV3.video_size': 'PassPrev3InputSize', + 'PASSPREV4.video_size': 'PassPrev4InputSize', + 'PASSPREV5.video_size': 'PassPrev5InputSize', + 'PASSPREV6.video_size': 'PassPrev6InputSize', + 'PASSPREV7.video_size': 'PassPrev7InputSize', + 'PASSPREV8.video_size': 'PassPrev8InputSize', } if cg in translations: @@ -319,7 +329,6 @@ def translate_texture_size(cg): return cg - def replace_varyings(source): ret = [] translations = [] @@ -361,6 +370,7 @@ def replace_varyings(source): return ret + def hack_source_vertex(source): ref_index = 0 for index, line in enumerate(source): @@ -379,7 +389,7 @@ def hack_source_vertex(source): translations = [] added_samplers = [] translated_samplers = [] - struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... + struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... for line in source: if ('TEXUNIT0' in line) and ('semantic' not in line): main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') @@ -411,6 +421,7 @@ def hack_source_vertex(source): source = replace_varyings(source) return source + def replace_global_fragment(source): source = replace_global_in(source) replace_table = [ @@ -419,7 +430,7 @@ def replace_global_fragment(source): ('FrameCount', 'float(FrameCount)'), ('FrameDirection', 'float(FrameDirection)'), ('input', 'input_dummy'), - ('output', 'output_dummy'), # 'output' is reserved in GLSL. + ('output', 'output_dummy'), # 'output' is reserved in GLSL. ('gl_FragColor', 'FragColor'), ] @@ -432,29 +443,29 @@ def replace_global_fragment(source): def translate_texture(cg): log('Translate:', cg) translations = { - 'ORIG.texture' : 'OrigTexture', - 'PREV.texture' : 'PrevTexture', - 'PREV1.texture' : 'Prev1Texture', - 'PREV2.texture' : 'Prev2Texture', - 'PREV3.texture' : 'Prev3Texture', - 'PREV4.texture' : 'Prev4Texture', - 'PREV5.texture' : 'Prev5Texture', - 'PREV6.texture' : 'Prev6Texture', - 'PASS1.texture' : 'Pass1Texture', - 'PASS2.texture' : 'Pass2Texture', - 'PASS3.texture' : 'Pass3Texture', - 'PASS4.texture' : 'Pass4Texture', - 'PASS5.texture' : 'Pass5Texture', - 'PASS6.texture' : 'Pass6Texture', - 'PASS7.texture' : 'Pass7Texture', - 'PASS8.texture' : 'Pass8Texture', - 'PASSPREV2.texture' : 'PassPrev2Texture', - 'PASSPREV3.texture' : 'PassPrev3Texture', - 'PASSPREV4.texture' : 'PassPrev4Texture', - 'PASSPREV5.texture' : 'PassPrev5Texture', - 'PASSPREV6.texture' : 'PassPrev6Texture', - 'PASSPREV7.texture' : 'PassPrev7Texture', - 'PASSPREV8.texture' : 'PassPrev8Texture', + 'ORIG.texture': 'OrigTexture', + 'PREV.texture': 'PrevTexture', + 'PREV1.texture': 'Prev1Texture', + 'PREV2.texture': 'Prev2Texture', + 'PREV3.texture': 'Prev3Texture', + 'PREV4.texture': 'Prev4Texture', + 'PREV5.texture': 'Prev5Texture', + 'PREV6.texture': 'Prev6Texture', + 'PASS1.texture': 'Pass1Texture', + 'PASS2.texture': 'Pass2Texture', + 'PASS3.texture': 'Pass3Texture', + 'PASS4.texture': 'Pass4Texture', + 'PASS5.texture': 'Pass5Texture', + 'PASS6.texture': 'Pass6Texture', + 'PASS7.texture': 'Pass7Texture', + 'PASS8.texture': 'Pass8Texture', + 'PASSPREV2.texture': 'PassPrev2Texture', + 'PASSPREV3.texture': 'PassPrev3Texture', + 'PASSPREV4.texture': 'PassPrev4Texture', + 'PASSPREV5.texture': 'PassPrev5Texture', + 'PASSPREV6.texture': 'PassPrev6Texture', + 'PASSPREV7.texture': 'PassPrev7Texture', + 'PASSPREV8.texture': 'PassPrev8Texture', } if cg in translations: @@ -462,6 +473,7 @@ def translate_texture(cg): else: return cg + def hack_source_fragment(source): ref_index = 0 for index, line in enumerate(source): @@ -478,7 +490,7 @@ def hack_source_fragment(source): added_samplers = [] translated_samplers = [] uniforms = [] - struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... + struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... for line in source: if ('TEXUNIT0' in line) and ('semantic' not in line): main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') @@ -523,6 +535,7 @@ def hack_source_fragment(source): ret = destructify_varyings(ret, '$vin.') return ret + def validate_shader(source, target): log('Shader:') log('===') @@ -530,13 +543,14 @@ def validate_shader(source, target): log('===') command = ['cgc', '-noentry', '-ogles'] - p = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE) + p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout_ret, stderr_ret = p.communicate(source.encode()) log('CGC:', stderr_ret.decode()) return p.returncode == 0 + def preprocess_vertex(source_data): input_data = source_data.split('\n') ret = [] @@ -549,11 +563,12 @@ def preprocess_vertex(source_data): ret.append(line) return '\n'.join(ret) + def convert(source, dest): # Have to preprocess first to resolve #includes so we can hack potential vertex shaders. inc_dir = os.path.split(source)[0] vert_cmd_preprocess = ['cgc', '-E', '-I', '.' if inc_dir == '' else inc_dir, source] - p = subprocess.Popen(vert_cmd_preprocess, stderr = subprocess.PIPE, stdout = subprocess.PIPE) + p = subprocess.Popen(vert_cmd_preprocess, stderr=subprocess.PIPE, stdout=subprocess.PIPE) source_data, stderr_ret = p.communicate() log(stderr_ret.decode()) @@ -563,8 +578,8 @@ def convert(source, dest): source_data = preprocess_vertex(source_data.decode()) vert_cmd = ['cgc', '-profile', 'glesv', '-entry', 'main_vertex', '-quiet'] - p = subprocess.Popen(vert_cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE, stdout = subprocess.PIPE) - vertex_source, stderr_ret = p.communicate(input = source_data.encode()) + p = subprocess.Popen(vert_cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) + vertex_source, stderr_ret = p.communicate(input=source_data.encode()) log(stderr_ret.decode()) vertex_source = vertex_source.decode() @@ -573,8 +588,8 @@ def convert(source, dest): return 1 frag_cmd = ['cgc', '-profile', 'glesf', '-entry', 'main_fragment', '-quiet'] - p = subprocess.Popen(frag_cmd, stdin = subprocess.PIPE, stderr = subprocess.PIPE, stdout = subprocess.PIPE) - fragment_source, stderr_ret = p.communicate(input = source_data.encode()) + p = subprocess.Popen(frag_cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) + fragment_source, stderr_ret = p.communicate(input=source_data.encode()) log(stderr_ret.decode()) fragment_source = fragment_source.decode() @@ -582,27 +597,27 @@ def convert(source, dest): log('Vertex compilation failed ...') return 1 - vertex_source = replace_global_vertex(vertex_source) + vertex_source = replace_global_vertex(vertex_source) fragment_source = replace_global_fragment(fragment_source) - vertex_source = vertex_source.split('\n') + vertex_source = vertex_source.split('\n') fragment_source = fragment_source.split('\n') # Cg think we're using row-major matrices, but we're using column major. # Also, Cg tends to compile matrix multiplications as dot products in GLSL. # Hack in a fix for this. log('Hacking vertex') - vertex_source = hack_source_vertex(vertex_source) + vertex_source = hack_source_vertex(vertex_source) log('Hacking fragment') fragment_source = hack_source_fragment(fragment_source) # We compile to GLES, but we really just want modern GL ... - vertex_source = keep_line_if(lambda line: 'precision' not in line, vertex_source) + vertex_source = keep_line_if(lambda line: 'precision' not in line, vertex_source) fragment_source = keep_line_if(lambda line: 'precision' not in line, fragment_source) # Kill all comments. Cg adds lots of useless comments. # Remove first line. It contains the name of the cg program. - vertex_source = remove_comments(vertex_source[1:]) + vertex_source = remove_comments(vertex_source[1:]) fragment_source = remove_comments(fragment_source[1:]) vert_hacks = [] @@ -669,6 +684,7 @@ precision mediump float; f.write('#endif\n') return 0 + def convert_cgp(source, dest): string = '' with open(source, 'r') as f: @@ -676,14 +692,17 @@ def convert_cgp(source, dest): open(dest, 'w').write(string) + def path_ext(path): _, ext = os.path.splitext(path) return ext + def convert_path(source, source_dir, dest_dir, conv): index = 0 if source_dir[-1] == '/' else 1 return os.path.join(dest_dir, source.replace(source_dir, '')[index:]).replace(conv[0], conv[1]) + def main(): if len(sys.argv) != 3: print('Usage: {} prog.cg(p) prog.glsl(p)'.format(sys.argv[0])) @@ -757,13 +776,13 @@ def main(): else: source = sys.argv[1] - dest = sys.argv[2] + dest = sys.argv[2] if path_ext(source) == '.cgp': sys.exit(convert_cgp(source, dest)) else: sys.exit(convert(source, dest)) + if __name__ == '__main__': sys.exit(main()) - From da4cc54b8c67cb24ed66b73d99e6d5c51a3e2fa2 Mon Sep 17 00:00:00 2001 From: Felix Laurie von Massenbach Date: Sat, 8 Aug 2015 20:48:48 +0100 Subject: [PATCH 167/822] Add a python2 compatability warning to cg2glsl.py. --- tools/cg2glsl.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 725e2734cb..403513e8c0 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -21,6 +21,7 @@ batch_mode = False def log(*arg): if not batch_mode: + # FIXME: This causes a syntax error in python2, preventing the version warning from displaying. print(*arg) From f272431b5d7b79f391567f2b04201874d9891a8b Mon Sep 17 00:00:00 2001 From: Felix Laurie von Massenbach Date: Sat, 8 Aug 2015 20:53:17 +0100 Subject: [PATCH 168/822] Refactor cg2glsl.py. --- tools/cg2glsl.py | 245 ++++++++++++++++++++--------------------------- 1 file changed, 104 insertions(+), 141 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 403513e8c0..0447d0140d 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -25,21 +25,18 @@ def log(*arg): print(*arg) -def remove_comments(source_lines): - ret = [] - killed_comments = [line.split('//')[0] for line in source_lines] - for i in filter(lambda line: len(line) > 0, killed_comments): - ret.append(i) - return ret - - def keep_line_if(func, lines): ret = [] - for i in filter(func, lines): - ret.append(i) + for line in filter(func, lines): + ret.append(line) return ret +def remove_comments(source_lines): + lines_without_comments = [line.split('//')[0] for line in source_lines] + return keep_line_if(lambda line: line, lines_without_comments) + + def replace_global_in(source): split_source = source.split('\n') replace_table = [ @@ -53,45 +50,44 @@ def replace_global_in(source): for line in split_source: if ('//var' in line) or ('#var' in line): for index, replace in enumerate(replace_table): - orig = line.split(' ')[2] + orig = line.split()[2] if replace[0] == orig: replace_table[index] = (line.split(':')[2].split(' ')[1], replace_table[index][1]) log('Replace globals:', replace_table) - for replace in replace_table: - if replace[0]: - source = source.replace(replace[0], replace[1]) + for orig, new in replace_table: + if orig: + source = source.replace(orig, new) return source def replace_global_vertex(source): - source = replace_global_in(source) replace_table = [ - ('attribute', 'COMPAT_ATTRIBUTE'), - ('varying', 'COMPAT_VARYING'), - ('texture2D', 'COMPAT_TEXTURE'), - ('POSITION', 'VertexCoord'), - ('TEXCOORD1', 'LUTTexCoord'), - ('TEXCOORD0', 'TexCoord'), - ('TEXCOORD', 'TexCoord'), - ('uniform vec4 _modelViewProj1[4];', ''), - ('_modelViewProj1', 'MVPMatrix'), - ('_IN1._mvp_matrix[0]', 'MVPMatrix[0]'), - ('_IN1._mvp_matrix[1]', 'MVPMatrix[1]'), - ('_IN1._mvp_matrix[2]', 'MVPMatrix[2]'), - ('_IN1._mvp_matrix[3]', 'MVPMatrix[3]'), + ('attribute', 'COMPAT_ATTRIBUTE'), + ('varying', 'COMPAT_VARYING'), + ('texture2D', 'COMPAT_TEXTURE'), + ('POSITION', 'VertexCoord'), + ('TEXCOORD1', 'LUTTexCoord'), + ('TEXCOORD0', 'TexCoord'), + ('TEXCOORD', 'TexCoord'), + ('uniform vec4 _modelViewProj1[4];', ''), + ('_modelViewProj1', 'MVPMatrix'), + ('_IN1._mvp_matrix[0]', 'MVPMatrix[0]'), + ('_IN1._mvp_matrix[1]', 'MVPMatrix[1]'), + ('_IN1._mvp_matrix[2]', 'MVPMatrix[2]'), + ('_IN1._mvp_matrix[3]', 'MVPMatrix[3]'), - ('FrameCount', 'float(FrameCount)'), - ('FrameDirection', 'float(FrameDirection)'), - ('input', 'input_dummy'), # 'input' is reserved in GLSL. - ('output', 'output_dummy'), # 'output' is reserved in GLSL. + ('FrameCount', 'float(FrameCount)'), + ('FrameDirection', 'float(FrameDirection)'), + ('input', 'input_dummy'), # 'input' is reserved in GLSL. + ('output', 'output_dummy'), # 'output' is reserved in GLSL. ] - for replacement in replace_table: - source = source.replace(replacement[0], replacement[1]) + for orig, new in replace_table: + source = source.replace(orig, new) return source @@ -110,15 +106,15 @@ def translate_varyings(varyings, source, direction): def no_uniform(elem): banned = [ - '_video_size', - '_texture_size', - '_output_size', - '_output_dummy_size', - '_frame_count', - '_frame_direction', - '_mvp_matrix', - '_vertex_coord', - 'sampler2D' + '_video_size', + '_texture_size', + '_output_size', + '_output_dummy_size', + '_frame_count', + '_frame_direction', + '_mvp_matrix', + '_vertex_coord', + 'sampler2D' ] for ban in banned: @@ -142,7 +138,7 @@ def destructify_varyings(source, direction): struct_types = [] for line in source[1:]: if 'struct' in line: - struct_type = line.split(' ')[1] + struct_type = line.split()[1] if struct_type not in struct_types: struct_types.append(struct_type) @@ -161,7 +157,7 @@ def destructify_varyings(source, direction): lines = ['COMPAT_VARYING ' + string for string in source[(i + 1):j]] varyings.extend(lines) - names = [string.strip().split(' ')[1].split(';')[0].strip() for string in source[(i + 1):j]] + names = [string.split()[1].split(';')[0].strip() for string in source[(i + 1):j]] varyings_name.extend(names) log('Found elements in struct', struct + ':', names) last_struct_decl_line = j @@ -183,16 +179,13 @@ def destructify_varyings(source, direction): # the actual varyings we just declared ... # Globals only come before main() ... # Make sure to only look after all struct declarations as there might be overlap. - for line in source[last_struct_decl_line:]: + for line in remove_comments(source[last_struct_decl_line:]): if 'void main()' in line: break for struct in struct_types: if struct in line: - decomment_line = line.split('//')[0].strip() - if len(decomment_line) == 0: - continue - variable = decomment_line.split(' ')[1].split(';')[0] + variable = line.split()[1].split(';')[0] # Only redirect if the struct is actually used as vertex output. for vout_line in vout_lines: @@ -218,7 +211,7 @@ def destructify_varyings(source, direction): for varying_name in varyings_dict: trans_from = variable + '.' + varying_name trans_to = varyings_dict[varying_name] - source[index] = source[index].replace(trans_from, trans_to); + source[index] = source[index].replace(trans_from, trans_to) for index, _ in enumerate(source): for varying_name in varyings_name: @@ -337,19 +330,19 @@ def replace_varyings(source): uniforms = [] for index, line in enumerate(source): if (('//var' in line) or ('#var' in line)) and ('$vin.' in line): - orig = line.split(' ')[2] + orig = line.split()[2] translated = translate_varying(orig) if translated != orig and translated not in attribs: cg_attrib = line.split(':')[2].split(' ')[1] - if len(cg_attrib.strip()) > 0: + if cg_attrib: translations.append((cg_attrib, translated)) attribs.append(translated) elif ('//var' in line) or ('#var' in line): - orig = line.split(' ')[2] + orig = line.split()[2] translated = translate_texture_size(orig) if translated != orig and translated not in uniforms: cg_uniform = line.split(':')[2].split(' ')[1] - if len(cg_uniform.strip()) > 0: + if cg_uniform: translations.append((cg_uniform, translated)) uniforms.append(translated) @@ -372,6 +365,51 @@ def replace_varyings(source): return ret +def fix_samplers(log_prefix, ref_index, source): + translations = [] + added_samplers = [] + translated_samplers = [] + uniforms = [] + struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... + for line in source: + if ('TEXUNIT0' in line) and ('semantic' not in line): + main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') + if main_sampler[0]: + translations.append(main_sampler) + log(log_prefix, 'Sampler:', main_sampler[0], '->', main_sampler[1]) + struct_texunit0 = '.' in main_sampler[0] + elif ('//var sampler2D' in line) or ('#var sampler2D' in line): + cg_texture = line.split()[2] + translated = translate_texture(cg_texture) + orig_name = translated + new_name = line.split(':')[2].split(' ')[1] + log(log_prefix, 'Sampler:', new_name, '->', orig_name) + if new_name: + if translated != cg_texture and translated not in translated_samplers: + translated_samplers.append(translated) + added_samplers.append('uniform sampler2D ' + translated + ';') + translations.append((new_name, orig_name)) + elif ('//var' in line) or ('#var' in line): + orig = line.split()[2] + translated = translate_texture_size(orig) + if translated != orig and translated not in uniforms: + cg_uniform = line.split(':')[2].split(' ')[1] + if cg_uniform: + translations.append((cg_uniform, translated)) + uniforms.append(translated) + + for sampler in added_samplers: + source.insert(ref_index, sampler) + if struct_texunit0: + source.insert(ref_index, 'uniform sampler2D Texture;') + for index, line in enumerate(source): + for orig, new in translations: + log(log_prefix, 'Translation:', orig, '->', new) + source[index] = source[index].replace(orig, new) + + return source + + def hack_source_vertex(source): ref_index = 0 for index, line in enumerate(source): @@ -387,37 +425,7 @@ def hack_source_vertex(source): break # Fix samplers in vertex shader (supported by GLSL). - translations = [] - added_samplers = [] - translated_samplers = [] - struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... - for line in source: - if ('TEXUNIT0' in line) and ('semantic' not in line): - main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') - if len(main_sampler[0]) > 0: - translations.append(main_sampler) - log('Vertex: Sampler:', main_sampler[0], '->', main_sampler[1]) - struct_texunit0 = '.' in main_sampler[0] - elif ('//var sampler2D' in line) or ('#var sampler2D' in line): - cg_texture = line.split(' ')[2] - translated = translate_texture(cg_texture) - orig_name = translated - new_name = line.split(':')[2].split(' ')[1] - log('Vertex: Sampler:', new_name, '->', orig_name) - if len(new_name) > 0: - if translated != cg_texture and translated not in translated_samplers: - translated_samplers.append(translated) - added_samplers.append('uniform sampler2D ' + translated + ';') - translations.append((new_name, orig_name)) - - for sampler in added_samplers: - source.insert(ref_index, sampler) - if struct_texunit0: - source.insert(ref_index, 'uniform sampler2D Texture;') - for index, line in enumerate(source): - for translation in translations: - source[index] = source[index].replace(translation[0], translation[1]) - + source = fix_samplers('Vertex:', ref_index, source) source = destructify_varyings(source, '$vout.') source = replace_varyings(source) return source @@ -426,13 +434,13 @@ def hack_source_vertex(source): def replace_global_fragment(source): source = replace_global_in(source) replace_table = [ - ('varying', 'COMPAT_VARYING'), - ('texture2D', 'COMPAT_TEXTURE'), - ('FrameCount', 'float(FrameCount)'), - ('FrameDirection', 'float(FrameDirection)'), - ('input', 'input_dummy'), - ('output', 'output_dummy'), # 'output' is reserved in GLSL. - ('gl_FragColor', 'FragColor'), + ('varying', 'COMPAT_VARYING'), + ('texture2D', 'COMPAT_TEXTURE'), + ('FrameCount', 'float(FrameCount)'), + ('FrameDirection', 'float(FrameDirection)'), + ('input', 'input_dummy'), + ('output', 'output_dummy'), # 'output' is reserved in GLSL. + ('gl_FragColor', 'FragColor'), ] for replacement in replace_table: @@ -487,54 +495,9 @@ def hack_source_fragment(source): ref_index = index break - translations = [] - added_samplers = [] - translated_samplers = [] - uniforms = [] - struct_texunit0 = False # If True, we have to append uniform sampler2D Texture manually ... - for line in source: - if ('TEXUNIT0' in line) and ('semantic' not in line): - main_sampler = (line.split(':')[2].split(' ')[1], 'Texture') - if len(main_sampler[0]) > 0: - translations.append(main_sampler) - log('Fragment: Sampler:', main_sampler[0], '->', main_sampler[1]) - struct_texunit0 = '.' in main_sampler[0] - elif ('//var sampler2D' in line) or ('#var sampler2D' in line): - cg_texture = line.split(' ')[2] - translated = translate_texture(cg_texture) - orig_name = translated - new_name = line.split(':')[2].split(' ')[1] - log('Fragment: Sampler:', new_name, '->', orig_name) - if len(new_name) > 0: - if translated != cg_texture and translated not in translated_samplers: - translated_samplers.append(translated) - added_samplers.append('uniform sampler2D ' + translated + ';') - translations.append((new_name, orig_name)) - elif ('//var' in line) or ('#var' in line): - orig = line.split(' ')[2] - translated = translate_texture_size(orig) - if translated != orig and translated not in uniforms: - cg_uniform = line.split(':')[2].split(' ')[1] - if len(cg_uniform.strip()) > 0: - translations.append((cg_uniform, translated)) - uniforms.append(translated) - - for sampler in added_samplers: - source.insert(ref_index, sampler) - for uniform in uniforms: - source.insert(ref_index, 'uniform COMPAT_PRECISION vec2 ' + uniform + ';') - if struct_texunit0: - source.insert(ref_index, 'uniform sampler2D Texture;') - - ret = [] - for line in source: - for translation in translations: - log('Translation:', translation[0], '->', translation[1]) - line = line.replace(translation[0], translation[1]) - ret.append(line) - - ret = destructify_varyings(ret, '$vin.') - return ret + source = fix_samplers('Fragment:', ref_index, source) + source = destructify_varyings(source, '$vin.') + return source def validate_shader(source, target): From 867b83e35266eb98a7d2a94f06152ffdf0e7e7bb Mon Sep 17 00:00:00 2001 From: Felix Laurie von Massenbach Date: Sat, 8 Aug 2015 22:38:08 +0100 Subject: [PATCH 169/822] More refactoring of cg2glsl.py. --- tools/cg2glsl.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 0447d0140d..bc0684948d 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -329,22 +329,19 @@ def replace_varyings(source): attribs = [] uniforms = [] for index, line in enumerate(source): - if (('//var' in line) or ('#var' in line)) and ('$vin.' in line): + if ('//var' in line) or ('#var' in line): + func = translate_texture_size + collection = uniforms + if '$vin.' in line: + func = translate_varying + collection = attribs orig = line.split()[2] - translated = translate_varying(orig) - if translated != orig and translated not in attribs: - cg_attrib = line.split(':')[2].split(' ')[1] - if cg_attrib: - translations.append((cg_attrib, translated)) - attribs.append(translated) - elif ('//var' in line) or ('#var' in line): - orig = line.split()[2] - translated = translate_texture_size(orig) - if translated != orig and translated not in uniforms: - cg_uniform = line.split(':')[2].split(' ')[1] - if cg_uniform: - translations.append((cg_uniform, translated)) - uniforms.append(translated) + translated = func(orig) + if translated != orig and translated not in collection: + cg_var = line.split(':')[2].split(' ')[1] + if cg_var: + translations.append((cg_var, translated)) + collection.append(translated) for index, line in enumerate(source): if 'void main()' in line: From c5930e5a0c5e2dcc8b6ee7723eed37c6b028983a Mon Sep 17 00:00:00 2001 From: Felix Laurie von Massenbach Date: Sat, 8 Aug 2015 22:50:50 +0100 Subject: [PATCH 170/822] More refactoring of cg2glsl.py. --- tools/cg2glsl.py | 79 ++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index bc0684948d..a412673879 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -37,8 +37,19 @@ def remove_comments(source_lines): return keep_line_if(lambda line: line, lines_without_comments) +def defines_var(line): + return ('//var' in line) or ('#var' in line) + + +def replace_by_table(source, table): + for orig, new in table: + if orig: + source = source.replace(orig, new) + + return source + + def replace_global_in(source): - split_source = source.split('\n') replace_table = [ ('IN.video_size', 'InputSize'), ('IN.texture_size', 'TextureSize'), @@ -47,8 +58,8 @@ def replace_global_in(source): ('IN.frame_direction', 'FrameDirection'), ] - for line in split_source: - if ('//var' in line) or ('#var' in line): + for line in source.splitlines(): + if defines_var(line): for index, replace in enumerate(replace_table): orig = line.split()[2] if replace[0] == orig: @@ -56,15 +67,12 @@ def replace_global_in(source): log('Replace globals:', replace_table) - for orig, new in replace_table: - if orig: - source = source.replace(orig, new) - - return source + return replace_by_table(source, replace_table) def replace_global_vertex(source): source = replace_global_in(source) + replace_table = [ ('attribute', 'COMPAT_ATTRIBUTE'), ('varying', 'COMPAT_VARYING'), @@ -86,17 +94,14 @@ def replace_global_vertex(source): ('output', 'output_dummy'), # 'output' is reserved in GLSL. ] - for orig, new in replace_table: - source = source.replace(orig, new) - - return source + return replace_by_table(source, replace_table) def translate_varyings(varyings, source, direction): dictionary = {} for varying in varyings: for line in source: - if (varying in line) and (('//var' in line) or ('#var' in line)) and (direction in line): + if defines_var(line) and (varying in line) and (direction in line): log('Found line for', varying + ':', line) dictionary[varying] = 'VAR' + line.split(':')[0].split('.')[-1].strip() break @@ -120,6 +125,7 @@ def no_uniform(elem): for ban in banned: if ban in elem: return False + return True @@ -132,7 +138,7 @@ def destructify_varyings(source, direction): # Don't try to remove this as it breaks compile. vout_lines = [] for line in source: - if (('//var' in line) or ('#var' in line)) and (('$vout.' in line) or ('$vin.' in line)): + if defines_var(line) and (('$vout.' in line) or ('$vin.' in line)): vout_lines.append(line) struct_types = [] @@ -227,9 +233,14 @@ def destructify_varyings(source, direction): return source +def translate(cg, translations): + if cg in translations: + return translations[cg] + else: + return cg + + def translate_varying(cg): - # Ye, it's ugly as shit. :( - # log('Translate:', cg) translations = { 'IN.tex_coord': 'TexCoord', 'IN.vertex_coord': 'VertexCoord', @@ -259,15 +270,10 @@ def translate_varying(cg): 'PASSPREV8.tex_coord': 'PassPrev8TexCoord', } - if cg in translations: - return translations[cg] - else: - return cg + return translate(cg, translations) def translate_texture_size(cg): - # Ye, it's ugly as shit. :( - # log('Translate:', cg) translations = { 'ORIG.texture_size': 'OrigTextureSize', 'PREV.texture_size': 'PrevTextureSize', @@ -317,10 +323,7 @@ def translate_texture_size(cg): 'PASSPREV8.video_size': 'PassPrev8InputSize', } - if cg in translations: - return translations[cg] - else: - return cg + return translate(cg, translations) def replace_varyings(source): @@ -329,7 +332,7 @@ def replace_varyings(source): attribs = [] uniforms = [] for index, line in enumerate(source): - if ('//var' in line) or ('#var' in line): + if defines_var(line): func = translate_texture_size collection = uniforms if '$vin.' in line: @@ -386,7 +389,7 @@ def fix_samplers(log_prefix, ref_index, source): translated_samplers.append(translated) added_samplers.append('uniform sampler2D ' + translated + ';') translations.append((new_name, orig_name)) - elif ('//var' in line) or ('#var' in line): + elif defines_var(line): orig = line.split()[2] translated = translate_texture_size(orig) if translated != orig and translated not in uniforms: @@ -425,11 +428,13 @@ def hack_source_vertex(source): source = fix_samplers('Vertex:', ref_index, source) source = destructify_varyings(source, '$vout.') source = replace_varyings(source) + return source def replace_global_fragment(source): source = replace_global_in(source) + replace_table = [ ('varying', 'COMPAT_VARYING'), ('texture2D', 'COMPAT_TEXTURE'), @@ -440,14 +445,10 @@ def replace_global_fragment(source): ('gl_FragColor', 'FragColor'), ] - for replacement in replace_table: - source = source.replace(replacement[0], replacement[1]) - - return source + return replace_by_table(source, replace_table) def translate_texture(cg): - log('Translate:', cg) translations = { 'ORIG.texture': 'OrigTexture', 'PREV.texture': 'PrevTexture', @@ -474,10 +475,7 @@ def translate_texture(cg): 'PASSPREV8.texture': 'PassPrev8Texture', } - if cg in translations: - return translations[cg] - else: - return cg + return translate(cg, translations) def hack_source_fragment(source): @@ -494,6 +492,7 @@ def hack_source_fragment(source): source = fix_samplers('Fragment:', ref_index, source) source = destructify_varyings(source, '$vin.') + return source @@ -513,7 +512,7 @@ def validate_shader(source, target): def preprocess_vertex(source_data): - input_data = source_data.split('\n') + input_data = source_data.splitlines() ret = [] for line in input_data: if ('uniform' in line) and (('float4x4' in line) or ('half4x4' in line)): @@ -561,8 +560,8 @@ def convert(source, dest): vertex_source = replace_global_vertex(vertex_source) fragment_source = replace_global_fragment(fragment_source) - vertex_source = vertex_source.split('\n') - fragment_source = fragment_source.split('\n') + vertex_source = vertex_source.splitlines() + fragment_source = fragment_source.splitlines() # Cg think we're using row-major matrices, but we're using column major. # Also, Cg tends to compile matrix multiplications as dot products in GLSL. From 1818633914623ecfc43b15874b1e364cabcd494b Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 9 Aug 2015 11:46:17 -0500 Subject: [PATCH 171/822] log vid/pid on android --- input/drivers/android_input.c | 2 +- input/input_autodetect.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index d55184efdc..1438619eea 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -690,7 +690,7 @@ static void handle_hotplug(android_input_t *android, unsigned autoconfigured = false; autoconfig_params_t params = {{0}}; - RARCH_LOG("Port %d: %s.\n", *port, name_buf); + RARCH_LOG("Port %d: %s VID/PID: %d/%d\n", *port, name_buf, params.vid, params.pid); strlcpy(params.name, name_buf, sizeof(params.name)); params.idx = *port; diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 9fd0834646..09614eac17 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -187,6 +187,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( config_file_t *conf = NULL; struct string_list *list = NULL; char path[PATH_MAX_LENGTH] = {0}; + char msg[PATH_MAX_LENGTH] = {0}; settings_t *settings = config_get_ptr(); fill_pathname_join(path,settings->input.autoconfig_dir, @@ -224,8 +225,11 @@ static bool input_autoconfigure_joypad_from_conf_dir( config_file_free(conf); } else + { + RARCH_LOG("Autoconf: no profiles found for %s (%d/%d)", params->name, params->vid, params->pid); + snprintf(msg, sizeof(msg), "%s (%d/%d) not configured", parms->name, params->vid, params->pid); ret = 0; - + } string_list_free(list); if (ret == 0) From 55e5dc83dc139dffa5d4c4e617ef837af96aeefe Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 9 Aug 2015 11:47:42 -0500 Subject: [PATCH 172/822] print an OSD message when no profiles found --- input/input_autodetect.c | 1 + 1 file changed, 1 insertion(+) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 09614eac17..76ad8dd856 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -228,6 +228,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( { RARCH_LOG("Autoconf: no profiles found for %s (%d/%d)", params->name, params->vid, params->pid); snprintf(msg, sizeof(msg), "%s (%d/%d) not configured", parms->name, params->vid, params->pid); + rarch_main_msg_queue_push(msg, 0, 60, false); ret = 0; } string_list_free(list); From 12dcc5ae0acf04528b3fe1989745c4b7b2f047d3 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 9 Aug 2015 11:51:18 -0500 Subject: [PATCH 173/822] fix typo --- input/input_autodetect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 76ad8dd856..e6a6662945 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -227,7 +227,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( else { RARCH_LOG("Autoconf: no profiles found for %s (%d/%d)", params->name, params->vid, params->pid); - snprintf(msg, sizeof(msg), "%s (%d/%d) not configured", parms->name, params->vid, params->pid); + snprintf(msg, sizeof(msg), "%s (%d/%d) not configured", params->name, params->vid, params->pid); rarch_main_msg_queue_push(msg, 0, 60, false); ret = 0; } From 0a324c602176b52936490e8846a2e1ef67d130cb Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 10 Aug 2015 18:11:28 +0200 Subject: [PATCH 174/822] (iOS) Add Documents directory --- frontend/drivers/platform_darwin.m | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index f0b89daf4f..b27c72d348 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -592,17 +592,29 @@ static int frontend_darwin_parse_drive_list(void *data) #if TARGET_OS_IPHONE #ifdef HAVE_MENU file_list_t *list = (file_list_t*)data; + CFURLRef bundle_url; + CFStringRef bundle_path; + char bundle_path_buf[PATH_MAX_LENGTH] = {0}; + char home_dir_buf[PATH_MAX_LENGTH] = {0}; + CFBundleRef bundle = CFBundleGetMainBundle(); + + bundle_url = CFBundleCopyBundleURL(bundle); + bundle_path = CFURLCopyPath(bundle_url); + + CFStringGetCString(bundle_path, bundle_path_buf, sizeof(bundle_path_buf), kCFStringEncodingUTF8); + (void)home_dir_buf; + + CFSearchPathForDirectoriesInDomains(CFDocumentDirectory, CFUserDomainMask, 1, home_dir_buf, sizeof(home_dir_buf)); menu_list_push(list, - "/var/mobile/Documents/", "", MENU_FILE_DIRECTORY, 0, 0); - menu_list_push(list, - "/var/mobile/", "", MENU_FILE_DIRECTORY, 0, 0); - menu_list_push(list, - g_defaults.dir.core, "", MENU_FILE_DIRECTORY, 0, 0); + home_dir_buf, "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "/", "", MENU_FILE_DIRECTORY, 0, 0); ret = 0; + + CFRelease(bundle_path); + CFRelease(bundle_url); #endif #endif From c8dfa2733866a4b2182ad390d635918d4ec4fe8b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 10 Aug 2015 18:12:11 +0200 Subject: [PATCH 175/822] (Darwin) Cleanups --- frontend/drivers/platform_darwin.m | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index b27c72d348..45d9c90c61 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -592,19 +592,19 @@ static int frontend_darwin_parse_drive_list(void *data) #if TARGET_OS_IPHONE #ifdef HAVE_MENU file_list_t *list = (file_list_t*)data; - CFURLRef bundle_url; - CFStringRef bundle_path; - char bundle_path_buf[PATH_MAX_LENGTH] = {0}; - char home_dir_buf[PATH_MAX_LENGTH] = {0}; - CFBundleRef bundle = CFBundleGetMainBundle(); - - bundle_url = CFBundleCopyBundleURL(bundle); - bundle_path = CFURLCopyPath(bundle_url); - - CFStringGetCString(bundle_path, bundle_path_buf, sizeof(bundle_path_buf), kCFStringEncodingUTF8); - (void)home_dir_buf; - - CFSearchPathForDirectoriesInDomains(CFDocumentDirectory, CFUserDomainMask, 1, home_dir_buf, sizeof(home_dir_buf)); + CFURLRef bundle_url; + CFStringRef bundle_path; + char bundle_path_buf[PATH_MAX_LENGTH] = {0}; + char home_dir_buf[PATH_MAX_LENGTH] = {0}; + CFBundleRef bundle = CFBundleGetMainBundle(); + + bundle_url = CFBundleCopyBundleURL(bundle); + bundle_path = CFURLCopyPath(bundle_url); + + CFStringGetCString(bundle_path, bundle_path_buf, sizeof(bundle_path_buf), kCFStringEncodingUTF8); + (void)home_dir_buf; + + CFSearchPathForDirectoriesInDomains(CFDocumentDirectory, CFUserDomainMask, 1, home_dir_buf, sizeof(home_dir_buf)); menu_list_push(list, home_dir_buf, "", MENU_FILE_DIRECTORY, 0, 0); @@ -612,7 +612,7 @@ static int frontend_darwin_parse_drive_list(void *data) MENU_FILE_DIRECTORY, 0, 0); ret = 0; - + CFRelease(bundle_path); CFRelease(bundle_url); #endif From 08260878ead8f953a28b855e9a300669d0c7f2ad Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 10 Aug 2015 23:04:09 +0200 Subject: [PATCH 176/822] Start adding some Vita ifdefs --- input/drivers/psp_input.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/input/drivers/psp_input.c b/input/drivers/psp_input.c index 02b41c91de..f3e9481bc7 100644 --- a/input/drivers/psp_input.c +++ b/input/drivers/psp_input.c @@ -23,6 +23,8 @@ #include #include #include +#elif defined(VITA) +#include #elif defined(PSP) #include #endif From 77aa7535c935eebf294eb8325824f3d2476403ce Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 10 Aug 2015 23:11:40 +0200 Subject: [PATCH 177/822] MOve all 'define' headers to central place ' defines' --- audio/drivers/gx_audio.c | 2 +- audio/drivers/ps3_audio.c | 2 +- gfx/drivers/gx_sdk_defines.h => defines/gx_defines.h | 4 ++-- ps3/sdk_defines.h => defines/ps3_defines.h | 4 ++-- gfx/drivers/psp_sdk_defines.h => defines/psp_defines.h | 4 ++-- frontend/drivers/platform_gx.c | 2 +- frontend/drivers/platform_ps3.c | 2 +- frontend/drivers/platform_psp.c | 2 +- gfx/drivers/gx_gfx.c | 2 +- gfx/drivers/psp1_gfx.c | 2 +- gfx/drivers_context/ps3_ctx.c | 2 +- gfx/image/image.c | 2 +- input/drivers/ps3_input.c | 2 +- input/drivers/psp_input.c | 2 +- logger/netlogger/logger.c | 2 +- 15 files changed, 18 insertions(+), 18 deletions(-) rename gfx/drivers/gx_sdk_defines.h => defines/gx_defines.h (95%) rename ps3/sdk_defines.h => defines/ps3_defines.h (99%) rename gfx/drivers/psp_sdk_defines.h => defines/psp_defines.h (98%) diff --git a/audio/drivers/gx_audio.c b/audio/drivers/gx_audio.c index 35606cdbb3..566d6af4c8 100644 --- a/audio/drivers/gx_audio.c +++ b/audio/drivers/gx_audio.c @@ -28,7 +28,7 @@ #include #endif -#include "../../gfx/drivers/gx_sdk_defines.h" +#include "../../defines/gx_defines.h" #define CHUNK_FRAMES 64 #define CHUNK_SIZE (CHUNK_FRAMES * sizeof(uint32_t)) diff --git a/audio/drivers/ps3_audio.c b/audio/drivers/ps3_audio.c index f03dc08ad9..eb8acbf71d 100644 --- a/audio/drivers/ps3_audio.c +++ b/audio/drivers/ps3_audio.c @@ -21,7 +21,7 @@ #include #include -#include "../ps3/sdk_defines.h" +#include "../../defines/ps3_defines.h" #define AUDIO_BLOCKS 8 #define AUDIO_CHANNELS 2 diff --git a/gfx/drivers/gx_sdk_defines.h b/defines/gx_defines.h similarity index 95% rename from gfx/drivers/gx_sdk_defines.h rename to defines/gx_defines.h index a87df74051..194b315c31 100644 --- a/gfx/drivers/gx_sdk_defines.h +++ b/defines/gx_defines.h @@ -1,5 +1,5 @@ -#ifndef _GX_SDK_DEFINES_H -#define _GX_SDK_DEFINES_H +#ifndef _GX_DEFINES_H +#define _GX_DEFINES_H #ifdef GEKKO diff --git a/ps3/sdk_defines.h b/defines/ps3_defines.h similarity index 99% rename from ps3/sdk_defines.h rename to defines/ps3_defines.h index 4e6ff9230c..cdd4cee7df 100644 --- a/ps3/sdk_defines.h +++ b/defines/ps3_defines.h @@ -14,8 +14,8 @@ * If not, see . */ -#ifndef _PS3_SDK_DEFINES_H -#define _PS3_SDK_DEFINES_H +#ifndef _PS3_DEFINES_H +#define _PS3_DEFINES_H #include diff --git a/gfx/drivers/psp_sdk_defines.h b/defines/psp_defines.h similarity index 98% rename from gfx/drivers/psp_sdk_defines.h rename to defines/psp_defines.h index 51759c0264..3b42183208 100644 --- a/gfx/drivers/psp_sdk_defines.h +++ b/defines/psp_defines.h @@ -14,8 +14,8 @@ * If not, see . */ -#ifndef _PSP_SDK_DEFINES_H -#define _PSP_SDK_DEFINES_H +#ifndef _PSP_DEFINES_H +#define _PSP_DEFINES_H /*============================================================ ERROR PROTOTYPES diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index 3a90cf7f24..936c3c4941 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -43,7 +43,7 @@ #include "../../driver.h" #include "../../general.h" #include "../../libretro_private.h" -#include "../../gfx/drivers/gx_sdk_defines.h" +#include "../../defines/gx_defines.h" #ifdef HW_RVL #include diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c index 12ae4aafbd..3f933cf328 100644 --- a/frontend/drivers/platform_ps3.c +++ b/frontend/drivers/platform_ps3.c @@ -33,7 +33,7 @@ #include #endif -#include "../../ps3/sdk_defines.h" +#include "../../defines/ps3_defines.h" #include "../../general.h" #define EMULATOR_CONTENT_DIR "SSNE10000" diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 6240c1b392..4cef58ede6 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -30,7 +30,7 @@ #include #endif -#include "../../gfx/drivers/psp_sdk_defines.h" +#include "../../defines/psp_defines.h" #include "../../general.h" #if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index 1f042bbc23..ead38099fe 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -35,7 +35,7 @@ #include "ppc_asm.h" #include "gx_gfx_inl.h" -#include "gx_sdk_defines.h" +#include "../../defines/gx_defines.h" struct gx_overlay_data { diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c index 2dc6e2f4c7..f38bf8d80a 100644 --- a/gfx/drivers/psp1_gfx.c +++ b/gfx/drivers/psp1_gfx.c @@ -22,7 +22,7 @@ #include #include -#include "psp_sdk_defines.h" +#include "../../defines/psp_defines.h" #include "../../general.h" #include "../../driver.h" #include "../video_viewport.h" diff --git a/gfx/drivers_context/ps3_ctx.c b/gfx/drivers_context/ps3_ctx.c index 1689abb2a9..88957e7e64 100644 --- a/gfx/drivers_context/ps3_ctx.c +++ b/gfx/drivers_context/ps3_ctx.c @@ -16,7 +16,7 @@ #include "../../driver.h" #include "../../runloop.h" -#include "../../ps3/sdk_defines.h" +#include "../../defines/ps3_defines.h" #ifdef HAVE_LIBDBGFONT #ifndef __PSL1GHT__ diff --git a/gfx/image/image.c b/gfx/image/image.c index 97d431843f..7e73aad878 100644 --- a/gfx/image/image.c +++ b/gfx/image/image.c @@ -36,7 +36,7 @@ #include "../../general.h" #if defined(__CELLOS_LV2__) || defined(__PSLIGHT__) -#include "../../ps3/sdk_defines.h" +#include "../../defines/ps3_defines.h" #ifdef __PSL1GHT__ #include diff --git a/input/drivers/ps3_input.c b/input/drivers/ps3_input.c index ef3f204a0d..fc82240296 100644 --- a/input/drivers/ps3_input.c +++ b/input/drivers/ps3_input.c @@ -21,7 +21,7 @@ #include -#include "../../ps3/sdk_defines.h" +#include "../../defines/ps3_defines.h" #include "../../driver.h" #include "../../libretro.h" diff --git a/input/drivers/psp_input.c b/input/drivers/psp_input.c index f3e9481bc7..d5f3767d50 100644 --- a/input/drivers/psp_input.c +++ b/input/drivers/psp_input.c @@ -29,7 +29,7 @@ #include #endif -#include "../../gfx/drivers/psp_sdk_defines.h" +#include "../../defines/psp_defines.h" #include "../../driver.h" #include "../../libretro.h" diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index 6c4126834d..ede9eaf112 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -15,7 +15,7 @@ */ #if defined(__CELLOS_LV2__) -#include "../../ps3/sdk_defines.h" +#include "../../defines/ps3_defines.h" #ifndef __PSL1GHT__ #include #include From df0b5f5455a15f09959b1d1cd83052eed3577940 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 10 Aug 2015 23:17:17 +0200 Subject: [PATCH 178/822] (Vita) Add Vita defines to psp_defines.h --- defines/psp_defines.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/defines/psp_defines.h b/defines/psp_defines.h index 3b42183208..d993feeea6 100644 --- a/defines/psp_defines.h +++ b/defines/psp_defines.h @@ -53,13 +53,30 @@ INPUT PROTOTYPES ============================================================ */ -#if defined(SN_TARGET_PSP2) +#if defined(SN_TARGET_PSP2) || defined(VITA) #define STATE_BUTTON(state) ((state).buttons) #define STATE_ANALOGLX(state) ((state).lx) #define STATE_ANALOGLY(state) ((state).ly) #define STATE_ANALOGRX(state) ((state).rx) #define STATE_ANALOGRY(state) ((state).ry) + +#if defined(VITA) +#define DEFAULT_SAMPLING_MODE (PSP2_CTRL_MODE_ANALOG) + +#define PSP_CTRL_LEFT PSP2_CTRL_LEFT +#define PSP_CTRL_DOWN PSP2_CTRL_DOWN +#define PSP_CTRL_RIGHT PSP2_CTRL_RIGHT +#define PSP_CTRL_UP PSP2_CTRL_UP +#define PSP_CTRL_START PSP2_CTRL_START +#define PSP_CTRL_SELECT PSP2_CTRL_SELECT +#define PSP_CTRL_TRIANGLE PSP2_CTRL_TRIANGLE +#define PSP_CTRL_SQUARE PSP2_CTRL_SQUARE +#define PSP_CTRL_CROSS PSP2_CTRL_CROSS +#define PSP_CTRL_CIRCLE PSP2_CTRL_CIRCLE +#define PSP_CTRL_L PSP2_CTRL_L +#define PSP_CTRL_R PSP2_CTRL_R +#else #define DEFAULT_SAMPLING_MODE (SCE_CTRL_MODE_DIGITALANALOG) #define PSP_CTRL_LEFT SCE_CTRL_LEFT @@ -74,6 +91,7 @@ #define PSP_CTRL_CIRCLE SCE_CTRL_CIRCLE #define PSP_CTRL_L SCE_CTRL_L #define PSP_CTRL_R SCE_CTRL_R +#endif #define CtrlPeekBufferPositive(port, pad_data, bufs) sceCtrlPeekBufferPositive(port, pad_data, bufs) From ff3e791d72015b7c5375de09e94d5aa1254f16f9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 10 Aug 2015 23:19:07 +0200 Subject: [PATCH 179/822] (Vita) Compile in input and joypad drivers --- griffin/griffin.c | 2 +- input/drivers_joypad/psp_joypad.c | 2 +- input/input_driver.c | 2 +- input/input_joypad_driver.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/griffin/griffin.c b/griffin/griffin.c index a6c3aa3c4c..63eee26705 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -302,7 +302,7 @@ INPUT #include "../input/drivers/ps3_input.c" #include "../input/drivers_joypad/ps3_joypad.c" #include "../input/autoconf/builtin_ps3.c" -#elif defined(SN_TARGET_PSP2) || defined(PSP) +#elif defined(SN_TARGET_PSP2) || defined(PSP) || defined(VITA) #include "../input/drivers/psp_input.c" #include "../input/drivers_joypad/psp_joypad.c" #include "../input/autoconf/builtin_psp.c" diff --git a/input/drivers_joypad/psp_joypad.c b/input/drivers_joypad/psp_joypad.c index b2429b64ad..b1584bfc98 100644 --- a/input/drivers_joypad/psp_joypad.c +++ b/input/drivers_joypad/psp_joypad.c @@ -143,7 +143,7 @@ static void psp_joypad_poll(void) analog_state[0][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_X] = (int16_t)(STATE_ANALOGLX(state_tmp)-128) * 256; analog_state[0][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_Y] = (int16_t)(STATE_ANALOGLY(state_tmp)-128) * 256; -#ifdef SN_TARGET_PSP2 +#if defined(SN_TARGET_PSP2) || defined(VITA) analog_state[0][RETRO_DEVICE_INDEX_ANALOG_RIGHT][RETRO_DEVICE_ID_ANALOG_X] = (int16_t)(STATE_ANALOGRX(state_tmp)-128) * 256; analog_state[0][RETRO_DEVICE_INDEX_ANALOG_RIGHT][RETRO_DEVICE_ID_ANALOG_Y] = (int16_t)(STATE_ANALOGRY(state_tmp)-128) * 256; #endif diff --git a/input/input_driver.c b/input/input_driver.c index 61b426cdc1..81fd836c1f 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -26,7 +26,7 @@ static const input_driver_t *input_drivers[] = { #ifdef __CELLOS_LV2__ &input_ps3, #endif -#if defined(SN_TARGET_PSP2) || defined(PSP) +#if defined(SN_TARGET_PSP2) || defined(PSP) || defined(VITA) &input_psp, #endif #if defined(_3DS) diff --git a/input/input_joypad_driver.c b/input/input_joypad_driver.c index b9e779a4f1..0829c3d384 100644 --- a/input/input_joypad_driver.c +++ b/input/input_joypad_driver.c @@ -35,7 +35,7 @@ static input_device_driver_t *joypad_drivers[] = { #ifdef _XBOX &xdk_joypad, #endif -#ifdef PSP +#if defined(PSP) || defined(VITA) &psp_joypad, #endif #ifdef _3DS From fa5645b1e794fc2d06fe07d223b18231d177d715 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 10 Aug 2015 23:23:03 +0200 Subject: [PATCH 180/822] (libretro-common) Add some ifdef rules for Vita --- libretro-common/include/retro_miscellaneous.h | 6 ++++-- libretro-common/include/rthreads/rthreads.h | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libretro-common/include/retro_miscellaneous.h b/libretro-common/include/retro_miscellaneous.h index 58386f7c90..a2ea69f57c 100644 --- a/libretro-common/include/retro_miscellaneous.h +++ b/libretro-common/include/retro_miscellaneous.h @@ -32,7 +32,9 @@ #elif defined(GEKKO) || defined(__PSL1GHT__) || defined(__QNX__) #include #elif defined(PSP) -#include +#include +#elif defined(VITA) +#include #elif defined(_3DS) #include <3ds.h> #else @@ -86,7 +88,7 @@ static INLINE void rarch_sleep(unsigned msec) { #if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) sys_timer_usleep(1000 * msec); -#elif defined(PSP) +#elif defined(PSP) || defined(VITA) sceKernelDelayThread(1000 * msec); #elif defined(_3DS) svcSleepThread(1000000 * (s64)msec); diff --git a/libretro-common/include/rthreads/rthreads.h b/libretro-common/include/rthreads/rthreads.h index f5b4f29b2d..be83d68107 100644 --- a/libretro-common/include/rthreads/rthreads.h +++ b/libretro-common/include/rthreads/rthreads.h @@ -179,6 +179,8 @@ void scond_signal(scond_t *cond); #elif defined(PSP) #include #include +#elif defined(VITA) +#include #elif defined(_3DS) #include <3ds.h> #elif defined(_WIN32) && !defined(_XBOX) @@ -199,7 +201,7 @@ static INLINE void retro_sleep(unsigned msec) { #if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) sys_timer_usleep(1000 * msec); -#elif defined(PSP) +#elif defined(PSP) || defined(VITA) sceKernelDelayThread(1000 * msec); #elif defined(_3DS) svcSleepThread(1000000 * (s64)msec); From ef53ec3d905929dac531d9e711e2a3df4051ca3b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 10 Aug 2015 23:29:50 +0200 Subject: [PATCH 181/822] Add some Vita ifdefs to platform_psp.c --- frontend/drivers/platform_psp.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 4cef58ede6..3bcd923a81 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -14,11 +14,15 @@ * If not, see . */ +#ifdef VITA +#include +#else #include #include #include #include #include +#endif #include #include @@ -177,15 +181,17 @@ static void frontend_psp_init(void *data) { #ifndef IS_SALAMANDER (void)data; - //initialize debug screen + /* initialize debug screen */ pspDebugScreenInit(); pspDebugScreenClear(); setup_callback(); - pspFpuSetEnable(0);//disable FPU exceptions +#ifndef VITA + pspFpuSetEnable(0); /* disable FPU exceptions */ scePowerSetClockFrequency(333,333,166); #endif +#endif #if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) pspSdkLoadStartModule("kernel_functions.prx", PSP_MEMORY_PARTITION_KERNEL); @@ -246,7 +252,7 @@ static int frontend_psp_get_rating(void) static enum frontend_powerstate frontend_psp_get_powerstate(int *seconds, int *percent) { enum frontend_powerstate ret = FRONTEND_POWERSTATE_NONE; - int battery = scePowerIsBatteryExist(); + int battery = scePowerIsBatteryExist(); /* this function does not exist on Vita? */ int plugged = scePowerIsPowerOnline(); int charging = scePowerIsBatteryCharging(); From 19fb5240c6f833a46ffca2ea71bb790a297cf510 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 10 Aug 2015 23:40:59 +0200 Subject: [PATCH 182/822] (Vita) Add some more Vita ifdefs --- defines/psp_defines.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/defines/psp_defines.h b/defines/psp_defines.h index d993feeea6..60947c70de 100644 --- a/defines/psp_defines.h +++ b/defines/psp_defines.h @@ -29,8 +29,13 @@ DISPLAY PROTOTYPES ============================================================ */ -#if defined(SN_TARGET_PSP2) +#if defined(SN_TARGET_PSP2) || defined(VITA) + +#ifdef VITA +#define PSP_DISPLAY_PIXEL_FORMAT_8888 (PSP2_DISPLAY_PIXELFORMAT_A8B8G8R8) +#else #define PSP_DISPLAY_PIXEL_FORMAT_8888 (SCE_DISPLAY_PIXELFORMAT_A8B8G8R8) +#endif #define DisplaySetFrameBuf(topaddr, bufferwidth, pixelformat, sync) sceDisplaySetFrameBuf(topaddr, sync) From 828734e0075b78a59cff4c39ef33fd6dd3148e58 Mon Sep 17 00:00:00 2001 From: radius Date: Tue, 11 Aug 2015 17:13:25 -0500 Subject: [PATCH 183/822] don't try to autoconfigure GPIO devices --- audio/drivers/gx_audio.c | 0 audio/drivers/ps3_audio.c | 0 defines/gx_defines.h | 0 defines/ps3_defines.h | 0 defines/psp_defines.h | 0 frontend/drivers/platform_darwin.m | 0 frontend/drivers/platform_gx.c | 0 frontend/drivers/platform_ps3.c | 0 frontend/drivers/platform_psp.c | 0 gfx/drivers/gx_gfx.c | 0 gfx/drivers/psp1_gfx.c | 0 gfx/drivers_context/ps3_ctx.c | 0 gfx/image/image.c | 0 griffin/griffin.c | 0 input/drivers/android_input.c | 5 ++++- input/drivers/ps3_input.c | 0 input/drivers/psp_input.c | 0 input/drivers_joypad/psp_joypad.c | 0 input/input_driver.c | 0 input/input_joypad_driver.c | 0 libretro-common/include/retro_miscellaneous.h | 0 libretro-common/include/rthreads/rthreads.h | 0 logger/netlogger/logger.c | 0 23 files changed, 4 insertions(+), 1 deletion(-) mode change 100644 => 100755 audio/drivers/gx_audio.c mode change 100644 => 100755 audio/drivers/ps3_audio.c mode change 100644 => 100755 defines/gx_defines.h mode change 100644 => 100755 defines/ps3_defines.h mode change 100644 => 100755 defines/psp_defines.h mode change 100644 => 100755 frontend/drivers/platform_darwin.m mode change 100644 => 100755 frontend/drivers/platform_gx.c mode change 100644 => 100755 frontend/drivers/platform_ps3.c mode change 100644 => 100755 frontend/drivers/platform_psp.c mode change 100644 => 100755 gfx/drivers/gx_gfx.c mode change 100644 => 100755 gfx/drivers/psp1_gfx.c mode change 100644 => 100755 gfx/drivers_context/ps3_ctx.c mode change 100644 => 100755 gfx/image/image.c mode change 100644 => 100755 griffin/griffin.c mode change 100644 => 100755 input/drivers/ps3_input.c mode change 100644 => 100755 input/drivers/psp_input.c mode change 100644 => 100755 input/drivers_joypad/psp_joypad.c mode change 100644 => 100755 input/input_driver.c mode change 100644 => 100755 input/input_joypad_driver.c mode change 100644 => 100755 libretro-common/include/retro_miscellaneous.h mode change 100644 => 100755 libretro-common/include/rthreads/rthreads.h mode change 100644 => 100755 logger/netlogger/logger.c diff --git a/audio/drivers/gx_audio.c b/audio/drivers/gx_audio.c old mode 100644 new mode 100755 diff --git a/audio/drivers/ps3_audio.c b/audio/drivers/ps3_audio.c old mode 100644 new mode 100755 diff --git a/defines/gx_defines.h b/defines/gx_defines.h old mode 100644 new mode 100755 diff --git a/defines/ps3_defines.h b/defines/ps3_defines.h old mode 100644 new mode 100755 diff --git a/defines/psp_defines.h b/defines/psp_defines.h old mode 100644 new mode 100755 diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m old mode 100644 new mode 100755 diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c old mode 100644 new mode 100755 diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c old mode 100644 new mode 100755 diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c old mode 100644 new mode 100755 diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c old mode 100644 new mode 100755 diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c old mode 100644 new mode 100755 diff --git a/gfx/drivers_context/ps3_ctx.c b/gfx/drivers_context/ps3_ctx.c old mode 100644 new mode 100755 diff --git a/gfx/image/image.c b/gfx/image/image.c old mode 100644 new mode 100755 diff --git a/griffin/griffin.c b/griffin/griffin.c old mode 100644 new mode 100755 diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 1438619eea..d1143a20d5 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -700,7 +700,10 @@ static void handle_hotplug(android_input_t *android, settings->input.vid[*port] = params.vid; strlcpy(params.driver, android_joypad.ident, sizeof(params.driver)); - autoconfigured = input_config_autoconfigure_joypad(¶ms); + + // Don't try to autoconfigure GPIO devices + if (!strstr(android->pad_states[0].name,"Generic I/O Device")) + autoconfigured = input_config_autoconfigure_joypad(¶ms); if (autoconfigured) { diff --git a/input/drivers/ps3_input.c b/input/drivers/ps3_input.c old mode 100644 new mode 100755 diff --git a/input/drivers/psp_input.c b/input/drivers/psp_input.c old mode 100644 new mode 100755 diff --git a/input/drivers_joypad/psp_joypad.c b/input/drivers_joypad/psp_joypad.c old mode 100644 new mode 100755 diff --git a/input/input_driver.c b/input/input_driver.c old mode 100644 new mode 100755 diff --git a/input/input_joypad_driver.c b/input/input_joypad_driver.c old mode 100644 new mode 100755 diff --git a/libretro-common/include/retro_miscellaneous.h b/libretro-common/include/retro_miscellaneous.h old mode 100644 new mode 100755 diff --git a/libretro-common/include/rthreads/rthreads.h b/libretro-common/include/rthreads/rthreads.h old mode 100644 new mode 100755 diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c old mode 100644 new mode 100755 From ee2ad0c4bd51aac522e7927eeeb5a66058dfce9f Mon Sep 17 00:00:00 2001 From: Alcaro Date: Wed, 12 Aug 2015 01:31:03 +0200 Subject: [PATCH 184/822] These aren't executable. --- audio/drivers/gx_audio.c | 0 audio/drivers/ps3_audio.c | 0 defines/gx_defines.h | 0 defines/ps3_defines.h | 0 defines/psp_defines.h | 0 frontend/drivers/platform_darwin.m | 0 frontend/drivers/platform_gx.c | 0 frontend/drivers/platform_ps3.c | 0 frontend/drivers/platform_psp.c | 0 gfx/drivers/gx_gfx.c | 0 gfx/drivers/psp1_gfx.c | 0 gfx/drivers_context/ps3_ctx.c | 0 gfx/image/image.c | 0 griffin/griffin.c | 0 input/drivers/ps3_input.c | 0 input/drivers/psp_input.c | 0 input/drivers_joypad/psp_joypad.c | 0 input/input_driver.c | 0 input/input_joypad_driver.c | 0 libretro-common/include/retro_miscellaneous.h | 0 libretro-common/include/rthreads/rthreads.h | 0 logger/netlogger/logger.c | 0 22 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 audio/drivers/gx_audio.c mode change 100755 => 100644 audio/drivers/ps3_audio.c mode change 100755 => 100644 defines/gx_defines.h mode change 100755 => 100644 defines/ps3_defines.h mode change 100755 => 100644 defines/psp_defines.h mode change 100755 => 100644 frontend/drivers/platform_darwin.m mode change 100755 => 100644 frontend/drivers/platform_gx.c mode change 100755 => 100644 frontend/drivers/platform_ps3.c mode change 100755 => 100644 frontend/drivers/platform_psp.c mode change 100755 => 100644 gfx/drivers/gx_gfx.c mode change 100755 => 100644 gfx/drivers/psp1_gfx.c mode change 100755 => 100644 gfx/drivers_context/ps3_ctx.c mode change 100755 => 100644 gfx/image/image.c mode change 100755 => 100644 griffin/griffin.c mode change 100755 => 100644 input/drivers/ps3_input.c mode change 100755 => 100644 input/drivers/psp_input.c mode change 100755 => 100644 input/drivers_joypad/psp_joypad.c mode change 100755 => 100644 input/input_driver.c mode change 100755 => 100644 input/input_joypad_driver.c mode change 100755 => 100644 libretro-common/include/retro_miscellaneous.h mode change 100755 => 100644 libretro-common/include/rthreads/rthreads.h mode change 100755 => 100644 logger/netlogger/logger.c diff --git a/audio/drivers/gx_audio.c b/audio/drivers/gx_audio.c old mode 100755 new mode 100644 diff --git a/audio/drivers/ps3_audio.c b/audio/drivers/ps3_audio.c old mode 100755 new mode 100644 diff --git a/defines/gx_defines.h b/defines/gx_defines.h old mode 100755 new mode 100644 diff --git a/defines/ps3_defines.h b/defines/ps3_defines.h old mode 100755 new mode 100644 diff --git a/defines/psp_defines.h b/defines/psp_defines.h old mode 100755 new mode 100644 diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m old mode 100755 new mode 100644 diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c old mode 100755 new mode 100644 diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c old mode 100755 new mode 100644 diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c old mode 100755 new mode 100644 diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c old mode 100755 new mode 100644 diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c old mode 100755 new mode 100644 diff --git a/gfx/drivers_context/ps3_ctx.c b/gfx/drivers_context/ps3_ctx.c old mode 100755 new mode 100644 diff --git a/gfx/image/image.c b/gfx/image/image.c old mode 100755 new mode 100644 diff --git a/griffin/griffin.c b/griffin/griffin.c old mode 100755 new mode 100644 diff --git a/input/drivers/ps3_input.c b/input/drivers/ps3_input.c old mode 100755 new mode 100644 diff --git a/input/drivers/psp_input.c b/input/drivers/psp_input.c old mode 100755 new mode 100644 diff --git a/input/drivers_joypad/psp_joypad.c b/input/drivers_joypad/psp_joypad.c old mode 100755 new mode 100644 diff --git a/input/input_driver.c b/input/input_driver.c old mode 100755 new mode 100644 diff --git a/input/input_joypad_driver.c b/input/input_joypad_driver.c old mode 100755 new mode 100644 diff --git a/libretro-common/include/retro_miscellaneous.h b/libretro-common/include/retro_miscellaneous.h old mode 100755 new mode 100644 diff --git a/libretro-common/include/rthreads/rthreads.h b/libretro-common/include/rthreads/rthreads.h old mode 100755 new mode 100644 diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c old mode 100755 new mode 100644 From b892f8252bb0f1d73345231f169ccd5752fec6dd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 12:08:30 +0200 Subject: [PATCH 185/822] (PSP1) Audio - cleanup --- audio/drivers/psp1_audio.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/audio/drivers/psp1_audio.c b/audio/drivers/psp1_audio.c index 6d42872452..2ac9897234 100644 --- a/audio/drivers/psp1_audio.c +++ b/audio/drivers/psp1_audio.c @@ -49,14 +49,14 @@ static int audioMainLoop(SceSize args, void* argp) { /* Get a non-volatile copy. */ uint16_t readPos = psp->readPos; + bool cond = ((uint16_t)(psp->writePos - readPos) & AUDIO_BUFFER_SIZE_MASK) + < (AUDIO_OUT_COUNT * 2); - if (((uint16_t)(psp->writePos - readPos) & AUDIO_BUFFER_SIZE_MASK) - < (AUDIO_OUT_COUNT * 2)) - sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, psp->zeroBuffer); - else + sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, cond ? (psp->zeroBuffer) + : (psp->buffer + readPos)); + + if (!cond) { - sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, - psp->buffer + readPos); readPos += AUDIO_OUT_COUNT; readPos &= AUDIO_BUFFER_SIZE_MASK; psp->readPos = readPos; From 273788cdf985f4fffca7b3bf5ced5ec1bb00615e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 12:18:45 +0200 Subject: [PATCH 186/822] (Vita) Attempt to reuse PSP1 audio driver for Vita --- audio/audio_driver.c | 4 +- audio/audio_driver.h | 2 +- audio/drivers/{psp1_audio.c => psp_audio.c} | 48 ++++++++++++++------- config.def.h | 6 +-- configuration.c | 4 +- griffin/griffin.c | 4 +- 6 files changed, 43 insertions(+), 25 deletions(-) rename audio/drivers/{psp1_audio.c => psp_audio.c} (84%) diff --git a/audio/audio_driver.c b/audio/audio_driver.c index e6929470f3..4da3311a1a 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -117,8 +117,8 @@ static const audio_driver_t *audio_drivers[] = { #ifdef EMSCRIPTEN &audio_rwebaudio, #endif -#ifdef PSP - &audio_psp1, +#if defined(PSP) || defined(VITA) + &audio_psp, #endif #ifdef _3DS &audio_ctr, diff --git a/audio/audio_driver.h b/audio/audio_driver.h index f6ffd272d3..df5f265b71 100644 --- a/audio/audio_driver.h +++ b/audio/audio_driver.h @@ -88,7 +88,7 @@ extern audio_driver_t audio_coreaudio; extern audio_driver_t audio_xenon360; extern audio_driver_t audio_ps3; extern audio_driver_t audio_gx; -extern audio_driver_t audio_psp1; +extern audio_driver_t audio_psp; extern audio_driver_t audio_ctr; extern audio_driver_t audio_rwebaudio; extern audio_driver_t audio_null; diff --git a/audio/drivers/psp1_audio.c b/audio/drivers/psp_audio.c similarity index 84% rename from audio/drivers/psp1_audio.c rename to audio/drivers/psp_audio.c index 2ac9897234..a94b7b0be6 100644 --- a/audio/drivers/psp1_audio.c +++ b/audio/drivers/psp_audio.c @@ -18,11 +18,18 @@ #include "../../general.h" #include "../../driver.h" +#ifdef VITA +#include +#include +#include +#include +#else #include #include +#endif #include -typedef struct psp1_audio +typedef struct psp_audio { bool nonblocking; uint32_t* buffer; @@ -33,7 +40,7 @@ typedef struct psp1_audio volatile bool running; volatile uint16_t readPos; volatile uint16_t writePos; -} psp1_audio_t; +} psp_audio_t; #define AUDIO_OUT_COUNT 512u #define AUDIO_BUFFER_SIZE (1u<<13u) @@ -41,9 +48,13 @@ typedef struct psp1_audio static int audioMainLoop(SceSize args, void* argp) { - psp1_audio_t* psp = *((psp1_audio_t**)argp); + psp_audio_t* psp = *((psp_audio_t**)argp); +#ifdef VITA + sceAudioOutOpenPort(0, AUDIO_OUT_COUNT, psp->rate, 2); +#else sceAudioSRCChReserve(AUDIO_OUT_COUNT, psp->rate, 2); +#endif while (psp->running) { @@ -52,8 +63,13 @@ static int audioMainLoop(SceSize args, void* argp) bool cond = ((uint16_t)(psp->writePos - readPos) & AUDIO_BUFFER_SIZE_MASK) < (AUDIO_OUT_COUNT * 2); +#ifdef VITA + sceAudioOutOutput(0, + cond ? psp->zeroBuffer : (psp->buffer + readPos)); +#else sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, cond ? (psp->zeroBuffer) : (psp->buffer + readPos)); +#endif if (!cond) { @@ -63,7 +79,9 @@ static int audioMainLoop(SceSize args, void* argp) } } +#ifndef VITA sceAudioSRCChRelease(); +#endif sceKernelExitThread(0); return 0; } @@ -71,7 +89,7 @@ static int audioMainLoop(SceSize args, void* argp) static void *psp_audio_init(const char *device, unsigned rate, unsigned latency) { - psp1_audio_t *psp = (psp1_audio_t*)calloc(1, sizeof(psp1_audio_t)); + psp_audio_t *psp = (psp_audio_t*)calloc(1, sizeof(psp_audio_t)); if (!psp) return NULL; @@ -96,7 +114,7 @@ static void *psp_audio_init(const char *device, psp->nonblocking = false; psp->running = true; - sceKernelStartThread(psp->thread, sizeof(psp1_audio_t*), &psp); + sceKernelStartThread(psp->thread, sizeof(psp_audio_t*), &psp); return psp; } @@ -104,7 +122,7 @@ static void *psp_audio_init(const char *device, static void psp_audio_free(void *data) { SceUInt timeout = 100000; - psp1_audio_t* psp = (psp1_audio_t*)data; + psp_audio_t* psp = (psp_audio_t*)data; if(!psp) return; @@ -121,7 +139,7 @@ static void psp_audio_free(void *data) static ssize_t psp_audio_write(void *data, const void *buf, size_t size) { uint16_t sampleCount; - psp1_audio_t* psp = (psp1_audio_t*)data; + psp_audio_t* psp = (psp_audio_t*)data; uint16_t writePos = psp->writePos; sampleCount= size / sizeof(uint32_t); @@ -153,7 +171,7 @@ static ssize_t psp_audio_write(void *data, const void *buf, size_t size) static bool psp_audio_alive(void *data) { - psp1_audio_t* psp = (psp1_audio_t*)data; + psp_audio_t* psp = (psp_audio_t*)data; if (!psp) return false; return psp->running; @@ -163,7 +181,7 @@ static bool psp_audio_stop(void *data) { SceKernelThreadRunStatus runStatus; SceUInt timeout = 100000; - psp1_audio_t* psp = (psp1_audio_t*)data; + psp_audio_t* psp = (psp_audio_t*)data; runStatus.size = sizeof(SceKernelThreadRunStatus); @@ -182,7 +200,7 @@ static bool psp_audio_stop(void *data) static bool psp_audio_start(void *data) { SceKernelThreadRunStatus runStatus; - psp1_audio_t* psp = (psp1_audio_t*)data; + psp_audio_t* psp = (psp_audio_t*)data; runStatus.size = sizeof(SceKernelThreadRunStatus); @@ -194,14 +212,14 @@ static bool psp_audio_start(void *data) psp->running = true; - sceKernelStartThread(psp->thread, sizeof(psp1_audio_t*), &psp); + sceKernelStartThread(psp->thread, sizeof(psp_audio_t*), &psp); return true; } static void psp_audio_set_nonblock_state(void *data, bool toggle) { - psp1_audio_t* psp = (psp1_audio_t*)data; + psp_audio_t* psp = (psp_audio_t*)data; if (psp) psp->nonblocking = toggle; } @@ -215,7 +233,7 @@ static bool psp_audio_use_float(void *data) static size_t psp_write_avail(void *data) { /* TODO */ - psp1_audio_t* psp = (psp1_audio_t*)data; + psp_audio_t* psp = (psp_audio_t*)data; return AUDIO_BUFFER_SIZE - ((uint16_t) (psp->writePos - psp->readPos) & AUDIO_BUFFER_SIZE_MASK); } @@ -227,7 +245,7 @@ static size_t psp_buffer_size(void *data) } -audio_driver_t audio_psp1 = { +audio_driver_t audio_psp = { psp_audio_init, psp_audio_write, psp_audio_stop, @@ -236,7 +254,7 @@ audio_driver_t audio_psp1 = { psp_audio_set_nonblock_state, psp_audio_free, psp_audio_use_float, - "psp1", + "psp", psp_write_avail, psp_buffer_size, }; diff --git a/config.def.h b/config.def.h index 3b77386162..0d62f33a50 100644 --- a/config.def.h +++ b/config.def.h @@ -66,7 +66,7 @@ enum AUDIO_XENON360, AUDIO_WII, AUDIO_RWEBAUDIO, - AUDIO_PSP1, + AUDIO_PSP, AUDIO_CTR, AUDIO_NULL, @@ -167,8 +167,8 @@ enum #define AUDIO_DEFAULT_DRIVER AUDIO_XENON360 #elif defined(GEKKO) #define AUDIO_DEFAULT_DRIVER AUDIO_WII -#elif defined(PSP) -#define AUDIO_DEFAULT_DRIVER AUDIO_PSP1 +#elif defined(PSP) || defined(VITA) +#define AUDIO_DEFAULT_DRIVER AUDIO_PSP #elif defined(_3DS) #define AUDIO_DEFAULT_DRIVER AUDIO_CTR #elif defined(HAVE_ALSA) && defined(HAVE_VIDEOCORE) diff --git a/configuration.c b/configuration.c index 8f6174bfbd..a3e050fde6 100644 --- a/configuration.c +++ b/configuration.c @@ -114,8 +114,8 @@ const char *config_get_default_audio(void) return "ps3"; case AUDIO_WII: return "gx"; - case AUDIO_PSP1: - return "psp1"; + case AUDIO_PSP: + return "psp"; case AUDIO_CTR: return "ctr"; case AUDIO_RWEBAUDIO: diff --git a/griffin/griffin.c b/griffin/griffin.c index 63eee26705..36dd9c0a78 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -472,8 +472,8 @@ AUDIO #include "../audio/drivers/gx_audio.c" #elif defined(EMSCRIPTEN) #include "../audio/drivers/rwebaudio.c" -#elif defined(PSP) -#include "../audio/drivers/psp1_audio.c" +#elif defined(PSP) || defined(VITA) +#include "../audio/drivers/psp_audio.c" #elif defined(_3DS) #include "../audio/drivers/ctr_audio.c" #endif From 536b7fad0b41a805a7f7720af68d076433da30cf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 12:33:27 +0200 Subject: [PATCH 187/822] (platform_psp.c) Add some Vita ifdefs --- frontend/drivers/platform_psp.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 3bcd923a81..f8470422df 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -15,6 +15,7 @@ */ #ifdef VITA +#include #include #else #include @@ -41,7 +42,11 @@ #include "../../psp1/kernel_functions.h" #endif -PSP_MODULE_INFO("RetroArch PSP", 0, 1, 1); +#ifdef VITA +PSP2_MODULE_INFO(0, 0, "RetroArch"); +#else +PSP_MODULE_INFO("RetroArch", 0, 1, 1); +#endif PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER|THREAD_ATTR_VFPU); #ifdef BIG_STACK PSP_MAIN_THREAD_STACK_SIZE_KB(4*1024); @@ -252,20 +257,25 @@ static int frontend_psp_get_rating(void) static enum frontend_powerstate frontend_psp_get_powerstate(int *seconds, int *percent) { enum frontend_powerstate ret = FRONTEND_POWERSTATE_NONE; +#ifndef VITA int battery = scePowerIsBatteryExist(); /* this function does not exist on Vita? */ +#endif int plugged = scePowerIsPowerOnline(); int charging = scePowerIsBatteryCharging(); *percent = scePowerGetBatteryLifePercent(); *seconds = scePowerGetBatteryLifeTime() * 60; +#ifndef VITA if (!battery) { ret = FRONTEND_POWERSTATE_NO_SOURCE; *seconds = -1; *percent = -1; } - else if (charging) + else +#endif + if (charging) ret = FRONTEND_POWERSTATE_CHARGING; else if (plugged) ret = FRONTEND_POWERSTATE_CHARGED; From e57202ff906316abef4737e275a660712802467d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 14:47:39 +0200 Subject: [PATCH 188/822] (Vita) psp_audio.c - Some more work --- audio/drivers/psp_audio.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/audio/drivers/psp_audio.c b/audio/drivers/psp_audio.c index a94b7b0be6..99fb780f02 100644 --- a/audio/drivers/psp_audio.c +++ b/audio/drivers/psp_audio.c @@ -51,7 +51,7 @@ static int audioMainLoop(SceSize args, void* argp) psp_audio_t* psp = *((psp_audio_t**)argp); #ifdef VITA - sceAudioOutOpenPort(0, AUDIO_OUT_COUNT, psp->rate, 2); + int port = sceAudioOutOpenPort(PSP2_AUDIO_OUT_PORT_TYPE_MAIN, AUDIO_OUT_COUNT, psp->rate, 2); #else sceAudioSRCChReserve(AUDIO_OUT_COUNT, psp->rate, 2); #endif @@ -79,7 +79,9 @@ static int audioMainLoop(SceSize args, void* argp) } } -#ifndef VITA +#ifdef VITA + sceAudioOutReleasePort(port); +#else sceAudioSRCChRelease(); #endif sceKernelExitThread(0); From d80b24f3802323d2525ffcf2d50e5bc273a3e219 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 14:59:37 +0200 Subject: [PATCH 189/822] (Vita) We can implement mutexes properly for Vita --- libretro-common/rthreads/psp_pthread.h | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/libretro-common/rthreads/psp_pthread.h b/libretro-common/rthreads/psp_pthread.h index fb681c49ea..66e9010e62 100644 --- a/libretro-common/rthreads/psp_pthread.h +++ b/libretro-common/rthreads/psp_pthread.h @@ -24,9 +24,13 @@ #ifndef _PSP_PTHREAD_WRAP__ #define _PSP_PTHREAD_WRAP__ +#ifdef VITA +#include +#else #include #include #include +#endif #include #include @@ -78,24 +82,40 @@ static INLINE int pthread_mutex_init(pthread_mutex_t *mutex, { sprintf(name_buffer, "0x%08X", (uint32_t) mutex); +#ifdef VITA + return *mutex = sceKernelCreateMutex(name_buffer, 0, 0, 0); +#else return *mutex = sceKernelCreateSema(name_buffer, 0, 1, 1, NULL); +#endif } static INLINE int pthread_mutex_destroy(pthread_mutex_t *mutex) { +#ifdef VITA + return sceKernelDeleteMutex(*mutex); +#else return sceKernelDeleteSema(*mutex); +#endif } static INLINE int pthread_mutex_lock(pthread_mutex_t *mutex) { - //FIXME: stub +#ifdef VITA + return sceKernelLockMutex(*mutex, 1, 0); +#else + /* FIXME: stub */ return 1; +#endif } static INLINE int pthread_mutex_unlock(pthread_mutex_t *mutex) { - //FIXME: stub +#ifdef VITA + return sceKernelUnlockMutex(*mutex, 1); +#else + /* FIXME: stub */ return 1; +#endif } From 1ed7c4ef37546b9931480dcceb45e7f283899f8b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 15:11:01 +0200 Subject: [PATCH 190/822] Use C comment --- libretro-common/rthreads/psp_pthread.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/rthreads/psp_pthread.h b/libretro-common/rthreads/psp_pthread.h index 66e9010e62..7f44cf5cb5 100644 --- a/libretro-common/rthreads/psp_pthread.h +++ b/libretro-common/rthreads/psp_pthread.h @@ -20,7 +20,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -// FIXME: unfinished, mutexes and condvars basically a stub. +/* FIXME: unfinished on PSP, mutexes and condition variables basically a stub. */ #ifndef _PSP_PTHREAD_WRAP__ #define _PSP_PTHREAD_WRAP__ From 7031582b224bbe97a0dc35d29ae7c0feadc4cf20 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 15:27:20 +0200 Subject: [PATCH 191/822] (libretro-common) Include preliminary memmap.c --- libretro-common/include/memmap.h | 41 +++++++++ libretro-common/memmap/memmap.c | 141 +++++++++++++++++++++++++++++++ 2 files changed, 182 insertions(+) create mode 100644 libretro-common/include/memmap.h create mode 100644 libretro-common/memmap/memmap.c diff --git a/libretro-common/include/memmap.h b/libretro-common/include/memmap.h new file mode 100644 index 0000000000..90b9eef84d --- /dev/null +++ b/libretro-common/include/memmap.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2010-2015 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (memmap.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _LIBRETRO_MEMMAP_H +#define _LIBRETRO_MEMMAP_H + +#if defined(__CELLOS_LV2__) || defined(PSP) || defined(GEKKO) || defined(VITA) || defined(_XBOX) +/* No mman available */ +#elif defined(_WIN32) && !defined(_XBOX) +#include +#include +#include +#else +#define HAVE_MMAP +#include +#endif + +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif + +#endif diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c new file mode 100644 index 0000000000..b13e287136 --- /dev/null +++ b/libretro-common/memmap/memmap.c @@ -0,0 +1,141 @@ +/* Copyright (C) 2010-2015 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (memmap.c). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include + +#ifdef _WIN32 +#define MAP_SHARED 0x01 +#define MAP_PRIVATE 0x02 +#define MAP_ANONYMOUS 0x20 +#define MAP_ANON MAP_ANONYMOUS +#define MAP_FAILED ((void *) -1) +#define PROT_READ 0x1 +#define PROT_WRITE 0x2 +/* This flag is only available in WinXP+ */ +#ifdef FILE_MAP_EXECUTE +#define PROT_EXEC 0x4 +#else +#define PROT_EXEC 0x0 +#define FILE_MAP_EXECUTE 0 +#endif + +#ifdef __USE_FILE_OFFSET64 +# define DWORD_HI(x) (x >> 32) +# define DWORD_LO(x) ((x) & 0xffffffff) +#else +# define DWORD_HI(x) (0) +# define DWORD_LO(x) (x) +#endif + +static void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) +{ + uint32_t flProtect, dwDesiredAccess; + off_t end; + HANDLE mmap_fd, h; + void *ret; + + if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC)) + return MAP_FAILED; + + if (fd == -1) + { + if (!(flags & MAP_ANON) || offset) + return MAP_FAILED; + } + else if (flags & MAP_ANON) + return MAP_FAILED; + + if (prot & PROT_WRITE) + { + flProtect = PAGE_READWRITE; + if (prot & PROT_EXEC) + flProtect = PAGE_EXECUTE_READWRITE; + } + else if (prot & PROT_EXEC) + { + flProtect = PAGE_EXECUTE; + if (prot & PROT_READ) + flProtect = PAGE_EXECUTE_READ; + } + else + flProtect = PAGE_READONLY; + + end = length + offset; + + if (fd == -1) + mmap_fd = INVALID_HANDLE_VALUE; + else + mmap_fd = (HANDLE)_get_osfhandle(fd); + + h = CreateFileMapping(mmap_fd, NULL, flProtect, DWORD_HI(end), DWORD_LO(end), NULL); + if (h == NULL) + return MAP_FAILED; + + dwDesiredAccess = FILE_MAP_READ; + if (prot & PROT_WRITE) + dwDesiredAccess = FILE_MAP_WRITE; + if (prot & PROT_EXEC) + dwDesiredAccess |= FILE_MAP_EXECUTE; + if (flags & MAP_PRIVATE) + dwDesiredAccess |= FILE_MAP_COPY; + ret = MapViewOfFile(h, dwDesiredAccess, DWORD_HI(offset), DWORD_LO(offset), length); + + if (ret == NULL) + { + CloseHandle(h); + ret = MAP_FAILED; + } + + return ret; +} + +static void munmap(void *addr, size_t length) +{ + UnmapViewOfFile(addr); + /* ruh-ro, we leaked handle from CreateFileMapping() ... */ +} +#elif !defined(HAVE_MMAP) +#define PROT_EXEC 0x04 +#define MAP_FAILED 0 +#define PROT_READ 0 +#define PROT_WRITE 0 +#define MAP_PRIVATE 0 +#define MAP_ANONYMOUS 0 + +void* mmap(void *desired_addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off) +{ + return malloc(len); +} + +void munmap(void *base_addr, size_t len) +{ + free(base_addr); +} + +int mprotect(void *addr, size_t len, int prot) +{ + /* stub - not really needed at this point since this codepath has no dynarecs */ + return 0; +} + +#endif + From 7f615fc7812e52b04733a77a686ccab99afe4923 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 15:45:15 +0200 Subject: [PATCH 192/822] (memmap) Create wrapper functions memprotect and memsync --- libretro-common/include/memmap.h | 14 +++++++++- libretro-common/memmap/memmap.c | 47 +++++++++++++++++++++++++++----- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/libretro-common/include/memmap.h b/libretro-common/include/memmap.h index 90b9eef84d..511caee783 100644 --- a/libretro-common/include/memmap.h +++ b/libretro-common/include/memmap.h @@ -30,7 +30,7 @@ #include #include #else -#define HAVE_MMAP +#define HAVE_MMAN #include #endif @@ -38,4 +38,16 @@ #define MAP_ANONYMOUS MAP_ANON #endif +#if !defined(HAVE_MMAN) +void* mmap(void *desired_addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off); + +void munmap(void *base_addr, size_t len); + +int mprotect(void *addr, size_t len, int prot); +#endif + +int memsync(void *start, void *end); + +int memprotect(void *addr, size_t len); + #endif diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index b13e287136..c9540a064b 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -113,13 +113,24 @@ static void munmap(void *addr, size_t length) UnmapViewOfFile(addr); /* ruh-ro, we leaked handle from CreateFileMapping() ... */ } -#elif !defined(HAVE_MMAP) -#define PROT_EXEC 0x04 -#define MAP_FAILED 0 -#define PROT_READ 0 -#define PROT_WRITE 0 -#define MAP_PRIVATE 0 -#define MAP_ANONYMOUS 0 + +static int mprotect(void *addr, size_t len, int prot) +{ + /* Incomplete, just assumes PAGE_EXECUTE_READWRITE right now + * instead of correctly handling prot */ + prot = 0; + if (prot & (PROT_READ | PROT_WRITE | PROT_EXEC)) + prot = PAGE_EXECUTE_READWRITE; + return VirtualProtect(addr, len, prot, 0); +} + +#elif !defined(HAVE_MMAN) +#define PROT_EXEC 0x04 +#define MAP_FAILED 0 +#define PROT_READ 0 +#define PROT_WRITE 0 +#define MAP_PRIVATE 0 +#define MAP_ANONYMOUS 0 void* mmap(void *desired_addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off) { @@ -139,3 +150,25 @@ int mprotect(void *addr, size_t len, int prot) #endif +int memsync(void *start, void *end) +{ + size_t len = (char*)end - (char*)start; + (void)len; +#if defined(__MACH__) && defined(__arm__) + sys_dcache_flush(start ,len); + sys_icache_invalidate(start, len); + return 0; +#elif defined(__arm__) && !defined(__QNX__) + __clear_cache(start, end); + return 0; +#elif defined(HAVE_MMAN) + return msync(start, len, MS_SYNC | MS_CACHE_ONLY | MS_INVALIDATE_ICACHE); +#else + return 0; +#endif +} + +int memprotect(void *addr, size_t len) +{ + return mprotect(addr, len, PROT_READ | PROT_WRITE | PROT_EXEC); +} From d4c0a09a0347bbd302af7dc57556f2b609373c23 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 15:48:52 +0200 Subject: [PATCH 193/822] Make mman functions public in memmap.h header for Win32 --- libretro-common/include/memmap.h | 2 +- libretro-common/memmap/memmap.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libretro-common/include/memmap.h b/libretro-common/include/memmap.h index 511caee783..492ace6636 100644 --- a/libretro-common/include/memmap.h +++ b/libretro-common/include/memmap.h @@ -38,7 +38,7 @@ #define MAP_ANONYMOUS MAP_ANON #endif -#if !defined(HAVE_MMAN) +#if !defined(HAVE_MMAN) || defined(_WIN32) void* mmap(void *desired_addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off); void munmap(void *base_addr, size_t len); diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index c9540a064b..cfc4974459 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -46,7 +46,7 @@ # define DWORD_LO(x) (x) #endif -static void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) +void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) { uint32_t flProtect, dwDesiredAccess; off_t end; @@ -108,13 +108,13 @@ static void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t return ret; } -static void munmap(void *addr, size_t length) +void munmap(void *addr, size_t length) { UnmapViewOfFile(addr); /* ruh-ro, we leaked handle from CreateFileMapping() ... */ } -static int mprotect(void *addr, size_t len, int prot) +int mprotect(void *addr, size_t len, int prot) { /* Incomplete, just assumes PAGE_EXECUTE_READWRITE right now * instead of correctly handling prot */ From 2d8ef11944ea223f03c4978f1d81b456d278e5ef Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 19:24:56 +0200 Subject: [PATCH 194/822] (sdl2_gfx.c) Check if pointer is not NULL first --- gfx/drivers/sdl2_gfx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c index eeae213622..e371fc78db 100644 --- a/gfx/drivers/sdl2_gfx.c +++ b/gfx/drivers/sdl2_gfx.c @@ -605,7 +605,9 @@ static void sdl2_gfx_free(void *data) static void sdl2_gfx_set_rotation(void *data, unsigned rotation) { sdl2_video_t *vid = (sdl2_video_t*)data; - vid->rotation = 270 * rotation; + + if (vid) + vid->rotation = 270 * rotation; } static void sdl2_gfx_viewport_info(void *data, struct video_viewport *vp) From 0975097ccf310937faa50dd68e72de393e903368 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 19:29:16 +0200 Subject: [PATCH 195/822] Add specific ifdef rule for Vita --- frontend/drivers/platform_psp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index f8470422df..79766a084b 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -38,7 +38,7 @@ #include "../../defines/psp_defines.h" #include "../../general.h" -#if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) +#if defined(HAVE_KERNEL_PRX) || (defined(IS_SALAMANDER) && !defined(VITA)) #include "../../psp1/kernel_functions.h" #endif From 27d345c77c32b826fa09a9308a49ed0769b1f7c4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 19:30:30 +0200 Subject: [PATCH 196/822] (Vita) Add Vita ifndef --- frontend/drivers/platform_psp.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 79766a084b..29889ebd97 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -186,9 +186,16 @@ static void frontend_psp_init(void *data) { #ifndef IS_SALAMANDER (void)data; + +#ifndef VITA + /* TODO/FIXME - Err on the safe side for now and + * assume these aren't there with the PSP2/Vita SDKs. + */ + /* initialize debug screen */ pspDebugScreenInit(); pspDebugScreenClear(); +#endif setup_callback(); From 57419bea8cc1ed2db062ea9736c0811e2a2259c0 Mon Sep 17 00:00:00 2001 From: Radius Date: Wed, 12 Aug 2015 20:17:19 +0100 Subject: [PATCH 197/822] remove the generic I/O hack, it's not working reliably --- android/phoenix/project.properties | 2 +- input/drivers/android_input.c | 56 +++++++++++++++++++----------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/android/phoenix/project.properties b/android/phoenix/project.properties index 610052c20f..64ab355f81 100644 --- a/android/phoenix/project.properties +++ b/android/phoenix/project.properties @@ -11,7 +11,7 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-21 +target=android-22 android.library.reference.1=libs/appcompat android.library=false android.library.reference.2=libs/googleplay diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index d1143a20d5..5f0f039b9e 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -637,28 +637,47 @@ static void handle_hotplug(android_input_t *android, else if (strstr(device_name, "SideWinder")) strlcpy(name_buf, "SideWinder Classic", sizeof(name_buf)); } - /* Make sure generic I/O devices are always bound to port one - * should be easier to add these instead of one hack per device - */ - else if (strstr(device_name, "Amazon Fire TV Remote") - || strstr(device_name, "Nexus Remote") - || strstr(device_name, "SHIELD Remote") - || strstr(device_name, "gpio") - || strstr(device_name, "Virtual")) + else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.01")) + { + /* Built-in shield controller is always user 1 */ + *port = 0; + strlcpy(name_buf, device_name, sizeof(name_buf)); + } + else if ((strstr(device_name, "Virtual") || + strstr(device_name, "gpio")) && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.01")) + { + /* If built-in shield controller is detected bind the virtual and gpio devices to the same port */ + *port = 0; + strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); + } + else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.03") && !strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03")) { *port = 0; - if (strstr(device_name, "Virtual") || (strstr(device_name, "gpio"))) - strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); - else - strlcpy(name_buf, device_name, sizeof(name_buf)); + strlcpy(name_buf, device_name, sizeof(name_buf)); + } + else if (strstr(device_name, "Virtual") || + (strstr(device_name, "gpio") && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03"))) + { + /* If the shield controller is detected bind the virtual and gpio devices to the same port*/ + *port = 0; + strlcpy(name_buf, "NVIDIA SHIELD Controller", sizeof(name_buf)); + } + else if (strstr(device_name, "Amazon Fire TV Remote") + || strstr(device_name, "Nexus Remote") + || strstr(device_name, "SHIELD Remote")) + { + /* hack for remote control type devices, set them always to port 0 */ + *port = 0; + strlcpy(name_buf, device_name, sizeof(name_buf)); } else if ( *port==1 && ( strstr(android->pad_states[0].name,"Amazon Fire TV Remote") || strstr(android->pad_states[0].name,"Nexus Remote") - || strstr(android->pad_states[0].name,"SHIELD Remote") - || strstr(android->pad_states[0].name,"Generic I/O Device"))) + || strstr(android->pad_states[0].name,"SHIELD Remote"))) { - /* then, when binding a new controller in port 1 and one of those remotes - * was bound to port 0, overwrite that binding + /* and then when we are binding a new controller in port 1 and one of those remotes + * was bound to port 0, bind the device as port 0 too, it causes all the controllers to + * rebind on the first button press but at least the remotes can be used to navigate + * the user interface */ *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); @@ -700,10 +719,7 @@ static void handle_hotplug(android_input_t *android, settings->input.vid[*port] = params.vid; strlcpy(params.driver, android_joypad.ident, sizeof(params.driver)); - - // Don't try to autoconfigure GPIO devices - if (!strstr(android->pad_states[0].name,"Generic I/O Device")) - autoconfigured = input_config_autoconfigure_joypad(¶ms); + autoconfigured = input_config_autoconfigure_joypad(¶ms); if (autoconfigured) { From f6e25655c953fb70aa0dc12ded184eb1605ab2e3 Mon Sep 17 00:00:00 2001 From: Radius Date: Thu, 13 Aug 2015 01:13:24 +0100 Subject: [PATCH 198/822] reimplement the shield controller workarounds --- input/drivers/android_input.c | 90 +++++++++++++++++++++-------------- input/input_autodetect.c | 8 +++- 2 files changed, 61 insertions(+), 37 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 5f0f039b9e..65c3d01ba6 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -441,8 +441,8 @@ static void *android_input_init(void) return android; } -static int zeus_id = -1; -static int zeus_second_id = -1; +static int xperia1 = -1; +static int xperia2 = -1; static int archos1 = -1; static int archos2 = -1; @@ -581,22 +581,38 @@ static void handle_hotplug(android_input_t *android, return; } - /* FIXME: Ugly hack, see other FIXME note below. */ + /* FIXME - per-device hacks for nVidia Shield, Xperia Play and others + * For Xperia Play We need to keep 'count' of the amount of similar devices + * and group them in a single port. + * + * For the NVIDIA Shield we must make sure that the built-in controllers always + * map to the port + * + * For TTT HT - keep track of how many of these 'pads' are already + * connected, and based on that, assign one of them to be User 1 and + * the other to be User 2. + * + * If this is finally implemented right, then these port conditionals can go. + */ + + /* Xperia Play */ if (strstr(device_name, "keypad-game-zeus") || strstr(device_name, "keypad-zeus")) { - if (zeus_id < 0) + if (xperia1 < 0) { RARCH_LOG("zeus_pad 1 detected: %u\n", id); - zeus_id = id; + xperia1 = id; } else { RARCH_LOG("zeus_pad 2 detected: %u\n", id); - zeus_second_id = id; + xperia2 = id; } strlcpy(name_buf, device_name, sizeof(name_buf)); } + + /* Archos Gamepad */ else if (strstr(device_name, "joy_key") || strstr(device_name, "joystick")) { if (archos1 < 0) @@ -606,30 +622,21 @@ static void handle_hotplug(android_input_t *android, *port = 0; strlcpy(name_buf, "Archos Gamepad", sizeof(name_buf)); } - /* followed by a 4 (hex) char HW id */ + else if (strstr(device_name, "iControlPad-")) strlcpy(name_buf, "iControlPad HID Joystick profile", sizeof(name_buf)); + else if (strstr(device_name, "TTT THT Arcade console 2P USB Play")) { - //FIXME - need to do a similar thing here as we did for nVidia Shield - //and Xperia Play. We need to keep 'count' of the amount of similar (grouped) - //devices. - // - //For Xperia Play - count similar devices and bind them to the same 'user' - //port - // - //For TTT HT - keep track of how many of these 'pads' are already - //connected, and based on that, assign one of them to be User 1 and - //the other to be User 2. - // - //If this is finally implemented right, then these port conditionals can go. if (*port == 0) strlcpy(name_buf, "TTT THT Arcade (User 1)", sizeof(name_buf)); else if (*port == 1) strlcpy(name_buf, "TTT THT Arcade (User 2)", sizeof(name_buf)); } + else if (strstr(device_name, "360 Wireless")) strlcpy(name_buf, "XBox 360 Wireless", sizeof(name_buf)); + else if (strstr(device_name, "Microsoft")) { if (strstr(device_name, "Dual Strike")) @@ -637,36 +644,51 @@ static void handle_hotplug(android_input_t *android, else if (strstr(device_name, "SideWinder")) strlcpy(name_buf, "SideWinder Classic", sizeof(name_buf)); } + + /* NVIDIA Shield Portable + * Built-in controller is always user 1 + * Back button is on a separate HID device with no VID/PID + * so we bind that controller to user 1 too and overwrite + * whenever a gamepad button is pressed + */ else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.01")) { - /* Built-in shield controller is always user 1 */ *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); } - else if ((strstr(device_name, "Virtual") || - strstr(device_name, "gpio")) && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.01")) + else if ((strstr(device_name, "Virtual") || strstr(device_name, "gpio")) && + strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.01")) { - /* If built-in shield controller is detected bind the virtual and gpio devices to the same port */ *port = 0; strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); } - else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.03") && !strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03")) + + /* Other NVIDIA Shield Devices + * NVIDIA button on the controller is on a separate HID device + * so whenever that button is hit, bind that device to user 1 and + * overwrite it whenever a SHIELD Controller button is pressed + */ + else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.03") + && !strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03")) { *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); } - else if (strstr(device_name, "Virtual") || - (strstr(device_name, "gpio") && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03"))) + else if ((strstr(device_name, "Virtual") || strstr(device_name, "gpio")) + && strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03")) { - /* If the shield controller is detected bind the virtual and gpio devices to the same port*/ *port = 0; strlcpy(name_buf, "NVIDIA SHIELD Controller", sizeof(name_buf)); } + + /* Other uncommon devices + * These are mostly remote control type devices, bind them always to port 01 + * And overwrite the binding whenever a controller button is pressed + */ else if (strstr(device_name, "Amazon Fire TV Remote") || strstr(device_name, "Nexus Remote") || strstr(device_name, "SHIELD Remote")) { - /* hack for remote control type devices, set them always to port 0 */ *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); } @@ -674,22 +696,20 @@ static void handle_hotplug(android_input_t *android, || strstr(android->pad_states[0].name,"Nexus Remote") || strstr(android->pad_states[0].name,"SHIELD Remote"))) { - /* and then when we are binding a new controller in port 1 and one of those remotes - * was bound to port 0, bind the device as port 0 too, it causes all the controllers to - * rebind on the first button press but at least the remotes can be used to navigate - * the user interface - */ *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); } + else if ( strstr(device_name, "PLAYSTATION(R)3") || strstr(device_name, "Dualshock3") || strstr(device_name, "Sixaxis") ) strlcpy(name_buf, "PlayStation3", sizeof(name_buf)); + else if (strstr(device_name, "MOGA")) strlcpy(name_buf, "Moga IME", sizeof(name_buf)); + else if (device_name[0] != '\0') strlcpy(name_buf, device_name, sizeof(name_buf)); @@ -745,8 +765,8 @@ static int android_input_get_id(android_input_t *android, AInputEvent *event) int id = AInputEvent_getDeviceId(event); /* Needs to be cleaned up */ - if (id == zeus_second_id) - id = zeus_id; + if (id == xperia2) + id = xperia1; if (id == archos2) id = archos1; diff --git a/input/input_autodetect.c b/input/input_autodetect.c index e6a6662945..243a3ac639 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -134,8 +134,12 @@ static void input_autoconfigure_joypad_add( if (!strcmp(device_type,"remote")) { - snprintf(msg, sizeof(msg), "%s configured", - params->name); + if (display_name[0] != '\0' || strcmp(display_name, "")) + snprintf(msg, sizeof(msg), "%s configured", + display_name); + else + snprintf(msg, sizeof(msg), "%s configured", + params->name); if(!remote_is_bound) rarch_main_msg_queue_push(msg, 0, 60, false); From cc3b1fd49f7caad93480aee3e1fe6dc0374a9d8c Mon Sep 17 00:00:00 2001 From: Radius Date: Thu, 13 Aug 2015 02:06:15 +0100 Subject: [PATCH 199/822] minor fixes to the workaround --- input/drivers/android_input.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 65c3d01ba6..12b8cc1071 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -660,16 +660,19 @@ static void handle_hotplug(android_input_t *android, strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.01")) { *port = 0; - strlcpy(name_buf, "Generic I/O Device", sizeof(name_buf)); + strlcpy(name_buf, "NVIDIA SHIELD Portable", sizeof(name_buf)); } /* Other NVIDIA Shield Devices * NVIDIA button on the controller is on a separate HID device * so whenever that button is hit, bind that device to user 1 and * overwrite it whenever a SHIELD Controller button is pressed + * + * In this case we won't map back (4) to menu, instead we map the + * NVIDIA button (84) using an autoconf file */ else if (strstr(device_name, "NVIDIA Corporation NVIDIA Controller v01.03") - && !strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.03")) + && !strstr(android->pad_states[0].name,"NVIDIA Corporation NVIDIA Controller v01.0")) { *port = 0; strlcpy(name_buf, device_name, sizeof(name_buf)); From 638db98e7d867991ca953133df67e36a7276c221 Mon Sep 17 00:00:00 2001 From: Radius Date: Thu, 13 Aug 2015 03:14:53 +0100 Subject: [PATCH 200/822] fix the back as menu toggle option, autoconf was returning false even when a controller was succesfully configured... --- input/drivers/android_input.c | 3 +-- input/input_autodetect.c | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index 12b8cc1071..46d6fb63d0 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -729,7 +729,7 @@ static void handle_hotplug(android_input_t *android, if (settings->input.autodetect_enable) { - unsigned autoconfigured = false; + bool autoconfigured = false; autoconfig_params_t params = {{0}}; RARCH_LOG("Port %d: %s VID/PID: %d/%d\n", *port, name_buf, params.vid, params.pid); @@ -743,7 +743,6 @@ static void handle_hotplug(android_input_t *android, strlcpy(params.driver, android_joypad.ident, sizeof(params.driver)); autoconfigured = input_config_autoconfigure_joypad(¶ms); - if (autoconfigured) { if (settings->input.autoconf_binds[*port][RARCH_MENU_TOGGLE].joykey != 0) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 243a3ac639..99d048c431 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -227,6 +227,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( conf = config_file_new(list->elems[index].data); input_autoconfigure_joypad_add(conf, params); config_file_free(conf); + ret = 1; } else { From 4ae73d2a1bb60fd51c306f9df11f38b16dce390e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 13 Aug 2015 21:34:53 +0200 Subject: [PATCH 201/822] (Cocoa) Remove unused cocoa_settings.m and cocoatouch_browser.m --- ui/drivers/cocoa/cocoa_settings.m | 386 ----------------- ui/drivers/cocoa/cocoatouch_browser.m | 583 -------------------------- 2 files changed, 969 deletions(-) delete mode 100644 ui/drivers/cocoa/cocoa_settings.m delete mode 100644 ui/drivers/cocoa/cocoatouch_browser.m diff --git a/ui/drivers/cocoa/cocoa_settings.m b/ui/drivers/cocoa/cocoa_settings.m deleted file mode 100644 index 9040425a53..0000000000 --- a/ui/drivers/cocoa/cocoa_settings.m +++ /dev/null @@ -1,386 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2013-2014 - Jason Fetters - * Copyright (C) 2011-2015 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#import - -#include -#include - -#include "cocoa_common.h" -#include "../../../menu/menu_setting.h" -#include "../../../input/drivers/cocoa_input.h" - -#include "../../../driver.h" -#include "../../../input/input_common.h" -#include "../../../input/input_keymaps.h" - -static void* const associated_name_tag = (void*)&associated_name_tag; - -@interface RAInputBinder : NSWindow -{ -#if !__OBJC2__ - NSTimer* _timer; - const rarch_setting_t *_setting; -#endif -} - -@property (nonatomic, retain) NSTimer* timer; -@property (nonatomic, assign) const rarch_setting_t* setting; -@end - -@implementation RAInputBinder - -@synthesize timer = _timer; -@synthesize setting = _setting; - -- (void)dealloc -{ - [_timer release]; - [super dealloc]; -} - -- (void)runForSetting:(const rarch_setting_t*)setting onWindow:(NSWindow*)window -{ - self.setting = setting; - self.timer = [NSTimer timerWithTimeInterval:.1f target:self selector:@selector(checkBind:) userInfo:nil repeats:YES]; - [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSModalPanelRunLoopMode]; - - [NSApp beginSheet:self modalForWindow:window modalDelegate:nil didEndSelector:nil contextInfo:nil]; -} - -- (IBAction)goAway:(id)sender -{ - [self.timer invalidate]; - self.timer = nil; - - [NSApp endSheet:self]; - [self orderOut:nil]; -} - -- (void)checkBind:(NSTimer*)send -{ - int32_t value = 0; - int32_t idx = 0; - - if (self.setting->index) - idx = self.setting->index - 1; - - if ((value = cocoa_input_find_any_key())) - BINDFOR(*[self setting]).key = input_keymaps_translate_keysym_to_rk(value); - else if ((value = cocoa_input_find_any_button(idx)) >= 0) - BINDFOR(*[self setting]).joykey = value; - else if ((value = cocoa_input_find_any_axis(idx))) - BINDFOR(*[self setting]).joyaxis = (value > 0) ? AXIS_POS(value - 1) : AXIS_NEG(abs(value) - 1); - else - return; - - [self goAway:self]; -} - -// Stop the annoying sound when pressing a key -- (void)keyDown:(NSEvent*)theEvent -{ -} - -@end - - -@interface RASettingsDelegate : NSObject -#ifdef MAC_OS_X_VERSION_10_6 - -#endif -{ -#if !__OBJC2__ - RAInputBinder* _binderWindow; - NSButtonCell* _booleanCell; - NSTextFieldCell* _binderCell; - NSTableView* _table; - NSOutlineView* _outline; - NSMutableArray* _settings; - NSMutableArray* _currentGroup; -#endif -} - -@property (nonatomic, retain) RAInputBinder IBOutlet* binderWindow; -@property (nonatomic, retain) NSButtonCell IBOutlet* booleanCell; -@property (nonatomic, retain) NSTextFieldCell IBOutlet* binderCell; -@property (nonatomic, retain) NSTableView IBOutlet* table; -@property (nonatomic, retain) NSOutlineView IBOutlet* outline; -@property (nonatomic, retain) NSMutableArray* settings; -@property (nonatomic, retain) NSMutableArray* currentGroup; -@end - -@implementation RASettingsDelegate - -@synthesize binderWindow = _binderWindow; -@synthesize booleanCell = _booleanCell; -@synthesize binderCell = _binderCell; -@synthesize table = _table; -@synthesize outline = _outline; -@synthesize settings = _settings; -@synthesize currentGroup = _currentGroup; - -- (void)dealloc -{ - [_binderWindow release]; - [_booleanCell release]; - [_binderCell release]; - [_table release]; - [_outline release]; - [_settings release]; - [_currentGroup release]; - - [super dealloc]; -} - -- (void)awakeFromNib -{ - int i; - NSMutableArray* thisGroup = nil; - NSMutableArray* thisSubGroup = nil; - driver_t *driver = driver_get_ptr(); - const rarch_setting_t *setting_data = (const rarch_setting_t *)driver->menu->list_settings; - - self.settings = [NSMutableArray array]; - - for (i = 0; setting_data[i].type; i ++) - { - switch (setting_data[i].type) - { - case ST_GROUP: - { - thisGroup = [NSMutableArray array]; -#if defined(MAC_OS_X_VERSION_10_6) - /* FIXME - Rewrite this so that this is no longer an associated object - requires ObjC 2.0 runtime */ - objc_setAssociatedObject(thisGroup, associated_name_tag, BOXSTRING(setting_data[i].name), OBJC_ASSOCIATION_RETAIN_NONATOMIC); -#endif - break; - } - - case ST_END_GROUP: - { - if (thisGroup) - [self.settings addObject:thisGroup]; - thisGroup = nil; - break; - } - - case ST_SUB_GROUP: - { - thisSubGroup = [NSMutableArray array]; -#if defined(MAC_OS_X_VERSION_10_6) - /* FIXME - Rewrite this so that this is no longer an associated object - requires ObjC 2.0 runtime */ - objc_setAssociatedObject(thisSubGroup, associated_name_tag, BOXSTRING(setting_data[i].name), OBJC_ASSOCIATION_RETAIN_NONATOMIC); -#endif - break; - } - - case ST_END_SUB_GROUP: - { - if (thisSubGroup) - [thisGroup addObject:thisSubGroup]; - thisSubGroup = nil; - break; - } - - default: - { - [thisSubGroup addObject:[NSNumber numberWithInt:i]]; - break; - } - } - } -} - -- (void)windowWillClose:(NSNotification *)notification -{ - [NSApp stopModal]; -} - -#pragma mark Section Table -- (NSInteger)numberOfRowsInTableView:(NSTableView*)view -{ - return self.settings.count; -} - -- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row -{ -#if defined(MAC_OS_X_VERSION_10_6) - return objc_getAssociatedObject([self.settings objectAtIndex:row], associated_name_tag); -#else - /* FIXME - Rewrite this so that this is no longer an associated object - requires ObjC 2.0 runtime */ - return 0; /* stub */ -#endif -} - -- (void)tableViewSelectionDidChange:(NSNotification *)aNotification -{ - self.currentGroup = [self.settings objectAtIndex:[self.table selectedRow]]; - [self.outline reloadData]; -} - -#pragma mark Setting Outline -- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item -{ - return (item == nil) ? [self.currentGroup count] : [item count]; -} - -- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)idx ofItem:(id)item -{ - return (item == nil) ? [self.currentGroup objectAtIndex:idx] : [item objectAtIndex:idx]; -} - -- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item -{ - return [item isKindOfClass:[NSArray class]]; -} - -- (BOOL)validateProposedFirstResponder:(NSResponder*)responder forEvent:(NSEvent*)event -{ - return YES; -} - -- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item -{ - driver_t *driver = driver_get_ptr(); - - if (!tableColumn) - return nil; - - if ([item isKindOfClass:[NSArray class]]) - { -#ifdef MAC_OS_X_VERSION_10_6 - /* FIXME - Rewrite this so that this is no longer an associated object - requires ObjC 2.0 runtime */ - if ([[tableColumn identifier] isEqualToString:BOXSTRING("left")]) - return objc_getAssociatedObject(item, associated_name_tag); -#endif - return BOXSTRING(""); - } - else - { - char buffer[PATH_MAX_LENGTH]; - rarch_setting_t *setting_data = (rarch_setting_t*)driver->menu->list_settings; - rarch_setting_t *setting = (rarch_setting_t*)&setting_data[[item intValue]]; - - if ([[tableColumn identifier] isEqualToString:BOXSTRING("left")]) - return BOXSTRING(setting->short_description); - - switch (setting->type) - { - case ST_BOOL: - return BOXINT(*setting->value.boolean); - default: - { - setting_get_string_representation(setting, buffer, sizeof(buffer)); - if (buffer[0] == '\0') - strlcpy(buffer, "N/A", sizeof(buffer)); - return BOXSTRING(buffer); - } - } - } -} - -- (NSCell*)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item -{ - const rarch_setting_t *setting_data, *setting; - driver_t *driver = driver_get_ptr(); - - if (!tableColumn) - return nil; - - if ([item isKindOfClass:[NSArray class]]) - return [tableColumn dataCell]; - - if ([[tableColumn identifier] isEqualToString:BOXSTRING("left")]) - return [tableColumn dataCell]; - - setting_data = (const rarch_setting_t *)driver->menu->list_settings; - setting = (const rarch_setting_t *)&setting_data[[item intValue]]; - - switch (setting->type) - { - case ST_BOOL: - return self.booleanCell; - case ST_BIND: - return self.binderCell; - default: - break; - } - - return tableColumn.dataCell; -} - -- (IBAction)outlineViewClicked:(id)sender -{ - id item; - driver_t *driver = driver_get_ptr(); - - if ([self.outline clickedColumn] != 1) - return; - - item = [self.outline itemAtRow:[self.outline clickedRow]]; - - if (![item isKindOfClass:[NSNumber class]]) - return; - - { - rarch_setting_t *setting_data = (rarch_setting_t*)driver->menu->list_settings; - rarch_setting_t *setting = (rarch_setting_t*)&setting_data[[item intValue]]; - - switch (setting->type) - { - case ST_BOOL: - *setting->value.boolean = !*setting->value.boolean; - break; - case ST_BIND: - [self.binderWindow runForSetting:setting onWindow:[self.outline window]]; - break; - default: - break; - } - - if (setting->change_handler) - setting->change_handler(setting); - } -} - -- (void)controlTextDidEndEditing:(NSNotification*)notification -{ - id item; - NSText* editor = NULL; - driver_t *driver = driver_get_ptr(); - - if ([notification object] != self.outline) - return; - - editor = [[notification userInfo] objectForKey:BOXSTRING("NSFieldEditor")]; - item = [self.outline itemAtRow:[self.outline selectedRow]]; - - if (![item isKindOfClass:[NSNumber class]]) - return; - - { - rarch_setting_t *setting_data = (rarch_setting_t *)driver->menu->list_settings; - rarch_setting_t *setting = (rarch_setting_t*)&setting_data[[item intValue]]; - NSString *editor_string = (NSString*)editor.string; - - setting_set_with_string_representation(setting, editor_string.UTF8String); - } -} - -@end diff --git a/ui/drivers/cocoa/cocoatouch_browser.m b/ui/drivers/cocoa/cocoatouch_browser.m deleted file mode 100644 index 050c89b54f..0000000000 --- a/ui/drivers/cocoa/cocoatouch_browser.m +++ /dev/null @@ -1,583 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2013-2014 - Jason Fetters - * Copyright (C) 2014-2015 - Jay McCarthy - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include -#include -#include -#include -#include - -#include "cocoa_common.h" -#include "../../../content.h" -#include "../../../general.h" - -enum file_action -{ - FA_DELETE = 10000, - FA_CREATE, - FA_MOVE, - FA_UNZIP -}; - -static const void* const associated_module_key = &associated_module_key; - -static int zlib_extract_callback(const char *name, const char *valid_exts, - const uint8_t *cdata, unsigned cmode, uint32_t csize, uint32_t size, - uint32_t crc32, void *userdata) -{ - char path[PATH_MAX_LENGTH]; - - /* Make directory */ - fill_pathname_join(path, (const char*)userdata, name, sizeof(path)); - path_basedir(path); - - if (!path_mkdir(path)) - { - RARCH_ERR("Failed to create dir: %s.\n", path); - return false; - } - - /* Ignore directories */ - if (name[strlen(name) - 1] == '/') - return 1; - - fill_pathname_join(path, (const char*)userdata, name, sizeof(path)); - - if (!zlib_perform_mode(path, valid_exts, - cdata, cmode, csize, size, crc32, userdata)) - { - if (cmode == 0) - { - RARCH_ERR("Failed to write file: %s.\n", path); - return 0; - } - goto error; - } - - return 1; - -error: - RARCH_ERR("Failed to deflate to: %s.\n", path); - return 0; -} - -static void unzip_file(const char* path, const char* output_directory) -{ - if (!path_file_exists(path)) - apple_display_alert("Could not locate zip file.", "Action Failed"); - else if (path_is_directory(output_directory)) - apple_display_alert("Output directory for zip must not already exist.", "Action Failed"); - else if (!path_mkdir(output_directory)) - apple_display_alert("Could not create output directory to extract zip.", "Action Failed"); - else if (!zlib_parse_file(path, NULL, zlib_extract_callback, (void*)output_directory)) - apple_display_alert("Could not process zip file.", "Action Failed"); -} - -static void file_action(enum file_action action, NSString* source, NSString* target) -{ - NSError* error = nil; - bool result = false; - NSFileManager* manager = [NSFileManager defaultManager]; - - switch (action) - { - case FA_DELETE: - result = [manager removeItemAtPath:target error:&error]; - break; - case FA_CREATE: - result = [manager createDirectoryAtPath:target withIntermediateDirectories:YES - attributes:nil error:&error]; - break; - case FA_MOVE: - result = [manager moveItemAtPath:source toPath:target error:&error]; - break; - case FA_UNZIP: - unzip_file(source.UTF8String, target.UTF8String); - break; - } - - if (!result && error) - apple_display_alert(error.localizedDescription.UTF8String, "Action failed"); -} - -@implementation RADirectoryItem -+ (RADirectoryItem*)directoryItemFromPath:(NSString*)path -{ - RADirectoryItem* item = [RADirectoryItem new]; - - if (!item) - return NULL; - - item.path = path; - item.isDirectory = path_is_directory(path.UTF8String); - - return item; -} - -+ (RADirectoryItem*)directoryItemFromElement:(struct string_list_elem*)element -{ - RADirectoryItem* item = [RADirectoryItem new]; - - if (!item) - return NULL; - - item.path = BOXSTRING(element->data); - item.isDirectory = (element->attr.i == RARCH_DIRECTORY); - - return item; -} - -- (UITableViewCell*)cellForTableView:(UITableView *)tableView -{ - static NSString* const cell_id = @"path_item"; - static NSString* const icon_types[2] = { @"ic_file", @"ic_dir" }; - uint32_t type_id = self.isDirectory ? 1 : 0; - UITableViewCell *result = [tableView dequeueReusableCellWithIdentifier:cell_id]; - - if (!result) - result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cell_id]; - - result.textLabel.text = [self.path lastPathComponent]; - result.imageView.image = [UIImage imageNamed:icon_types[type_id]]; - - return result; -} - -- (void)wasSelectedOnTableView:(UITableView *)tableView ofController:(UIViewController *)controller -{ - if (self.isDirectory) - [(id)controller browseTo:self.path]; - else - [(id)controller chooseAction]((id)controller, self); -} - -@end - -/*********************************************/ -/* RAMenuItemBasic */ -/* A simple menu item that displays a text */ -/* description and calls a block object when */ -/* selected. */ -/*********************************************/ -@interface RAMenuItemBasic : NSObject -@property (nonatomic) NSString* description; -@property (nonatomic) id userdata; -@property (copy) void (^action)(id userdata); -@property (copy) NSString* (^detail)(id userdata); - -+ (RAMenuItemBasic*)itemWithDescription:(NSString*)description action:(void (^)())action; -+ (RAMenuItemBasic*)itemWithDescription:(NSString*)description action:(void (^)())action detail:(NSString* (^)())detail; -+ (RAMenuItemBasic*)itemWithDescription:(NSString*)description association:(id)userdata action:(void (^)())action detail:(NSString* (^)())detail; - -@end - -/*********************************************/ -/* RAMenuItemBasic */ -/* A simple menu item that displays a text */ -/* description and calls a block object when */ -/* selected. */ -/*********************************************/ -@implementation RAMenuItemBasic -@synthesize description; -@synthesize userdata; -@synthesize action; -@synthesize detail; - -+ (RAMenuItemBasic*)itemWithDescription:(NSString*)description action:(void (^)())action -{ - return [self itemWithDescription:description action:action detail:Nil]; -} - -+ (RAMenuItemBasic*)itemWithDescription:(NSString*)description action:(void (^)())action detail:(NSString* (^)())detail -{ - return [self itemWithDescription:description association:nil action:action detail:detail]; -} - -+ (RAMenuItemBasic*)itemWithDescription:(NSString*)description association:(id)userdata action:(void (^)())action detail:(NSString* (^)())detail -{ - RAMenuItemBasic* item = [RAMenuItemBasic new]; - item.description = description; - item.userdata = userdata; - item.action = action; - item.detail = detail; - return item; -} - -- (UITableViewCell*)cellForTableView:(UITableView*)tableView -{ - static NSString* const cell_id = @"text"; - - UITableViewCell* result = [tableView dequeueReusableCellWithIdentifier:cell_id]; - if (!result) - result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cell_id]; - - result.selectionStyle = UITableViewCellSelectionStyleNone; - result.textLabel.text = self.description; - result.detailTextLabel.text = self.detail ? self.detail(self.userdata) : nil; - return result; -} - -- (void)wasSelectedOnTableView:(UITableView*)tableView ofController:(UIViewController*)controller -{ - if (self.action) - self.action(self.userdata); -} - -@end - -@implementation RADirectoryList - -- (id)initWithPath:(NSString*)path extensions:(const char*)extensions - action:(void (^)(RADirectoryList* list, RADirectoryItem* item))action -{ - if ((self = [super initWithStyle:UITableViewStylePlain])) - { - NSMutableArray *toolbarButtons; - self.path = path ? path : NSHomeDirectory(); - self.chooseAction = action; - self.extensions = extensions ? BOXSTRING(extensions) : 0; - self.hidesHeaders = YES; - - self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:BOXSTRING("Up") style:UIBarButtonItemStyleBordered target:self - action:@selector(gotoParent)]; - self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self - action:@selector(cancelBrowser)]; - - /* NOTE: The "App" and "Root" buttons aren't really needed for non-jailbreak devices. */ - toolbarButtons = [NSMutableArray arrayWithObjects: - [[UIBarButtonItem alloc] initWithTitle:BOXSTRING("Home") style:UIBarButtonItemStyleBordered target:self - action:@selector(gotoHomeDir)], - [[UIBarButtonItem alloc] initWithTitle:BOXSTRING("App") style:UIBarButtonItemStyleBordered target:self - action:@selector(gotoAppDir)], - [[UIBarButtonItem alloc] initWithTitle:BOXSTRING("Root") style:UIBarButtonItemStyleBordered target:self - action:@selector(gotoRootDir)], - [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self - action:nil], - [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self - action:@selector(refresh)], - [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self - action:@selector(createNewFolder)], - nil - ]; - - self.toolbarItems = toolbarButtons; - - [self.tableView addGestureRecognizer:[[UILongPressGestureRecognizer alloc] initWithTarget:self - action:@selector(fileAction:)]]; - } - - return self; -} - -- (void)cancelBrowser -{ - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)gotoParent -{ - [self browseTo:[self.path stringByDeletingLastPathComponent]]; -} - -- (void)gotoHomeDir -{ - [self browseTo:NSHomeDirectory()]; -} - -- (void)gotoAppDir -{ - [self browseTo:NSBundle.mainBundle.bundlePath]; -} - -- (void)gotoRootDir -{ - [self browseTo:@"/"]; -} - -- (void)refresh -{ - [self browseTo: self.path]; -} - -- (void)browseTo:(NSString*)path -{ - NSString *i; - struct string_list *contents = NULL; - settings_t *settings = config_get_ptr(); - - self.path = path; - self.title = path.lastPathComponent; - - /* Need one array per section. */ - self.sections = [NSMutableArray array]; - - for (i in [self sectionIndexTitlesForTableView:self.tableView]) - [self.sections addObject:[NSMutableArray arrayWithObject:i]]; - - /* List contents */ - contents = dir_list_new(path.UTF8String, - settings->menu.navigation.browser.filter.supported_extensions_enable ? self.extensions.UTF8String : NULL, true); - - if (contents) - { - ssize_t i; - RADirectoryList __weak* weakSelf = self; - - if (self.allowBlank) - [self.sections[0] addObject:[RAMenuItemBasic itemWithDescription:BOXSTRING("[ Use Empty Path ]") - action:^{ weakSelf.chooseAction(weakSelf, nil); }]]; - if (self.forDirectory) - [self.sections[0] addObject:[RAMenuItemBasic itemWithDescription:BOXSTRING("[ Use This Folder ]") - action:^{ weakSelf.chooseAction(weakSelf, [RADirectoryItem directoryItemFromPath:path]); }]]; - dir_list_sort(contents, true); - - for (i = 0; i < contents->size; i ++) - { - const char *basename = path_basename(contents->elems[i].data); - char is_directory = (contents->elems[i].attr.i == RARCH_DIRECTORY); - uint32_t section = is_directory ? 0 : isalpha(basename[0]) ? (toupper(basename[0]) - 'A') + 2 : 1; - - if (! ( self.forDirectory && ! is_directory )) - [self.sections[section] addObject:[RADirectoryItem directoryItemFromElement:&contents->elems[i]]]; - } - - dir_list_free(contents); - } - else - { - [self gotoHomeDir]; - return; - } - - [self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO]; - [UIView transitionWithView:self.tableView duration:.25f options:UIViewAnimationOptionTransitionCrossDissolve - animations: - ^{ - [self.tableView reloadData]; - } completion:nil]; -} - -- (void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - [self browseTo: self.path]; -} - -- (NSArray*)sectionIndexTitlesForTableView:(UITableView*)tableView -{ - static NSArray* names = nil; - - if (!names) - names = @[@"/", @"#", @"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", - @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z"]; - - return names; -} - -/* File management - * Called as a selector from a toolbar button. */ -- (void)createNewFolder -{ - UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:BOXSTRING("Enter new folder name") message:BOXSTRING("") delegate:self - cancelButtonTitle:BOXSTRING("Cancel") otherButtonTitles:BOXSTRING("OK"), nil]; - alertView.alertViewStyle = UIAlertViewStylePlainTextInput; - alertView.tag = FA_CREATE; - [alertView show]; -} - -/* Called by the long press gesture recognizer. */ -- (void)fileAction:(UILongPressGestureRecognizer*)gesture -{ - if (gesture.state == UIGestureRecognizerStateBegan) - { - CGPoint point = [gesture locationInView:self.tableView]; - NSIndexPath* idx_path = [self.tableView indexPathForRowAtPoint:point]; - - if (idx_path) - { - int major, minor; - bool is_zip; - UIActionSheet *menu; - NSString *button4_name, *button5_name; - - get_ios_version(&major, &minor); - - button4_name = (major >= 7) ? BOXSTRING("AirDrop") : BOXSTRING("Delete"); - button5_name = (major >= 7) ? BOXSTRING("Delete") : nil; - - self.selectedItem = [self itemForIndexPath:idx_path]; - is_zip = !(strcmp(self.selectedItem.path.pathExtension.UTF8String, "zip")); - - menu = [[UIActionSheet alloc] initWithTitle:self.selectedItem.path.lastPathComponent delegate:self - cancelButtonTitle:BOXSTRING("Cancel") destructiveButtonTitle:nil - otherButtonTitles:is_zip ? BOXSTRING("Unzip") : BOXSTRING("Zip"), BOXSTRING("Move"), BOXSTRING("Rename"), button4_name, button5_name, nil]; - [menu showFromToolbar:self.navigationController.toolbar]; - - } - } -} - -#define FILEBROWSER_ACTION_UNZIP 0x0e3f899bU -#define FILEBROWSER_ACTION_MOVE 0x7c89307cU -#define FILEBROWSER_ACTION_RENAME 0xce87affdU -#define FILEBROWSER_ACTION_AIRDROP 0x8c6cdb56U -#define FILEBROWSER_ACTION_DELETE 0xadde7058U -#define FILEBROWSER_ACTION_CANCEL 0xab41f40bU - -/* Called by the action sheet created in (void)fileAction: */ -- (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex -{ - uint32_t action_str_hash; - int major, minor; - NSString* target = self.selectedItem.path; - NSString* action = [actionSheet buttonTitleAtIndex:buttonIndex]; - const char *action_str = action.UTF8String; - - get_ios_version(&major, &minor); - - action_str_hash = djb2_calculate(action_str); - - (void)major; - (void)minor; - - switch (action_str_hash) - { - case FILEBROWSER_ACTION_UNZIP: - { - UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:BOXSTRING("Enter target directory") message:@"" delegate:self - cancelButtonTitle:BOXSTRING("Cancel") otherButtonTitles:BOXSTRING("OK"), nil]; - alertView.alertViewStyle = UIAlertViewStylePlainTextInput; - alertView.tag = FA_UNZIP; - [alertView textFieldAtIndex:0].text = [[target lastPathComponent] stringByDeletingPathExtension]; - [alertView show]; - } - break; - case FILEBROWSER_ACTION_MOVE: - [self.navigationController pushViewController:[[RAFoldersList alloc] initWithFilePath:target] animated:YES]; - break; - case FILEBROWSER_ACTION_RENAME: - { - UIAlertView* alertView = [[UIAlertView alloc] - initWithTitle:BOXSTRING("Enter new name") message:@"" - delegate:self cancelButtonTitle:BOXSTRING("Cancel") otherButtonTitles:BOXSTRING("OK"), nil]; - alertView.alertViewStyle = UIAlertViewStylePlainTextInput; - alertView.tag = FA_MOVE; - [alertView textFieldAtIndex:0].text = target.lastPathComponent; - [alertView show]; - } - break; - case FILEBROWSER_ACTION_AIRDROP: -#ifdef __IPHONE_7_0 - if ((major >= 7)) - { - /* TODO: ZIP if not already zipped. */ - NSURL *url = [NSURL fileURLWithPath:self.selectedItem.path isDirectory:self.selectedItem.isDirectory]; - NSArray *items = [NSArray arrayWithObject:url]; - UIActivityViewController* avc = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil]; - - [self presentViewController:avc animated:YES completion:nil]; - } -#endif - break; - case FILEBROWSER_ACTION_DELETE: - { - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:BOXSTRING("Really delete?") message:@"" delegate:self cancelButtonTitle:BOXSTRING("Cancel") otherButtonTitles:BOXSTRING("OK"), nil]; - alertView.tag = FA_DELETE; - [alertView show]; - } - break; - case FILEBROWSER_ACTION_CANCEL: - apple_display_alert("Action not supported.", "Action Failed"); - break; - } -} - -/* Called by various alert views created in this class, - * the alertView.tag value is the action to take. */ -- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex -{ - if (buttonIndex != alertView.firstOtherButtonIndex) - return; - - if (alertView.tag == FA_DELETE) - file_action(FA_DELETE, nil, self.selectedItem.path); - else - { - NSString* text = [alertView textFieldAtIndex:0].text; - - if (text.length) - file_action((enum file_action)alertView.tag, self.selectedItem.path, [self.path stringByAppendingPathComponent:text]); - } - - [self browseTo: self.path]; -} - -@end - -@interface RAFoldersList() -@property (nonatomic) NSString* path; -@end - -@implementation RAFoldersList - -- (id)initWithFilePath:(NSString*)path -{ - if ((self = [super initWithStyle:UITableViewStyleGrouped])) - { - RAFoldersList* __weak weakSelf = self; - NSString *sourceItem = path.stringByDeletingLastPathComponent; /* Parent item */ - RAMenuItemBasic *parentItem = [RAMenuItemBasic itemWithDescription:BOXSTRING("") association:sourceItem.stringByDeletingLastPathComponent - action:^(id userdata){ [weakSelf moveInto:userdata]; } detail:NULL]; - struct string_list *contents = dir_list_new([path stringByDeletingLastPathComponent].UTF8String, NULL, true); - NSMutableArray *items = [NSMutableArray arrayWithObject:BOXSTRING("")]; - - [self.sections addObject:@[BOXSTRING(""), parentItem]]; - - self.path = path; - - if (contents) - { - size_t i; - dir_list_sort(contents, true); - - for (i = 0; i < contents->size; i ++) - { - if (contents->elems[i].attr.i == RARCH_DIRECTORY) - { - const char* basename = path_basename(contents->elems[i].data); - RAMenuItemBasic* item = [RAMenuItemBasic itemWithDescription:BOXSTRING(basename) association:BOXSTRING(contents->elems[i].data) - action:^(id userdata){ [weakSelf moveInto:userdata]; } detail:NULL]; - [items addObject:item]; - } - } - dir_list_free(contents); - } - - [self setTitle:[BOXSTRING("Move ") stringByAppendingString: self.path.lastPathComponent]]; - [self.sections addObject:items]; - } - - return self; -} - -- (void)moveInto:(NSString*)path -{ - NSString* targetPath = [path stringByAppendingPathComponent:self.path.lastPathComponent]; - file_action(FA_MOVE, self.path, targetPath); - [self.navigationController popViewControllerAnimated:YES]; -} - -@end From de5938234e278715ab122b28a61222605849488a Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 13 Aug 2015 21:36:02 +0200 Subject: [PATCH 202/822] Update Griffin --- griffin/griffin_objc.m | 1 - 1 file changed, 1 deletion(-) diff --git a/griffin/griffin_objc.m b/griffin/griffin_objc.m index 6385a12a97..b0073134aa 100644 --- a/griffin/griffin_objc.m +++ b/griffin/griffin_objc.m @@ -36,7 +36,6 @@ #if TARGET_OS_IPHONE #include "../libretro-common/file/dir_list_obj.m" #include "../ui/drivers/cocoa/cocoatouch_menu.m" -#include "../ui/drivers/cocoa/cocoatouch_browser.m" #include "../ui/drivers/ui_cocoatouch.m" #endif From a2f98ebe1c270ee54842e8a23f8ff1b5455abb61 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 14 Aug 2015 02:32:36 +0200 Subject: [PATCH 203/822] (Cocoa) Take out unused RAFoldersList --- ui/drivers/cocoa/cocoa_common.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ui/drivers/cocoa/cocoa_common.h b/ui/drivers/cocoa/cocoa_common.h index 4a31ba7976..5ae5a171f3 100644 --- a/ui/drivers/cocoa/cocoa_common.h +++ b/ui/drivers/cocoa/cocoa_common.h @@ -46,10 +46,6 @@ @end -@interface RAFoldersList : RAMenuBase -- (id) initWithFilePath:(NSString*)path; -@end - typedef struct { char orientations[32]; From 49e6806dddad7dd9cdb4b6f1a089ac0f708d1fff Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 14 Aug 2015 02:36:19 +0200 Subject: [PATCH 204/822] (cocoa_common.h) Cleanups --- ui/drivers/cocoa/cocoa_common.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/ui/drivers/cocoa/cocoa_common.h b/ui/drivers/cocoa/cocoa_common.h index 5ae5a171f3..960cc74f6a 100644 --- a/ui/drivers/cocoa/cocoa_common.h +++ b/ui/drivers/cocoa/cocoa_common.h @@ -24,13 +24,16 @@ #include "../../menu/menu_setting.h" #include "../../menu/menu.h" +#ifdef HAVE_CORELOCATION +#include +#endif + #if defined(HAVE_COCOATOUCH) #include -#include +#ifdef HAVE_AVFOUNDATION #import - - +#endif /*********************************************/ /* RAMenuBase */ @@ -77,10 +80,6 @@ void get_ios_version(int *major, int *minor); #elif defined(HAVE_COCOA) #include -#ifdef HAVE_CORELOCATION -#include -#endif - @interface CocoaView : NSView #ifdef HAVE_CORELOCATION From 53dcdfbf089fd2feb2d0d91c8ad6cf38efd9a51b Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 14 Aug 2015 02:44:40 +0200 Subject: [PATCH 205/822] (CocoaTouch) Remove classes that are no longer used - RADirectoryList and friends --- ui/drivers/cocoa/cocoatouch_menu.m | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/ui/drivers/cocoa/cocoatouch_menu.m b/ui/drivers/cocoa/cocoatouch_menu.m index 09377228b2..f34ac43561 100644 --- a/ui/drivers/cocoa/cocoatouch_menu.m +++ b/ui/drivers/cocoa/cocoatouch_menu.m @@ -300,25 +300,6 @@ static void RunActionSheet(const char* title, const struct string_list* items, @interface RAMenuItemPathDir : RAMenuItemBase @end -@interface RADirectoryItem : NSObject -@property (nonatomic) NSString* path; -@property (nonatomic) bool isDirectory; -@end - -@interface RADirectoryList : RAMenuBase -@property (nonatomic, weak) RADirectoryItem* selectedItem; - -@property (nonatomic, copy) void (^chooseAction)(RADirectoryList* list, RADirectoryItem* item); -@property (nonatomic, copy) NSString* path; -@property (nonatomic, copy) NSString* extensions; - -@property (nonatomic) bool allowBlank; -@property (nonatomic) bool forDirectory; - -- (id)initWithPath:(NSString*)path extensions:(const char*)extensions action:(void (^)(RADirectoryList* list, RADirectoryItem* item))action; -- (void)browseTo:(NSString*)path; -@end - @implementation RAMenuItemPathDir - (void)wasSelectedOnTableView:(UITableView*)tableView From 249cbaba6c69badcbfd8dc066b166264ff2d3739 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 14 Aug 2015 02:48:36 +0200 Subject: [PATCH 206/822] (ui_cocoatouch.m) Cleanup useless functions --- ui/drivers/cocoa/cocoa_common.h | 2 -- ui/drivers/ui_cocoatouch.m | 58 +++++++-------------------------- 2 files changed, 11 insertions(+), 49 deletions(-) diff --git a/ui/drivers/cocoa/cocoa_common.h b/ui/drivers/cocoa/cocoa_common.h index 960cc74f6a..3a3346e591 100644 --- a/ui/drivers/cocoa/cocoa_common.h +++ b/ui/drivers/cocoa/cocoa_common.h @@ -106,8 +106,6 @@ void get_ios_version(int *major, int *minor); extern void apple_display_alert(const char *message, const char *title); - - #define BOXSTRING(x) [NSString stringWithUTF8String:x] #define BOXINT(x) [NSNumber numberWithInt:x] #define BOXUINT(x) [NSNumber numberWithUnsignedInt:x] diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 9c05284780..17718d1c8e 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -287,39 +287,11 @@ enum apple_gamecontroller_init(); #endif - [self apple_start_iteration]; -} - -void apple_start_iterate_observer(void) -{ - if (iterate_observer) - return; - iterate_observer = CFRunLoopObserverCreate(0, kCFRunLoopBeforeWaiting, true, 0, rarch_draw_observer, 0); CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes); } -- (void) apple_start_iteration -{ - apple_start_iterate_observer(); -} - -void apple_stop_iterate_observer(void) -{ - if (!iterate_observer) - return; - - CFRunLoopObserverInvalidate(iterate_observer); - CFRelease(iterate_observer); - iterate_observer = NULL; -} - -- (void) apple_stop_iteration -{ - apple_stop_iterate_observer(); -} - - (void)applicationDidEnterBackground:(UIApplication *)application { @@ -327,7 +299,9 @@ void apple_stop_iterate_observer(void) - (void)applicationWillTerminate:(UIApplication *)application { - [self apple_stop_iteration]; + CFRunLoopObserverInvalidate(iterate_observer); + CFRelease(iterate_observer); + iterate_observer = NULL; } - (void)applicationDidBecomeActive:(UIApplication *)application @@ -463,25 +437,12 @@ typedef struct ui_companion_cocoatouch void *empty; } ui_companion_cocoatouch_t; -static void ui_companion_cocoatouch_switch_to_ios(void *data) -{ - RetroArch_iOS *ap = NULL; - - (void)data; - - if (!apple_platform) - return; - - ap = (RetroArch_iOS *)apple_platform; - [ap showPauseMenu:ap]; -} - static void ui_companion_cocoatouch_notify_content_loaded(void *data) { RetroArch_iOS *ap = (RetroArch_iOS *)apple_platform; - - (void)data; - + + (void)data; + if (ap) [ap showGameView]; } @@ -498,9 +459,12 @@ static void ui_companion_cocoatouch_toggle(void *data) static int ui_companion_cocoatouch_iterate(void *data, unsigned action) { - (void)data; + RetroArch_iOS *ap = (RetroArch_iOS*)apple_platform; - ui_companion_cocoatouch_switch_to_ios(data); + (void)data; + + if (ap) + [ap showPauseMenu:ap]; return 0; } From b748436c65c66f3642548ca3e393ab7c3f366128 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 14 Aug 2015 02:50:48 +0200 Subject: [PATCH 207/822] (iOS) Move HAVE_FMI at end of applicationDidFinishLaunching --- ui/drivers/ui_cocoatouch.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 17718d1c8e..567b138b2e 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -283,13 +283,13 @@ enum if (rarch_main(0, NULL, NULL)) apple_rarch_exited(); -#ifdef HAVE_MFI - apple_gamecontroller_init(); -#endif - iterate_observer = CFRunLoopObserverCreate(0, kCFRunLoopBeforeWaiting, true, 0, rarch_draw_observer, 0); CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes); + +#ifdef HAVE_MFI + apple_gamecontroller_init(); +#endif } - (void)applicationDidEnterBackground:(UIApplication *)application From 371f6c8762dafe6aa7d2cc016f45f51f7d87bd45 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 14 Aug 2015 02:53:19 +0200 Subject: [PATCH 208/822] Cleanups --- ui/drivers/ui_cocoa.m | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 30adf86ed2..fb8282d401 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -217,23 +217,13 @@ static void poll_iteration(void) main_exit(NULL); } -- (void) apple_start_iteration -{ - [self performSelectorOnMainThread:@selector(rarch_main) withObject:nil waitUntilDone:NO]; -} - -- (void) apple_stop_iteration -{ -} - - (void)applicationDidBecomeActive:(NSNotification *)notification { - [self apple_start_iteration]; + [self performSelectorOnMainThread:@selector(rarch_main) withObject:nil waitUntilDone:NO]; } - (void)applicationWillResignActive:(NSNotification *)notification { - [self apple_stop_iteration]; } - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication From c3bad4463217ca0144a138480efef92491e57478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Sat, 15 Aug 2015 02:42:04 +0200 Subject: [PATCH 209/822] Start displaying messageboxes in cocoa_touch --- menu/menu_driver.c | 3 +++ ui/drivers/cocoa/cocoatouch_menu.m | 11 +++++++++++ ui/drivers/ui_cocoa.m | 1 + ui/drivers/ui_cocoatouch.m | 18 ++++++++++++++++++ ui/ui_companion_driver.h | 1 + 5 files changed, 34 insertions(+) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 78d8f57f22..01af9bd8f8 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -395,11 +395,14 @@ void menu_driver_free(menu_handle_t *menu) void menu_driver_render_messagebox(const char *msg) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + const ui_companion_driver_t *ui = ui_companion_get_ptr(); if (!msg) return; if (driver->render_messagebox && msg[0] != '\0') driver->render_messagebox(msg); + if (ui->render_messagebox && msg[0] != '\0') + ui->render_messagebox(msg); } void menu_driver_render(void) diff --git a/ui/drivers/cocoa/cocoatouch_menu.m b/ui/drivers/cocoa/cocoatouch_menu.m index f34ac43561..c77e251cc2 100644 --- a/ui/drivers/cocoa/cocoatouch_menu.m +++ b/ui/drivers/cocoa/cocoatouch_menu.m @@ -596,6 +596,17 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath */ } +-(void)renderMessageBox:(NSString *)msg +{ + UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Help" + message:msg + delegate:nil + cancelButtonTitle:@"OK" + otherButtonTitles:nil]; + + [message show]; +} + @end @interface RAMainMenu : RAMenuBase diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index fb8282d401..24e3701342 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -493,5 +493,6 @@ const ui_companion_driver_t ui_companion_cocoa = { ui_companion_cocoa_event_command, ui_companion_cocoa_notify_content_loaded, ui_companion_cocoa_notify_list_pushed, + NULL, "cocoa", }; diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 567b138b2e..abef71f272 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -35,6 +35,7 @@ #include "../../frontend/frontend.h" #include "../../runloop_data.h" +static char msg_old[PATH_MAX_LENGTH]; static id apple_platform; static CFRunLoopObserverRef iterate_observer; @@ -403,6 +404,11 @@ enum [self.mainmenu reloadData]; } +- (void)mainMenuRenderMessageBox:(NSString *)msg +{ + [self.mainmenu renderMessageBox:msg]; +} + @end int main(int argc, char *argv[]) @@ -512,6 +518,17 @@ static void ui_companion_cocoatouch_notify_list_pushed(void *data, [ap mainMenuRefresh]; } +static void ui_companion_cocoatouch_render_messagebox(const char *msg) +{ + RetroArch_iOS *ap = (RetroArch_iOS *)apple_platform; + + if (ap && strcmp(msg, msg_old)) + { + [ap mainMenuRenderMessageBox: [NSString stringWithUTF8String:msg]]; + strlcpy(msg_old, msg, sizeof(msg_old)); + } +} + const ui_companion_driver_t ui_companion_cocoatouch = { ui_companion_cocoatouch_init, ui_companion_cocoatouch_deinit, @@ -520,5 +537,6 @@ const ui_companion_driver_t ui_companion_cocoatouch = { ui_companion_cocoatouch_event_command, ui_companion_cocoatouch_notify_content_loaded, ui_companion_cocoatouch_notify_list_pushed, + ui_companion_cocoatouch_render_messagebox, "cocoatouch", }; diff --git a/ui/ui_companion_driver.h b/ui/ui_companion_driver.h index 17f08ec4c9..0db75aa573 100644 --- a/ui/ui_companion_driver.h +++ b/ui/ui_companion_driver.h @@ -41,6 +41,7 @@ typedef struct ui_companion_driver void (*event_command)(void *data, enum event_command action); void (*notify_content_loaded)(void *data); void (*notify_list_loaded)(void *data, file_list_t *list, file_list_t *menu_list); + void (*render_messagebox)(const char *msg); const char *ident; } ui_companion_driver_t; From b9786f7930fc4266a7821feb115f1cd8499fdebf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 15 Aug 2015 02:46:25 +0200 Subject: [PATCH 210/822] (Qt) Update (non-working) Qt companion UI driver --- ui/drivers/ui_qt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c index df3455729a..da468f0bba 100644 --- a/ui/drivers/ui_qt.c +++ b/ui/drivers/ui_qt.c @@ -130,5 +130,6 @@ const ui_companion_driver_t ui_companion_qt = { ui_companion_qt_event_command, ui_companion_qt_notify_content_loaded, ui_companion_qt_notify_list_pushed, + NULL, "qt", }; From 0fa6541c32f9a8db9b0503580a19235c9583d33e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 15 Aug 2015 02:46:53 +0200 Subject: [PATCH 211/822] (Companion UI) Update null companion UI driver --- ui/drivers/ui_null.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/drivers/ui_null.c b/ui/drivers/ui_null.c index ef292db946..10dacbae44 100644 --- a/ui/drivers/ui_null.c +++ b/ui/drivers/ui_null.c @@ -85,5 +85,6 @@ const ui_companion_driver_t ui_companion_null = { ui_companion_null_event_command, ui_companion_null_notify_content_loaded, ui_companion_null_notify_list_pushed, + NULL, "null", }; From 53cd7a56a937105540947c1f7ea92bd6524908fd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 15 Aug 2015 02:55:30 +0200 Subject: [PATCH 212/822] (UI companion) Implement iterate_menu function - should iterate menu system for one frame --- ui/drivers/ui_cocoa.m | 1 + ui/drivers/ui_cocoatouch.m | 7 +++++++ ui/drivers/ui_null.c | 1 + ui/drivers/ui_qt.c | 1 + ui/ui_companion_driver.h | 1 + 5 files changed, 11 insertions(+) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 24e3701342..b6cb009975 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -489,6 +489,7 @@ const ui_companion_driver_t ui_companion_cocoa = { ui_companion_cocoa_init, ui_companion_cocoa_deinit, ui_companion_cocoa_iterate, + NULL, ui_companion_cocoa_toggle, ui_companion_cocoa_event_command, ui_companion_cocoa_notify_content_loaded, diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index abef71f272..8be5fd43a5 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -475,6 +475,12 @@ static int ui_companion_cocoatouch_iterate(void *data, unsigned action) return 0; } +static int ui_companion_cocoatouch_iterate_menu(void *data, unsigned action) +{ + menu_iterate(input, 0, 0); + rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); +} + static void ui_companion_cocoatouch_deinit(void *data) { ui_companion_cocoatouch_t *handle = (ui_companion_cocoatouch_t*)data; @@ -533,6 +539,7 @@ const ui_companion_driver_t ui_companion_cocoatouch = { ui_companion_cocoatouch_init, ui_companion_cocoatouch_deinit, ui_companion_cocoatouch_iterate, + ui_companion_cocoatouch_iterate_menu, ui_companion_cocoatouch_toggle, ui_companion_cocoatouch_event_command, ui_companion_cocoatouch_notify_content_loaded, diff --git a/ui/drivers/ui_null.c b/ui/drivers/ui_null.c index 10dacbae44..b43677bcac 100644 --- a/ui/drivers/ui_null.c +++ b/ui/drivers/ui_null.c @@ -81,6 +81,7 @@ const ui_companion_driver_t ui_companion_null = { ui_companion_null_init, ui_companion_null_deinit, ui_companion_null_iterate, + NULL, ui_companion_null_toggle, ui_companion_null_event_command, ui_companion_null_notify_content_loaded, diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c index da468f0bba..acefd4e660 100644 --- a/ui/drivers/ui_qt.c +++ b/ui/drivers/ui_qt.c @@ -126,6 +126,7 @@ const ui_companion_driver_t ui_companion_qt = { ui_companion_qt_init, ui_companion_qt_deinit, ui_companion_qt_iterate, + NULL, ui_companion_qt_toggle, ui_companion_qt_event_command, ui_companion_qt_notify_content_loaded, diff --git a/ui/ui_companion_driver.h b/ui/ui_companion_driver.h index 0db75aa573..15b8f5af9c 100644 --- a/ui/ui_companion_driver.h +++ b/ui/ui_companion_driver.h @@ -37,6 +37,7 @@ typedef struct ui_companion_driver void *(*init)(void); void (*deinit)(void *data); int (*iterate)(void *data, unsigned action); + int (*iterate_menu)(void *data, unsigned action); void (*toggle)(void *data); void (*event_command)(void *data, enum event_command action); void (*notify_content_loaded)(void *data); From c16299b6ada976e9840a1fe9600932ef2a3f764a Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 15 Aug 2015 02:59:36 +0200 Subject: [PATCH 213/822] (CocoaTouch) Buildfix --- ui/drivers/ui_cocoatouch.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 8be5fd43a5..66abc498f4 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -26,6 +26,7 @@ #include "../ui_companion_driver.h" #include "../../input/drivers/cocoa_input.h" #include "../../menu/menu_setting.h" +#include "../../retroarch.h" #ifdef HAVE_MFI #include "../../input/drivers_hid/mfi_hid.h" @@ -477,8 +478,9 @@ static int ui_companion_cocoatouch_iterate(void *data, unsigned action) static int ui_companion_cocoatouch_iterate_menu(void *data, unsigned action) { - menu_iterate(input, 0, 0); + menu_iterate(0, 0, 0); rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); + return 0; } static void ui_companion_cocoatouch_deinit(void *data) From a805044aa3a65ab73bf258206cf9169d4aa9ccbd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 15 Aug 2015 23:22:01 +0200 Subject: [PATCH 214/822] (menu_cbs_select.c) Update --- menu/cbs/menu_cbs_select.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index 39a0fa0c8d..c7ac97639f 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -102,8 +102,6 @@ static int menu_cbs_init_bind_select_compare_type( else if (type >= MENU_SETTINGS_INPUT_DESC_BEGIN && type <= MENU_SETTINGS_INPUT_DESC_END) cbs->action_select = action_select_input_desc; - else if ((type >= MENU_SETTINGS_CORE_OPTION_START)) - cbs->action_select = action_select_core_setting; else { switch (type) @@ -149,6 +147,12 @@ int menu_cbs_init_bind_select(menu_file_list_cbs_t *cbs, cbs->action_select = action_select_default; + if ((type >= MENU_SETTINGS_CORE_OPTION_START)) + { + cbs->action_select = action_select_core_setting; + return 0; + } + if (menu_cbs_init_bind_select_compare_label(cbs, label, label_hash, elem0) == 0) return 0; From 93ed2d60da6f7c500d7fb368d51c7bf5bf4d5675 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 16 Aug 2015 02:10:16 +0200 Subject: [PATCH 215/822] Reimplement mouse input code - triggers 'select' callback --- menu/menu_input.c | 20 ++------------------ menu/menu_input.h | 1 - 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/menu/menu_input.c b/menu/menu_input.c index 215ac15f05..d89fbd3581 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -732,10 +732,7 @@ static int menu_input_mouse_frame( if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L)) { if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L_TOGGLE)) - return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_RIGHT); - - if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L_OK)) - return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_OK); + return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_SELECT); if (BIT64_GET(input_mouse, MOUSE_ACTION_BUTTON_L_SET_NAVIGATION)) menu_navigation_set(nav, menu_input->mouse.ptr, false); @@ -781,12 +778,8 @@ static int menu_input_mouse_post_iterate(uint64_t *input_mouse, { if (!menu_input->mouse.oldleft) { - rarch_setting_t *setting = NULL; - BIT64_SET(*input_mouse, MOUSE_ACTION_BUTTON_L); - setting = menu_setting_find( - menu_list->selection_buf->list[nav->selection_ptr].label); menu_input->mouse.oldleft = true; if ((unsigned)menu_input->mouse.y < disp->header_height) @@ -797,19 +790,10 @@ static int menu_input_mouse_post_iterate(uint64_t *input_mouse, if ( (menu_input->mouse.ptr == nav->selection_ptr) && cbs && - cbs->action_right && - setting && - (setting->type == ST_BOOL || setting->type == ST_UINT || setting->type == ST_FLOAT - || setting->type == ST_STRING) - ) + cbs->action_select ) { BIT64_SET(*input_mouse, MOUSE_ACTION_BUTTON_L_TOGGLE); } - else if (menu_input->mouse.ptr == nav->selection_ptr - && cbs && cbs->action_ok) - { - BIT64_SET(*input_mouse, MOUSE_ACTION_BUTTON_L_OK); - } else if (menu_input->mouse.ptr <= menu_list_get_size(menu_list)-1) { BIT64_SET(*input_mouse, MOUSE_ACTION_BUTTON_L_SET_NAVIGATION); diff --git a/menu/menu_input.h b/menu/menu_input.h index 1d80986752..c3cf12dd38 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -66,7 +66,6 @@ enum mouse_action { MOUSE_ACTION_NONE = 0, MOUSE_ACTION_BUTTON_L, - MOUSE_ACTION_BUTTON_L_OK, MOUSE_ACTION_BUTTON_L_TOGGLE, MOUSE_ACTION_BUTTON_L_SET_NAVIGATION, MOUSE_ACTION_BUTTON_R, From 5489634f40bce5925acfedd6543dac2ef8e2f8d8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 16 Aug 2015 03:12:12 +0200 Subject: [PATCH 216/822] (GX) Fix gx_frame signature --- gfx/drivers/gx_gfx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index ead38099fe..3214f2ea53 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -1031,7 +1031,8 @@ static void gx_blit_line(unsigned x, unsigned y, const char *message) } static bool gx_frame(void *data, const void *frame, - unsigned width, unsigned height, unsigned pitch, + unsigned width, unsigned height, + uint64_t frame_count, unsigned pitch, const char *msg) { char fps_txt[128] = {0}; From 8a173035c968977cc74d8d27e3ef8845fc8f5b14 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 16 Aug 2015 17:41:39 +0200 Subject: [PATCH 217/822] (menu_input.c) Always use MENU_ACTION_SELECT now for mouse presses --- menu/menu_input.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/menu/menu_input.c b/menu/menu_input.c index d89fbd3581..41d1f5bf02 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -838,12 +838,8 @@ static int pointer_tap(menu_file_list_cbs_t *cbs, menu_list->selection_buf->list[nav->selection_ptr].label); if (menu_input->pointer.ptr == nav->selection_ptr - && cbs && cbs->action_right && setting && - (setting->type == ST_BOOL || setting->type == ST_UINT - || setting->type == ST_FLOAT || setting->type == ST_STRING)) - return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_RIGHT); - else if (menu_input->pointer.ptr == nav->selection_ptr) - return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_OK); + && cbs && cbs->action_select) + return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_SELECT); else menu_navigation_set(nav, menu_input->pointer.ptr, false); From dd7cc401f613df3a11f80dedfd4558b589ed68d0 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 16 Aug 2015 17:43:53 +0200 Subject: [PATCH 218/822] Remove unused variables --- .../xcshareddata/RetroArch_iOS.xccheckout | 12 ++++++------ menu/menu_input.c | 4 ---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace/xcshareddata/RetroArch_iOS.xccheckout b/apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace/xcshareddata/RetroArch_iOS.xccheckout index 92a419b12f..6aaef20b8d 100644 --- a/apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace/xcshareddata/RetroArch_iOS.xccheckout +++ b/apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace/xcshareddata/RetroArch_iOS.xccheckout @@ -7,7 +7,7 @@ IDESourceControlProjectIdentifier 6D7FAF49-495D-480E-B0C9-8C39AC77CE3C IDESourceControlProjectName - RetroArch_iOS + project IDESourceControlProjectOriginsDictionary 6B9F0B13E5864452B91F13C09B7ED9EB989E82AD @@ -24,21 +24,21 @@ https://github.com/libretro/common-overlays.git IDESourceControlProjectPath - apple/iOS/RetroArch_iOS.xcodeproj + apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace IDESourceControlProjectRelativeInstallPathDictionary 6B9F0B13E5864452B91F13C09B7ED9EB989E82AD - ../../../..media/autoconfig + ../../../..media/autoconfig/ 76200F0D6584D865E96F58DE862E738E88B23A3C ../../../../.. A267D9543F572B4C32EC6E1B876E3B9BFE4DE8F6 - ../../../..media/assets + ../../../..media/assets/ C3AEE01BDA902108663DB5DB9CD7916436919463 - ../../../..media/libretrodb + ../../../..media/libretrodb/ C7C12374C7051F8843B3EFA1ACCAF2907102CCF7 ../../../.. EF363D58F01B3FB341FA6C851870E60E4F080E97 - ../../../..media/overlays + ../../../..media/overlays/ IDESourceControlProjectURL https://github.com/libretro/RetroArch.git diff --git a/menu/menu_input.c b/menu/menu_input.c index 41d1f5bf02..586c088887 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -831,11 +831,7 @@ static int pointer_tap(menu_file_list_cbs_t *cbs, menu_entry_t *entry, unsigned action) { menu_input_t *menu_input = menu_input_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); - rarch_setting_t *setting = - menu_setting_find( - menu_list->selection_buf->list[nav->selection_ptr].label); if (menu_input->pointer.ptr == nav->selection_ptr && cbs && cbs->action_select) From cc44f5b35fe196a9c0742872cc5ec7e7373e9a48 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 16 Aug 2015 22:57:31 +0200 Subject: [PATCH 219/822] (CocoaTouch) N/A --- ui/drivers/cocoa/cocoatouch_menu.m | 80 ++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/ui/drivers/cocoa/cocoatouch_menu.m b/ui/drivers/cocoa/cocoatouch_menu.m index c77e251cc2..961006bc6e 100644 --- a/ui/drivers/cocoa/cocoatouch_menu.m +++ b/ui/drivers/cocoa/cocoatouch_menu.m @@ -313,12 +313,26 @@ static void RunActionSheet(const char* title, const struct string_list* items, @end @implementation RAMenuItemPath + +- (void)wasSelectedOnTableView:(UITableView*)tableView + ofController:(UIViewController*)controller +{ + [self.main menuSelect: self.i]; +} + @end @interface RAMenuItemDir : RAMenuItemPathDir @end @implementation RAMenuItemDir + +- (void)wasSelectedOnTableView:(UITableView*)tableView + ofController:(UIViewController*)controller +{ + [self.main menuSelect: self.i]; +} + @end @interface RANumberFormatter : NSNumberFormatter @@ -681,35 +695,47 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath - (RAMenuItemBase*)make_menu_item_for_entry: (uint32_t) i { - RAMenuItemBase *me = nil; - switch (menu_entry_get_type(i)) { - case MENU_ENTRY_ACTION: - me = [RAMenuItemAction new]; break; - case MENU_ENTRY_BOOL: - me = [RAMenuItemBool new]; break; - case MENU_ENTRY_INT: - me = [RAMenuItemInt new]; break; - case MENU_ENTRY_UINT: - me = [RAMenuItemUInt new]; break; - case MENU_ENTRY_FLOAT: - me = [RAMenuItemFloat new]; break; - case MENU_ENTRY_PATH: - me = [RAMenuItemPath new]; break; - case MENU_ENTRY_DIR: - me = [RAMenuItemDir new]; break; - case MENU_ENTRY_STRING: - me = [RAMenuItemString new]; break; - case MENU_ENTRY_HEX: - me = [RAMenuItemHex new]; break; - case MENU_ENTRY_BIND: - me = [RAMenuItemBind new]; break; - case MENU_ENTRY_ENUM: - me = [RAMenuItemEnum new]; break; - }; + RAMenuItemBase *me = nil; + switch (menu_entry_get_type(i)) + { + case MENU_ENTRY_ACTION: + me = [RAMenuItemAction new]; + break; + case MENU_ENTRY_BOOL: + me = [RAMenuItemBool new]; + break; + case MENU_ENTRY_INT: + me = [RAMenuItemInt new]; + break; + case MENU_ENTRY_UINT: + me = [RAMenuItemUInt new]; + break; + case MENU_ENTRY_FLOAT: + me = [RAMenuItemFloat new]; + break; + case MENU_ENTRY_PATH: + me = [RAMenuItemPath new]; + break; + case MENU_ENTRY_DIR: + me = [RAMenuItemDir new]; + break; + case MENU_ENTRY_STRING: + me = [RAMenuItemString new]; + break; + case MENU_ENTRY_HEX: + me = [RAMenuItemHex new]; + break; + case MENU_ENTRY_BIND: + me = [RAMenuItemBind new]; + break; + case MENU_ENTRY_ENUM: + me = [RAMenuItemEnum new]; + break; + }; - [me initialize:self idx:i]; + [me initialize:self idx:i]; - return me; + return me; } - (void)menuSelect: (uint32_t) i From c12538c836447a92515743d0d49b2947c89e42a2 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 16 Aug 2015 23:24:25 +0200 Subject: [PATCH 220/822] (CocoaTouch) Call willReloadData after menuSelect --- ui/drivers/cocoa/cocoatouch_menu.m | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/drivers/cocoa/cocoatouch_menu.m b/ui/drivers/cocoa/cocoatouch_menu.m index 961006bc6e..1009e8814b 100644 --- a/ui/drivers/cocoa/cocoatouch_menu.m +++ b/ui/drivers/cocoa/cocoatouch_menu.m @@ -741,6 +741,7 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath - (void)menuSelect: (uint32_t) i { menu_entry_select(i); + [self willReloadData]; } - (void)menuBack From dadd382dfdb5a0aa4648316afc03ce375c3f2cf3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 16 Aug 2015 23:35:09 +0200 Subject: [PATCH 221/822] Implement more types for default select callback --- menu/cbs/menu_cbs_select.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index c7ac97639f..1f20018fd4 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -35,12 +35,31 @@ static int action_select_default(const char *path, const char *label, unsigned t cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, idx); - if ((cbs && cbs->action_ok) || menu_setting_is_of_general_type(setting)) - action = MENU_ACTION_OK; - else { if (cbs && cbs->action_start) - action = MENU_ACTION_START; - if (cbs && cbs->action_right) + + RARCH_LOG("setting->type: %d\n", setting->type); + + switch (setting->type) + { + case ST_BOOL: + case ST_INT: + case ST_UINT: + case ST_FLOAT: action = MENU_ACTION_RIGHT; + break; + case ST_PATH: + action = MENU_ACTION_OK; + break; + default: + if ((cbs && cbs->action_ok) || menu_setting_is_of_general_type(setting)) + action = MENU_ACTION_OK; + else + { + if (cbs && cbs->action_start) + action = MENU_ACTION_START; + if (cbs && cbs->action_right) + action = MENU_ACTION_RIGHT; + } + break; } if (action != MENU_ACTION_NOOP) @@ -57,12 +76,6 @@ static int action_select_path_use_directory(const char *path, return action_ok_path_use_directory(path, label, type, idx, 0 /* unused */); } -static int action_select_directory_stub(const char *path, const char *label, unsigned type, - size_t idx) -{ - return 0; -} - static int action_select_directory(const char *path, const char *label, unsigned type, size_t idx) { @@ -112,9 +125,6 @@ static int menu_cbs_init_bind_select_compare_type( case MENU_FILE_USE_DIRECTORY: cbs->action_select = action_select_path_use_directory; break; - case MENU_FILE_PATH: - cbs->action_select = action_select_directory_stub; - break; default: return -1; } From 2afd79d0f055b24ecfcfb4e4855378b1ebe443e0 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 16 Aug 2015 23:52:39 +0200 Subject: [PATCH 222/822] willReloadData at the end of menu_entry_select was causing issues --- .../xcshareddata/RetroArch_iOS.xccheckout | 12 ++--- menu/cbs/menu_cbs_select.c | 52 ++++++++++--------- ui/drivers/cocoa/cocoatouch_menu.m | 2 + 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace/xcshareddata/RetroArch_iOS.xccheckout b/apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace/xcshareddata/RetroArch_iOS.xccheckout index 6aaef20b8d..92a419b12f 100644 --- a/apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace/xcshareddata/RetroArch_iOS.xccheckout +++ b/apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace/xcshareddata/RetroArch_iOS.xccheckout @@ -7,7 +7,7 @@ IDESourceControlProjectIdentifier 6D7FAF49-495D-480E-B0C9-8C39AC77CE3C IDESourceControlProjectName - project + RetroArch_iOS IDESourceControlProjectOriginsDictionary 6B9F0B13E5864452B91F13C09B7ED9EB989E82AD @@ -24,21 +24,21 @@ https://github.com/libretro/common-overlays.git IDESourceControlProjectPath - apple/iOS/RetroArch_iOS.xcodeproj/project.xcworkspace + apple/iOS/RetroArch_iOS.xcodeproj IDESourceControlProjectRelativeInstallPathDictionary 6B9F0B13E5864452B91F13C09B7ED9EB989E82AD - ../../../..media/autoconfig/ + ../../../..media/autoconfig 76200F0D6584D865E96F58DE862E738E88B23A3C ../../../../.. A267D9543F572B4C32EC6E1B876E3B9BFE4DE8F6 - ../../../..media/assets/ + ../../../..media/assets C3AEE01BDA902108663DB5DB9CD7916436919463 - ../../../..media/libretrodb/ + ../../../..media/libretrodb C7C12374C7051F8843B3EFA1ACCAF2907102CCF7 ../../../.. EF363D58F01B3FB341FA6C851870E60E4F080E97 - ../../../..media/overlays/ + ../../../..media/overlays IDESourceControlProjectURL https://github.com/libretro/RetroArch.git diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index 1f20018fd4..f149311727 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -34,32 +34,36 @@ static int action_select_default(const char *path, const char *label, unsigned t menu_entry_get(&entry, idx, NULL, false); cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, idx); - - - RARCH_LOG("setting->type: %d\n", setting->type); - - switch (setting->type) + + if (setting) { - case ST_BOOL: - case ST_INT: - case ST_UINT: - case ST_FLOAT: - action = MENU_ACTION_RIGHT; - break; - case ST_PATH: - action = MENU_ACTION_OK; - break; - default: - if ((cbs && cbs->action_ok) || menu_setting_is_of_general_type(setting)) - action = MENU_ACTION_OK; - else - { - if (cbs && cbs->action_start) - action = MENU_ACTION_START; - if (cbs && cbs->action_right) + switch (setting->type) + { + case ST_BOOL: + case ST_INT: + case ST_UINT: + case ST_FLOAT: action = MENU_ACTION_RIGHT; - } - break; + break; + case ST_PATH: + action = MENU_ACTION_OK; + break; + default: + break; + } + } + + if (action == MENU_ACTION_NOOP) + { + if ((cbs && cbs->action_ok) || menu_setting_is_of_general_type(setting)) + action = MENU_ACTION_OK; + else + { + if (cbs && cbs->action_start) + action = MENU_ACTION_START; + if (cbs && cbs->action_right) + action = MENU_ACTION_RIGHT; + } } if (action != MENU_ACTION_NOOP) diff --git a/ui/drivers/cocoa/cocoatouch_menu.m b/ui/drivers/cocoa/cocoatouch_menu.m index 1009e8814b..7948b51961 100644 --- a/ui/drivers/cocoa/cocoatouch_menu.m +++ b/ui/drivers/cocoa/cocoatouch_menu.m @@ -741,7 +741,9 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath - (void)menuSelect: (uint32_t) i { menu_entry_select(i); +#if 0 [self willReloadData]; +#endif } - (void)menuBack From 277db1c7011b6b6632d095353d383e6fd040a425 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 17 Aug 2015 00:07:30 +0200 Subject: [PATCH 223/822] (menu_cbs_select.c) Reimplement ST_DIR --- menu/cbs/menu_cbs_select.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index f149311727..e32f8e05db 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -46,6 +46,7 @@ static int action_select_default(const char *path, const char *label, unsigned t action = MENU_ACTION_RIGHT; break; case ST_PATH: + case ST_DIR: action = MENU_ACTION_OK; break; default: @@ -104,12 +105,6 @@ static int action_select_input_desc(const char *path, const char *label, unsigne return action_right_input_desc(type, label, true); } -static int action_select_push_generic_list(const char *path, const char *label, unsigned type, - size_t idx) -{ - return action_ok_push_generic_list(path, label, type, idx, 0 /* unused */); -} - static int menu_cbs_init_bind_select_compare_type( menu_file_list_cbs_t *cbs, unsigned type) { @@ -140,14 +135,6 @@ static int menu_cbs_init_bind_select_compare_type( static int menu_cbs_init_bind_select_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t hash, const char *elem0) { - rarch_setting_t *setting = menu_setting_find(label); - - if (setting && setting->browser_selection_type == ST_DIR) - { - cbs->action_select = action_select_push_generic_list; - return 0; - } - return -1; } From e8c5865798f01befeaa745fd4201a48e009cf5c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Mon, 17 Aug 2015 03:16:34 +0200 Subject: [PATCH 224/822] (GLUI) Stop scroll on tap --- menu/menu_input.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/menu/menu_input.c b/menu/menu_input.c index 586c088887..da49fafc60 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -833,6 +833,10 @@ static int pointer_tap(menu_file_list_cbs_t *cbs, menu_input_t *menu_input = menu_input_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); + menu_input->pointer.accel = 0; + menu_input->pointer.accel0 = 0; + menu_input->pointer.accel1 = 0; + if (menu_input->pointer.ptr == nav->selection_ptr && cbs && cbs->action_select) return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_SELECT); From dc73edadcf5c6da0b8e7228bb01d39faf389733e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 05:05:29 +0200 Subject: [PATCH 225/822] Cleanup old ugly hack --- menu/drivers/glui.c | 1 + menu/drivers/null.c | 1 + menu/drivers/rgui.c | 1 + menu/drivers/rmenu.c | 1 + menu/drivers/rmenu_xui.cpp | 1 + menu/drivers/xmb.c | 1 + menu/menu_driver.c | 40 +++++++++++++++++++++++--------------- menu/menu_driver.h | 8 ++++++++ 8 files changed, 38 insertions(+), 16 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index f70fbdf5f0..27d055edd6 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -808,6 +808,7 @@ menu_ctx_driver_t menu_ctx_glui = { NULL, glui_load_image, "glui", + MENU_VIDEO_DRIVER_OPENGL, glui_environ, NULL, }; diff --git a/menu/drivers/null.c b/menu/drivers/null.c index 3c1d03df57..4a55b7c276 100644 --- a/menu/drivers/null.c +++ b/menu/drivers/null.c @@ -52,6 +52,7 @@ menu_ctx_driver_t menu_ctx_null = { NULL, /* bind_init */ NULL, /* load_image */ "null", + MENU_VIDEO_DRIVER_GENERIC, NULL, NULL, }; diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 508ebb8e3c..d6a4206845 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -777,6 +777,7 @@ menu_ctx_driver_t menu_ctx_rgui = { NULL, NULL, "rgui", + MENU_VIDEO_DRIVER_GENERIC, rgui_environ, NULL, }; diff --git a/menu/drivers/rmenu.c b/menu/drivers/rmenu.c index 2c961afe95..c6f987a26b 100644 --- a/menu/drivers/rmenu.c +++ b/menu/drivers/rmenu.c @@ -353,6 +353,7 @@ menu_ctx_driver_t menu_ctx_rmenu = { NULL, NULL, "rmenu", + MENU_VIDEO_DRIVER_DIRECT3D, rmenu_environ, NULL, }; diff --git a/menu/drivers/rmenu_xui.cpp b/menu/drivers/rmenu_xui.cpp index 4ca06b9dd7..efa692adae 100644 --- a/menu/drivers/rmenu_xui.cpp +++ b/menu/drivers/rmenu_xui.cpp @@ -712,6 +712,7 @@ menu_ctx_driver_t menu_ctx_rmenu_xui = { rmenu_xui_list_set_selection, NULL, "rmenu_xui", + MENU_VIDEO_DRIVER_DIRECT3D, rmenu_xui_environ, NULL, }; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 26f832163c..6849dbe812 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2591,6 +2591,7 @@ menu_ctx_driver_t menu_ctx_xmb = { xmb_list_bind_init, xmb_load_image, "xmb", + MENU_VIDEO_DRIVER_OPENGL, xmb_environ, NULL, }; diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 01af9bd8f8..10f03b58c8 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -154,31 +154,39 @@ void find_menu_driver(void) void init_menu(void) { - driver_t *driver = driver_get_ptr(); + int i; + const char *video_driver; + driver_t *driver = driver_get_ptr(); + settings_t *settings = config_get_ptr(); + if (driver->menu) return; + (void)settings; + (void)i; + find_menu_driver(); #ifdef HAVE_RGUI - /* TOD/FIXME - UGLY HACK!!!! - * Will have to be fixed properly after release. */ - if (!strcmp(driver->menu_ctx->ident, "xmb") || - !strcmp(driver->menu_ctx->ident, "glui")) - { - const char *video_driver = video_driver_get_ident(); + video_driver = video_driver_get_ident(); - if (video_driver && !strcmp(video_driver, "d3d")) - { - settings_t *settings = config_get_ptr(); - int i = find_menu_driver_internal("rgui"); - if (i >= 0) + switch (driver->menu_ctx->type) + { + case MENU_VIDEO_DRIVER_GENERIC: + case MENU_VIDEO_DRIVER_DIRECT3D: + break; + case MENU_VIDEO_DRIVER_OPENGL: + if (video_driver && !strcmp(video_driver, "d3d")) { - driver->menu_ctx = (const menu_ctx_driver_t*)menu_driver_find_handle(i); - if (settings) - strlcpy(settings->menu.driver, "rgui", sizeof(settings->menu.driver)); + int i = find_menu_driver_internal("rgui"); + if (i >= 0) + { + driver->menu_ctx = (const menu_ctx_driver_t*)menu_driver_find_handle(i); + if (settings) + strlcpy(settings->menu.driver, "rgui", sizeof(settings->menu.driver)); + } } - } + break; } #endif diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 8ee4f5b721..2eeb783ff9 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -64,6 +64,13 @@ typedef enum MENU_HELP_LAST } menu_help_type_t; +typedef enum +{ + MENU_VIDEO_DRIVER_GENERIC = 0, + MENU_VIDEO_DRIVER_OPENGL, + MENU_VIDEO_DRIVER_DIRECT3D, +} menu_video_driver_type_t; + typedef struct { void *userdata; @@ -132,6 +139,7 @@ typedef struct menu_ctx_driver uint32_t label_hash, uint32_t menu_label_hash); bool (*load_image)(void *data, menu_image_type_t type); const char *ident; + menu_video_driver_type_t type; int (*environ_cb)(menu_environ_cb_t type, void *data); bool (*perform_action)(void* data, unsigned action); } menu_ctx_driver_t; From 98c182d174adfe8bd54655e52d81038ae1f8e3af Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 05:07:25 +0200 Subject: [PATCH 226/822] When MENU_VIDEO_DRIVER_OPENGL is set for menu driver, check if the video driver is really GL --- menu/menu_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 10f03b58c8..4f7ff3e4d7 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -176,7 +176,7 @@ void init_menu(void) case MENU_VIDEO_DRIVER_DIRECT3D: break; case MENU_VIDEO_DRIVER_OPENGL: - if (video_driver && !strcmp(video_driver, "d3d")) + if (video_driver && (strcmp(video_driver, "gl") != 0)) { int i = find_menu_driver_internal("rgui"); if (i >= 0) From 4d884d3687f3fd8052d434b32c7f8e758278183c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 05:09:36 +0200 Subject: [PATCH 227/822] Refactor earlier code --- menu/menu_driver.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 4f7ff3e4d7..4b16c6dc28 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -152,43 +152,47 @@ void find_menu_driver(void) } } +static void init_menu_fallback(void) +{ +#ifdef HAVE_RGUI + settings_t *settings = config_get_ptr(); + driver_t *driver = driver_get_ptr(); + int i = find_menu_driver_internal("rgui"); + + if (i >= 0) + { + driver->menu_ctx = (const menu_ctx_driver_t*)menu_driver_find_handle(i); + if (settings) + strlcpy(settings->menu.driver, "rgui", sizeof(settings->menu.driver)); + } +#endif +} + void init_menu(void) { - int i; const char *video_driver; driver_t *driver = driver_get_ptr(); - settings_t *settings = config_get_ptr(); if (driver->menu) return; - (void)settings; - (void)i; - find_menu_driver(); -#ifdef HAVE_RGUI video_driver = video_driver_get_ident(); switch (driver->menu_ctx->type) { case MENU_VIDEO_DRIVER_GENERIC: + break; case MENU_VIDEO_DRIVER_DIRECT3D: + if (video_driver && (strcmp(video_driver, "d3d") != 0)) + init_menu_fallback(); break; case MENU_VIDEO_DRIVER_OPENGL: if (video_driver && (strcmp(video_driver, "gl") != 0)) - { - int i = find_menu_driver_internal("rgui"); - if (i >= 0) - { - driver->menu_ctx = (const menu_ctx_driver_t*)menu_driver_find_handle(i); - if (settings) - strlcpy(settings->menu.driver, "rgui", sizeof(settings->menu.driver)); - } - } + init_menu_fallback(); break; } -#endif if (!(driver->menu = (menu_handle_t*)menu_init(driver->menu_ctx))) rarch_fail(1, "init_menu()"); From fb3009d07a34957c90854231a23acce2b6289bf8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 05:13:45 +0200 Subject: [PATCH 228/822] (menu_driver.c) Cleanups --- menu/menu_driver.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 4b16c6dc28..6576fead24 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -122,17 +122,12 @@ const char* config_get_menu_driver_options(void) return options; } -static int find_menu_driver_internal(const char *ident) -{ - return find_driver_index("menu_driver", ident); -} - void find_menu_driver(void) { driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); - int i = find_menu_driver_internal(settings->menu.driver); + int i = find_driver_index("menu_driver", settings->menu.driver); if (i >= 0) driver->menu_ctx = (const menu_ctx_driver_t*)menu_driver_find_handle(i); else @@ -157,7 +152,7 @@ static void init_menu_fallback(void) #ifdef HAVE_RGUI settings_t *settings = config_get_ptr(); driver_t *driver = driver_get_ptr(); - int i = find_menu_driver_internal("rgui"); + int i = find_driver_index("menu_driver", "rgui"); if (i >= 0) { From 032abfffd404433af9f2266650e7978716451e3e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 06:31:39 +0200 Subject: [PATCH 229/822] Call menu_driver_render_messagebox from one place only --- menu/cbs/menu_cbs_iterate.c | 9 ++++++--- menu/menu_input.c | 9 +++------ menu/menu_input.h | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index 535c0bbdd5..d7c31b3370 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -382,8 +382,6 @@ static int action_iterate_menu_viewport(char *s, size_t len, base_msg, custom->x, custom->y, custom->width, custom->height); } - menu_driver_render_messagebox(s); - if (!custom->width) custom->width = stride_x; if (!custom->height) @@ -470,11 +468,16 @@ static int action_iterate_main(const char *label, unsigned action) action = MENU_ACTION_OK; break; case ITERATE_TYPE_BIND: - if (menu_input_bind_iterate()) + if (menu_input_bind_iterate(msg, sizeof(msg))) + { + if (msg[0] != '\0') + do_messagebox = true; menu_list_pop_stack(menu_list); + } break; case ITERATE_TYPE_VIEWPORT: ret = action_iterate_menu_viewport(msg, sizeof(msg), label, action, hash); + do_messagebox = true; break; case ITERATE_TYPE_INFO: ret = action_iterate_info(msg, sizeof(msg), label); diff --git a/menu/menu_input.c b/menu/menu_input.c index da49fafc60..a2561bc204 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -529,11 +529,10 @@ static int menu_input_bind_iterate_keyboard(int64_t current, int timeout) return 0; } -int menu_input_bind_iterate(void) +int menu_input_bind_iterate(char *s, size_t len) { int64_t current; struct menu_bind_state binds; - char msg[PATH_MAX_LENGTH] = {0}; int timeout = 0; menu_input_t *menu_input = menu_input_get_ptr(); driver_t *driver = driver_get_ptr(); @@ -546,20 +545,18 @@ int menu_input_bind_iterate(void) timeout = (menu_input->binds.timeout_end - current) / 1000000; if (bind_mode_kb) - snprintf(msg, sizeof(msg), + snprintf(s, len, "[%s]\npress keyboard\n(timeout %d %s)", input_config_bind_map[ menu_input->binds.begin - MENU_SETTINGS_BIND_BEGIN].desc, timeout, menu_hash_to_str(MENU_VALUE_SECONDS)); else - snprintf(msg, sizeof(msg), + snprintf(s, len, "[%s]\npress joypad\n(RETURN to skip)", input_config_bind_map[ menu_input->binds.begin - MENU_SETTINGS_BIND_BEGIN].desc); - menu_driver_render_messagebox(msg); - if (bind_mode_kb) return menu_input_bind_iterate_keyboard(current, timeout); diff --git a/menu/menu_input.h b/menu/menu_input.h index c3cf12dd38..1a53bd9420 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -193,7 +193,7 @@ void menu_input_st_string_callback(void *userdata, const char *str); void menu_input_st_cheat_callback(void *userdata, const char *str); -int menu_input_bind_iterate(void); +int menu_input_bind_iterate(char *s, size_t len); unsigned menu_input_frame(retro_input_t input, retro_input_t trigger_state); From 1c38e9ae0541beb30de51945e2799252f8a57cb2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 06:40:28 +0200 Subject: [PATCH 230/822] Don't call menu_driver_render from menu_input.c --- menu/cbs/menu_cbs_iterate.c | 7 +++---- menu/menu_input.c | 35 +++++++++++++++-------------------- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index d7c31b3370..82aeb16c27 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -469,11 +469,10 @@ static int action_iterate_main(const char *label, unsigned action) break; case ITERATE_TYPE_BIND: if (menu_input_bind_iterate(msg, sizeof(msg))) - { - if (msg[0] != '\0') - do_messagebox = true; menu_list_pop_stack(menu_list); - } + else + do_messagebox = true; + do_render = true; break; case ITERATE_TYPE_VIEWPORT: ret = action_iterate_menu_viewport(msg, sizeof(msg), label, action, hash); diff --git a/menu/menu_input.c b/menu/menu_input.c index a2561bc204..e5e11cb902 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -531,34 +531,29 @@ static int menu_input_bind_iterate_keyboard(int64_t current, int timeout) int menu_input_bind_iterate(char *s, size_t len) { - int64_t current; struct menu_bind_state binds; - int timeout = 0; menu_input_t *menu_input = menu_input_get_ptr(); driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); bool bind_mode_kb = global ? global->menu.bind_mode_keyboard : false; - - menu_driver_render(); - - current = rarch_get_time_usec(); - timeout = (menu_input->binds.timeout_end - current) / 1000000; - - if (bind_mode_kb) - snprintf(s, len, - "[%s]\npress keyboard\n(timeout %d %s)", - input_config_bind_map[ - menu_input->binds.begin - MENU_SETTINGS_BIND_BEGIN].desc, - timeout, - menu_hash_to_str(MENU_VALUE_SECONDS)); - else - snprintf(s, len, - "[%s]\npress joypad\n(RETURN to skip)", - input_config_bind_map[ - menu_input->binds.begin - MENU_SETTINGS_BIND_BEGIN].desc); + int64_t current = rarch_get_time_usec(); + int timeout = (menu_input->binds.timeout_end - current) / 1000000; if (bind_mode_kb) + { + snprintf(s, len, + "[%s]\npress keyboard\n(timeout %d %s)", + input_config_bind_map[ + menu_input->binds.begin - MENU_SETTINGS_BIND_BEGIN].desc, + timeout, + menu_hash_to_str(MENU_VALUE_SECONDS)); return menu_input_bind_iterate_keyboard(current, timeout); + } + else + snprintf(s, len, + "[%s]\npress joypad\n(RETURN to skip)", + input_config_bind_map[ + menu_input->binds.begin - MENU_SETTINGS_BIND_BEGIN].desc); binds = menu_input->binds; From 2320511071e25509eeea53929303935a9b835b02 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 06:45:16 +0200 Subject: [PATCH 231/822] Only call menu_driver_render now from one position --- menu/cbs/menu_cbs_iterate.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index 82aeb16c27..713ac2aa62 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -39,8 +39,6 @@ static int action_iterate_help(char *s, size_t len, const char *label) menu_handle_t *menu = menu_driver_get_ptr(); settings_t *settings = config_get_ptr(); - menu_driver_render(); - switch (menu->help_screen_type) { case MENU_HELP_WELCOME: @@ -182,10 +180,7 @@ static int action_iterate_info(char *s, size_t len, const char *label) if (!menu_list) return 0; - list = (file_list_t*)menu_list->selection_buf; - - menu_driver_render(); - + list = (file_list_t*)menu_list->selection_buf; current_setting = menu_setting_find(list->list[selection].label); if (current_setting) @@ -353,8 +348,6 @@ static int action_iterate_menu_viewport(char *s, size_t len, menu_list_get_last_stack(menu_list, NULL, &label, &type, NULL); - menu_driver_render(); - if (settings->video.scale_integer) { custom->x = 0; @@ -460,6 +453,7 @@ static int action_iterate_main(const char *label, unsigned action) { case ITERATE_TYPE_HELP: ret = action_iterate_help(msg, sizeof(msg), label); + do_render = true; pop_selected = NULL; do_messagebox = true; do_pop_stack = true; @@ -476,11 +470,13 @@ static int action_iterate_main(const char *label, unsigned action) break; case ITERATE_TYPE_VIEWPORT: ret = action_iterate_menu_viewport(msg, sizeof(msg), label, action, hash); + do_render = true; do_messagebox = true; break; case ITERATE_TYPE_INFO: ret = action_iterate_info(msg, sizeof(msg), label); pop_selected = &nav->selection_ptr; + do_render = true; do_messagebox = true; do_pop_stack = true; do_post_iterate = true; From 0007bd0662b6bcce1797cce2afe38d6b41087d49 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 06:54:39 +0200 Subject: [PATCH 232/822] (menu_cbs_iterate.c) Remove implicit memset --- menu/cbs/menu_cbs_iterate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index 713ac2aa62..3292c54ea6 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -429,8 +429,8 @@ static enum action_iterate_type action_iterate_type(uint32_t hash) static int action_iterate_main(const char *label, unsigned action) { menu_entry_t entry; + char msg[PATH_MAX_LENGTH]; static bool did_messagebox = false; - char msg[PATH_MAX_LENGTH] = {0}; enum action_iterate_type iterate_type; size_t selected; size_t *pop_selected = NULL; From 5bbbf72b174fa4c1befbe2b81d23f3b2276d2b07 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 06:59:25 +0200 Subject: [PATCH 233/822] (menu_entry.c) Cleanups --- menu/menu_entry.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index ca37ca4687..49c45eea10 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -432,7 +432,6 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) { int ret = 0; menu_navigation_t *nav = menu_navigation_get_ptr(); - menu_display_t *disp = menu_display_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); @@ -492,8 +491,11 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) break; case MENU_ACTION_MESSAGE: - if (disp) - disp->msg_force = true; + { + menu_display_t *disp = menu_display_get_ptr(); + if (disp) + disp->msg_force = true; + } break; case MENU_ACTION_SEARCH: From cd1875ceb4378591e8ff7b5ef06290e726130ed4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 15:39:24 +0200 Subject: [PATCH 234/822] Cleanups --- menu/menu_display.c | 16 +++++++--------- menu/menu_entries.c | 26 ++++++++++---------------- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/menu/menu_display.c b/menu/menu_display.c index d6f7af8ba5..6e1d0e1120 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -51,17 +51,15 @@ static bool menu_display_fb_in_use(menu_framebuf_t *frame_buf) void menu_display_fb_set_dirty(void) { menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); - if (!menu_display_fb_in_use(frame_buf)) - return; - frame_buf->dirty = true; + if (menu_display_fb_in_use(frame_buf)) + frame_buf->dirty = true; } void menu_display_fb_unset_dirty(void) { menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); - if (!menu_display_fb_in_use(frame_buf)) - return; - frame_buf->dirty = false; + if (menu_display_fb_in_use(frame_buf)) + frame_buf->dirty = false; } /** @@ -97,9 +95,9 @@ bool menu_display_update_pending(void) menu_animation_t *anim = menu_animation_get_ptr(); menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); - if ((anim && anim->is_active) || (anim && anim->label.is_updated)) - return true; - if (frame_buf && frame_buf->dirty) + if ((anim && anim->is_active) || (anim && anim->label.is_updated) + || (frame_buf && frame_buf->dirty) + ) return true; return false; } diff --git a/menu/menu_entries.c b/menu/menu_entries.c index d628f8ea2b..03baa8558d 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -40,10 +40,8 @@ void menu_entries_set_start(size_t i) { menu_entries_t *entries = menu_entries_get_ptr(); - if (!entries) - return; - - entries->begin = i; + if (entries) + entries->begin = i; } /* Returns the starting index of the menu entry list. */ @@ -182,31 +180,27 @@ bool menu_entries_needs_refresh(void) void menu_entries_set_nonblocking_refresh(void) { menu_entries_t *entries = menu_entries_get_ptr(); - if (!entries) - return; - entries->nonblocking_refresh = true; + if (entries) + entries->nonblocking_refresh = true; } void menu_entries_unset_nonblocking_refresh(void) { menu_entries_t *entries = menu_entries_get_ptr(); - if (!entries) - return; - entries->nonblocking_refresh = false; + if (entries) + entries->nonblocking_refresh = false; } void menu_entries_set_refresh(void) { menu_entries_t *entries = menu_entries_get_ptr(); - if (!entries) - return; - entries->need_refresh = true; + if (entries) + entries->need_refresh = true; } void menu_entries_unset_refresh(void) { menu_entries_t *entries = menu_entries_get_ptr(); - if (!entries) - return; - entries->need_refresh = false; + if (entries) + entries->need_refresh = false; } From 4f1bb7b9b6a12f238501eee1af3ed03bd89a075e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 15:44:57 +0200 Subject: [PATCH 235/822] Not sure what perform_action was doing here --- menu/menu_driver.h | 1 - menu/menu_input.c | 9 +-------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 2eeb783ff9..ef0780f51b 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -141,7 +141,6 @@ typedef struct menu_ctx_driver const char *ident; menu_video_driver_type_t type; int (*environ_cb)(menu_environ_cb_t type, void *data); - bool (*perform_action)(void* data, unsigned action); } menu_ctx_driver_t; extern menu_ctx_driver_t menu_ctx_rmenu; diff --git a/menu/menu_input.c b/menu/menu_input.c index e5e11cb902..e360b3b3a4 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -945,7 +945,7 @@ void menu_input_post_iterate(int *ret, unsigned action) unsigned menu_input_frame(retro_input_t input, retro_input_t trigger_input) { - unsigned ret = 0; + unsigned ret = MENU_ACTION_NOOP; static bool initial_held = true; static bool first_held = false; static const retro_input_t input_repeat = @@ -1033,8 +1033,6 @@ unsigned menu_input_frame(retro_input_t input, retro_input_t trigger_input) ret = MENU_ACTION_INFO; else if (trigger_input & (UINT64_C(1) << RARCH_MENU_TOGGLE)) ret = MENU_ACTION_TOGGLE; - else - ret = MENU_ACTION_NOOP; if (settings->menu.mouse.enable) menu_input_mouse(&ret); @@ -1042,10 +1040,5 @@ unsigned menu_input_frame(retro_input_t input, retro_input_t trigger_input) if (settings->menu.pointer.enable) menu_input_pointer(&ret); - if (trigger_input && - menu_ctx_driver_get_ptr()->perform_action && - menu_ctx_driver_get_ptr()->perform_action(menu->userdata, ret)) - return MENU_ACTION_NOOP; - return ret; } From fa177cb2912b5be3023ec28dd3480436feb5a8a3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 15:49:05 +0200 Subject: [PATCH 236/822] (Menu) Cleanups --- menu/menu_display.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/menu/menu_display.c b/menu/menu_display.c index 6e1d0e1120..56239fca10 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -41,24 +41,17 @@ menu_framebuf_t *menu_display_fb_get_ptr(void) return &disp->frame_buf; } -static bool menu_display_fb_in_use(menu_framebuf_t *frame_buf) -{ - if (!frame_buf) - return false; - return (frame_buf->data != NULL); -} - void menu_display_fb_set_dirty(void) { menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); - if (menu_display_fb_in_use(frame_buf)) + if (frame_buf && frame_buf->data) frame_buf->dirty = true; } void menu_display_fb_unset_dirty(void) { menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); - if (menu_display_fb_in_use(frame_buf)) + if (frame_buf && frame_buf->data) frame_buf->dirty = false; } From 0218a2755d370e656b6212fa648ebafd137c6abf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 15:54:23 +0200 Subject: [PATCH 237/822] Create menu_settings_apply_deferred --- menu/menu_entry.c | 2 +- menu/menu_setting.c | 106 ++++++++++++++++++++++++-------------------- menu/menu_setting.h | 4 +- retroarch.c | 2 +- 4 files changed, 62 insertions(+), 52 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 49c45eea10..3d3b0cb29b 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -43,7 +43,7 @@ int menu_entry_go_back(void) if (!menu_list) return -1; - menu_setting_apply_deferred(); + menu_settings_apply_deferred(); menu_list_pop_stack(menu_list); if (menu_entries_needs_refresh()) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index a7d0247fff..255b6887b4 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -363,7 +363,62 @@ int menu_setting_set(unsigned type, const char *label, return ret; } -void menu_setting_apply_deferred(void) +int menu_setting_apply_deferred(rarch_setting_t *setting) +{ + if (!setting) + return -1; + + if (setting->type >= ST_GROUP) + return -1; + + if (!(setting->flags & SD_FLAG_IS_DEFERRED)) + return -1; + + switch (setting->type) + { + case ST_BOOL: + if (*setting->value.boolean != setting->original_value.boolean) + { + setting->original_value.boolean = *setting->value.boolean; + setting->deferred_handler(setting); + } + break; + case ST_INT: + if (*setting->value.integer != setting->original_value.integer) + { + setting->original_value.integer = *setting->value.integer; + setting->deferred_handler(setting); + } + break; + case ST_UINT: + if (*setting->value.unsigned_integer != setting->original_value.unsigned_integer) + { + setting->original_value.unsigned_integer = *setting->value.unsigned_integer; + setting->deferred_handler(setting); + } + break; + case ST_FLOAT: + if (*setting->value.fraction != setting->original_value.fraction) + { + setting->original_value.fraction = *setting->value.fraction; + setting->deferred_handler(setting); + } + break; + case ST_PATH: + case ST_DIR: + case ST_STRING: + case ST_BIND: + /* Always run the deferred write handler */ + setting->deferred_handler(setting); + break; + default: + break; + } + + return 0; +} + +void menu_settings_apply_deferred(void) { rarch_setting_t *setting = menu_setting_get_ptr(); @@ -371,54 +426,7 @@ void menu_setting_apply_deferred(void) return; for (; setting->type != ST_NONE; setting++) - { - if (setting->type >= ST_GROUP) - continue; - - if (!(setting->flags & SD_FLAG_IS_DEFERRED)) - continue; - - switch (setting->type) - { - case ST_BOOL: - if (*setting->value.boolean != setting->original_value.boolean) - { - setting->original_value.boolean = *setting->value.boolean; - setting->deferred_handler(setting); - } - break; - case ST_INT: - if (*setting->value.integer != setting->original_value.integer) - { - setting->original_value.integer = *setting->value.integer; - setting->deferred_handler(setting); - } - break; - case ST_UINT: - if (*setting->value.unsigned_integer != setting->original_value.unsigned_integer) - { - setting->original_value.unsigned_integer = *setting->value.unsigned_integer; - setting->deferred_handler(setting); - } - break; - case ST_FLOAT: - if (*setting->value.fraction != setting->original_value.fraction) - { - setting->original_value.fraction = *setting->value.fraction; - setting->deferred_handler(setting); - } - break; - case ST_PATH: - case ST_DIR: - case ST_STRING: - case ST_BIND: - /* Always run the deferred write handler */ - setting->deferred_handler(setting); - break; - default: - break; - } - } + menu_setting_apply_deferred(setting); } diff --git a/menu/menu_setting.h b/menu/menu_setting.h index e0957c9ecf..ce98bb2031 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -216,7 +216,9 @@ typedef struct rarch_setting -void menu_setting_apply_deferred(void); +int menu_setting_apply_deferred(rarch_setting_t *setting); + +void menu_settings_apply_deferred(void); int menu_setting_set_flags(rarch_setting_t *setting); diff --git a/retroarch.c b/retroarch.c index 41adaff453..7771071c71 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1427,7 +1427,7 @@ void rarch_main_set_state(unsigned cmd) break; case RARCH_ACTION_STATE_MENU_RUNNING_FINISHED: #ifdef HAVE_MENU - menu_setting_apply_deferred(); + menu_settings_apply_deferred(); menu_driver_toggle(false); menu_driver_unset_alive(); From fcc9ffb4a1847e3dd15000b1790894db47bed36d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 15:57:15 +0200 Subject: [PATCH 238/822] Call menu_setting_apply_deferred after toggling setting --- menu/menu_setting.c | 1 + 1 file changed, 1 insertion(+) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 255b6887b4..b6619ccfdf 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -967,6 +967,7 @@ static int setting_bool_action_toggle_default(void *data, bool wraparound) return -1; *setting->value.boolean = !(*setting->value.boolean); + menu_setting_apply_deferred(setting); return 0; } From e10b8ae6f2ce489954927afe83014af295f965c9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 15:58:15 +0200 Subject: [PATCH 239/822] (menu_setting.c) No idea why this code was still here --- menu/menu_setting.c | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index b6619ccfdf..dba6a68a61 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1103,21 +1103,6 @@ static int setting_string_action_right_driver(void *data, return 0; } -#if defined(HAVE_DYNAMIC) || defined(HAVE_LIBRETRO_MANAGEMENT) -static int core_list_action_toggle(void *data, bool wraparound) -{ - rarch_setting_t *setting = (rarch_setting_t *)data; - settings_t *settings = config_get_ptr(); - - /* If the user CANCELs the browse, then settings->libretro is now - * set to a directory, which is very bad and will cause a crash - * later on. I need to be able to add something to call when a - * cancel happens. - */ - return setting_set_with_string_representation(setting, settings->libretro_directory); -} -#endif - /** ******* ACTION OK CALLBACK FUNCTIONS ******* **/ @@ -2530,12 +2515,6 @@ static bool setting_append_list_main_menu_options( (*list)[list_info->index - 1].size = sizeof(settings->libretro); (*list)[list_info->index - 1].value.string = settings->libretro; (*list)[list_info->index - 1].values = EXT_EXECUTABLES; - /* It is not a good idea to have chosen action_toggle as the place - * to put this callback. It should be called whenever the browser - * needs to get the directory to browse into. It's not quite like - * get_string_representation, but it is close. */ - (*list)[list_info->index - 1].action_left = core_list_action_toggle; - (*list)[list_info->index - 1].action_right = core_list_action_toggle; menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_LOAD_CORE); settings_data_list_current_add_flags(list, list_info, SD_FLAG_BROWSER_ACTION); #endif From 996c010ca688b7da465e0edae92c5de64ee1b835 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 17 Aug 2015 16:00:29 +0200 Subject: [PATCH 240/822] Fixup --- menu/drivers/glui.c | 1 - menu/drivers/null.c | 1 - menu/drivers/rgui.c | 1 - menu/drivers/xmb.c | 1 - 4 files changed, 4 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 27d055edd6..1dd27e854e 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -810,5 +810,4 @@ menu_ctx_driver_t menu_ctx_glui = { "glui", MENU_VIDEO_DRIVER_OPENGL, glui_environ, - NULL, }; diff --git a/menu/drivers/null.c b/menu/drivers/null.c index 4a55b7c276..33c6c67cf4 100644 --- a/menu/drivers/null.c +++ b/menu/drivers/null.c @@ -54,5 +54,4 @@ menu_ctx_driver_t menu_ctx_null = { "null", MENU_VIDEO_DRIVER_GENERIC, NULL, - NULL, }; diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index d6a4206845..e4588f9014 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -779,5 +779,4 @@ menu_ctx_driver_t menu_ctx_rgui = { "rgui", MENU_VIDEO_DRIVER_GENERIC, rgui_environ, - NULL, }; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 6849dbe812..32ae5db4d7 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2593,5 +2593,4 @@ menu_ctx_driver_t menu_ctx_xmb = { "xmb", MENU_VIDEO_DRIVER_OPENGL, xmb_environ, - NULL, }; From b6702ebb7e6b6d565a84661a4156bfcaa9a4941a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:00:48 +0200 Subject: [PATCH 241/822] Fixups --- menu/drivers/rmenu.c | 1 - menu/drivers/rmenu_xui.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/menu/drivers/rmenu.c b/menu/drivers/rmenu.c index c6f987a26b..42eb160bd0 100644 --- a/menu/drivers/rmenu.c +++ b/menu/drivers/rmenu.c @@ -355,5 +355,4 @@ menu_ctx_driver_t menu_ctx_rmenu = { "rmenu", MENU_VIDEO_DRIVER_DIRECT3D, rmenu_environ, - NULL, }; diff --git a/menu/drivers/rmenu_xui.cpp b/menu/drivers/rmenu_xui.cpp index efa692adae..6c706b69ac 100644 --- a/menu/drivers/rmenu_xui.cpp +++ b/menu/drivers/rmenu_xui.cpp @@ -714,5 +714,4 @@ menu_ctx_driver_t menu_ctx_rmenu_xui = { "rmenu_xui", MENU_VIDEO_DRIVER_DIRECT3D, rmenu_xui_environ, - NULL, }; From ffc5266c6cb874f022a095e67b64478a2168f1da Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:05:32 +0200 Subject: [PATCH 242/822] menu_entry_set_bool_value - call menu_setting_apply_deferred at the end --- menu/menu_entry.c | 1 + 1 file changed, 1 insertion(+) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 3d3b0cb29b..3279de99bf 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -179,6 +179,7 @@ void menu_entry_set_bool_value(uint32_t i, bool value) { rarch_setting_t *setting = menu_entry_get_setting(i); setting_set_with_string_representation(setting, value ? "true" : "false"); + menu_setting_apply_deferred(setting); } struct string_list *menu_entry_enum_values(uint32_t i) From 707e3e91d2294f7c91d963ecab0681d2a27d1f3d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:12:18 +0200 Subject: [PATCH 243/822] Update setting_set_with_string_representation for ST_BOOL --- menu/menu_setting.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index dba6a68a61..1e63980e45 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -567,19 +567,11 @@ int setting_set_with_string_representation(rarch_setting_t* setting, strlcpy(setting->value.string, value, setting->size); break; case ST_BOOL: - value_hash = menu_hash_calculate(value); - - switch (value_hash) - { - case MENU_VALUE_TRUE: - *setting->value.boolean = true; - break; - case MENU_VALUE_FALSE: - *setting->value.boolean = false; - break; - } + if (!strcmp(value, "true")) + *setting->value.boolean = true; + else if (!strcmp(value, "false")) + *setting->value.boolean = false; break; - /* TODO */ case ST_HEX: break; From c9a7dcce4f1e326ef800ef74d53a428bd3685929 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:14:46 +0200 Subject: [PATCH 244/822] Remove unused value_hash --- menu/menu_setting.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 1e63980e45..03792d68d7 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -503,7 +503,6 @@ static void setting_reset_setting(rarch_setting_t* setting) int setting_set_with_string_representation(rarch_setting_t* setting, const char* value) { - uint32_t value_hash; if (!setting || !value) return -1; From efdb2ecd4b332fa9a63fa30944c45d7a83d15149 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:24:46 +0200 Subject: [PATCH 245/822] Don't use menu_settings_apply_deferred anymore --- menu/menu_entry.c | 2 -- menu/menu_setting.c | 36 ++++++++++++++++++++++++------------ menu/menu_setting.h | 2 -- retroarch.c | 2 -- 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 3279de99bf..bf506e43e9 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -43,7 +43,6 @@ int menu_entry_go_back(void) if (!menu_list) return -1; - menu_settings_apply_deferred(); menu_list_pop_stack(menu_list); if (menu_entries_needs_refresh()) @@ -179,7 +178,6 @@ void menu_entry_set_bool_value(uint32_t i, bool value) { rarch_setting_t *setting = menu_entry_get_setting(i); setting_set_with_string_representation(setting, value ? "true" : "false"); - menu_setting_apply_deferred(setting); } struct string_list *menu_entry_enum_values(uint32_t i) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 03792d68d7..909859db8f 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -418,18 +418,6 @@ int menu_setting_apply_deferred(rarch_setting_t *setting) return 0; } -void menu_settings_apply_deferred(void) -{ - rarch_setting_t *setting = menu_setting_get_ptr(); - - if (!setting) - return; - - for (; setting->type != ST_NONE; setting++) - menu_setting_apply_deferred(setting); -} - - /** * setting_reset_setting: * @setting : pointer to setting @@ -591,6 +579,8 @@ int setting_set_with_string_representation(rarch_setting_t* setting, if (setting->change_handler) setting->change_handler(setting); + menu_setting_apply_deferred(setting); + return 0; } @@ -980,6 +970,8 @@ static int setting_uint_action_left_default(void *data, bool wraparound) *setting->value.unsigned_integer = setting->min; } + menu_setting_apply_deferred(setting); + return 0; } @@ -1006,6 +998,8 @@ static int setting_uint_action_right_default(void *data, bool wraparound) } } + menu_setting_apply_deferred(setting); + return 0; } @@ -1026,6 +1020,8 @@ static int setting_fraction_action_left_default( *setting->value.fraction = setting->min; } + menu_setting_apply_deferred(setting); + return 0; } @@ -1053,6 +1049,8 @@ static int setting_fraction_action_right_default( } } + menu_setting_apply_deferred(setting); + return 0; } @@ -1072,6 +1070,8 @@ static int setting_string_action_left_driver(void *data, #endif } + menu_setting_apply_deferred(setting); + return 0; } @@ -1091,6 +1091,8 @@ static int setting_string_action_right_driver(void *data, find_first_driver(setting->name, setting->value.string, setting->size); } + menu_setting_apply_deferred(setting); + return 0; } @@ -1128,6 +1130,9 @@ static int setting_action_ok_bind_all_save_autoconfig(void *data, bool wraparoun rarch_main_msg_queue_push("Autoconf file saved successfully", 1, 100, true); else rarch_main_msg_queue_push("Error saving autoconf file", 1, 100, true); + + menu_setting_apply_deferred(setting); + return 0; } @@ -1171,6 +1176,8 @@ static int setting_action_ok_bind_defaults(void *data, bool wraparound) } } + menu_setting_apply_deferred(setting); + return 0; } @@ -1195,6 +1202,7 @@ static int setting_action_ok_video_refresh_rate_auto(void *data, bool wraparound if (setting_generic_action_ok_default(setting, wraparound) != 0) return -1; + return 0; } @@ -1226,6 +1234,8 @@ static int setting_generic_action_ok_linefeed(void *data, bool wraparound) menu_input_key_start_line(setting->short_description, setting->name, 0, 0, cb); + menu_setting_apply_deferred(setting); + return 0; } @@ -1241,6 +1251,8 @@ static int setting_action_action_ok(void *data, bool wraparound) if (setting->cmd_trigger.idx != EVENT_CMD_NONE) event_command(setting->cmd_trigger.idx); + menu_setting_apply_deferred(setting); + return 0; } diff --git a/menu/menu_setting.h b/menu/menu_setting.h index ce98bb2031..cb9a021465 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -218,8 +218,6 @@ typedef struct rarch_setting int menu_setting_apply_deferred(rarch_setting_t *setting); -void menu_settings_apply_deferred(void); - int menu_setting_set_flags(rarch_setting_t *setting); int menu_setting_generic(rarch_setting_t *setting, bool wraparound); diff --git a/retroarch.c b/retroarch.c index 7771071c71..c307e1c8e0 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1427,8 +1427,6 @@ void rarch_main_set_state(unsigned cmd) break; case RARCH_ACTION_STATE_MENU_RUNNING_FINISHED: #ifdef HAVE_MENU - menu_settings_apply_deferred(); - menu_driver_toggle(false); menu_driver_unset_alive(); From a186a5c68355a8a239b588331da788f8c0dfba7e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:31:37 +0200 Subject: [PATCH 246/822] Turn menu_setting_apply_deferred into static function --- menu/menu_setting.c | 2 +- menu/menu_setting.h | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 909859db8f..92d4d9d1d6 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -363,7 +363,7 @@ int menu_setting_set(unsigned type, const char *label, return ret; } -int menu_setting_apply_deferred(rarch_setting_t *setting) +static int menu_setting_apply_deferred(rarch_setting_t *setting) { if (!setting) return -1; diff --git a/menu/menu_setting.h b/menu/menu_setting.h index cb9a021465..c04c2fe8ba 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -214,10 +214,6 @@ typedef struct rarch_setting bool enforce_maxrange; } rarch_setting_t; - - -int menu_setting_apply_deferred(rarch_setting_t *setting); - int menu_setting_set_flags(rarch_setting_t *setting); int menu_setting_generic(rarch_setting_t *setting, bool wraparound); From 06d1b033e9a4f33eb18ea1ce2fe88cdc9ea7a34c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:34:38 +0200 Subject: [PATCH 247/822] Stop overcomplicating menu code - deferred handler never used so take it out --- menu/menu_setting.c | 90 --------------------------------------------- menu/menu_setting.h | 2 - 2 files changed, 92 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 92d4d9d1d6..b43f2799aa 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -69,11 +69,6 @@ static bool menu_settings_list_append(rarch_setting_t **list, return true; } -static void null_write_handler(void *data) -{ - (void)data; -} - static void menu_settings_list_current_add_bind_type( rarch_setting_t **list, rarch_setting_info_t *list_info, @@ -90,12 +85,6 @@ static void menu_settings_list_current_add_flags( { unsigned idx = list_info->index - 1; (*list)[idx].flags |= values; - - if (values & SD_FLAG_IS_DEFERRED) - { - (*list)[idx].deferred_handler = (*list)[idx].change_handler; - (*list)[idx].change_handler = null_write_handler; - } } static void menu_settings_list_current_add_range( @@ -363,61 +352,6 @@ int menu_setting_set(unsigned type, const char *label, return ret; } -static int menu_setting_apply_deferred(rarch_setting_t *setting) -{ - if (!setting) - return -1; - - if (setting->type >= ST_GROUP) - return -1; - - if (!(setting->flags & SD_FLAG_IS_DEFERRED)) - return -1; - - switch (setting->type) - { - case ST_BOOL: - if (*setting->value.boolean != setting->original_value.boolean) - { - setting->original_value.boolean = *setting->value.boolean; - setting->deferred_handler(setting); - } - break; - case ST_INT: - if (*setting->value.integer != setting->original_value.integer) - { - setting->original_value.integer = *setting->value.integer; - setting->deferred_handler(setting); - } - break; - case ST_UINT: - if (*setting->value.unsigned_integer != setting->original_value.unsigned_integer) - { - setting->original_value.unsigned_integer = *setting->value.unsigned_integer; - setting->deferred_handler(setting); - } - break; - case ST_FLOAT: - if (*setting->value.fraction != setting->original_value.fraction) - { - setting->original_value.fraction = *setting->value.fraction; - setting->deferred_handler(setting); - } - break; - case ST_PATH: - case ST_DIR: - case ST_STRING: - case ST_BIND: - /* Always run the deferred write handler */ - setting->deferred_handler(setting); - break; - default: - break; - } - - return 0; -} - /** * setting_reset_setting: * @setting : pointer to setting @@ -579,8 +513,6 @@ int setting_set_with_string_representation(rarch_setting_t* setting, if (setting->change_handler) setting->change_handler(setting); - menu_setting_apply_deferred(setting); - return 0; } @@ -948,7 +880,6 @@ static int setting_bool_action_toggle_default(void *data, bool wraparound) return -1; *setting->value.boolean = !(*setting->value.boolean); - menu_setting_apply_deferred(setting); return 0; } @@ -970,7 +901,6 @@ static int setting_uint_action_left_default(void *data, bool wraparound) *setting->value.unsigned_integer = setting->min; } - menu_setting_apply_deferred(setting); return 0; } @@ -998,8 +928,6 @@ static int setting_uint_action_right_default(void *data, bool wraparound) } } - menu_setting_apply_deferred(setting); - return 0; } @@ -1020,8 +948,6 @@ static int setting_fraction_action_left_default( *setting->value.fraction = setting->min; } - menu_setting_apply_deferred(setting); - return 0; } @@ -1049,8 +975,6 @@ static int setting_fraction_action_right_default( } } - menu_setting_apply_deferred(setting); - return 0; } @@ -1070,8 +994,6 @@ static int setting_string_action_left_driver(void *data, #endif } - menu_setting_apply_deferred(setting); - return 0; } @@ -1091,8 +1013,6 @@ static int setting_string_action_right_driver(void *data, find_first_driver(setting->name, setting->value.string, setting->size); } - menu_setting_apply_deferred(setting); - return 0; } @@ -1131,8 +1051,6 @@ static int setting_action_ok_bind_all_save_autoconfig(void *data, bool wraparoun else rarch_main_msg_queue_push("Error saving autoconf file", 1, 100, true); - menu_setting_apply_deferred(setting); - return 0; } @@ -1176,8 +1094,6 @@ static int setting_action_ok_bind_defaults(void *data, bool wraparound) } } - menu_setting_apply_deferred(setting); - return 0; } @@ -1234,8 +1150,6 @@ static int setting_generic_action_ok_linefeed(void *data, bool wraparound) menu_input_key_start_line(setting->short_description, setting->name, 0, 0, cb); - menu_setting_apply_deferred(setting); - return 0; } @@ -1251,8 +1165,6 @@ static int setting_action_action_ok(void *data, bool wraparound) if (setting->cmd_trigger.idx != EVENT_CMD_NONE) event_command(setting->cmd_trigger.idx); - menu_setting_apply_deferred(setting); - return 0; } @@ -1600,7 +1512,6 @@ static rarch_setting_t setting_action_setting(const char* name, result.group = group; result.subgroup = subgroup; result.change_handler = NULL; - result.deferred_handler = NULL; result.read_handler = NULL; result.get_string_representation = &setting_get_string_representation_default; result.action_start = NULL; @@ -4061,7 +3972,6 @@ static bool setting_append_list_audio_options( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 32, 512, 16.0, true, true); - settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DEFERRED); CONFIG_FLOAT( settings->audio.rate_control_delta, diff --git a/menu/menu_setting.h b/menu/menu_setting.h index c04c2fe8ba..794cc84632 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -61,7 +61,6 @@ enum setting_flags SD_FLAG_IS_DRIVER = (1 << 6), SD_FLAG_EXIT = (1 << 7), SD_FLAG_CMD_APPLY_AUTO = (1 << 8), - SD_FLAG_IS_DEFERRED = (1 << 9), SD_FLAG_BROWSER_ACTION = (1 << 10), SD_FLAG_ADVANCED = (1 << 11) }; @@ -148,7 +147,6 @@ typedef struct rarch_setting uint64_t flags; change_handler_t change_handler; - change_handler_t deferred_handler; change_handler_t read_handler; action_start_handler_t action_start; action_iterate_handler_t action_iterate; From 7bd2372d0932a2d38705165c0dc5988303d08e04 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:47:32 +0200 Subject: [PATCH 248/822] setting_bool_action_toggle_default - use setting_with_string_representation --- menu/menu_setting.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index b43f2799aa..e086e6fb50 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -879,7 +879,8 @@ static int setting_bool_action_toggle_default(void *data, bool wraparound) if (!setting) return -1; - *setting->value.boolean = !(*setting->value.boolean); + setting_set_with_string_representation(setting, + *setting->value.boolean ? "false" : "true"); return 0; } From a3bc91cd01b697570ba6463150920ea4f6fab17d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 16:56:09 +0200 Subject: [PATCH 249/822] Remove some unused enums --- menu/menu_setting.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/menu/menu_setting.h b/menu/menu_setting.h index 794cc84632..bd37f20383 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -55,14 +55,13 @@ enum setting_flags SD_FLAG_PATH_DIR = (1 << 0), SD_FLAG_PATH_FILE = (1 << 1), SD_FLAG_ALLOW_EMPTY = (1 << 2), - SD_FLAG_VALUE_DESC = (1 << 3), - SD_FLAG_HAS_RANGE = (1 << 4), - SD_FLAG_ALLOW_INPUT = (1 << 5), - SD_FLAG_IS_DRIVER = (1 << 6), - SD_FLAG_EXIT = (1 << 7), - SD_FLAG_CMD_APPLY_AUTO = (1 << 8), - SD_FLAG_BROWSER_ACTION = (1 << 10), - SD_FLAG_ADVANCED = (1 << 11) + SD_FLAG_HAS_RANGE = (1 << 3), + SD_FLAG_ALLOW_INPUT = (1 << 4), + SD_FLAG_IS_DRIVER = (1 << 5), + SD_FLAG_EXIT = (1 << 6), + SD_FLAG_CMD_APPLY_AUTO = (1 << 7), + SD_FLAG_BROWSER_ACTION = (1 << 8), + SD_FLAG_ADVANCED = (1 << 9) }; enum setting_list_flags From 97ec360eb30eee9fd4b05f50e01b6747c26cbe7a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 17:46:31 +0200 Subject: [PATCH 250/822] Cleanups --- menu/cbs/menu_cbs_select.c | 6 +++++- menu/menu_entry.c | 2 +- menu/menu_setting.c | 38 +------------------------------------- menu/menu_setting.h | 6 ------ 4 files changed, 7 insertions(+), 45 deletions(-) diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index e32f8e05db..a0999d81f9 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -47,6 +47,10 @@ static int action_select_default(const char *path, const char *label, unsigned t break; case ST_PATH: case ST_DIR: + case ST_ACTION: + case ST_STRING: + case ST_HEX: + case ST_BIND: action = MENU_ACTION_OK; break; default: @@ -56,7 +60,7 @@ static int action_select_default(const char *path, const char *label, unsigned t if (action == MENU_ACTION_NOOP) { - if ((cbs && cbs->action_ok) || menu_setting_is_of_general_type(setting)) + if (cbs && cbs->action_ok) action = MENU_ACTION_OK; else { diff --git a/menu/menu_entry.c b/menu/menu_entry.c index bf506e43e9..0230573032 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -97,7 +97,7 @@ enum menu_entry_type menu_entry_get_type(uint32_t i) if (menu_setting_is_of_path_type(setting)) return MENU_ENTRY_PATH; - if (menu_setting_is_of_enum_type(setting)) + if (setting && (setting->type == ST_STRING) && setting->values) return MENU_ENTRY_ENUM; if (setting) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index e086e6fb50..daa6c4e958 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -301,9 +301,7 @@ rarch_setting_t *menu_setting_find(const char *label) rarch_setting_t *settings = menu_setting_get_ptr(); uint32_t needle = 0; - if (!settings) - return NULL; - if (!label) + if (!settings || !label) return NULL; needle = menu_hash_calculate(label); @@ -6324,37 +6322,3 @@ bool menu_setting_is_of_path_type(rarch_setting_t *setting) return true; return false; } - -bool menu_setting_is_of_general_type(rarch_setting_t *setting) -{ - if ( - setting && - (setting->type > ST_ACTION) && - (setting->type < ST_GROUP) - ) - return true; - return false; -} - -bool menu_setting_is_of_numeric_type(rarch_setting_t *setting) -{ - if ( - setting && - ((setting->type == ST_INT) || - (setting->type == ST_UINT) || - (setting->type == ST_FLOAT)) - ) - return true; - return false; -} - -bool menu_setting_is_of_enum_type(rarch_setting_t *setting) -{ - if ( - setting && - (setting->type == ST_STRING) && - setting->values - ) - return true; - return false; -} diff --git a/menu/menu_setting.h b/menu/menu_setting.h index bd37f20383..8fa8b85767 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -297,12 +297,6 @@ rarch_setting_t* menu_setting_new(unsigned mask); bool menu_setting_is_of_path_type(rarch_setting_t *setting); -bool menu_setting_is_of_general_type(rarch_setting_t *setting); - -bool menu_setting_is_of_numeric_type(rarch_setting_t *setting); - -bool menu_setting_is_of_enum_type(rarch_setting_t *setting); - int menu_action_handle_setting(rarch_setting_t *setting, unsigned type, unsigned action, bool wraparound); From 323a06f41f144e517b9e59413047e0fbf066e554 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 17:55:44 +0200 Subject: [PATCH 251/822] (menu_setting.c) Cleanups --- menu/menu_displaylist.c | 25 ++++++++++++++++ menu/menu_setting.c | 66 ++++------------------------------------- menu/menu_setting.h | 2 -- 3 files changed, 30 insertions(+), 63 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index a5ec08874b..8894d0f47e 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1398,6 +1398,31 @@ static void menu_displaylist_realloc_settings(menu_entries_t *entries, unsigned entries->list_settings = menu_setting_new(flags); } +static int menu_setting_set_flags(rarch_setting_t *setting) +{ + if (!setting) + return 0; + + if (setting->flags & SD_FLAG_IS_DRIVER) + return MENU_SETTING_DRIVER; + + switch (setting->type) + { + case ST_ACTION: + return MENU_SETTING_ACTION; + case ST_PATH: + return MENU_FILE_PATH; + case ST_GROUP: + return MENU_SETTING_GROUP; + case ST_SUB_GROUP: + return MENU_SETTING_SUBGROUP; + default: + break; + } + + return 0; +} + static int menu_displaylist_parse_settings(menu_handle_t *menu, menu_displaylist_info_t *info, unsigned setting_flags) { diff --git a/menu/menu_setting.c b/menu/menu_setting.c index daa6c4e958..eb766f12d3 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -69,24 +69,6 @@ static bool menu_settings_list_append(rarch_setting_t **list, return true; } -static void menu_settings_list_current_add_bind_type( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - unsigned type) -{ - unsigned idx = list_info->index - 1; - (*list)[idx].bind_type = type; -} - -static void menu_settings_list_current_add_flags( - rarch_setting_t **list, - rarch_setting_info_t *list_info, - unsigned values) -{ - unsigned idx = list_info->index - 1; - (*list)[idx].flags |= values; -} - static void menu_settings_list_current_add_range( rarch_setting_t **list, rarch_setting_info_t *list_info, @@ -101,7 +83,7 @@ static void menu_settings_list_current_add_range( (*list)[idx].enforce_minrange = enforce_minrange_enable; (*list)[idx].enforce_maxrange = enforce_maxrange_enable; - menu_settings_list_current_add_flags(list, list_info, SD_FLAG_HAS_RANGE); + (*list)[list_info->index - 1].flags |= SD_FLAG_HAS_RANGE; } static void menu_settings_list_current_add_values( @@ -122,41 +104,6 @@ static void menu_settings_list_current_add_cmd( (*list)[idx].cmd_trigger.idx = values; } - -static rarch_setting_t *menu_setting_list_new(unsigned size) -{ - rarch_setting_t *list = (rarch_setting_t*)calloc(size, sizeof(*list)); - if (!list) - return NULL; - - return list; -} - -int menu_setting_set_flags(rarch_setting_t *setting) -{ - if (!setting) - return 0; - - if (setting->flags & SD_FLAG_IS_DRIVER) - return MENU_SETTING_DRIVER; - - switch (setting->type) - { - case ST_ACTION: - return MENU_SETTING_ACTION; - case ST_PATH: - return MENU_FILE_PATH; - case ST_GROUP: - return MENU_SETTING_GROUP; - case ST_SUB_GROUP: - return MENU_SETTING_SUBGROUP; - default: - break; - } - - return 0; -} - static int setting_generic_action_ok_default(void *data, bool wraparound) { rarch_setting_t *setting = (rarch_setting_t*)data; @@ -2364,10 +2311,7 @@ static void settings_data_list_current_add_flags( rarch_setting_info_t *list_info, unsigned values) { - menu_settings_list_current_add_flags( - list, - list_info, - values); + (*list)[list_info->index - 1].flags |= values; setting_add_special_callbacks(list, list_info, values); } @@ -4112,7 +4056,7 @@ static bool setting_append_list_input_hotkey_options( CONFIG_BIND(settings->input.binds[0][i], 0, 0, strdup(keybind->base), strdup(keybind->desc), &retro_keybinds_1[i], group_info.name, subgroup_info.name, parent_group); - menu_settings_list_current_add_bind_type(list, list_info, i + MENU_SETTINGS_BIND_BEGIN); + (*list)[list_info->index - 1].bind_type = i + MENU_SETTINGS_BIND_BEGIN; } END_SUB_GROUP(list, list_info, parent_group); @@ -6049,7 +5993,7 @@ static bool setting_append_list_input_player_options( group_info.name, subgroup_info.name, parent_group); - menu_settings_list_current_add_bind_type(list, list_info, i + MENU_SETTINGS_BIND_BEGIN); + (*list)[list_info->index - 1].bind_type = i + MENU_SETTINGS_BIND_BEGIN; } } @@ -6106,7 +6050,7 @@ rarch_setting_t *menu_setting_new(unsigned mask) return NULL; list_info->size = 32; - list = menu_setting_list_new(list_info->size); + list = (rarch_setting_t*)calloc(list_info->size, sizeof(*list)); if (!list) goto error; diff --git a/menu/menu_setting.h b/menu/menu_setting.h index 8fa8b85767..e76e02d078 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -211,8 +211,6 @@ typedef struct rarch_setting bool enforce_maxrange; } rarch_setting_t; -int menu_setting_set_flags(rarch_setting_t *setting); - int menu_setting_generic(rarch_setting_t *setting, bool wraparound); int menu_setting_set(unsigned type, const char *label, From 9925da95aee1fa825c92e72405a9ab042ae4d1d6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 18:14:51 +0200 Subject: [PATCH 252/822] Refactor menu_entries_get_core_title --- menu/drivers/glui.c | 6 +----- menu/drivers/rgui.c | 5 +---- menu/drivers/rmenu_xui.cpp | 17 ++++++++++------- menu/drivers/xmb.c | 5 +---- menu/menu_entries.c | 18 +++++++++++++++--- menu/menu_entries.h | 2 +- 6 files changed, 29 insertions(+), 24 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 1dd27e854e..9ee6c4ccb3 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -460,14 +460,10 @@ static void glui_frame(void) glui_draw_scrollbar(gl); - if (settings->menu.core_enable) - { - menu_entries_get_core_title(title_msg, sizeof(title_msg)); - + if (menu_entries_get_core_title(title_msg, sizeof(title_msg)) == 0) glui_blit_line(glui->margin, height - glui->line_height, title_msg, title_color, TEXT_ALIGN_LEFT); - } if (settings->menu.timedate_enable) { diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index e4588f9014..7bc12efb84 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -480,14 +480,11 @@ static void rgui_render(void) RGUI_TERM_START_X + (RGUI_TERM_WIDTH - strlen(title_buf)) * FONT_WIDTH_STRIDE / 2, RGUI_TERM_START_X, title_buf, TITLE_COLOR(settings)); - if (settings->menu.core_enable) - { - menu_entries_get_core_title(title_msg, sizeof(title_msg)); + if (menu_entries_get_core_title(title_msg, sizeof(title_msg)) == 0) blit_line(menu, RGUI_TERM_START_X, (RGUI_TERM_HEIGHT * FONT_HEIGHT_STRIDE) + RGUI_TERM_START_Y + 2, title_msg, hover_color); - } if (settings->menu.timedate_enable) { diff --git a/menu/drivers/rmenu_xui.cpp b/menu/drivers/rmenu_xui.cpp index 6c706b69ac..ef1bcde848 100644 --- a/menu/drivers/rmenu_xui.cpp +++ b/menu/drivers/rmenu_xui.cpp @@ -158,9 +158,11 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) { char str[PATH_MAX_LENGTH] = {0}; - menu_entries_get_core_title(str, sizeof(str)); - mbstowcs(strw_buffer, str, sizeof(strw_buffer) / sizeof(wchar_t)); - XuiTextElementSetText(m_menutitlebottom, strw_buffer); + if (menu_entries_get_core_title(str, sizeof(str)) == 0) + { + mbstowcs(strw_buffer, str, sizeof(strw_buffer) / sizeof(wchar_t)); + XuiTextElementSetText(m_menutitlebottom, strw_buffer); + } } return 0; @@ -565,10 +567,11 @@ static void rmenu_xui_render(void) if (XuiHandleIsValid(m_menutitle)) { - menu_entries_get_core_title(title, sizeof(title)); - - mbstowcs(strw_buffer, title, sizeof(strw_buffer) / sizeof(wchar_t)); - XuiTextElementSetText(m_menutitlebottom, strw_buffer); + if (menu_entries_get_core_title(title, sizeof(title)) == 0) + { + mbstowcs(strw_buffer, title, sizeof(strw_buffer) / sizeof(wchar_t)); + XuiTextElementSetText(m_menutitlebottom, strw_buffer); + } } end = menu_entries_get_end(); diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 32ae5db4d7..c85a9dba49 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1618,12 +1618,9 @@ static void xmb_frame(void) xmb->margins.title.top, 1, 1, TEXT_ALIGN_RIGHT); } - if (settings->menu.core_enable) - { - menu_entries_get_core_title(title_msg, sizeof(title_msg)); + if (menu_entries_get_core_title(title_msg, sizeof(title_msg)) == 0) xmb_draw_text(menu, xmb, title_msg, xmb->margins.title.left, height - xmb->margins.title.bottom, 1, 1, TEXT_ALIGN_LEFT); - } depth = xmb_list_get_size(menu, MENU_LIST_PLAIN); diff --git a/menu/menu_entries.c b/menu/menu_entries.c index 03baa8558d..1a8838a0e0 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -131,13 +131,23 @@ bool menu_entries_show_back(void) /* Sets 's' to the name of the current core * (shown at the top of the UI). */ -void menu_entries_get_core_title(char *s, size_t len) +int menu_entries_get_core_title(char *s, size_t len) { + const char *core_name = NULL; + const char *core_version = NULL; global_t *global = global_get_ptr(); - const char *core_name = global ? global->menu.info.library_name : NULL; - const char *core_version = global ? global->menu.info.library_version : NULL; + settings_t *settings = config_get_ptr(); rarch_system_info_t *info = rarch_system_info_get_ptr(); + if (!settings->menu.core_enable) + return -1; + + if (global) + { + core_name = global->menu.info.library_name; + core_version = global->menu.info.library_version; + } + if (!core_name || core_name[0] == '\0') core_name = info->info.library_name; if (!core_name || core_name[0] == '\0') @@ -150,6 +160,8 @@ void menu_entries_get_core_title(char *s, size_t len) snprintf(s, len, "%s - %s %s", PACKAGE_VERSION, core_name, core_version); + + return 0; } static bool menu_entries_get_nonblocking_refresh(void) diff --git a/menu/menu_entries.h b/menu/menu_entries.h index c3ab3864e2..3796140734 100644 --- a/menu/menu_entries.h +++ b/menu/menu_entries.h @@ -52,7 +52,7 @@ int menu_entries_get_title(char *title, size_t title_len); bool menu_entries_show_back(void); -void menu_entries_get_core_title(char *title_msg, size_t title_msg_len); +int menu_entries_get_core_title(char *title_msg, size_t title_msg_len); menu_entries_t *menu_entries_get_ptr(void); From 3fb234acbd47381ae599f6b753bdba8fecc40051 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 18:23:53 +0200 Subject: [PATCH 253/822] Reduce menu_list_clear calls to one --- menu/menu_displaylist.c | 90 ++++++++++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 33 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 8894d0f47e..ee37d03444 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2207,6 +2207,63 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) settings_t *settings = config_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); + switch (type) + { + case DISPLAYLIST_HELP_SCREEN_LIST: + case DISPLAYLIST_MAIN_MENU: + case DISPLAYLIST_SETTINGS: + case DISPLAYLIST_SETTINGS_SUBGROUP: + case DISPLAYLIST_HORIZONTAL: + case DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS: + case DISPLAYLIST_CONTENT_SETTINGS: + case DISPLAYLIST_INFORMATION_LIST: + case DISPLAYLIST_ADD_CONTENT_LIST: + case DISPLAYLIST_LOAD_CONTENT_LIST: + case DISPLAYLIST_OPTIONS: + case DISPLAYLIST_OPTIONS_CHEATS: + case DISPLAYLIST_OPTIONS_REMAPPINGS: + case DISPLAYLIST_SHADER_PARAMETERS_PRESET: + case DISPLAYLIST_PERFCOUNTERS_CORE: + case DISPLAYLIST_PERFCOUNTERS_FRONTEND: + case DISPLAYLIST_DATABASE_ENTRY: + case DISPLAYLIST_DATABASE_QUERY: + case DISPLAYLIST_OPTIONS_SHADERS: + case DISPLAYLIST_CORE_CONTENT: + case DISPLAYLIST_CORES_UPDATER: + case DISPLAYLIST_SETTINGS_ALL: + case DISPLAYLIST_PLAYLIST_COLLECTION: + case DISPLAYLIST_HISTORY: + case DISPLAYLIST_OPTIONS_DISK: + case DISPLAYLIST_SYSTEM_INFO: + case DISPLAYLIST_CORES_SUPPORTED: + case DISPLAYLIST_CORES_COLLECTION_SUPPORTED: + case DISPLAYLIST_CORE_INFO: + case DISPLAYLIST_CORE_OPTIONS: + case DISPLAYLIST_DEFAULT: + case DISPLAYLIST_CORES: + case DISPLAYLIST_CORES_DETECTED: + case DISPLAYLIST_SHADER_PASS: + case DISPLAYLIST_SHADER_PRESET: + case DISPLAYLIST_DATABASES: + case DISPLAYLIST_DATABASE_CURSORS: + case DISPLAYLIST_DATABASE_PLAYLISTS: + case DISPLAYLIST_VIDEO_FILTERS: + case DISPLAYLIST_AUDIO_FILTERS: + case DISPLAYLIST_IMAGES: + case DISPLAYLIST_OVERLAYS: + case DISPLAYLIST_FONTS: + case DISPLAYLIST_CHEAT_FILES: + case DISPLAYLIST_REMAP_FILES: + case DISPLAYLIST_RECORD_CONFIG_FILES: + case DISPLAYLIST_CONFIG_FILES: + case DISPLAYLIST_CONTENT_HISTORY: + case DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL: + case DISPLAYLIST_ARCHIVE_ACTION: + case DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE: + menu_list_clear(info->list); + break; + } + switch (type) { case DISPLAYLIST_NONE: @@ -2222,7 +2279,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) menu_entries_set_refresh(); break; case DISPLAYLIST_HELP_SCREEN_LIST: - menu_list_clear(info->list); menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_HELP_CONTROLS), menu_hash_to_str(MENU_LABEL_HELP_CONTROLS), @@ -2261,17 +2317,14 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) break; case DISPLAYLIST_MAIN_MENU: case DISPLAYLIST_SETTINGS: - menu_list_clear(info->list); ret = menu_displaylist_parse_settings(menu, info, info->flags); need_push = true; break; case DISPLAYLIST_SETTINGS_SUBGROUP: - menu_list_clear(info->list); ret = menu_displaylist_parse_settings_in_subgroup(info); need_push = true; break; case DISPLAYLIST_HORIZONTAL: - menu_list_clear(info->list); ret = menu_displaylist_parse_horizontal_list(info); need_sort = true; @@ -2279,53 +2332,45 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) need_push = true; break; case DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS: - menu_list_clear(info->list); ret = menu_displaylist_parse_horizontal_content_actions(info); need_refresh = true; need_push = true; break; case DISPLAYLIST_CONTENT_SETTINGS: - menu_list_clear(info->list); ret = menu_displaylist_parse_load_content_settings(info); need_refresh = true; need_push = true; break; case DISPLAYLIST_INFORMATION_LIST: - menu_list_clear(info->list); ret = menu_displaylist_parse_information_list(info); need_push = true; need_refresh = true; break; case DISPLAYLIST_ADD_CONTENT_LIST: - menu_list_clear(info->list); ret = menu_displaylist_parse_add_content_list(info); need_push = true; need_refresh = true; break; case DISPLAYLIST_LOAD_CONTENT_LIST: - menu_list_clear(info->list); ret = menu_displaylist_parse_load_content_list(info); need_push = true; need_refresh = true; break; case DISPLAYLIST_OPTIONS: - menu_list_clear(info->list); ret = menu_displaylist_parse_options(info); need_push = true; break; case DISPLAYLIST_OPTIONS_CHEATS: - menu_list_clear(info->list); ret = menu_displaylist_parse_options_cheats(info); need_push = true; break; case DISPLAYLIST_OPTIONS_REMAPPINGS: - menu_list_clear(info->list); ret = menu_displaylist_parse_options_remappings(info); need_push = true; @@ -2333,7 +2378,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) case DISPLAYLIST_SHADER_PARAMETERS: case DISPLAYLIST_SHADER_PARAMETERS_PRESET: #ifdef HAVE_SHADER_MANAGER - menu_list_clear(info->list); { struct video_shader *shader = video_shader_driver_get_current_shader(); if (!shader) @@ -2357,7 +2401,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) break; case DISPLAYLIST_PERFCOUNTERS_CORE: case DISPLAYLIST_PERFCOUNTERS_FRONTEND: - menu_list_clear(info->list); menu_displaylist_push_perfcounter(info, (type == DISPLAYLIST_PERFCOUNTERS_CORE) ? perf_counters_libretro : perf_counters_rarch, @@ -2372,13 +2415,11 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) need_push = true; break; case DISPLAYLIST_DATABASE_ENTRY: - menu_list_clear(info->list); ret = menu_displaylist_parse_database_entry(info); need_push = true; break; case DISPLAYLIST_DATABASE_QUERY: - menu_list_clear(info->list); ret = menu_database_parse_query(info->list, info->path, (info->path_c[0] == '\0') ? NULL : info->path_c); strlcpy(info->path, info->path_b, sizeof(info->path)); @@ -2388,31 +2429,25 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) need_push = true; break; case DISPLAYLIST_OPTIONS_SHADERS: - menu_list_clear(info->list); ret = menu_displaylist_parse_shader_options(info); need_push = true; break; case DISPLAYLIST_CORE_CONTENT: - menu_list_clear(info->list); #ifdef HAVE_NETWORKING - menu_list_clear(info->list); print_buf_lines(info->list, core_buf, core_len, MENU_FILE_DOWNLOAD_CORE_CONTENT); need_push = true; need_refresh = true; #endif break; case DISPLAYLIST_CORES_UPDATER: - menu_list_clear(info->list); #ifdef HAVE_NETWORKING - menu_list_clear(info->list); print_buf_lines(info->list, core_buf, core_len, MENU_FILE_DOWNLOAD_CORE); need_push = true; need_refresh = true; #endif break; case DISPLAYLIST_SETTINGS_ALL: - menu_list_clear(info->list); menu_displaylist_realloc_settings(&menu->entries, SL_FLAG_ALL_SETTINGS); setting = menu_setting_find(menu_hash_to_str(MENU_LABEL_VALUE_DRIVER_SETTINGS)); @@ -2463,7 +2498,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) need_push = true; break; case DISPLAYLIST_PLAYLIST_COLLECTION: - menu_list_clear(info->list); { char path_playlist[PATH_MAX_LENGTH] = {0}; content_playlist_t *playlist = NULL; @@ -2492,7 +2526,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) } break; case DISPLAYLIST_HISTORY: - menu_list_clear(info->list); { char path_playlist[PATH_MAX_LENGTH] = {0}; content_playlist_t *playlist = g_defaults.history; @@ -2509,7 +2542,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) } break; case DISPLAYLIST_OPTIONS_DISK: - menu_list_clear(info->list); menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DISK_INDEX), menu_hash_to_str(MENU_LABEL_DISK_INDEX), @@ -2526,14 +2558,12 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) need_push = true; break; case DISPLAYLIST_SYSTEM_INFO: - menu_list_clear(info->list); menu_displaylist_parse_system_info(info); need_push = true; need_refresh = true; break; case DISPLAYLIST_CORES_SUPPORTED: case DISPLAYLIST_CORES_COLLECTION_SUPPORTED: - menu_list_clear(info->list); need_sort = true; need_refresh = true; need_push = true; @@ -2568,12 +2598,10 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) } break; case DISPLAYLIST_CORE_INFO: - menu_list_clear(info->list); menu_displaylist_parse_core_info(info); need_push = true; break; case DISPLAYLIST_CORE_OPTIONS: - menu_list_clear(info->list); if (system && system->core_options) { size_t opts = core_option_size(system->core_options); @@ -2616,7 +2644,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) case DISPLAYLIST_RECORD_CONFIG_FILES: case DISPLAYLIST_CONFIG_FILES: case DISPLAYLIST_CONTENT_HISTORY: - menu_list_clear(info->list); if (menu_displaylist_parse_generic(info, &need_sort) == 0) { need_refresh = true; @@ -2624,11 +2651,9 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) } break; case DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL: - menu_list_clear(info->list); menu_displaylist_parse_generic(info, &need_sort); break; case DISPLAYLIST_ARCHIVE_ACTION: - menu_list_clear(info->list); menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_OPEN_ARCHIVE), menu_hash_to_str(MENU_LABEL_OPEN_ARCHIVE), @@ -2640,7 +2665,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) need_push = true; break; case DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE: - menu_list_clear(info->list); menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_OPEN_ARCHIVE), menu_hash_to_str(MENU_LABEL_OPEN_ARCHIVE_DETECT_CORE), From f32ed00f4949081839d298ef201011238bdf6108 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 18:27:30 +0200 Subject: [PATCH 254/822] Remove some implicit memsets --- menu/menu_displaylist.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index ee37d03444..054886f2c0 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2170,8 +2170,8 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n for (i = 0; i < list_size; i++) { unsigned type = 0; - char core_path[PATH_MAX_LENGTH] = {0}; - char display_name[PATH_MAX_LENGTH] = {0}; + char core_path[PATH_MAX_LENGTH]; + char display_name[PATH_MAX_LENGTH]; const char *path = NULL; menu_list_get_at_offset(info->list, i, &path, NULL, &type, NULL); From 4f6a2f36778106921cb50ba58dfe205bc9203bc9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 18:47:49 +0200 Subject: [PATCH 255/822] Add menu_setting_generic call to set_bool function --- menu/menu_entry.c | 1 + 1 file changed, 1 insertion(+) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 0230573032..b105e550df 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -178,6 +178,7 @@ void menu_entry_set_bool_value(uint32_t i, bool value) { rarch_setting_t *setting = menu_entry_get_setting(i); setting_set_with_string_representation(setting, value ? "true" : "false"); + menu_setting_generic(setting, false); } struct string_list *menu_entry_enum_values(uint32_t i) From e523177f343e85d40618de681be265f749f1c150 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:27:03 +0200 Subject: [PATCH 256/822] Add setting to file_list_cbs_t --- menu/menu_cbs.c | 6 ++++++ menu/menu_list.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/menu/menu_cbs.c b/menu/menu_cbs.c index cd1e0e8b10..c00bdfc6d1 100644 --- a/menu/menu_cbs.c +++ b/menu/menu_cbs.c @@ -51,6 +51,7 @@ void menu_cbs_init(void *data, { char elem0[PATH_MAX_LENGTH]; char elem1[PATH_MAX_LENGTH]; + rarch_setting_t *setting = NULL; struct string_list *str_list = NULL; const char *menu_label = NULL; menu_file_list_cbs_t *cbs = NULL; @@ -67,6 +68,11 @@ void menu_cbs_init(void *data, if (!cbs) return; + setting = menu_setting_find(label); + + if (setting) + cbs->setting = setting; + elem0[0] = '\0'; elem1[0] = '\0'; diff --git a/menu/menu_list.h b/menu/menu_list.h index 724de34fad..206f7665ab 100644 --- a/menu/menu_list.h +++ b/menu/menu_list.h @@ -19,6 +19,7 @@ #include #include +#include "menu_setting.h" #ifdef __cplusplus extern "C" { @@ -38,6 +39,7 @@ typedef enum typedef struct menu_file_list_cbs { + rarch_setting_t *setting; int (*action_iterate)(const char *label, unsigned action); int (*action_deferred_push)(menu_displaylist_info_t *info); int (*action_select)(const char *path, const char *label, unsigned type, From a6e524219fa21334b4069411605e18910e8c947d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:30:11 +0200 Subject: [PATCH 257/822] Don't use expensive menu_setting_find function anymore for menu_setting_set --- menu/menu_setting.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index eb766f12d3..fc67ba6ba0 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -278,18 +278,15 @@ int menu_setting_set(unsigned type, const char *label, unsigned action, bool wraparound) { int ret = 0; - rarch_setting_t *setting = NULL; menu_navigation_t *nav = menu_navigation_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); + menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset( + menu_list->selection_buf, nav->selection_ptr); - setting = menu_setting_find( - menu_list->selection_buf->list - [nav->selection_ptr].label); - - if (!setting) + if (!cbs) return 0; - ret = menu_action_handle_setting(setting, + ret = menu_action_handle_setting(cbs->setting, type, action, wraparound); if (ret == -1) From 15ca93a4c964a709b6053f4c863deed71d9008ee Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:35:53 +0200 Subject: [PATCH 258/822] Refactor action_ok_menu_wallpaper_load - no longer needs menu_setting_find --- menu/cbs/menu_cbs_ok.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 5ccea16fa3..d52a46528f 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -783,22 +783,21 @@ static int action_ok_cheat_file_load(const char *path, static int action_ok_menu_wallpaper_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - char wallpaper_path[PATH_MAX_LENGTH] = {0}; + char wallpaper_path[PATH_MAX_LENGTH]; const char *menu_label = NULL; const char *menu_path = NULL; - rarch_setting_t *setting = NULL; + menu_file_list_cbs_t *cbs = NULL; menu_list_t *menu_list = menu_list_get_ptr(); settings_t *settings = config_get_ptr(); - + if (!menu_list) return -1; menu_list_get_last_stack(menu_list, &menu_path, &menu_label, NULL, NULL); + cbs = menu_list_get_last_stack_actiondata(menu_list); - setting = menu_setting_find(menu_label); - - if (!setting) + if (!cbs) return -1; fill_pathname_join(wallpaper_path, menu_path, path, sizeof(wallpaper_path)); @@ -811,7 +810,7 @@ static int action_ok_menu_wallpaper_load(const char *path, true); } - menu_list_pop_stack_by_needle(menu_list, setting->name); + menu_list_pop_stack_by_needle(menu_list, cbs->setting->name); return 0; } From 132b3825450179bffc998a4eeb85167ef158cedc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:38:00 +0200 Subject: [PATCH 259/822] Refactor menu_cbs_init_bind_left_compare_label - no longer depends on menu_setting_find --- menu/cbs/menu_cbs_left.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index bbc0b1b61d..a0c05ef1af 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -344,13 +344,12 @@ static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t label_hash, uint32_t menu_label_hash, const char *elem0) { unsigned i; - rarch_setting_t *setting = menu_setting_find(label); - if (setting) + if (cbs->setting) { - uint32_t parent_group_hash = menu_hash_calculate(setting->parent_group); + uint32_t parent_group_hash = menu_hash_calculate(cbs->setting->parent_group); - if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && (setting->type == ST_GROUP)) + if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && (cbs->setting->type == ST_GROUP)) { cbs->action_left = action_left_scroll; return 0; From f1dfdd653a81570566e8674dca9d30d0d17403f7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:39:12 +0200 Subject: [PATCH 260/822] Same thing for menu_cbs_right.c --- menu/cbs/menu_cbs_right.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index ab9a5edf4e..b946363e3b 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -419,13 +419,12 @@ static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t label_hash, uint32_t menu_label_hash, const char *elem0) { unsigned i; - rarch_setting_t *setting = menu_setting_find(label); - if (setting) + if (cbs->setting) { - uint32_t parent_group_hash = menu_hash_calculate(setting->parent_group); + uint32_t parent_group_hash = menu_hash_calculate(cbs->setting->parent_group); - if ((parent_group_hash == MENU_LABEL_SETTINGS) && (setting->type == ST_GROUP)) + if ((parent_group_hash == MENU_LABEL_SETTINGS) && (cbs->setting->type == ST_GROUP)) { cbs->action_right = action_right_scroll; return 0; From 927423df893618ca963e9a77f17efd4cd9ee47eb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:45:37 +0200 Subject: [PATCH 261/822] action_select_default -don't use menu_setting_find anymore --- menu/cbs/menu_cbs_select.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index a0999d81f9..05486a59d4 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -28,16 +28,14 @@ static int action_select_default(const char *path, const char *label, unsigned t enum menu_action action = MENU_ACTION_NOOP; menu_file_list_cbs_t *cbs = NULL; menu_list_t *menu_list = menu_list_get_ptr(); - rarch_setting_t *setting = menu_setting_find( - menu_list->selection_buf->list[idx].label); menu_entry_get(&entry, idx, NULL, false); cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, idx); - if (setting) + if (cbs->setting) { - switch (setting->type) + switch (cbs->setting->type) { case ST_BOOL: case ST_INT: From 60932537631cac59582ee019dffb985d75d8f5b1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:47:18 +0200 Subject: [PATCH 262/822] Don't use menu_setting_find in menu_cbs_title.c --- menu/cbs/menu_cbs_title.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 6901a9508f..a0917cc52c 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -503,13 +503,11 @@ static int action_get_title_input_settings(const char *path, const char *label, static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t label_hash, const char *elem1) { - rarch_setting_t *setting = menu_setting_find(label); - - if (setting) + if (cbs->setting) { - uint32_t parent_group_hash = menu_hash_calculate(setting->parent_group); + uint32_t parent_group_hash = menu_hash_calculate(cbs->setting->parent_group); - if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && setting->type == ST_GROUP) + if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && cbs->setting->type == ST_GROUP) { cbs->action_get_title = action_get_title_group_settings; return 0; From a4657461a67020d04391c2b65a8f74a3e7035637 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:52:24 +0200 Subject: [PATCH 263/822] Don't use menu_setting_find in menu_cbs_ok.c except for one place --- menu/cbs/menu_cbs_ok.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d52a46528f..d2b3d6145b 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1349,7 +1349,7 @@ static int action_ok_set_path(const char *path, { const char *menu_path = NULL; const char *menu_label = NULL; - rarch_setting_t *setting = NULL; + menu_file_list_cbs_t *cbs = NULL; menu_list_t *menu_list = menu_list_get_ptr(); if (!menu_list) @@ -1357,15 +1357,13 @@ static int action_ok_set_path(const char *path, menu_list_get_last_stack(menu_list, &menu_path, &menu_label, NULL, NULL); + cbs = menu_list_get_last_stack_actiondata(menu_list); - setting = menu_setting_find(menu_label); - - if (!setting) + if (!cbs) return -1; - menu_action_setting_set_current_string_path(setting, menu_path, path); - - menu_list_pop_stack_by_needle(menu_list, setting->name); + menu_action_setting_set_current_string_path(cbs->setting, menu_path, path); + menu_list_pop_stack_by_needle(menu_list, cbs->setting->name); return 0; } @@ -2057,7 +2055,6 @@ static int is_rdb_entry(uint32_t label_hash) static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t hash, const char *elem0) { - rarch_setting_t *setting = menu_setting_find(label); uint32_t elem0_hash = menu_hash_calculate(elem0); if (elem0[0] != '\0' && (is_rdb_entry(elem0_hash) == 0)) @@ -2066,7 +2063,7 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, return 0; } - if (setting && setting->browser_selection_type == ST_DIR) + if (cbs->setting && cbs->setting->browser_selection_type == ST_DIR) { cbs->action_ok = action_ok_push_generic_list; return 0; From d36272b4bb2432259b24f90ebd744f3456283cad Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 19:57:17 +0200 Subject: [PATCH 264/822] Simplify menu_entry_get_setting --- menu/menu_entry.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index b105e550df..6b467c4169 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -56,22 +56,13 @@ int menu_entry_go_back(void) static rarch_setting_t *menu_entry_get_setting(uint32_t i) { - const char *path = NULL; - const char *entry_label = NULL; - const char *dir = NULL; - const char *label = NULL; menu_list_t *menu_list = menu_list_get_ptr(); - unsigned type = 0; - unsigned menu_type = 0; + menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset + (menu_list->selection_buf,i); - menu_list_get_last_stack(menu_list, &dir, - &label, &menu_type, NULL); - - menu_list_get_at_offset(menu_list->selection_buf, i, &path, - &entry_label, &type, NULL); - - return menu_setting_find( - menu_list->selection_buf->list[i].label); + if (!cbs) + return NULL; + return cbs->setting; } enum menu_entry_type menu_entry_get_type(uint32_t i) From 4405caeb63adb3ae2962bb5ba5e069e0b89d938a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 20:08:06 +0200 Subject: [PATCH 265/822] Simplify menu_entry_get_type --- menu/menu_entry.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 6b467c4169..e49db75e74 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -67,22 +67,8 @@ static rarch_setting_t *menu_entry_get_setting(uint32_t i) enum menu_entry_type menu_entry_get_type(uint32_t i) { - rarch_setting_t *setting = NULL; - const char *path = NULL; - const char *entry_label = NULL; - const char *dir = NULL; - const char *label = NULL; menu_list_t *menu_list = menu_list_get_ptr(); - unsigned type = 0; - unsigned menu_type = 0; - - menu_list_get_last_stack(menu_list, &dir, - &label, &menu_type, NULL); - - menu_list_get_at_offset(menu_list->selection_buf, i, &path, - &entry_label, &type, NULL); - - setting = menu_entry_get_setting(i); + rarch_setting_t *setting = menu_entry_get_setting(i); /* XXX Really a special kind of ST_ACTION, but this should be changed */ if (menu_setting_is_of_path_type(setting)) From 49d048fde222715f71cb7e5e21dd27c04eec66bd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 20:11:51 +0200 Subject: [PATCH 266/822] Simplify menu_entry_pathdir_set_value --- menu/menu_entry.c | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index e49db75e74..3f8f402cf4 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -226,28 +226,27 @@ void menu_entry_pathdir_get_value(uint32_t i, char *s, size_t len) int menu_entry_pathdir_set_value(uint32_t i, const char *s) { - const char *menu_label = NULL; - const char *menu_path = NULL; - rarch_setting_t *setting = NULL; - menu_list_t *menu_list = menu_list_get_ptr(); - - menu_list_get_last_stack(menu_list, - &menu_path, &menu_label, NULL, NULL); - - setting = menu_setting_find(menu_label); - - if (!setting) - return -1; - - if (setting->type != ST_DIR) - return -1; + menu_file_list_cbs_t *cbs = NULL; + const char *menu_path = NULL; + menu_list_t *menu_list = menu_list_get_ptr(); (void)s; - setting_set_with_string_representation(setting, menu_path); - menu_setting_generic(setting, false); + menu_list_get_last_stack(menu_list, + &menu_path, NULL, NULL, NULL); + cbs = (menu_file_list_cbs_t*)menu_list_get_last_stack_actiondata(menu_list); - menu_list_pop_stack_by_needle(menu_list, setting->name); + if (!cbs || !cbs->setting) + return -1; + + if (cbs->setting->type != ST_DIR) + return -1; + + setting_set_with_string_representation(cbs->setting, menu_path); + + menu_setting_generic(cbs->setting, false); + + menu_list_pop_stack_by_needle(menu_list, cbs->setting->name); return 0; } From e8c508d33fa21053e8c638d2217fb536607706d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Mon, 17 Aug 2015 20:28:54 +0200 Subject: [PATCH 267/822] (GLUI) Stop scrolling on tap start, instead of tap end --- menu/menu_input.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/menu/menu_input.c b/menu/menu_input.c index e360b3b3a4..d6550efbec 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -825,10 +825,6 @@ static int pointer_tap(menu_file_list_cbs_t *cbs, menu_input_t *menu_input = menu_input_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); - menu_input->pointer.accel = 0; - menu_input->pointer.accel0 = 0; - menu_input->pointer.accel1 = 0; - if (menu_input->pointer.ptr == nav->selection_ptr && cbs && cbs->action_select) return menu_entry_action(entry, nav->selection_ptr, MENU_ACTION_SELECT); @@ -861,6 +857,9 @@ static int menu_input_pointer_post_iterate(menu_file_list_cbs_t *cbs, { if (!menu_input->pointer.oldpressed[0]) { + menu_input->pointer.accel = 0; + menu_input->pointer.accel0 = 0; + menu_input->pointer.accel1 = 0; menu_input->pointer.start_x = menu_input->pointer.x; menu_input->pointer.start_y = menu_input->pointer.y; menu_input->pointer.old_x = menu_input->pointer.x; From 0bf8a36d5027190dc34d65f7f1c63e2efb664571 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 20:51:12 +0200 Subject: [PATCH 268/822] Fix RGUI fallback - if threaded video wrapper was enabled, we could not grab an ident resembling 'd3d' or 'gl' --- gfx/video_thread_wrapper.c | 11 +++++++++++ gfx/video_thread_wrapper.h | 2 ++ menu/menu_driver.c | 2 +- menu/menu_video.c | 10 ++++++++++ menu/menu_video.h | 2 ++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index 4faf5a9823..fbf2fb02f3 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -1132,3 +1132,14 @@ void *rarch_threaded_video_get_ptr(const video_driver_t **drv) return NULL; return thr->driver_data; } + +const char *rarch_threaded_video_get_ident(void) +{ + driver_t *driver = driver_get_ptr(); + const thread_video_t *thr = (const thread_video_t*) + driver->video_data; + + if (!thr) + return NULL; + return thr->driver->ident; +} diff --git a/gfx/video_thread_wrapper.h b/gfx/video_thread_wrapper.h index 4817e4e717..d5bd9de543 100644 --- a/gfx/video_thread_wrapper.h +++ b/gfx/video_thread_wrapper.h @@ -254,5 +254,7 @@ bool rarch_threaded_video_init( **/ void *rarch_threaded_video_get_ptr(const video_driver_t **drv); +const char *rarch_threaded_video_get_ident(void); + #endif diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 6576fead24..f4d22272c6 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -173,7 +173,7 @@ void init_menu(void) find_menu_driver(); - video_driver = video_driver_get_ident(); + video_driver = menu_video_get_ident(); switch (driver->menu_ctx->type) { diff --git a/menu/menu_video.c b/menu/menu_video.c index 91ed5424ad..93537fc3cb 100644 --- a/menu/menu_video.c +++ b/menu/menu_video.c @@ -21,6 +21,7 @@ #include "menu_video.h" #include "../gfx/video_common.h" +#include "../gfx/video_thread_wrapper.h" #ifdef HAVE_OPENGL void menu_video_draw_frame( @@ -140,3 +141,12 @@ void menu_video_frame_background( gl->coords.color = gl->white_color_ptr; } #endif + +const char *menu_video_get_ident(void) +{ + settings_t *settings = config_get_ptr(); + if (settings->video.threaded) + return rarch_threaded_video_get_ident(); + + return video_driver_get_ident(); +} diff --git a/menu/menu_video.h b/menu/menu_video.h index 270e5f8056..a45967f937 100644 --- a/menu/menu_video.h +++ b/menu/menu_video.h @@ -44,6 +44,8 @@ void menu_video_frame_background( bool force_transparency); #endif +const char *menu_video_get_ident(void); + #ifdef __cplusplus } #endif From c16e114e6292c70000909bb7732c1faab355be34 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 17 Aug 2015 20:58:11 +0200 Subject: [PATCH 269/822] Buildfix --- menu/menu_driver.c | 1 + 1 file changed, 1 insertion(+) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index f4d22272c6..d2a3534d71 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -21,6 +21,7 @@ #include "menu.h" #include "menu_cbs.h" #include "menu_displaylist.h" +#include "menu_video.h" #include "../driver.h" #include "../general.h" From b8e09769ae577e340a1f712037f98ac66ef7c5ae Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 21:15:16 +0200 Subject: [PATCH 270/822] Cleanup --- menu/menu_entry.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 3f8f402cf4..d98239917d 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -67,7 +67,6 @@ static rarch_setting_t *menu_entry_get_setting(uint32_t i) enum menu_entry_type menu_entry_get_type(uint32_t i) { - menu_list_t *menu_list = menu_list_get_ptr(); rarch_setting_t *setting = menu_entry_get_setting(i); /* XXX Really a special kind of ST_ACTION, but this should be changed */ From 79a4e0e5c6e3e4f35475f6155be11c92c2aa74af Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 21:21:27 +0200 Subject: [PATCH 271/822] (menu_cbs_deferred_push.c) Remove one instance of menu_setting_find --- menu/cbs/menu_cbs_deferred_push.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 242c50306c..f920f77ba6 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -873,18 +873,17 @@ int menu_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs, uint32_t label_hash, uint32_t menu_label_hash) { settings_t *settings = config_get_ptr(); - rarch_setting_t *setting = menu_setting_find(elem0); if (!cbs) return -1; cbs->action_deferred_push = deferred_push_default; - if (setting) + if (cbs->setting) { - uint32_t parent_group_hash = menu_hash_calculate(setting->parent_group); + uint32_t parent_group_hash = menu_hash_calculate(cbs->setting->parent_group); - if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && setting->type == ST_GROUP) + if ((parent_group_hash == MENU_VALUE_MAIN_MENU) && cbs->setting->type == ST_GROUP) { if (!settings->menu.collapse_subgroups_enable) { From 512e126a26bad2ea458f139b93aa75c659b2b5af Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 21:53:08 +0200 Subject: [PATCH 272/822] Simplify action_iterate_info --- menu/cbs/menu_cbs_iterate.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index 3292c54ea6..cca57df154 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -170,30 +170,23 @@ static int action_iterate_help(char *s, size_t len, const char *label) static int action_iterate_info(char *s, size_t len, const char *label) { - int ret = 0; char needle[PATH_MAX_LENGTH] = {0}; - unsigned info_type = 0; - rarch_setting_t *current_setting = NULL; - file_list_t *list = NULL; + menu_file_list_cbs_t *cbs = NULL; menu_list_t *menu_list = menu_list_get_ptr(); - size_t selection = menu_navigation_get_current_selection(); + size_t i = menu_navigation_get_current_selection(); + if (!menu_list) return 0; - list = (file_list_t*)menu_list->selection_buf; - current_setting = menu_setting_find(list->list[selection].label); + cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); - if (current_setting) - strlcpy(needle, current_setting->name, sizeof(needle)); - else if ((current_setting = menu_setting_find(list->list[selection].label))) - { - if (current_setting) - strlcpy(needle, current_setting->name, sizeof(needle)); - } + if (cbs->setting) + strlcpy(needle, cbs->setting->name, sizeof(needle)); else { const char *lbl = NULL; - menu_list_get_at_offset(list, selection, NULL, &lbl, &info_type, NULL); + menu_list_get_at_offset(menu_list->selection_buf, + i, NULL, &lbl, NULL, NULL); if (lbl) strlcpy(needle, lbl, sizeof(needle)); @@ -201,7 +194,7 @@ static int action_iterate_info(char *s, size_t len, const char *label) setting_get_description(needle, s, len); - return ret; + return 0; } static int action_iterate_menu_viewport(char *s, size_t len, From 7738b7e2f4a4c1d62c0706052a453df9f368eb0c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 21:58:05 +0200 Subject: [PATCH 273/822] Simplify action_iterate_info --- menu/cbs/menu_cbs_iterate.c | 5 +++-- menu/menu_setting.c | 20 -------------------- menu/menu_setting.h | 14 -------------- 3 files changed, 3 insertions(+), 36 deletions(-) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index cca57df154..e609d05faa 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -170,6 +170,7 @@ static int action_iterate_help(char *s, size_t len, const char *label) static int action_iterate_info(char *s, size_t len, const char *label) { + uint32_t label_hash = 0; char needle[PATH_MAX_LENGTH] = {0}; menu_file_list_cbs_t *cbs = NULL; menu_list_t *menu_list = menu_list_get_ptr(); @@ -192,9 +193,9 @@ static int action_iterate_info(char *s, size_t len, const char *label) strlcpy(needle, lbl, sizeof(needle)); } - setting_get_description(needle, s, len); + label_hash = menu_hash_calculate(needle); - return 0; + return menu_hash_get_help(label_hash, s, len); } static int action_iterate_menu_viewport(char *s, size_t len, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index fc67ba6ba0..79406805d6 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1900,26 +1900,6 @@ static rarch_setting_t setting_string_setting_options(enum setting_type type, return result; } -/** - * setting_get_description: - * @label : identifier label of setting - * @s : output message - * @len : size of @s - * - * Writes a 'Help' description message to @s if there is - * one available based on the identifier label of the setting - * (@label). - * - * Returns: 0 (always for now). TODO: make it handle -1 as well. - **/ -int setting_get_description(const char *label, char *s, - size_t len) -{ - uint32_t label_hash = menu_hash_calculate(label); - - return menu_hash_get_help(label_hash, s, len); -} - static void get_string_representation_bind_device(void * data, char *s, size_t len) { diff --git a/menu/menu_setting.h b/menu/menu_setting.h index e76e02d078..d52a27ad5b 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -247,20 +247,6 @@ int setting_set_with_string_representation( **/ void setting_get_string_representation(void *data, char *s, size_t len); -/** - * setting_get_description: - * @label : identifier label of setting - * @s : output message - * @len : size of @s - * - * Writes a 'Help' description message to @s if there is - * one available based on the identifier label of the setting - * (@label). - * - * Returns: 0 (always for now). TODO: make it handle -1 as well. - **/ -int setting_get_description(const char *label, char *s, size_t len); - /** * setting_get_label: * @list : File list on which to perform the search From 900d5373519639577306cd79ccd2ef3bf0ebebb0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 22:10:12 +0200 Subject: [PATCH 274/822] Simplify action_iterate_info --- menu/cbs/menu_cbs_iterate.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index e609d05faa..77cfaf71e7 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -171,7 +171,6 @@ static int action_iterate_help(char *s, size_t len, const char *label) static int action_iterate_info(char *s, size_t len, const char *label) { uint32_t label_hash = 0; - char needle[PATH_MAX_LENGTH] = {0}; menu_file_list_cbs_t *cbs = NULL; menu_list_t *menu_list = menu_list_get_ptr(); size_t i = menu_navigation_get_current_selection(); @@ -182,19 +181,12 @@ static int action_iterate_info(char *s, size_t len, const char *label) cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); if (cbs->setting) - strlcpy(needle, cbs->setting->name, sizeof(needle)); - else { - const char *lbl = NULL; - menu_list_get_at_offset(menu_list->selection_buf, - i, NULL, &lbl, NULL, NULL); - - if (lbl) - strlcpy(needle, lbl, sizeof(needle)); + char needle[PATH_MAX_LENGTH]; + strlcpy(needle, cbs->setting->name, sizeof(needle)); + label_hash = menu_hash_calculate(needle); } - label_hash = menu_hash_calculate(needle); - return menu_hash_get_help(label_hash, s, len); } @@ -423,7 +415,7 @@ static enum action_iterate_type action_iterate_type(uint32_t hash) static int action_iterate_main(const char *label, unsigned action) { menu_entry_t entry; - char msg[PATH_MAX_LENGTH]; + char msg[PATH_MAX_LENGTH] = {0}; static bool did_messagebox = false; enum action_iterate_type iterate_type; size_t selected; From 5839abd44a30189a4b57566811e54d37465d702f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 22:32:42 +0200 Subject: [PATCH 275/822] Cleanup --- menu/menu_displaylist.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 054886f2c0..3e2177e6c4 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2499,7 +2499,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) break; case DISPLAYLIST_PLAYLIST_COLLECTION: { - char path_playlist[PATH_MAX_LENGTH] = {0}; + char path_playlist[PATH_MAX_LENGTH]; content_playlist_t *playlist = NULL; if (menu->playlist) @@ -2527,7 +2527,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) break; case DISPLAYLIST_HISTORY: { - char path_playlist[PATH_MAX_LENGTH] = {0}; + char path_playlist[PATH_MAX_LENGTH]; content_playlist_t *playlist = g_defaults.history; strlcpy(path_playlist, "history", sizeof(path_playlist)); From acfa43dfe96826529d6954cad813faf17dc5a8cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 17 Aug 2015 22:46:27 +0200 Subject: [PATCH 276/822] Make iterate no longer a function pointer --- Makefile.common | 2 +- griffin/griffin.c | 2 +- menu/menu.h | 3 ++ menu/menu_cbs.c | 4 -- menu/menu_cbs.h | 5 --- menu/menu_entry.c | 7 +-- .../menu_cbs_iterate.c => menu_iterate.c} | 43 +++++++------------ menu/menu_setting.c | 1 - menu/menu_setting.h | 2 - 9 files changed, 21 insertions(+), 48 deletions(-) rename menu/{cbs/menu_cbs_iterate.c => menu_iterate.c} (95%) diff --git a/Makefile.common b/Makefile.common index 636ef28685..a6fcc81d02 100644 --- a/Makefile.common +++ b/Makefile.common @@ -418,7 +418,7 @@ ifeq ($(HAVE_MENU_COMMON), 1) menu/cbs/menu_cbs_deferred_push.o \ menu/cbs/menu_cbs_scan.o \ menu/cbs/menu_cbs_get_value.o \ - menu/cbs/menu_cbs_iterate.o \ + menu/menu_iterate.o \ menu/cbs/menu_cbs_title.o \ menu/cbs/menu_cbs_up.o \ menu/cbs/menu_cbs_down.o \ diff --git a/griffin/griffin.c b/griffin/griffin.c index 36dd9c0a78..08cb6a547f 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -767,7 +767,7 @@ MENU #include "../menu/cbs/menu_cbs_deferred_push.c" #include "../menu/cbs/menu_cbs_scan.c" #include "../menu/cbs/menu_cbs_get_value.c" -#include "../menu/cbs/menu_cbs_iterate.c" +#include "../menu/menu_iterate.c" #include "../menu/cbs/menu_cbs_up.c" #include "../menu/cbs/menu_cbs_down.c" #include "../menu/cbs/menu_cbs_contentlist_switch.c" diff --git a/menu/menu.h b/menu/menu.h index 9e78d876ea..db914eb16c 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -177,6 +177,9 @@ void *menu_init(const void *data); int menu_iterate(retro_input_t input, retro_input_t old_input, retro_input_t trigger_input); +int menu_iterate_main(const char *label, + unsigned action); + /** * menu_free: * @menu : Menu handle. diff --git a/menu/menu_cbs.c b/menu/menu_cbs.c index c00bdfc6d1..2af38718fb 100644 --- a/menu/menu_cbs.c +++ b/menu/menu_cbs.c @@ -149,10 +149,6 @@ void menu_cbs_init(void *data, menu_cbs_init_log(ret, "REFRESH", label, elem0, elem1, type); - ret = menu_cbs_init_bind_iterate(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash); - - menu_cbs_init_log(ret, "ITERATE", label, elem0, elem1, type); - ret = menu_cbs_init_bind_get_string_representation(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash); menu_cbs_init_log(ret, "REPRESENTATION", label, elem0, elem1, type); diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index d82b9b2655..076a943d3a 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -107,11 +107,6 @@ int menu_cbs_init_bind_ok(menu_file_list_cbs_t *cbs, const char *elem0, const char *elem1, const char *menu_label, uint32_t label_hash, uint32_t menu_label_hash); -int menu_cbs_init_bind_iterate(menu_file_list_cbs_t *cbs, - const char *path, const char *label, unsigned type, size_t idx, - const char *elem0, const char *elem1, - uint32_t label_hash, uint32_t menu_label_hash); - int menu_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs, const char *path, const char *label, unsigned type, size_t idx, const char *elem0, const char *elem1, diff --git a/menu/menu_entry.c b/menu/menu_entry.c index d98239917d..ec2ff51364 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -393,14 +393,9 @@ int menu_entry_iterate(unsigned action) if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending()) menu_display_fb_set_dirty(); - cbs = (menu_file_list_cbs_t*)menu_list_get_last_stack_actiondata(menu_list); - menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); - if (cbs && cbs->action_iterate) - return cbs->action_iterate(label, action); - - return -1; + return menu_iterate_main(label, action); } int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/menu_iterate.c similarity index 95% rename from menu/cbs/menu_cbs_iterate.c rename to menu/menu_iterate.c index 77cfaf71e7..eafaa3a0b8 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/menu_iterate.c @@ -17,21 +17,21 @@ #include #include -#include "../menu.h" -#include "../menu_cbs.h" -#include "../menu_display.h" -#include "../menu_hash.h" -#include "../menu_entry.h" -#include "../menu_setting.h" -#include "../menu_input.h" -#include "../menu_shader.h" -#include "../menu_navigation.h" +#include "menu.h" +#include "menu_cbs.h" +#include "menu_display.h" +#include "menu_hash.h" +#include "menu_entry.h" +#include "menu_setting.h" +#include "menu_input.h" +#include "menu_shader.h" +#include "menu_navigation.h" -#include "../../general.h" -#include "../../performance.h" -#include "../../retroarch.h" -#include "../../input/input_common.h" -#include "../../input/input_autodetect.h" +#include "../general.h" +#include "../performance.h" +#include "../retroarch.h" +#include "../input/input_common.h" +#include "../input/input_autodetect.h" static int action_iterate_help(char *s, size_t len, const char *label) { @@ -412,7 +412,7 @@ static enum action_iterate_type action_iterate_type(uint32_t hash) return ITERATE_TYPE_DEFAULT; } -static int action_iterate_main(const char *label, unsigned action) +int menu_iterate_main(const char *label, unsigned action) { menu_entry_t entry; char msg[PATH_MAX_LENGTH] = {0}; @@ -521,16 +521,3 @@ static int action_iterate_main(const char *label, unsigned action) return ret; } - -int menu_cbs_init_bind_iterate(menu_file_list_cbs_t *cbs, - const char *path, const char *label, unsigned type, size_t idx, - const char *elem0, const char *elem1, - uint32_t label_hash, uint32_t menu_label_hash) -{ - if (!cbs) - return -1; - - cbs->action_iterate = action_iterate_main; - - return -1; -} diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 79406805d6..d72976e0de 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1458,7 +1458,6 @@ static rarch_setting_t setting_action_setting(const char* name, result.read_handler = NULL; result.get_string_representation = &setting_get_string_representation_default; result.action_start = NULL; - result.action_iterate = NULL; result.action_left = NULL; result.action_right = NULL; result.action_ok = setting_action_action_ok; diff --git a/menu/menu_setting.h b/menu/menu_setting.h index d52a27ad5b..313ef53b18 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -106,7 +106,6 @@ typedef int (*action_right_handler_t )(void *data, bool wraparound); typedef int (*action_up_handler_t )(void *data); typedef int (*action_down_handler_t )(void *data); typedef int (*action_start_handler_t )(void *data); -typedef int (*action_iterate_handler_t )(unsigned action); typedef int (*action_cancel_handler_t )(void *data); typedef int (*action_ok_handler_t )(void *data, bool wraparound); typedef int (*action_select_handler_t )(void *data, bool wraparound); @@ -148,7 +147,6 @@ typedef struct rarch_setting change_handler_t change_handler; change_handler_t read_handler; action_start_handler_t action_start; - action_iterate_handler_t action_iterate; action_left_handler_t action_left; action_right_handler_t action_right; action_up_handler_t action_up; From 7e8c98852beb35d9659b5670223ce2ddeb910ba0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 00:04:39 +0200 Subject: [PATCH 277/822] Create rarch_main_data_menu_iterate --- runloop_data.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/runloop_data.c b/runloop_data.c index 456f07e525..67267f9755 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -207,6 +207,18 @@ error: } #endif +#ifdef HAVE_MENU +static void rarch_main_data_menu_iterate(void) +{ +#ifdef HAVE_LIBRETRODB + if (rarch_main_data_db_pending_scan_finished()) + menu_environment_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, NULL); +#endif + + menu_entries_refresh(MENU_ACTION_REFRESH); +} +#endif + void rarch_main_data_iterate(void) { settings_t *settings = config_get_ptr(); @@ -238,10 +250,7 @@ void rarch_main_data_iterate(void) #endif #ifdef HAVE_MENU -#ifdef HAVE_LIBRETRODB - if (rarch_main_data_db_pending_scan_finished()) - menu_environment_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, NULL); -#endif + rarch_main_data_menu_iterate(); #endif if (data_runloop_msg[0] != '\0') @@ -250,10 +259,6 @@ void rarch_main_data_iterate(void) data_runloop_msg[0] = '\0'; } -#ifdef HAVE_MENU - menu_entries_refresh(MENU_ACTION_REFRESH); -#endif - #ifdef HAVE_THREADS if (settings->menu.threaded_data_runloop_enable && g_data_runloop.alive) return; From 91eda0d59bd66fa699c3a6027f4e2964d9a7c0b9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 00:21:30 +0200 Subject: [PATCH 278/822] Simplify menu_entries_refresh --- menu/menu_entries.c | 2 +- menu/menu_entries.h | 2 +- menu/menu_entry.c | 2 +- runloop_data.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/menu/menu_entries.c b/menu/menu_entries.c index 1a8838a0e0..69a7277d3b 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -172,7 +172,7 @@ static bool menu_entries_get_nonblocking_refresh(void) return entries->nonblocking_refresh; } -int menu_entries_refresh(unsigned action) +int menu_entries_refresh(void) { if (menu_entries_get_nonblocking_refresh()) return -1; diff --git a/menu/menu_entries.h b/menu/menu_entries.h index 3796140734..f8238b4043 100644 --- a/menu/menu_entries.h +++ b/menu/menu_entries.h @@ -56,7 +56,7 @@ int menu_entries_get_core_title(char *title_msg, size_t title_msg_len); menu_entries_t *menu_entries_get_ptr(void); -int menu_entries_refresh(unsigned action); +int menu_entries_refresh(void); bool menu_entries_needs_refresh(void); diff --git a/menu/menu_entry.c b/menu/menu_entry.c index ec2ff51364..2c98b9a2d5 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -46,7 +46,7 @@ int menu_entry_go_back(void) menu_list_pop_stack(menu_list); if (menu_entries_needs_refresh()) - menu_entries_refresh(MENU_ACTION_CANCEL); + menu_entries_refresh(); rarch_main_data_iterate(); diff --git a/runloop_data.c b/runloop_data.c index 67267f9755..2d6e2012d0 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -215,7 +215,7 @@ static void rarch_main_data_menu_iterate(void) menu_environment_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, NULL); #endif - menu_entries_refresh(MENU_ACTION_REFRESH); + menu_entries_refresh(); } #endif From 6f956777270fed9dacaf680fc6021eef470cbecc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 01:33:03 +0200 Subject: [PATCH 279/822] Rewrite menu_entry_go_back --- menu/menu_entry.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 2c98b9a2d5..9818758b2c 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -42,14 +42,7 @@ int menu_entry_go_back(void) menu_list_t *menu_list = menu_list_get_ptr(); if (!menu_list) return -1; - menu_list_pop_stack(menu_list); - - if (menu_entries_needs_refresh()) - menu_entries_refresh(); - - rarch_main_data_iterate(); - return 0; } From df2b57c454af3823f98f44a2857ec99b3e3ba728 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 01:38:18 +0200 Subject: [PATCH 280/822] Remove unused menu_entry_get_current_id --- menu/menu_entry.c | 18 ------------------ menu/menu_entry.h | 2 -- 2 files changed, 20 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 9818758b2c..3853c7a41b 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -338,24 +338,6 @@ bool menu_entry_is_currently_selected(unsigned id) return (id == nav->selection_ptr); } -int menu_entry_get_current_id(bool use_representation) -{ - size_t i; - menu_list_t *menu_list = menu_list_get_ptr(); - size_t end = menu_list_get_size(menu_list); - - for (i = 0; i < end; i++) - { - menu_entry_t entry = {{0}}; - menu_entry_get(&entry, i, NULL, use_representation); - - if (menu_entry_is_currently_selected(entry.idx)) - return i; - } - - return -1; -} - /* Performs whatever actions are associated with menu entry 'i'. * * This is the most important function because it does all the work diff --git a/menu/menu_entry.h b/menu/menu_entry.h index cc8e629096..71b5b02c98 100644 --- a/menu/menu_entry.h +++ b/menu/menu_entry.h @@ -103,8 +103,6 @@ float menu_entry_num_min(uint32_t i); float menu_entry_num_max(uint32_t i); -int menu_entry_get_current_id(bool use_representation); - bool menu_entry_is_currently_selected(unsigned id); void menu_entry_get(menu_entry_t *entry, size_t i, From 8c5128b189b3dd8a974ebf115e309ab86c95ff24 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 01:41:16 +0200 Subject: [PATCH 281/822] (menu_display.c) Cleanup --- menu/menu_display.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/menu/menu_display.c b/menu/menu_display.c index 56239fca10..af3d4348c4 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -62,14 +62,15 @@ void menu_display_fb_unset_dirty(void) **/ void menu_display_fb(void) { - driver_t *driver = driver_get_ptr(); - global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); video_driver_set_texture_enable(true, false); if (!settings->menu.pause_libretro) { + driver_t *driver = driver_get_ptr(); + global_t *global = global_get_ptr(); + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) { bool block_libretro_input = driver->block_libretro_input; @@ -89,8 +90,7 @@ bool menu_display_update_pending(void) menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); if ((anim && anim->is_active) || (anim && anim->label.is_updated) - || (frame_buf && frame_buf->dirty) - ) + || (frame_buf && frame_buf->dirty)) return true; return false; } From 86894134cbcffe700d5928ed1e2c088f57c5abd5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 01:45:10 +0200 Subject: [PATCH 282/822] Move menu_driver_navigation_* functions to menu_navigation.c and make them static --- menu/menu_driver.c | 56 ------------------------------------------ menu/menu_driver.h | 14 ----------- menu/menu_navigation.c | 56 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 70 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index d2a3534d71..ceb5699653 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -313,46 +313,6 @@ void *menu_driver_list_get_entry(menu_list_type_t type, unsigned i) return NULL; } -void menu_driver_navigation_increment(void) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->navigation_increment) - driver->navigation_increment(); -} - -void menu_driver_navigation_decrement(void) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->navigation_decrement) - driver->navigation_decrement(); -} - -void menu_driver_navigation_clear(bool pending_push) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->navigation_clear) - driver->navigation_clear(pending_push); -} - -void menu_driver_navigation_set(bool scroll) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->navigation_set) - driver->navigation_set(scroll); -} - -void menu_driver_navigation_set_last(void) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->navigation_set_last) - driver->navigation_set_last(); -} - void menu_driver_set_texture(void) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); @@ -448,22 +408,6 @@ bool menu_driver_load_image(void *data, menu_image_type_t type) return false; } -void menu_driver_navigation_descend_alphabet(size_t *ptr_out) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->navigation_descend_alphabet) - driver->navigation_descend_alphabet(ptr_out); -} - -void menu_driver_navigation_ascend_alphabet(size_t *ptr_out) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->navigation_ascend_alphabet) - driver->navigation_ascend_alphabet(ptr_out); -} - bool menu_driver_alive(void) { return menu_alive; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index ef0780f51b..9e5ce6fbf5 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -185,16 +185,6 @@ void init_menu(void); menu_handle_t *menu_driver_get_ptr(void); -void menu_driver_navigation_increment(void); - -void menu_driver_navigation_decrement(void); - -void menu_driver_navigation_clear(bool pending_push); - -void menu_driver_navigation_set(bool scroll); - -void menu_driver_navigation_set_last(void); - void menu_driver_set_texture(void); void menu_driver_frame(void); @@ -214,10 +204,6 @@ void menu_driver_populate_entries(const char *path, const char *label, bool menu_driver_load_image(void *data, menu_image_type_t type); -void menu_driver_navigation_descend_alphabet(size_t *); - -void menu_driver_navigation_ascend_alphabet(size_t *); - void menu_driver_list_cache(menu_list_type_t type, unsigned action); void menu_driver_list_free(file_list_t *list, size_t i, size_t list_size); diff --git a/menu/menu_navigation.c b/menu/menu_navigation.c index 48da6516be..69f6da0255 100644 --- a/menu/menu_navigation.c +++ b/menu/menu_navigation.c @@ -29,6 +29,62 @@ #include "../configuration.h" +static void menu_driver_navigation_increment(void) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->navigation_increment) + driver->navigation_increment(); +} + +static void menu_driver_navigation_decrement(void) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->navigation_decrement) + driver->navigation_decrement(); +} + +static void menu_driver_navigation_clear(bool pending_push) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->navigation_clear) + driver->navigation_clear(pending_push); +} + +static void menu_driver_navigation_set(bool scroll) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->navigation_set) + driver->navigation_set(scroll); +} + +static void menu_driver_navigation_set_last(void) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->navigation_set_last) + driver->navigation_set_last(); +} + +static void menu_driver_navigation_descend_alphabet(size_t *ptr_out) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->navigation_descend_alphabet) + driver->navigation_descend_alphabet(ptr_out); +} + +static void menu_driver_navigation_ascend_alphabet(size_t *ptr_out) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->navigation_ascend_alphabet) + driver->navigation_ascend_alphabet(ptr_out); +} + menu_navigation_t *menu_navigation_get_ptr(void) { menu_entries_t *entries = menu_entries_get_ptr(); From 443fd6b4f24eb69398c8d2fd5f14232046229b69 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 01:48:04 +0200 Subject: [PATCH 283/822] Move menu_driver_render and menu_driver_render_messagebox to menu_iterate.c and make them static --- menu/menu_driver.c | 21 --------------------- menu/menu_driver.h | 4 ---- menu/menu_iterate.c | 21 +++++++++++++++++++++ 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index ceb5699653..aa957ad1b1 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -360,27 +360,6 @@ void menu_driver_free(menu_handle_t *menu) driver->free(menu); } -void menu_driver_render_messagebox(const char *msg) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - const ui_companion_driver_t *ui = ui_companion_get_ptr(); - if (!msg) - return; - - if (driver->render_messagebox && msg[0] != '\0') - driver->render_messagebox(msg); - if (ui->render_messagebox && msg[0] != '\0') - ui->render_messagebox(msg); -} - -void menu_driver_render(void) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->render) - driver->render(); -} - void menu_driver_toggle(bool latch) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 9e5ce6fbf5..5fa726013f 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -193,12 +193,8 @@ void menu_driver_context_reset(void); void menu_driver_free(menu_handle_t *menu); -void menu_driver_render(void); - void menu_driver_toggle(bool latch); -void menu_driver_render_messagebox(const char *msg); - void menu_driver_populate_entries(const char *path, const char *label, unsigned k); diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index eafaa3a0b8..7696c62a7e 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -33,6 +33,27 @@ #include "../input/input_common.h" #include "../input/input_autodetect.h" +static void menu_driver_render_messagebox(const char *msg) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + const ui_companion_driver_t *ui = ui_companion_get_ptr(); + if (!msg) + return; + + if (driver->render_messagebox && msg[0] != '\0') + driver->render_messagebox(msg); + if (ui->render_messagebox && msg[0] != '\0') + ui->render_messagebox(msg); +} + +static void menu_driver_render(void) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->render) + driver->render(); +} + static int action_iterate_help(char *s, size_t len, const char *label) { unsigned i; From 8c5b1df98631d30a494b00824689efd7a1d3d6fa Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 18 Aug 2015 01:53:26 +0200 Subject: [PATCH 284/822] Remove unused variable warning --- menu/menu_entry.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 3853c7a41b..5688e046a0 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -359,7 +359,6 @@ int menu_entry_select(uint32_t i) int menu_entry_iterate(unsigned action) { const char *label = NULL; - menu_file_list_cbs_t *cbs = NULL; menu_list_t *menu_list = menu_list_get_ptr(); if (!menu_list) From 0a35f5e7e9f4e08525cf634d57437bdd9e9d34f0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 01:58:18 +0200 Subject: [PATCH 285/822] menu_entry_get - cleanups --- menu/menu_entry.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 5688e046a0..62569f82be 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -293,7 +293,6 @@ float menu_entry_num_max(uint32_t i) void menu_entry_get(menu_entry_t *entry, size_t i, void *userdata, bool use_representation) { - const char *label = NULL; const char *path = NULL; const char *entry_label = NULL; menu_file_list_cbs_t *cbs = NULL; @@ -303,7 +302,6 @@ void menu_entry_get(menu_entry_t *entry, size_t i, if (!menu_list) return; - menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); list = userdata ? (file_list_t*)userdata : menu_list->selection_buf; @@ -316,11 +314,15 @@ void menu_entry_get(menu_entry_t *entry, size_t i, cbs = menu_list_get_actiondata_at_offset(list, i); if (cbs && cbs->action_get_value && use_representation) + { + const char *label = NULL; + menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); cbs->action_get_value(list, &entry->spacing, entry->type, i, label, entry->value, sizeof(entry->value), entry_label, path, entry->path, sizeof(entry->path)); + } entry->idx = i; From f951f12f9d541bb5155c5b0c8d9d2712b4a48bfa Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 02:02:56 +0200 Subject: [PATCH 286/822] Move menu_list_refresh to menu_displaylist.c --- menu/menu_displaylist.c | 110 ++++++++++++++++++++++++++++++++++++++++ menu/menu_list.c | 110 ---------------------------------------- menu/menu_list.h | 2 - 3 files changed, 110 insertions(+), 112 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 3e2177e6c4..01dd44abba 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -119,6 +119,116 @@ static void print_buf_lines(file_list_t *list, char *buf, int buf_size, } #endif +/** + * menu_list_elem_is_dir: + * @list : File list handle. + * @offset : Offset index of element. + * + * Is the current entry at offset @offset a directory? + * + * Returns: true (1) if entry is a directory, otherwise false (0). + **/ +static bool menu_list_elem_is_dir(file_list_t *list, + unsigned offset) +{ + unsigned type = 0; + + menu_list_get_at_offset(list, offset, NULL, NULL, &type, NULL); + + return type == MENU_FILE_DIRECTORY; +} + +/** + * menu_list_elem_get_first_char: + * @list : File list handle. + * @offset : Offset index of element. + * + * Gets the first character of an element in the + * file list. + * + * Returns: first character of element in file list. + **/ +static int menu_list_elem_get_first_char( + file_list_t *list, unsigned offset) +{ + int ret; + const char *path = NULL; + + menu_list_get_alt_at_offset(list, offset, &path); + ret = tolower(*path); + + /* "Normalize" non-alphabetical entries so they + * are lumped together for purposes of jumping. */ + if (ret < 'a') + ret = 'a' - 1; + else if (ret > 'z') + ret = 'z' + 1; + return ret; +} + +static void menu_list_build_scroll_indices(file_list_t *list) +{ + size_t i; + int current; + bool current_is_dir; + menu_navigation_t *nav = menu_navigation_get_ptr(); + + if (!nav || !list) + return; + + nav->scroll.indices.size = 0; + + if (!list->size) + return; + + nav->scroll.indices.list[nav->scroll.indices.size++] = 0; + + current = menu_list_elem_get_first_char(list, 0); + current_is_dir = menu_list_elem_is_dir(list, 0); + + for (i = 1; i < list->size; i++) + { + int first = menu_list_elem_get_first_char(list, i); + bool is_dir = menu_list_elem_is_dir(list, i); + + if ((current_is_dir && !is_dir) || (first > current)) + nav->scroll.indices.list[nav->scroll.indices.size++] = i; + + current = first; + current_is_dir = is_dir; + } + + nav->scroll.indices.list[nav->scroll.indices.size++] = + list->size - 1; +} + +/** + * Before a refresh, we could have deleted a + * file on disk, causing selection_ptr to + * suddendly be out of range. + * + * Ensure it doesn't overflow. + **/ +static void menu_list_refresh(file_list_t *list) +{ + size_t list_size; + menu_navigation_t *nav = menu_navigation_get_ptr(); + menu_list_t *menu_list = menu_list_get_ptr(); + if (!nav || !menu_list || !list) + return; + + nav->scroll.indices.size = 0; + + menu_list_build_scroll_indices(list); + + list_size = menu_list_get_size(menu_list); + + if ((nav->selection_ptr >= list_size) && list_size) + menu_navigation_set(nav, list_size - 1, true); + else if (!list_size) + menu_navigation_clear(nav, true); +} + static void menu_displaylist_push_perfcounter( menu_displaylist_info_t *info, const struct retro_perf_counter **counters, diff --git a/menu/menu_list.c b/menu/menu_list.c index 24a2888e95..5e02a4866a 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -32,89 +32,6 @@ menu_list_t *menu_list_get_ptr(void) return entries->menu_list; } -/** - * menu_list_elem_is_dir: - * @list : File list handle. - * @offset : Offset index of element. - * - * Is the current entry at offset @offset a directory? - * - * Returns: true (1) if entry is a directory, otherwise false (0). - **/ -static bool menu_list_elem_is_dir(file_list_t *list, - unsigned offset) -{ - unsigned type = 0; - - menu_list_get_at_offset(list, offset, NULL, NULL, &type, NULL); - - return type == MENU_FILE_DIRECTORY; -} - -/** - * menu_list_elem_get_first_char: - * @list : File list handle. - * @offset : Offset index of element. - * - * Gets the first character of an element in the - * file list. - * - * Returns: first character of element in file list. - **/ -static int menu_list_elem_get_first_char( - file_list_t *list, unsigned offset) -{ - int ret; - const char *path = NULL; - - menu_list_get_alt_at_offset(list, offset, &path); - ret = tolower(*path); - - /* "Normalize" non-alphabetical entries so they - * are lumped together for purposes of jumping. */ - if (ret < 'a') - ret = 'a' - 1; - else if (ret > 'z') - ret = 'z' + 1; - return ret; -} - -static void menu_list_build_scroll_indices(file_list_t *list) -{ - size_t i; - int current; - bool current_is_dir; - menu_navigation_t *nav = menu_navigation_get_ptr(); - - if (!nav || !list) - return; - - nav->scroll.indices.size = 0; - - if (!list->size) - return; - - nav->scroll.indices.list[nav->scroll.indices.size++] = 0; - - current = menu_list_elem_get_first_char(list, 0); - current_is_dir = menu_list_elem_is_dir(list, 0); - - for (i = 1; i < list->size; i++) - { - int first = menu_list_elem_get_first_char(list, i); - bool is_dir = menu_list_elem_is_dir(list, i); - - if ((current_is_dir && !is_dir) || (first > current)) - nav->scroll.indices.list[nav->scroll.indices.size++] = i; - - current = first; - current_is_dir = is_dir; - } - - nav->scroll.indices.list[nav->scroll.indices.size++] = - list->size - 1; -} - size_t menu_list_get_size(menu_list_t *list) { if (!list) @@ -122,33 +39,6 @@ size_t menu_list_get_size(menu_list_t *list) return file_list_get_size(list->selection_buf); } -/** - * Before a refresh, we could have deleted a - * file on disk, causing selection_ptr to - * suddendly be out of range. - * - * Ensure it doesn't overflow. - **/ -void menu_list_refresh(file_list_t *list) -{ - size_t list_size; - menu_navigation_t *nav = menu_navigation_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - if (!nav || !menu_list || !list) - return; - - nav->scroll.indices.size = 0; - - menu_list_build_scroll_indices(list); - - list_size = menu_list_get_size(menu_list); - - if ((nav->selection_ptr >= list_size) && list_size) - menu_navigation_set(nav, list_size - 1, true); - else if (!list_size) - menu_navigation_clear(nav, true); -} - static void menu_list_free_list(file_list_t *list) { unsigned i; diff --git a/menu/menu_list.h b/menu/menu_list.h index 206f7665ab..a5fce0425a 100644 --- a/menu/menu_list.h +++ b/menu/menu_list.h @@ -120,8 +120,6 @@ void menu_list_get_alt_at_offset(const file_list_t *list, size_t idx, void menu_list_set_alt_at_offset(file_list_t *list, size_t idx, const char *alt); -void menu_list_refresh(file_list_t *list); - #ifdef __cplusplus } #endif From d1bcd01b88c45dde077a5ba4bd66fac9d8e56fcc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 02:09:46 +0200 Subject: [PATCH 287/822] Move more video rendering code to menu_iterate.c --- menu/menu_entry.c | 3 --- menu/menu_iterate.c | 47 +++++++++++++++++++-------------------------- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 62569f82be..5b32e9a2ce 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -366,9 +366,6 @@ int menu_entry_iterate(unsigned action) if (!menu_list) return -1; - if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending()) - menu_display_fb_set_dirty(); - menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); return menu_iterate_main(label, action); diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 7696c62a7e..4f5872e750 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -33,27 +33,6 @@ #include "../input/input_common.h" #include "../input/input_autodetect.h" -static void menu_driver_render_messagebox(const char *msg) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - const ui_companion_driver_t *ui = ui_companion_get_ptr(); - if (!msg) - return; - - if (driver->render_messagebox && msg[0] != '\0') - driver->render_messagebox(msg); - if (ui->render_messagebox && msg[0] != '\0') - ui->render_messagebox(msg); -} - -static void menu_driver_render(void) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->render) - driver->render(); -} - static int action_iterate_help(char *s, size_t len, const char *label) { unsigned i; @@ -437,15 +416,16 @@ int menu_iterate_main(const char *label, unsigned action) { menu_entry_t entry; char msg[PATH_MAX_LENGTH] = {0}; - static bool did_messagebox = false; enum action_iterate_type iterate_type; size_t selected; size_t *pop_selected = NULL; + bool fb_is_dirty = false; bool do_messagebox = false; bool do_pop_stack = false; bool do_post_iterate = false; bool do_render = false; int ret = 0; + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); menu_display_t *disp = menu_display_get_ptr(); @@ -456,6 +436,9 @@ int menu_iterate_main(const char *label, unsigned action) iterate_type = action_iterate_type(hash); + if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending()) + fb_is_dirty = true; + switch (iterate_type) { case ITERATE_TYPE_HELP: @@ -523,13 +506,20 @@ int menu_iterate_main(const char *label, unsigned action) break; } - did_messagebox = did_messagebox != do_messagebox; + if (fb_is_dirty != do_messagebox) + fb_is_dirty = true; - if (did_messagebox) + if (fb_is_dirty) menu_display_fb_set_dirty(); - if (do_messagebox) - menu_driver_render_messagebox(msg); + if (do_messagebox && msg[0] != '\0') + { + const ui_companion_driver_t *ui = ui_companion_get_ptr(); + if (driver->render_messagebox && msg[0] != '\0') + driver->render_messagebox(msg); + if (ui->render_messagebox && msg[0] != '\0') + ui->render_messagebox(msg); + } if (do_pop_stack && action == MENU_ACTION_OK) menu_list_pop(menu_list->menu_stack, pop_selected); @@ -538,7 +528,10 @@ int menu_iterate_main(const char *label, unsigned action) menu_input_post_iterate(&ret, action); if (do_render) - menu_driver_render(); + { + if (driver->render) + driver->render(); + } return ret; } From 35701215db08314451f2f214b52a21156a826571 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 02:36:32 +0200 Subject: [PATCH 288/822] Take out call to menu_fb_set_dirty in menu_init --- menu/menu.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/menu.c b/menu/menu.c index 835d4c9c47..46df6d6df3 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -253,7 +253,6 @@ void *menu_init(const void *data) rarch_assert(disp->msg_queue = msg_queue_new(8)); - menu_display_fb_set_dirty(); menu_driver_set_alive(); return menu; From 6cc37dd9ca40e526635ff6b98990c592947a8544 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 02:45:36 +0200 Subject: [PATCH 289/822] Cleanup --- menu/menu_displaylist.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 01dd44abba..e262d23feb 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2423,7 +2423,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) case DISPLAYLIST_HELP: menu_list_push(info->list, info->path, info->label, info->type, info->directory_ptr, 0); menu->push_help_screen = false; - menu_display_fb_set_dirty(); break; case DISPLAYLIST_MAIN_MENU: case DISPLAYLIST_SETTINGS: From 2f3746a4318748aa8fa73f78515b94f0b4102cc1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 02:54:42 +0200 Subject: [PATCH 290/822] Make some more functions static --- menu/menu_displaylist.c | 9 +++++++++ menu/menu_driver.c | 32 -------------------------------- menu/menu_driver.h | 6 ------ menu/menu_list.c | 23 +++++++++++++++++++++++ 4 files changed, 32 insertions(+), 38 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index e262d23feb..24a487f6ce 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2303,6 +2303,15 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n return 0; } +static void menu_driver_populate_entries(const char *path, + const char *label, unsigned k) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->populate_entries) + driver->populate_entries(path, label, k); +} + int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) { size_t i, list_size; diff --git a/menu/menu_driver.c b/menu/menu_driver.c index aa957ad1b1..bb982b312a 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -262,29 +262,6 @@ size_t menu_driver_list_get_selection(void) return 0; } -void menu_driver_list_insert(file_list_t *list, const char *path, - const char *label, unsigned type, size_t idx) -{ - menu_file_list_cbs_t *cbs = NULL; - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (!list) - return; - - if (driver->list_insert) - driver->list_insert(list, path, label, idx); - - file_list_free_actiondata(list, idx); - cbs = (menu_file_list_cbs_t*) - calloc(1, sizeof(menu_file_list_cbs_t)); - - if (!cbs) - return; - - file_list_set_actiondata(list, idx, cbs); - menu_cbs_init(list, path, label, type, idx); -} - void menu_driver_list_cache(menu_list_type_t type, unsigned action) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); @@ -368,15 +345,6 @@ void menu_driver_toggle(bool latch) driver->toggle(latch); } -void menu_driver_populate_entries(const char *path, const char *label, - unsigned k) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (driver->populate_entries) - driver->populate_entries(path, label, k); -} - bool menu_driver_load_image(void *data, menu_image_type_t type) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 5fa726013f..1f47c07580 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -195,18 +195,12 @@ void menu_driver_free(menu_handle_t *menu); void menu_driver_toggle(bool latch); -void menu_driver_populate_entries(const char *path, const char *label, - unsigned k); - bool menu_driver_load_image(void *data, menu_image_type_t type); void menu_driver_list_cache(menu_list_type_t type, unsigned action); void menu_driver_list_free(file_list_t *list, size_t i, size_t list_size); -void menu_driver_list_insert(file_list_t *list, const char *path, - const char *label, unsigned type, size_t list_size); - void menu_driver_list_clear(file_list_t *list); size_t menu_driver_list_get_size(menu_list_type_t type); diff --git a/menu/menu_list.c b/menu/menu_list.c index 5e02a4866a..1e7293043a 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -24,6 +24,29 @@ #include "menu_list.h" #include "menu_navigation.h" +static void menu_driver_list_insert(file_list_t *list, const char *path, + const char *label, unsigned type, size_t idx) +{ + menu_file_list_cbs_t *cbs = NULL; + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (!list) + return; + + if (driver->list_insert) + driver->list_insert(list, path, label, idx); + + file_list_free_actiondata(list, idx); + cbs = (menu_file_list_cbs_t*) + calloc(1, sizeof(menu_file_list_cbs_t)); + + if (!cbs) + return; + + file_list_set_actiondata(list, idx, cbs); + menu_cbs_init(list, path, label, type, idx); +} + menu_list_t *menu_list_get_ptr(void) { menu_entries_t *entries = menu_entries_get_ptr(); From fe1351cc0da0e33658a9f3b6b5fe5135576bb125 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 03:03:34 +0200 Subject: [PATCH 291/822] Cleanups --- menu/menu_entries.c | 11 ++--------- menu/menu_entries.h | 2 -- menu/menu_entry.c | 3 +++ menu/menu_list.c | 1 + runloop_data.c | 2 -- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/menu/menu_entries.c b/menu/menu_entries.c index 69a7277d3b..e28bcb580b 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -172,18 +172,11 @@ static bool menu_entries_get_nonblocking_refresh(void) return entries->nonblocking_refresh; } -int menu_entries_refresh(void) -{ - if (menu_entries_get_nonblocking_refresh()) - return -1; - if (!menu_entries_needs_refresh()) - return -1; - return menu_entry_iterate(MENU_ACTION_REFRESH); -} - bool menu_entries_needs_refresh(void) { menu_entries_t *entries = menu_entries_get_ptr(); + if (menu_entries_get_nonblocking_refresh()) + return false; if (!entries) return false; return entries->need_refresh; diff --git a/menu/menu_entries.h b/menu/menu_entries.h index f8238b4043..6e272045aa 100644 --- a/menu/menu_entries.h +++ b/menu/menu_entries.h @@ -56,8 +56,6 @@ int menu_entries_get_core_title(char *title_msg, size_t title_msg_len); menu_entries_t *menu_entries_get_ptr(void); -int menu_entries_refresh(void); - bool menu_entries_needs_refresh(void); void menu_entries_set_refresh(void); diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 5b32e9a2ce..16ec1da15e 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -378,6 +378,9 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) menu_list_t *menu_list = menu_list_get_ptr(); menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); + if (menu_entries_needs_refresh()) + action = MENU_ACTION_REFRESH; + switch (action) { case MENU_ACTION_UP: diff --git a/menu/menu_list.c b/menu/menu_list.c index 1e7293043a..04895cf84a 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -20,6 +20,7 @@ #include "../driver.h" #include "menu.h" +#include "menu_cbs.h" #include "menu_hash.h" #include "menu_list.h" #include "menu_navigation.h" diff --git a/runloop_data.c b/runloop_data.c index 2d6e2012d0..f8e597c713 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -214,8 +214,6 @@ static void rarch_main_data_menu_iterate(void) if (rarch_main_data_db_pending_scan_finished()) menu_environment_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, NULL); #endif - - menu_entries_refresh(); } #endif From 1669d8b3e562b68eb4b178f45a6b4b79c3a4eb26 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 03:07:23 +0200 Subject: [PATCH 292/822] (Menu) Cleanup --- menu/menu_input.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/menu/menu_input.c b/menu/menu_input.c index d6550efbec..df6b55fea8 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -265,15 +265,9 @@ static void menu_input_poll_bind_get_rested_axes(struct menu_bind_state *state, unsigned a; const input_device_driver_t *joypad = input_driver_get_joypad_driver(); - if (!state) + if (!state || !joypad) return; - if (!joypad) - { - RARCH_ERR("Cannot poll raw joypad state."); - return; - } - /* poll only the relevant port */ /*for (i = 0; i < settings->input.max_users; i++)*/ for (a = 0; a < MENU_MAX_AXES; a++) From 3f978b2b1e98d3f4f60c603fcb4fd1025e913aec Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 03:12:17 +0200 Subject: [PATCH 293/822] Cleanup --- menu/menu_input.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/menu/menu_input.c b/menu/menu_input.c index df6b55fea8..1dda2bf532 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -231,10 +231,7 @@ static void menu_input_poll_bind_state(struct menu_bind_state *state, unsigned p RETRO_DEVICE_KEYBOARD, 0, RETROK_RETURN); if (!joypad) - { - RARCH_ERR("Cannot poll raw joypad state."); return; - } if (joypad->poll) joypad->poll(); From 6bbc2dd83ddc7e05c86a4d852bb543ef5880053c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 03:41:13 +0200 Subject: [PATCH 294/822] Refactor menu_iterate_main --- menu/menu.c | 4 ++-- menu/menu.h | 3 +-- menu/menu_entry.c | 13 ------------- menu/menu_entry.h | 2 -- menu/menu_iterate.c | 9 +++++++-- 5 files changed, 10 insertions(+), 21 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index 46df6d6df3..28117dbbb5 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -100,7 +100,7 @@ bool menu_load_content(enum rarch_core_type type) if (disp) disp->msg_force = true; - menu_entry_iterate(MENU_ACTION_NOOP); + menu_iterate_main(MENU_ACTION_NOOP); menu_display_fb(); @@ -360,7 +360,7 @@ int menu_iterate(retro_input_t input, action = menu_input->joypad.state; - ret = menu_entry_iterate(action); + ret = menu_iterate_main(action); if (menu_driver_alive() && !rarch_main_is_idle()) menu_display_fb(); diff --git a/menu/menu.h b/menu/menu.h index db914eb16c..5c314d5066 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -177,8 +177,7 @@ void *menu_init(const void *data); int menu_iterate(retro_input_t input, retro_input_t old_input, retro_input_t trigger_input); -int menu_iterate_main(const char *label, - unsigned action); +int menu_iterate_main(unsigned action); /** * menu_free: diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 16ec1da15e..6f1b9b631b 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -358,19 +358,6 @@ int menu_entry_select(uint32_t i) return menu_entry_action(&entry, i, MENU_ACTION_SELECT); } -int menu_entry_iterate(unsigned action) -{ - const char *label = NULL; - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); - - return menu_iterate_main(label, action); -} - int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) { int ret = 0; diff --git a/menu/menu_entry.h b/menu/menu_entry.h index 71b5b02c98..5415cb4624 100644 --- a/menu/menu_entry.h +++ b/menu/menu_entry.h @@ -108,8 +108,6 @@ bool menu_entry_is_currently_selected(unsigned id); void menu_entry_get(menu_entry_t *entry, size_t i, void *userdata, bool use_representation); -int menu_entry_iterate(unsigned action); - int menu_entry_select(uint32_t i); int menu_entry_action(menu_entry_t *entry, diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 4f5872e750..cfb4d145a0 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -412,27 +412,32 @@ static enum action_iterate_type action_iterate_type(uint32_t hash) return ITERATE_TYPE_DEFAULT; } -int menu_iterate_main(const char *label, unsigned action) +int menu_iterate_main(unsigned action) { menu_entry_t entry; char msg[PATH_MAX_LENGTH] = {0}; enum action_iterate_type iterate_type; size_t selected; size_t *pop_selected = NULL; + const char *label = NULL; bool fb_is_dirty = false; bool do_messagebox = false; bool do_pop_stack = false; bool do_post_iterate = false; bool do_render = false; int ret = 0; + uint32_t hash = 0; const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); menu_display_t *disp = menu_display_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); - uint32_t hash = menu_hash_calculate(label); + + menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); if (!menu || !menu_list) return 0; + + hash = menu_hash_calculate(label); iterate_type = action_iterate_type(hash); From f190230f856fb1e4c3833e66f581312f57f9d3ff Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 03:51:44 +0200 Subject: [PATCH 295/822] Refactors --- menu/menu_driver.h | 11 ++++++ menu/menu_iterate.c | 89 +++++++++++++++++++++++---------------------- 2 files changed, 56 insertions(+), 44 deletions(-) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 1f47c07580..64781fcbca 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -86,6 +86,17 @@ typedef struct char scratch_buf[PATH_MAX_LENGTH]; char scratch2_buf[PATH_MAX_LENGTH]; + struct + { + bool fb_is_dirty; + bool do_messagebox; + bool do_pop_stack; + bool do_post_iterate; + bool do_render; + size_t *pop_selected; + char msg[PATH_MAX_LENGTH]; + } state; + /* Menu display */ menu_display_t display; diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index cfb4d145a0..4e3068c31b 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -415,16 +415,9 @@ static enum action_iterate_type action_iterate_type(uint32_t hash) int menu_iterate_main(unsigned action) { menu_entry_t entry; - char msg[PATH_MAX_LENGTH] = {0}; enum action_iterate_type iterate_type; size_t selected; - size_t *pop_selected = NULL; const char *label = NULL; - bool fb_is_dirty = false; - bool do_messagebox = false; - bool do_pop_stack = false; - bool do_post_iterate = false; - bool do_render = false; int ret = 0; uint32_t hash = 0; const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); @@ -437,50 +430,58 @@ int menu_iterate_main(unsigned action) if (!menu || !menu_list) return 0; + menu->state.fb_is_dirty = false; + menu->state.do_messagebox = false; + menu->state.do_render = false; + menu->state.do_pop_stack = false; + menu->state.do_post_iterate = false; + menu->state.pop_selected = NULL; + menu->state.msg[0] = '\0'; + hash = menu_hash_calculate(label); iterate_type = action_iterate_type(hash); if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending()) - fb_is_dirty = true; + menu->state.fb_is_dirty = true; switch (iterate_type) { case ITERATE_TYPE_HELP: - ret = action_iterate_help(msg, sizeof(msg), label); - do_render = true; - pop_selected = NULL; - do_messagebox = true; - do_pop_stack = true; - do_post_iterate = true; + ret = action_iterate_help(menu->state.msg, sizeof(menu->state.msg), label); + menu->state.do_render = true; + menu->state.pop_selected = NULL; + menu->state.do_messagebox = true; + menu->state.do_pop_stack = true; + menu->state.do_post_iterate = true; if (ret == 1) action = MENU_ACTION_OK; break; case ITERATE_TYPE_BIND: - if (menu_input_bind_iterate(msg, sizeof(msg))) + if (menu_input_bind_iterate(menu->state.msg, sizeof(menu->state.msg))) menu_list_pop_stack(menu_list); else - do_messagebox = true; - do_render = true; + menu->state.do_messagebox = true; + menu->state.do_render = true; break; case ITERATE_TYPE_VIEWPORT: - ret = action_iterate_menu_viewport(msg, sizeof(msg), label, action, hash); - do_render = true; - do_messagebox = true; + ret = action_iterate_menu_viewport(menu->state.msg, sizeof(menu->state.msg), label, action, hash); + menu->state.do_render = true; + menu->state.do_messagebox = true; break; case ITERATE_TYPE_INFO: - ret = action_iterate_info(msg, sizeof(msg), label); - pop_selected = &nav->selection_ptr; - do_render = true; - do_messagebox = true; - do_pop_stack = true; - do_post_iterate = true; + ret = action_iterate_info(menu->state.msg, sizeof(menu->state.msg), label); + menu->state.pop_selected = &nav->selection_ptr; + menu->state.do_render = true; + menu->state.do_messagebox = true; + menu->state.do_pop_stack = true; + menu->state.do_post_iterate = true; break; case ITERATE_TYPE_MESSAGE: - strlcpy(msg, disp->message_contents, sizeof(msg)); - pop_selected = &nav->selection_ptr; - do_messagebox = true; - do_pop_stack = true; + strlcpy(menu->state.msg, disp->message_contents, sizeof(menu->state.msg)); + menu->state.pop_selected = &nav->selection_ptr; + menu->state.do_messagebox = true; + menu->state.do_pop_stack = true; break; case ITERATE_TYPE_DEFAULT: selected = menu_navigation_get_current_selection(); @@ -493,8 +494,8 @@ int menu_iterate_main(unsigned action) if (ret) return ret; - do_post_iterate = true; - do_render = true; + menu->state.do_post_iterate = true; + menu->state.do_render = true; /* Have to defer it so we let settings refresh. */ if (menu->push_help_screen) @@ -511,28 +512,28 @@ int menu_iterate_main(unsigned action) break; } - if (fb_is_dirty != do_messagebox) - fb_is_dirty = true; + if (menu->state.fb_is_dirty != menu->state.do_messagebox) + menu->state.fb_is_dirty = true; - if (fb_is_dirty) + if (menu->state.fb_is_dirty) menu_display_fb_set_dirty(); - if (do_messagebox && msg[0] != '\0') + if (menu->state.do_messagebox && menu->state.msg[0] != '\0') { const ui_companion_driver_t *ui = ui_companion_get_ptr(); - if (driver->render_messagebox && msg[0] != '\0') - driver->render_messagebox(msg); - if (ui->render_messagebox && msg[0] != '\0') - ui->render_messagebox(msg); + if (driver->render_messagebox && menu->state.msg[0] != '\0') + driver->render_messagebox(menu->state.msg); + if (ui->render_messagebox && menu->state.msg[0] != '\0') + ui->render_messagebox(menu->state.msg); } - if (do_pop_stack && action == MENU_ACTION_OK) - menu_list_pop(menu_list->menu_stack, pop_selected); + if (menu->state.do_pop_stack && action == MENU_ACTION_OK) + menu_list_pop(menu_list->menu_stack, menu->state.pop_selected); - if (do_post_iterate) + if (menu->state.do_post_iterate) menu_input_post_iterate(&ret, action); - if (do_render) + if (menu->state.do_render) { if (driver->render) driver->render(); From 9ff167c1b96cf8604c8b14c68bb9b19e24c96406 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 03:59:04 +0200 Subject: [PATCH 296/822] Create separate menu_iterate_main_render --- menu/menu.c | 8 +------- menu/menu.h | 2 ++ menu/menu_iterate.c | 32 ++++++++++++++++++++++++-------- runloop_data.c | 2 ++ 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index 28117dbbb5..ab2a20f68e 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -101,8 +101,7 @@ bool menu_load_content(enum rarch_core_type type) disp->msg_force = true; menu_iterate_main(MENU_ACTION_NOOP); - - menu_display_fb(); + menu_iterate_main_render(); if (!(main_load_content(0, NULL, NULL, menu_environment_get, driver->frontend_ctx->process_args))) @@ -362,11 +361,6 @@ int menu_iterate(retro_input_t input, ret = menu_iterate_main(action); - if (menu_driver_alive() && !rarch_main_is_idle()) - menu_display_fb(); - - menu_driver_set_texture(); - if (ret) return -1; diff --git a/menu/menu.h b/menu/menu.h index 5c314d5066..bf59bca8a6 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -179,6 +179,8 @@ int menu_iterate(retro_input_t input, int menu_iterate_main(unsigned action); +int menu_iterate_main_render(void); + /** * menu_free: * @menu : Menu handle. diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 4e3068c31b..bbbf12135e 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -512,6 +512,23 @@ int menu_iterate_main(unsigned action) break; } + if (menu->state.do_pop_stack && action == MENU_ACTION_OK) + menu_list_pop(menu_list->menu_stack, menu->state.pop_selected); + + if (menu->state.do_post_iterate) + menu_input_post_iterate(&ret, action); + + return ret; +} + +int menu_iterate_main_render(void) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + menu_handle_t *menu = menu_driver_get_ptr(); + + if (!menu) + return -1; + if (menu->state.fb_is_dirty != menu->state.do_messagebox) menu->state.fb_is_dirty = true; @@ -526,18 +543,17 @@ int menu_iterate_main(unsigned action) if (ui->render_messagebox && menu->state.msg[0] != '\0') ui->render_messagebox(menu->state.msg); } - - if (menu->state.do_pop_stack && action == MENU_ACTION_OK) - menu_list_pop(menu_list->menu_stack, menu->state.pop_selected); - - if (menu->state.do_post_iterate) - menu_input_post_iterate(&ret, action); - + if (menu->state.do_render) { if (driver->render) driver->render(); } - return ret; + if (menu_driver_alive() && !rarch_main_is_idle()) + menu_display_fb(); + + menu_driver_set_texture(); + + return 0; } diff --git a/runloop_data.c b/runloop_data.c index f8e597c713..905cb8090f 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -214,6 +214,8 @@ static void rarch_main_data_menu_iterate(void) if (rarch_main_data_db_pending_scan_finished()) menu_environment_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, NULL); #endif + + menu_iterate_main_render(); } #endif From 1ba49547f3c2b5972490aaba36e3c19d0c78cab8 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 18 Aug 2015 04:00:17 +0200 Subject: [PATCH 297/822] Remove unused variable --- menu/menu_iterate.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index bbbf12135e..89c221f33e 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -420,7 +420,6 @@ int menu_iterate_main(unsigned action) const char *label = NULL; int ret = 0; uint32_t hash = 0; - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); menu_display_t *disp = menu_display_get_ptr(); From 6b1a9f0852632aa347c7c5bc164c40082d385b11 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 18 Aug 2015 04:11:51 +0200 Subject: [PATCH 298/822] Cleanups --- menu/menu.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index ab2a20f68e..0e3685e265 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -348,7 +348,6 @@ void menu_free(menu_handle_t *menu) int menu_iterate(retro_input_t input, retro_input_t old_input, retro_input_t trigger_input) { - int32_t ret = 0; unsigned action = 0; menu_display_t *disp = menu_display_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr(); @@ -359,9 +358,7 @@ int menu_iterate(retro_input_t input, action = menu_input->joypad.state; - ret = menu_iterate_main(action); - - if (ret) + if (menu_iterate_main(action)) return -1; return 0; From ecc49c84a833138006f9282bd8e365cf23b7845d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Tue, 18 Aug 2015 21:04:06 +0200 Subject: [PATCH 299/822] Make stb font_size similar to our other font renderers. Fixes #2047 --- gfx/drivers_font_renderer/stb.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gfx/drivers_font_renderer/stb.c b/gfx/drivers_font_renderer/stb.c index d27decca0b..76b196b6b6 100644 --- a/gfx/drivers_font_renderer/stb.c +++ b/gfx/drivers_font_renderer/stb.c @@ -137,6 +137,9 @@ static void *font_renderer_stb_init(const char *font_path, float font_size) stbtt_fontinfo info; stb_font_renderer_t *self = (stb_font_renderer_t*) calloc(1, sizeof(*self)); + /* See https://github.com/nothings/stb/blob/master/stb_truetype.h#L539 */ + font_size = STBTT_POINT_SIZE(font_size); + /* prevent warnings */ (void)rect_width_compare; From f908fffac4caa7ebae1c7be8cc916f49ebe7e078 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:25:12 +0200 Subject: [PATCH 300/822] (Emscripten) Include headers --- frontend/drivers/platform_emscripten.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index d97e3059d2..1c5219855a 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -20,8 +20,8 @@ #include #include "../../content.h" #include "../frontend.h" -//#include "../../retroarch.h" -//#include "../../runloop.h" +#include "../../retroarch.h" +#include "../../runloop.h" #include "../frontend_driver.h" #include "../runloop_data.h" From a5547aded980be7dd3b76df47b533df20125167c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:27:49 +0200 Subject: [PATCH 301/822] (Emscripten) Fix another header include --- frontend/drivers/platform_emscripten.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index 1c5219855a..f24cf225f9 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -22,8 +22,8 @@ #include "../frontend.h" #include "../../retroarch.h" #include "../../runloop.h" +#include "../../runloop_data.h" #include "../frontend_driver.h" -#include "../runloop_data.h" static void emscripten_mainloop(void) { From 760ff5fa30f21bbdb9fce659f9215a9deab3a829 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:32:24 +0200 Subject: [PATCH 302/822] (Emscripten) Build fixes --- frontend/drivers/platform_emscripten.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index f24cf225f9..274a08f108 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -38,22 +38,22 @@ static void emscripten_mainloop(void) void cmd_savefiles(void) { - rarch_main_command(RARCH_CMD_SAVEFILES); + event_command(EVENT_CMD_SAVEFILES); } void cmd_save_state(void) { - rarch_main_command(RARCH_CMD_SAVE_STATE); + event_command(EVENT_CMD_SAVE_STATE); } void cmd_load_state(void) { - rarch_main_command(RARCH_CMD_LOAD_STATE); + event_command(EVENT_CMD_LOAD_STATE); } void cmd_take_screenshot(void) { - rarch_main_command(RARCH_CMD_TAKE_SCREENSHOT); + event_command(EVENT_CMD_TAKE_SCREENSHOT); } From 16da8cfe2daad67827f161022864e3e6761a5db7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:37:16 +0200 Subject: [PATCH 303/822] (Emscripten) rwebinput_input.c - buildfixes --- input/drivers/rwebinput_input.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/input/drivers/rwebinput_input.c b/input/drivers/rwebinput_input.c index d11abe73a6..a0579c6fe2 100644 --- a/input/drivers/rwebinput_input.c +++ b/input/drivers/rwebinput_input.c @@ -33,6 +33,7 @@ typedef struct rwebinput_state int mouse_y; char mouse_l; char mouse_r; + bool blocked; } rwebinput_state_t; int RWebInputInit(void); @@ -67,10 +68,11 @@ error: return NULL; } -static bool rwebinput_key_pressed(rwebinput_input_t *rwebinput, int key) +static bool rwebinput_key_pressed(void *data, int key) { unsigned sym; bool ret; + rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; if (key >= RETROK_LAST) return false; @@ -81,8 +83,10 @@ static bool rwebinput_key_pressed(rwebinput_input_t *rwebinput, int key) return ret; } -static bool rwebinput_meta_key_pressed(rwebinput_input_t *rwebinput, int key) +static bool rwebinput_meta_key_pressed(void *data, int key) { + (void)data; + (void)key; return false; } @@ -263,6 +267,7 @@ input_driver_t input_rwebinput = { rwebinput_grab_mouse, NULL, rwebinput_set_rumble, + NULL, rwebinput_keyboard_mapping_is_blocked, rwebinput_keyboard_mapping_set_block, }; From bfb7ee30c50e2d0407301372945b0c83c738993f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:43:25 +0200 Subject: [PATCH 304/822] (dynamic.c) Fix logic error --- dynamic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic.c b/dynamic.c index fa75f79fc6..98d910ca31 100644 --- a/dynamic.c +++ b/dynamic.c @@ -752,7 +752,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) break; case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY: - if (!settings->system_directory || settings->system_directory[0] == '\0') + if (settings->system_directory[0] == '\0' || settings->system_directory[0] == '\0') { RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",global->path.fullpath); fill_pathname_basedir(buf, global->path.fullpath, From 9fd17a196f4b53dee18339c3dd4e86ba3bf93d01 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:49:44 +0200 Subject: [PATCH 305/822] Buildfixes --- dynamic.c | 2 +- input/drivers/rwebinput_input.c | 9 +++++---- menu/cbs/menu_cbs_ok.c | 3 ++- menu/menu_displaylist.c | 5 +++-- menu/menu_setting.c | 2 ++ retroarch.c | 2 +- 6 files changed, 14 insertions(+), 9 deletions(-) diff --git a/dynamic.c b/dynamic.c index 98d910ca31..657240d5d1 100644 --- a/dynamic.c +++ b/dynamic.c @@ -752,7 +752,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) break; case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY: - if (settings->system_directory[0] == '\0' || settings->system_directory[0] == '\0') + if (settings->system_directory[0] == '\0') { RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",global->path.fullpath); fill_pathname_basedir(buf, global->path.fullpath, diff --git a/input/drivers/rwebinput_input.c b/input/drivers/rwebinput_input.c index a0579c6fe2..aecb612c02 100644 --- a/input/drivers/rwebinput_input.c +++ b/input/drivers/rwebinput_input.c @@ -17,6 +17,7 @@ #include #include +#include "../input_joypad.h" #include "../input_autodetect.h" #include "../input_common.h" #include "../input_keymaps.h" @@ -68,7 +69,7 @@ error: return NULL; } -static bool rwebinput_key_pressed(void *data, int key) +static bool rwebinput_key_pressed__(void *data, int key) { unsigned sym; bool ret; @@ -96,7 +97,7 @@ static bool rwebinput_is_pressed(rwebinput_input_t *rwebinput, if (id < RARCH_BIND_LIST_END) { const struct retro_keybind *bind = &binds[id]; - return bind->valid && rwebinput_key_pressed(rwebinput, binds[id].key); + return bind->valid && rwebinput_key_pressed__(rwebinput, binds[id].key); } return false; @@ -242,7 +243,7 @@ static bool rwebinput_keyboard_mapping_is_blocked(void *data) rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; if (!rwebinput) return false; - return rwebinput->blocked; + return rwebinput->state.blocked; } static void rwebinput_keyboard_mapping_set_block(void *data, bool value) @@ -250,7 +251,7 @@ static void rwebinput_keyboard_mapping_set_block(void *data, bool value) rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; if (!rwebinput) return; - rwebinput->blocked = value; + rwebinput->state.blocked = value; } input_driver_t input_rwebinput = { diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d2b3d6145b..4b53d97061 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1056,13 +1056,14 @@ static int action_ok_core_load(const char *path, return -1; } - return 0; /* Core selection on non-console just updates directory listing. * Will take effect on new content load. */ #elif defined(RARCH_CONSOLE) event_command(EVENT_CMD_RESTART_RETROARCH); return -1; #endif + + return 0; } static int action_ok_core_download(const char *path, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 24a487f6ce..ae2c66a53c 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -42,10 +42,11 @@ #include "../frontend/drivers/platform_android.h" #endif +extern unsigned rpl_entry_selection_ptr; + #ifdef HAVE_NETWORKING extern char *core_buf; extern size_t core_len; -extern unsigned rpl_entry_selection_ptr; static void print_buf_lines(file_list_t *list, char *buf, int buf_size, unsigned type) @@ -1790,7 +1791,7 @@ static int menu_displaylist_parse_horizontal_content_actions(menu_displaylist_in menu_handle_t *menu = menu_driver_get_ptr(); global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); - unsigned idx = rpl_entry_selection_ptr; + unsigned idx = rpl_entry_selection_ptr; const char *label = NULL; const char *core_path = NULL; const char *core_name = NULL; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index d72976e0de..7a61041b98 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1352,6 +1352,7 @@ static void setting_get_string_representation_uint_analog_dpad_mode(void *data, len); } +#ifdef HAVE_THREADS static void setting_get_string_representation_uint_autosave_interval(void *data, char *s, size_t len) { @@ -1365,6 +1366,7 @@ static void setting_get_string_representation_uint_autosave_interval(void *data, else strlcpy(s, menu_hash_to_str(MENU_VALUE_OFF), len); } +#endif static void setting_get_string_representation_uint_user_language(void *data, char *s, size_t len) diff --git a/retroarch.c b/retroarch.c index c307e1c8e0..f6afcc735b 100644 --- a/retroarch.c +++ b/retroarch.c @@ -313,7 +313,7 @@ static void set_special_paths(char **argv, unsigned num_content) /* If this is already set, * do not overwrite it as this was initialized before in * a menu or otherwise. */ - if (!settings->system_directory || settings->system_directory[0] == '\0') + if (settings->system_directory[0] == '\0') { RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",argv[0]); /*fill_pathname_basedir(settings->system_directory, argv[0], From cca2dd1713910156504f3bd3a55380170a433f29 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:51:56 +0200 Subject: [PATCH 306/822] Get rid of EMSCRIPTEN ifdef --- audio/audio_dsp_filter.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/audio/audio_dsp_filter.c b/audio/audio_dsp_filter.c index c3963627b5..ef4da4c9ec 100644 --- a/audio/audio_dsp_filter.c +++ b/audio/audio_dsp_filter.c @@ -247,11 +247,9 @@ rarch_dsp_filter_t *rarch_dsp_filter_new( goto error; #endif -#if !defined(EMSCRIPTEN) -#if defined(HAVE_DYLIB) || defined(RARCH_CONSOLE) +#if defined(HAVE_DYLIB) || defined(HAVE_FILTERS_BUILTIN) if (!append_plugs(dsp, plugs)) goto error; -#endif #endif if (plugs) From c992b10a7d81c1b6995f98dd235b379d69f0d258 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:57:54 +0200 Subject: [PATCH 307/822] (Emscripten) Another buildfix --- Makefile.emscripten | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.emscripten b/Makefile.emscripten index 4e81ee9287..601083f433 100644 --- a/Makefile.emscripten +++ b/Makefile.emscripten @@ -23,7 +23,7 @@ ifneq ($(NATIVE_ZLIB),) endif LIBS := -LDFLAGS := -L. --no-heap-copy -s USE_ZLIB=1 `-s TOTAL_MEMORY=$(MEMORY) -s OUTLINING_LIMIT=50000 \ +LDFLAGS := -L. --no-heap-copy -s USE_ZLIB=1 -s TOTAL_MEMORY=$(MEMORY) -s OUTLINING_LIMIT=50000 \ -s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_load_state', '_cmd_take_screenshot']" \ --js-library emscripten/library_rwebaudio.js \ --js-library emscripten/library_rwebinput.js \ From fc25e9310f157d4445989f9bbdc519f568b02aa6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 00:59:25 +0200 Subject: [PATCH 308/822] (Emscripten) remove unused uninited --- input/drivers/rwebinput_input.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/input/drivers/rwebinput_input.c b/input/drivers/rwebinput_input.c index aecb612c02..e11e5b85ad 100644 --- a/input/drivers/rwebinput_input.c +++ b/input/drivers/rwebinput_input.c @@ -41,8 +41,6 @@ int RWebInputInit(void); rwebinput_state_t *RWebInputPoll(int context); void RWebInputDestroy(int context); -static bool uninited = false; - typedef struct rwebinput_input { rwebinput_state_t state; @@ -170,7 +168,6 @@ static int16_t rwebinput_input_state(void *data, const struct retro_keybind **bi static void rwebinput_input_free(void *data) { rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; - uninited = true; if (!rwebinput) return; From b08c7f752d5fc3126902a3465443e8eb21cd5caf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 01:11:00 +0200 Subject: [PATCH 309/822] Update both test cores' Makefile for Emscripten --- cores/libretro-test-gl/Makefile | 6 ++++++ cores/libretro-test/Makefile | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cores/libretro-test-gl/Makefile b/cores/libretro-test-gl/Makefile index 3d14a3cd52..cf86540aa9 100644 --- a/cores/libretro-test-gl/Makefile +++ b/cores/libretro-test-gl/Makefile @@ -1,3 +1,6 @@ +ifneq ($(EMSCRIPTEN),) + platform = emscripten +endif ifeq ($(platform),) platform = unix @@ -102,6 +105,9 @@ else ifneq (,$(findstring hardfloat,$(platform))) CFLAGS += -mfloat-abi=hard endif CFLAGS += -DARM +# emscripten +else ifeq ($(platform), emscripten) + TARGET := $(TARGET_NAME)_libretro_emscripten.bc else CC = gcc TARGET := $(TARGET_NAME)_libretro.dll diff --git a/cores/libretro-test/Makefile b/cores/libretro-test/Makefile index 8556c99756..36cd6c3b18 100644 --- a/cores/libretro-test/Makefile +++ b/cores/libretro-test/Makefile @@ -43,7 +43,7 @@ else ifneq (,$(findstring qnx,$(platform))) fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined else ifeq ($(platform), emscripten) - TARGET := $(TARGET_NAME)_libretro_emscripten.so + TARGET := $(TARGET_NAME)_libretro_emscripten.bc fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined else From 39d514d16d28ec14930793019978b187d2b2ad84 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 01:40:19 +0200 Subject: [PATCH 310/822] Comment out rarch_threaded_video_get_ident if HAVE_THREADS not defined --- menu/menu_video.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/menu/menu_video.c b/menu/menu_video.c index 93537fc3cb..e69af0f8c4 100644 --- a/menu/menu_video.c +++ b/menu/menu_video.c @@ -21,7 +21,9 @@ #include "menu_video.h" #include "../gfx/video_common.h" +#ifdef HAVE_THREADS #include "../gfx/video_thread_wrapper.h" +#endif #ifdef HAVE_OPENGL void menu_video_draw_frame( @@ -145,8 +147,10 @@ void menu_video_frame_background( const char *menu_video_get_ident(void) { settings_t *settings = config_get_ptr(); +#ifdef HAVE_THREADS if (settings->video.threaded) return rarch_threaded_video_get_ident(); +#endif return video_driver_get_ident(); } From 5e372636e755c9fef8c353c9dc76e056127b0a91 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 01:41:08 +0200 Subject: [PATCH 311/822] Cleanup --- menu/menu_video.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/menu/menu_video.c b/menu/menu_video.c index e69af0f8c4..65195e4a95 100644 --- a/menu/menu_video.c +++ b/menu/menu_video.c @@ -146,8 +146,9 @@ void menu_video_frame_background( const char *menu_video_get_ident(void) { - settings_t *settings = config_get_ptr(); #ifdef HAVE_THREADS + settings_t *settings = config_get_ptr(); + if (settings->video.threaded) return rarch_threaded_video_get_ident(); #endif From 52d9d46f2f6d4a054d40594393413eee0b61811f Mon Sep 17 00:00:00 2001 From: radius Date: Wed, 19 Aug 2015 19:20:27 -0500 Subject: [PATCH 312/822] populate system dir correctly when content dir when it's empty --- dynamic.c | 17 +++++++++++------ runloop.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/dynamic.c b/dynamic.c index 657240d5d1..f6d9b5fd79 100644 --- a/dynamic.c +++ b/dynamic.c @@ -755,15 +755,20 @@ bool rarch_environment_cb(unsigned cmd, void *data) if (settings->system_directory[0] == '\0') { RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",global->path.fullpath); - fill_pathname_basedir(buf, global->path.fullpath, - sizeof(buf)); + fill_pathname_basedir(global->dir.systemdir, global->path.fullpath, + sizeof(global->dir.systemdir)); + *(const char**)data = global->dir.systemdir; + RARCH_LOG("Environ SYSTEM_DIRECTORY: \"%s\".\n", + global->dir.systemdir); } - *(const char**)data = *settings->system_directory ? - settings->system_directory : buf; - - RARCH_LOG("Environ SYSTEM_DIRECTORY: \"%s\".\n", + else + { + *(const char**)data = settings->system_directory; + RARCH_LOG("Environ SYSTEM_DIRECTORY: \"%s\".\n", settings->system_directory); + } + break; case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY: diff --git a/runloop.h b/runloop.h index c499562ec3..0db287bf9f 100644 --- a/runloop.h +++ b/runloop.h @@ -122,6 +122,7 @@ typedef struct global /* Used on reentrancy to use a savestate dir. */ char savefile[PATH_MAX_LENGTH]; char savestate[PATH_MAX_LENGTH]; + char systemdir[PATH_MAX_LENGTH]; #ifdef HAVE_OVERLAY char overlay[PATH_MAX_LENGTH]; char osk_overlay[PATH_MAX_LENGTH]; From c7c61b79e3d023f3c06eb89ecb2430d4da5ca882 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 20 Aug 2015 06:21:53 +0200 Subject: [PATCH 313/822] Add dylib_error --- dynamic.c | 1 + libretro-common/dynamic/dylib.c | 53 ++++++++++++++++++++++++- libretro-common/include/dynamic/dylib.h | 2 + 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/dynamic.c b/dynamic.c index f6d9b5fd79..1e84f2978e 100644 --- a/dynamic.c +++ b/dynamic.c @@ -337,6 +337,7 @@ static void load_symbols(enum rarch_core_type type) { RARCH_ERR("Failed to open libretro core: \"%s\"\n", settings->libretro); + RARCH_ERR("Error(s): %s\n", dylib_error()); rarch_fail(1, "load_dynamic()"); } #endif diff --git a/libretro-common/dynamic/dylib.c b/libretro-common/dynamic/dylib.c index 02d2fbecd5..4db0fea84f 100644 --- a/libretro-common/dynamic/dylib.c +++ b/libretro-common/dynamic/dylib.c @@ -31,6 +31,26 @@ #include #endif +#ifdef _WIN32 +static char last_dyn_error[512]; + +static void set_dl_error(void) +{ + DWORD err = GetLastError(); + + if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + err, + MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), + last_dyn_error, + sizeof(last_dyn_error) - 1, + NULL) == 0) + snprintf(last_dyn_error, sizeof(last_dyn_error) - 1, + "unknown error %lu", err); +} +#endif + /** * dylib_load: * @path : Path to libretro core library. @@ -42,13 +62,34 @@ dylib_t dylib_load(const char *path) { #ifdef _WIN32 - dylib_t lib = LoadLibrary(path); + int prevmode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); + dylib_t lib = LoadLibrary(path); + + SetErrorMode(prevmode); + + if (!lib) + { + set_dl_error(); + return NULL; + } + last_dyn_error[0] = 0; #else dylib_t lib = dlopen(path, RTLD_LAZY); #endif return lib; } +char *dylib_error(void) +{ +#ifdef _WIN32 + if (last_dyn_error[0]) + return last_dyn_error; + return NULL; +#else + return dlerror(); +#endif +} + function_t dylib_proc(dylib_t lib, const char *proc) { function_t sym; @@ -59,6 +100,12 @@ function_t dylib_proc(dylib_t lib, const char *proc) #ifdef _WIN32 sym = (function_t)GetProcAddress(lib ? (HMODULE)lib : GetModuleHandle(NULL), proc); + if (!sym) + { + set_dl_error(); + return NULL; + } + last_dyn_error[0] = 0; #else if (lib) ptr_sym = dlsym(lib, proc); @@ -89,7 +136,9 @@ function_t dylib_proc(dylib_t lib, const char *proc) void dylib_close(dylib_t lib) { #ifdef _WIN32 - FreeLibrary((HMODULE)lib); + if (!FreeLibrary((HMODULE)lib)) + set_dl_error(); + last_dyn_error[0] = 0; #else #ifndef NO_DLCLOSE dlclose(lib); diff --git a/libretro-common/include/dynamic/dylib.h b/libretro-common/include/dynamic/dylib.h index bdfeee4988..49438b2e47 100644 --- a/libretro-common/include/dynamic/dylib.h +++ b/libretro-common/include/dynamic/dylib.h @@ -61,6 +61,8 @@ dylib_t dylib_load(const char *path); **/ void dylib_close(dylib_t lib); +char *dylib_error(void); + function_t dylib_proc(dylib_t lib, const char *proc); #endif From 5b38acf826bf61e8c6a2ef22060578003b81603a Mon Sep 17 00:00:00 2001 From: "Anthony J. Bentley" Date: Wed, 19 Aug 2015 23:15:44 -0600 Subject: [PATCH 314/822] Use MANDIR when creating or uninstalling from manpage directories. --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index c1b2319a1c..35f2d9fad2 100644 --- a/Makefile +++ b/Makefile @@ -159,7 +159,7 @@ install: $(TARGET) mkdir -p $(DESTDIR)$(PREFIX)/bin 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(GLOBAL_CONFIG_DIR) 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(PREFIX)/share/applications 2>/dev/null || /bin/true - mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1 2>/dev/null || /bin/true + mkdir -p $(DESTDIR)$(MAN_DIR) 2>/dev/null || /bin/true mkdir -p $(DESTDIR)$(PREFIX)/share/pixmaps 2>/dev/null || /bin/true install -m755 $(TARGET) $(DESTDIR)$(PREFIX)/bin install -m755 tools/cg2glsl.py $(DESTDIR)$(PREFIX)/bin/retroarch-cg2glsl @@ -177,9 +177,9 @@ uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/retroarch-cg2glsl rm -f $(DESTDIR)$(GLOBAL_CONFIG_DIR)/retroarch.cfg rm -f $(DESTDIR)$(PREFIX)/share/applications/retroarch.desktop - rm -f $(DESTDIR)$(PREFIX)/share/man/man1/retroarch.1 - rm -f $(DESTDIR)$(PREFIX)/share/man/man1/retroarch-cg2glsl.1 - rm -f $(DESTDIR)$(PREFIX)/share/man/man1/retroarch-joyconfig.1 + rm -f $(DESTDIR)$(MAN_DIR)/retroarch.1 + rm -f $(DESTDIR)$(MAN_DIR)/retroarch-cg2glsl.1 + rm -f $(DESTDIR)$(MAN_DIR)/retroarch-joyconfig.1 rm -f $(DESTDIR)$(PREFIX)/share/pixmaps/retroarch.svg clean: From 28b1c9eada1fe090fbb0ba3679c4e2478c985065 Mon Sep 17 00:00:00 2001 From: Alcaro Date: Thu, 20 Aug 2015 19:07:50 +0200 Subject: [PATCH 315/822] Rename this variable, every other instance of it has the same name. --- tasks/task_database.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tasks/task_database.c b/tasks/task_database.c index 099a9d6b0b..160dd3ff52 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -335,7 +335,7 @@ static int database_info_iterate_playlist_zip( return 1; } -static int database_info_iterate(database_state_handle_t *state, database_info_handle_t *db) +static int database_info_iterate(database_state_handle_t *db_state, database_info_handle_t *db) { const char *name = db ? db->list->elems[db->list_ptr].data : NULL; @@ -350,11 +350,11 @@ static int database_info_iterate(database_state_handle_t *state, database_info_h case DATABASE_TYPE_NONE: break; case DATABASE_TYPE_ITERATE: - return database_info_iterate_playlist(state, db, name); + return database_info_iterate_playlist(db_state, db, name); case DATABASE_TYPE_ITERATE_ZIP: - return database_info_iterate_playlist_zip(state, db, name); + return database_info_iterate_playlist_zip(db_state, db, name); case DATABASE_TYPE_CRC_LOOKUP: - return database_info_iterate_crc_lookup(state, db, NULL); + return database_info_iterate_crc_lookup(db_state, db, NULL); } return 0; From c05bb6e0c363c5ad19f7c64464e28ad1c85f660d Mon Sep 17 00:00:00 2001 From: Alcaro Date: Thu, 20 Aug 2015 19:24:08 +0200 Subject: [PATCH 316/822] Tolerate unset database path. --- tasks/task_database.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/task_database.c b/tasks/task_database.c index 160dd3ff52..5b251d61f1 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -269,7 +269,7 @@ static int database_info_iterate_crc_lookup( const char *zip_entry) { - if ((unsigned)db_state->list_index == (unsigned)db_state->list->size) + if (!db_state->list || (unsigned)db_state->list_index == (unsigned)db_state->list->size) return database_info_list_iterate_end_no_match(db_state); if (db_state->entry_index == 0) From c222b20ec1370358443fbd2b7276993f30adbcac Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 03:58:35 +0200 Subject: [PATCH 317/822] Cleanups --- menu/menu.c | 11 +---------- menu/menu_input.h | 5 ----- menu/menu_iterate.c | 7 +++++-- 3 files changed, 6 insertions(+), 17 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index 0e3685e265..bfd33c3339 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -348,18 +348,9 @@ void menu_free(menu_handle_t *menu) int menu_iterate(retro_input_t input, retro_input_t old_input, retro_input_t trigger_input) { - unsigned action = 0; menu_display_t *disp = menu_display_get_ptr(); - menu_input_t *menu_input = menu_input_get_ptr(); menu_animation_update_time(disp->animation); - menu_input->joypad.state = menu_input_frame(input, trigger_input); - - action = menu_input->joypad.state; - - if (menu_iterate_main(action)) - return -1; - - return 0; + return menu_iterate_main(menu_input_frame(input, trigger_input)); } diff --git a/menu/menu_input.h b/menu/menu_input.h index 1a53bd9420..45ceb7f90d 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -113,11 +113,6 @@ typedef struct menu_input { struct menu_bind_state binds; - struct - { - unsigned state; - } joypad; - struct { int16_t dx; diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 89c221f33e..be13d0e68a 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -491,7 +491,7 @@ int menu_iterate_main(unsigned action) ret = menu_entry_action(&entry, selected, (enum menu_action)action); if (ret) - return ret; + goto end; menu->state.do_post_iterate = true; menu->state.do_render = true; @@ -517,7 +517,10 @@ int menu_iterate_main(unsigned action) if (menu->state.do_post_iterate) menu_input_post_iterate(&ret, action); - return ret; +end: + if (ret) + return -1; + return 0; } int menu_iterate_main_render(void) From b09f43ab3ad366bef0c86a07c4ea9dc0103872ed Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 04:03:59 +0200 Subject: [PATCH 318/822] Cleanups pt. 2 --- menu/menu.c | 5 +---- menu/menu_animation.c | 6 ++++-- menu/menu_animation.h | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index bfd33c3339..b77070d89a 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -348,9 +348,6 @@ void menu_free(menu_handle_t *menu) int menu_iterate(retro_input_t input, retro_input_t old_input, retro_input_t trigger_input) { - menu_display_t *disp = menu_display_get_ptr(); - - menu_animation_update_time(disp->animation); - + menu_animation_update_time(); return menu_iterate_main(menu_input_frame(input, trigger_input)); } diff --git a/menu/menu_animation.c b/menu/menu_animation.c index 8a9e627d8b..609c5188b4 100644 --- a/menu/menu_animation.c +++ b/menu/menu_animation.c @@ -617,10 +617,12 @@ void menu_animation_ticker_str(char *s, size_t len, uint64_t idx, anim->is_active = true; } -void menu_animation_update_time(menu_animation_t *anim) +void menu_animation_update_time(void) { static retro_time_t last_clock_update = 0; - settings_t *settings = config_get_ptr(); + menu_display_t *disp = menu_display_get_ptr(); + menu_animation_t *anim = disp->animation; + settings_t *settings = config_get_ptr(); anim->cur_time = rarch_get_time_usec(); anim->delta_time = anim->cur_time - anim->old_time; diff --git a/menu/menu_animation.h b/menu/menu_animation.h index 48dd715e06..ed23f313ec 100644 --- a/menu/menu_animation.h +++ b/menu/menu_animation.h @@ -153,7 +153,7 @@ void menu_animation_ticker_generic(uint64_t idx, int max_width, menu_animation_t *menu_animation_get_ptr(void); -void menu_animation_update_time(menu_animation_t *anim); +void menu_animation_update_time(void); #ifdef __cplusplus } From 7831fd6fc0ae992d7eb59a8026175c68d5e58cf0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 04:16:43 +0200 Subject: [PATCH 319/822] Cleanups pt. 3 --- menu/menu.c | 20 +------------------- menu/menu.h | 10 ++-------- menu/menu_iterate.c | 15 ++++++++++++++- runloop.c | 3 ++- ui/drivers/ui_cocoatouch.m | 2 +- 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index b77070d89a..df5eb35bca 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -100,7 +100,7 @@ bool menu_load_content(enum rarch_core_type type) if (disp) disp->msg_force = true; - menu_iterate_main(MENU_ACTION_NOOP); + menu_iterate(MENU_ACTION_NOOP); menu_iterate_main_render(); if (!(main_load_content(0, NULL, NULL, menu_environment_get, @@ -333,21 +333,3 @@ void menu_free(menu_handle_t *menu) free(menu); } - -/** - * menu_iterate: - * @input : input sample for this frame - * @old_input : input sample of the previous frame - * @trigger_input : difference' input sample - difference - * between 'input' and 'old_input' - * - * Runs RetroArch menu for one frame. - * - * Returns: 0 on success, -1 if we need to quit out of the loop. - **/ -int menu_iterate(retro_input_t input, - retro_input_t old_input, retro_input_t trigger_input) -{ - menu_animation_update_time(); - return menu_iterate_main(menu_input_frame(input, trigger_input)); -} diff --git a/menu/menu.h b/menu/menu.h index bf59bca8a6..04152f3e3a 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -165,19 +165,13 @@ void *menu_init(const void *data); /** * menu_iterate: - * @input : input sample for this frame - * @old_input : input sample of the previous frame - * @trigger_input : difference' input sample - difference - * between 'input' and 'old_input' + * @action : Associated action for this frame * * Runs RetroArch menu for one frame. * * Returns: 0 on success, -1 if we need to quit out of the loop. **/ -int menu_iterate(retro_input_t input, - retro_input_t old_input, retro_input_t trigger_input); - -int menu_iterate_main(unsigned action); +int menu_iterate(unsigned action); int menu_iterate_main_render(void); diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index be13d0e68a..a1b8f5538b 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -412,7 +412,18 @@ static enum action_iterate_type action_iterate_type(uint32_t hash) return ITERATE_TYPE_DEFAULT; } -int menu_iterate_main(unsigned action) +/** + * menu_iterate: + * @input : input sample for this frame + * @old_input : input sample of the previous frame + * @trigger_input : difference' input sample - difference + * between 'input' and 'old_input' + * + * Runs RetroArch menu for one frame. + * + * Returns: 0 on success, -1 if we need to quit out of the loop. + **/ +int menu_iterate(unsigned action) { menu_entry_t entry; enum action_iterate_type iterate_type; @@ -425,7 +436,9 @@ int menu_iterate_main(unsigned action) menu_display_t *disp = menu_display_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); + menu_animation_update_time(); menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); + if (!menu || !menu_list) return 0; diff --git a/runloop.c b/runloop.c index ba15cfb791..a68a04b59a 100644 --- a/runloop.c +++ b/runloop.c @@ -36,6 +36,7 @@ #ifdef HAVE_MENU #include "menu/menu.h" +#include "menu/menu_input.h" #endif #ifdef HAVE_NETPLAY @@ -1038,7 +1039,7 @@ int rarch_main_iterate(void) { menu_handle_t *menu = menu_driver_get_ptr(); if (menu) - if (menu_iterate(input, old_input, trigger_input) == -1) + if (menu_iterate(menu_input_frame(input, trigger_input)) == -1) rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); if (!input && settings->menu.pause_libretro) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 66abc498f4..39143a0162 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -478,7 +478,7 @@ static int ui_companion_cocoatouch_iterate(void *data, unsigned action) static int ui_companion_cocoatouch_iterate_menu(void *data, unsigned action) { - menu_iterate(0, 0, 0); + menu_iterate(MENU_ACTION_NOOP); rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); return 0; } From 180cddfc35ee240b80a151f4178b65f244bb2f2a Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 21 Aug 2015 04:18:40 +0200 Subject: [PATCH 320/822] Remove unused variable --- dynamic.c | 1 - 1 file changed, 1 deletion(-) diff --git a/dynamic.c b/dynamic.c index 1e84f2978e..66f315d9e8 100644 --- a/dynamic.c +++ b/dynamic.c @@ -653,7 +653,6 @@ bool rarch_environment_cb(unsigned cmd, void *data) settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); - char buf[PATH_MAX_LENGTH]; if (ignore_environment_cb) return false; From 8bf28544ef6a0b186d01418499e409c31b5e7686 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 04:33:55 +0200 Subject: [PATCH 321/822] Add parameter to function signature of menu_iterate --- menu/menu.c | 2 +- menu/menu.h | 3 ++- menu/menu_iterate.c | 22 +++++++++++++++------- runloop.c | 2 +- ui/drivers/ui_cocoatouch.m | 4 +++- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index df5eb35bca..2a92919d09 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -100,7 +100,7 @@ bool menu_load_content(enum rarch_core_type type) if (disp) disp->msg_force = true; - menu_iterate(MENU_ACTION_NOOP); + menu_iterate(true, MENU_ACTION_NOOP); menu_iterate_main_render(); if (!(main_load_content(0, NULL, NULL, menu_environment_get, diff --git a/menu/menu.h b/menu/menu.h index 04152f3e3a..e04d8fc732 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -165,13 +165,14 @@ void *menu_init(const void *data); /** * menu_iterate: + * @render_this_frame : Render this frame or not * @action : Associated action for this frame * * Runs RetroArch menu for one frame. * * Returns: 0 on success, -1 if we need to quit out of the loop. **/ -int menu_iterate(unsigned action); +int menu_iterate(bool render_this_frame, unsigned action); int menu_iterate_main_render(void); diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index a1b8f5538b..53b7eddea3 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -423,7 +423,7 @@ static enum action_iterate_type action_iterate_type(uint32_t hash) * * Returns: 0 on success, -1 if we need to quit out of the loop. **/ -int menu_iterate(unsigned action) +int menu_iterate(bool render_this_frame, unsigned action) { menu_entry_t entry; enum action_iterate_type iterate_type; @@ -455,13 +455,17 @@ int menu_iterate(unsigned action) iterate_type = action_iterate_type(hash); if (action != MENU_ACTION_NOOP || menu_entries_needs_refresh() || menu_display_update_pending()) - menu->state.fb_is_dirty = true; + { + if (render_this_frame) + menu->state.fb_is_dirty = true; + } switch (iterate_type) { case ITERATE_TYPE_HELP: ret = action_iterate_help(menu->state.msg, sizeof(menu->state.msg), label); - menu->state.do_render = true; + if (render_this_frame) + menu->state.do_render = true; menu->state.pop_selected = NULL; menu->state.do_messagebox = true; menu->state.do_pop_stack = true; @@ -474,17 +478,20 @@ int menu_iterate(unsigned action) menu_list_pop_stack(menu_list); else menu->state.do_messagebox = true; - menu->state.do_render = true; + if (render_this_frame) + menu->state.do_render = true; break; case ITERATE_TYPE_VIEWPORT: ret = action_iterate_menu_viewport(menu->state.msg, sizeof(menu->state.msg), label, action, hash); - menu->state.do_render = true; + if (render_this_frame) + menu->state.do_render = true; menu->state.do_messagebox = true; break; case ITERATE_TYPE_INFO: ret = action_iterate_info(menu->state.msg, sizeof(menu->state.msg), label); menu->state.pop_selected = &nav->selection_ptr; - menu->state.do_render = true; + if (render_this_frame) + menu->state.do_render = true; menu->state.do_messagebox = true; menu->state.do_pop_stack = true; menu->state.do_post_iterate = true; @@ -507,7 +514,8 @@ int menu_iterate(unsigned action) goto end; menu->state.do_post_iterate = true; - menu->state.do_render = true; + if (render_this_frame) + menu->state.do_render = true; /* Have to defer it so we let settings refresh. */ if (menu->push_help_screen) diff --git a/runloop.c b/runloop.c index a68a04b59a..b1eb0d8e4c 100644 --- a/runloop.c +++ b/runloop.c @@ -1039,7 +1039,7 @@ int rarch_main_iterate(void) { menu_handle_t *menu = menu_driver_get_ptr(); if (menu) - if (menu_iterate(menu_input_frame(input, trigger_input)) == -1) + if (menu_iterate(true, menu_input_frame(input, trigger_input)) == -1) rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); if (!input && settings->menu.pause_libretro) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 39143a0162..fe4e3b22a0 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -62,6 +62,8 @@ static void rarch_draw(void) bool iterate = iterate_observer && !(rarch_main_is_paused()); int ret = iterate ? rarch_main_iterate() : 0; + if (ret == 0) + menu_iterate(false, MENU_ACTION_NOOP); rarch_main_data_iterate(); if (ret == -1) @@ -478,7 +480,7 @@ static int ui_companion_cocoatouch_iterate(void *data, unsigned action) static int ui_companion_cocoatouch_iterate_menu(void *data, unsigned action) { - menu_iterate(MENU_ACTION_NOOP); + menu_iterate(false, MENU_ACTION_NOOP); rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); return 0; } From 4f755d3bec2bb5add86c984c23c2971b399fa809 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 04:41:28 +0200 Subject: [PATCH 322/822] Cleanups --- ui/drivers/ui_cocoa.m | 1 - ui/drivers/ui_cocoatouch.m | 14 -------------- ui/drivers/ui_null.c | 1 - ui/drivers/ui_qt.c | 1 - ui/ui_companion_driver.h | 1 - 5 files changed, 18 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index b6cb009975..24e3701342 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -489,7 +489,6 @@ const ui_companion_driver_t ui_companion_cocoa = { ui_companion_cocoa_init, ui_companion_cocoa_deinit, ui_companion_cocoa_iterate, - NULL, ui_companion_cocoa_toggle, ui_companion_cocoa_event_command, ui_companion_cocoa_notify_content_loaded, diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index fe4e3b22a0..dfe4c2a793 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -84,12 +84,6 @@ static void rarch_draw_observer(CFRunLoopObserverRef observer, rarch_draw(); } -static void rarch_draw_timer(CFRunLoopTimerRef timer, void *info) -{ - rarch_draw(); -} - - apple_frontend_settings_t apple_frontend_settings; void get_ios_version(int *major, int *minor) @@ -478,13 +472,6 @@ static int ui_companion_cocoatouch_iterate(void *data, unsigned action) return 0; } -static int ui_companion_cocoatouch_iterate_menu(void *data, unsigned action) -{ - menu_iterate(false, MENU_ACTION_NOOP); - rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); - return 0; -} - static void ui_companion_cocoatouch_deinit(void *data) { ui_companion_cocoatouch_t *handle = (ui_companion_cocoatouch_t*)data; @@ -543,7 +530,6 @@ const ui_companion_driver_t ui_companion_cocoatouch = { ui_companion_cocoatouch_init, ui_companion_cocoatouch_deinit, ui_companion_cocoatouch_iterate, - ui_companion_cocoatouch_iterate_menu, ui_companion_cocoatouch_toggle, ui_companion_cocoatouch_event_command, ui_companion_cocoatouch_notify_content_loaded, diff --git a/ui/drivers/ui_null.c b/ui/drivers/ui_null.c index b43677bcac..10dacbae44 100644 --- a/ui/drivers/ui_null.c +++ b/ui/drivers/ui_null.c @@ -81,7 +81,6 @@ const ui_companion_driver_t ui_companion_null = { ui_companion_null_init, ui_companion_null_deinit, ui_companion_null_iterate, - NULL, ui_companion_null_toggle, ui_companion_null_event_command, ui_companion_null_notify_content_loaded, diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c index acefd4e660..da468f0bba 100644 --- a/ui/drivers/ui_qt.c +++ b/ui/drivers/ui_qt.c @@ -126,7 +126,6 @@ const ui_companion_driver_t ui_companion_qt = { ui_companion_qt_init, ui_companion_qt_deinit, ui_companion_qt_iterate, - NULL, ui_companion_qt_toggle, ui_companion_qt_event_command, ui_companion_qt_notify_content_loaded, diff --git a/ui/ui_companion_driver.h b/ui/ui_companion_driver.h index 15b8f5af9c..0db75aa573 100644 --- a/ui/ui_companion_driver.h +++ b/ui/ui_companion_driver.h @@ -37,7 +37,6 @@ typedef struct ui_companion_driver void *(*init)(void); void (*deinit)(void *data); int (*iterate)(void *data, unsigned action); - int (*iterate_menu)(void *data, unsigned action); void (*toggle)(void *data); void (*event_command)(void *data, enum event_command action); void (*notify_content_loaded)(void *data); From 2b6a6aeb04ae9b361999e46cf98c62e103e9cf7f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 04:42:38 +0200 Subject: [PATCH 323/822] (UI CocoaTouch) Cleanups --- ui/drivers/ui_cocoatouch.m | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index dfe4c2a793..07ca4687f5 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -57,7 +57,8 @@ static void rarch_disable_ui(void) rarch_main_set_idle(false); } -static void rarch_draw(void) +static void rarch_draw_observer(CFRunLoopObserverRef observer, + CFRunLoopActivity activity, void *info) { bool iterate = iterate_observer && !(rarch_main_is_paused()); int ret = iterate ? rarch_main_iterate() : 0; @@ -78,12 +79,6 @@ static void rarch_draw(void) CFRunLoopWakeUp(CFRunLoopGetMain()); } -static void rarch_draw_observer(CFRunLoopObserverRef observer, - CFRunLoopActivity activity, void *info) -{ - rarch_draw(); -} - apple_frontend_settings_t apple_frontend_settings; void get_ios_version(int *major, int *minor) From 9744ce23ab65d40d943c1f3d624edc41e89bcc48 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 04:56:14 +0200 Subject: [PATCH 324/822] Rename function and only perform menu_animation_udpate is render_this_frame is checked --- menu/menu.c | 2 +- menu/menu.h | 2 +- menu/menu_iterate.c | 5 +++-- runloop_data.c | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index 2a92919d09..d456a864be 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -101,7 +101,7 @@ bool menu_load_content(enum rarch_core_type type) disp->msg_force = true; menu_iterate(true, MENU_ACTION_NOOP); - menu_iterate_main_render(); + menu_iterate_render(); if (!(main_load_content(0, NULL, NULL, menu_environment_get, driver->frontend_ctx->process_args))) diff --git a/menu/menu.h b/menu/menu.h index e04d8fc732..dfefa79044 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -174,7 +174,7 @@ void *menu_init(const void *data); **/ int menu_iterate(bool render_this_frame, unsigned action); -int menu_iterate_main_render(void); +int menu_iterate_render(void); /** * menu_free: diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 53b7eddea3..05f08c974c 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -436,7 +436,8 @@ int menu_iterate(bool render_this_frame, unsigned action) menu_display_t *disp = menu_display_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); - menu_animation_update_time(); + if (render_this_frame) + menu_animation_update_time(); menu_list_get_last_stack(menu_list, NULL, &label, NULL, NULL); if (!menu || !menu_list) @@ -544,7 +545,7 @@ end: return 0; } -int menu_iterate_main_render(void) +int menu_iterate_render(void) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); diff --git a/runloop_data.c b/runloop_data.c index 905cb8090f..e5e5dac232 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -215,7 +215,7 @@ static void rarch_main_data_menu_iterate(void) menu_environment_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, NULL); #endif - menu_iterate_main_render(); + menu_iterate_render(); } #endif From 5ab257f225a4a5781fe42db7b8951ddb639d84ed Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 06:03:51 +0200 Subject: [PATCH 325/822] (CocoaTouch) Fixes boolean values not being set --- menu/menu_entry.c | 7 ------- menu/menu_entry.h | 2 -- ui/drivers/cocoa/cocoatouch_menu.m | 1 - 3 files changed, 10 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 6f1b9b631b..b9093e7663 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -143,13 +143,6 @@ uint32_t menu_entry_get_bool_value(uint32_t i) return *setting->value.boolean; } -void menu_entry_set_bool_value(uint32_t i, bool value) -{ - rarch_setting_t *setting = menu_entry_get_setting(i); - setting_set_with_string_representation(setting, value ? "true" : "false"); - menu_setting_generic(setting, false); -} - struct string_list *menu_entry_enum_values(uint32_t i) { rarch_setting_t *setting = menu_entry_get_setting(i); diff --git a/menu/menu_entry.h b/menu/menu_entry.h index 5415cb4624..65d976990f 100644 --- a/menu/menu_entry.h +++ b/menu/menu_entry.h @@ -65,8 +65,6 @@ unsigned menu_entry_get_type_new(uint32_t i); uint32_t menu_entry_get_bool_value(uint32_t i); -void menu_entry_set_bool_value(uint32_t i, bool new_val); - struct string_list *menu_entry_enum_values(uint32_t i); void menu_entry_enum_set_value_with_string(uint32_t i, const char *s); diff --git a/ui/drivers/cocoa/cocoatouch_menu.m b/ui/drivers/cocoa/cocoatouch_menu.m index 7948b51961..0c1dfdf317 100644 --- a/ui/drivers/cocoa/cocoatouch_menu.m +++ b/ui/drivers/cocoa/cocoatouch_menu.m @@ -165,7 +165,6 @@ static void RunActionSheet(const char* title, const struct string_list* items, - (void)handleBooleanSwitch:(UISwitch*)swt { - menu_entry_set_bool_value(self.i, swt.on ? true : false); [self.main menuSelect: self.i]; } From f53dc8fc670e83aa9bdc06191d4e2859a5594737 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 06:28:54 +0200 Subject: [PATCH 326/822] Fix menu_iterate.c --- menu/menu_iterate.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 05f08c974c..f75b93507d 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -562,10 +562,13 @@ int menu_iterate_render(void) if (menu->state.do_messagebox && menu->state.msg[0] != '\0') { const ui_companion_driver_t *ui = ui_companion_get_ptr(); - if (driver->render_messagebox && menu->state.msg[0] != '\0') + if (driver->render_messagebox) driver->render_messagebox(menu->state.msg); - if (ui->render_messagebox && menu->state.msg[0] != '\0') - ui->render_messagebox(menu->state.msg); + if (ui_companion_is_on_foreground()) + { + if (ui->render_messagebox) + ui->render_messagebox(menu->state.msg); + } } if (menu->state.do_render) From d405d34c0e4700df688d7aeaa19d9910983ee7ca Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 18:20:05 +0200 Subject: [PATCH 327/822] Simplify menu_cbs_init_bind_refresh --- menu/cbs/menu_cbs_refresh.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/menu/cbs/menu_cbs_refresh.c b/menu/cbs/menu_cbs_refresh.c index 09ed3436a4..5c9e296e20 100644 --- a/menu/cbs/menu_cbs_refresh.c +++ b/menu/cbs/menu_cbs_refresh.c @@ -31,16 +31,7 @@ int menu_cbs_init_bind_refresh(menu_file_list_cbs_t *cbs, if (!cbs) return -1; - switch (label_hash) - { - case MENU_VALUE_MAIN_MENU: - cbs->action_refresh = NULL; - break; - default: - cbs->action_refresh = action_refresh_default; - break; - } - + cbs->action_refresh = action_refresh_default; return -1; } From 5479bae312cbfbb282f353b8772b107db4881f42 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 18:44:14 +0200 Subject: [PATCH 328/822] Refactor set_refresh functions somewhat --- menu/cbs/menu_cbs_deferred_push.c | 2 +- menu/cbs/menu_cbs_left.c | 4 +-- menu/cbs/menu_cbs_ok.c | 4 +-- menu/cbs/menu_cbs_right.c | 4 +-- menu/cbs/menu_cbs_start.c | 4 +-- menu/menu_displaylist.c | 2 +- menu/menu_entries.c | 49 ++++++++++++------------------- menu/menu_entries.h | 8 ++--- menu/menu_entry.c | 2 +- menu/menu_list.c | 6 ++-- menu/menu_shader.c | 2 +- retroarch.c | 2 +- 12 files changed, 37 insertions(+), 52 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index f920f77ba6..240a7e6fac 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -278,7 +278,7 @@ static int cb_net_generic(void *data_, size_t len) core_buf[len] = '\0'; core_len = len; - menu_entries_unset_nonblocking_refresh(); + menu_entries_unset_refresh(true); return 0; } diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index a0c05ef1af..2abfc0fcb6 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -262,7 +262,7 @@ static int action_left_cheat_num_passes(unsigned type, const char *label, if (cheat->size) new_size = cheat->size - 1; - menu_entries_set_refresh(); + menu_entries_set_refresh(false); cheat_manager_realloc(cheat, new_size); return 0; @@ -283,7 +283,7 @@ static int action_left_shader_num_passes(unsigned type, const char *label, if (shader->passes) shader->passes--; - menu_entries_set_refresh(); + menu_entries_set_refresh(false); video_shader_resolve_parameters(NULL, menu->shader); #endif diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 4b53d97061..f29c256f61 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -553,7 +553,7 @@ static int action_ok_core_updater_list(const char *path, (void)url_path; - menu_entries_set_nonblocking_refresh(); + menu_entries_set_refresh(true); if (settings->network.buildbot_url[0] == '\0') return -1; @@ -590,7 +590,7 @@ static int action_ok_core_content_list(const char *path, (void)url_path; - menu_entries_set_nonblocking_refresh(); + menu_entries_set_refresh(true); if (settings->network.buildbot_url[0] == '\0') return -1; diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index b946363e3b..510f4a91ee 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -263,7 +263,7 @@ static int action_right_cheat_num_passes(unsigned type, const char *label, return -1; new_size = cheat->size + 1; - menu_entries_set_refresh(); + menu_entries_set_refresh(false); cheat_manager_realloc(cheat, new_size); return 0; @@ -284,7 +284,7 @@ static int action_right_shader_num_passes(unsigned type, const char *label, if ((shader->passes < GFX_MAX_SHADERS)) shader->passes++; - menu_entries_set_refresh(); + menu_entries_set_refresh(false); video_shader_resolve_parameters(NULL, menu->shader); #endif diff --git a/menu/cbs/menu_cbs_start.c b/menu/cbs/menu_cbs_start.c index 5a955d1405..faaadbefac 100644 --- a/menu/cbs/menu_cbs_start.c +++ b/menu/cbs/menu_cbs_start.c @@ -209,7 +209,7 @@ static int action_start_shader_num_passes(unsigned type, const char *label) if (shader->passes) shader->passes = 0; - menu_entries_set_refresh(); + menu_entries_set_refresh(false); video_shader_resolve_parameters(NULL, menu->shader); #endif return 0; @@ -225,7 +225,7 @@ static int action_start_cheat_num_passes(unsigned type, const char *label) if (cheat->size) { - menu_entries_set_refresh(); + menu_entries_set_refresh(false); cheat_manager_realloc(cheat, 0); } diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index ae2c66a53c..5f1166bc3a 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2396,7 +2396,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) menu_list_push(info->list, info->path, info->label, info->type, info->directory_ptr, 0); menu_navigation_clear(nav, true); - menu_entries_set_refresh(); + menu_entries_set_refresh(false); break; case DISPLAYLIST_HELP_SCREEN_LIST: menu_list_push(info->list, diff --git a/menu/menu_entries.c b/menu/menu_entries.c index e28bcb580b..bb1b7947af 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -164,48 +164,37 @@ int menu_entries_get_core_title(char *s, size_t len) return 0; } -static bool menu_entries_get_nonblocking_refresh(void) -{ - menu_entries_t *entries = menu_entries_get_ptr(); - if (!entries) - return false; - return entries->nonblocking_refresh; -} - bool menu_entries_needs_refresh(void) { menu_entries_t *entries = menu_entries_get_ptr(); - if (menu_entries_get_nonblocking_refresh()) + + if (!entries || entries->nonblocking_refresh) return false; - if (!entries) - return false; - return entries->need_refresh; + if (entries->need_refresh) + return true; + return false; } -void menu_entries_set_nonblocking_refresh(void) +void menu_entries_set_refresh(bool nonblocking) { menu_entries_t *entries = menu_entries_get_ptr(); if (entries) - entries->nonblocking_refresh = true; + { + if (nonblocking) + entries->nonblocking_refresh = true; + else + entries->need_refresh = true; + } } -void menu_entries_unset_nonblocking_refresh(void) +void menu_entries_unset_refresh(bool nonblocking) { menu_entries_t *entries = menu_entries_get_ptr(); if (entries) - entries->nonblocking_refresh = false; -} - -void menu_entries_set_refresh(void) -{ - menu_entries_t *entries = menu_entries_get_ptr(); - if (entries) - entries->need_refresh = true; -} - -void menu_entries_unset_refresh(void) -{ - menu_entries_t *entries = menu_entries_get_ptr(); - if (entries) - entries->need_refresh = false; + { + if (nonblocking) + entries->nonblocking_refresh = false; + else + entries->need_refresh = false; + } } diff --git a/menu/menu_entries.h b/menu/menu_entries.h index 6e272045aa..bf66b12d8f 100644 --- a/menu/menu_entries.h +++ b/menu/menu_entries.h @@ -58,13 +58,9 @@ menu_entries_t *menu_entries_get_ptr(void); bool menu_entries_needs_refresh(void); -void menu_entries_set_refresh(void); +void menu_entries_set_refresh(bool nonblocking); -void menu_entries_unset_refresh(void); - -void menu_entries_set_nonblocking_refresh(void); - -void menu_entries_unset_nonblocking_refresh(void); +void menu_entries_unset_refresh(bool nonblocking); #ifdef __cplusplus } diff --git a/menu/menu_entry.c b/menu/menu_entry.c index b9093e7663..5ac1ab1a39 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -412,7 +412,7 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) if (cbs && cbs->action_refresh) { ret = cbs->action_refresh(menu_list->selection_buf, menu_list->menu_stack); - menu_entries_unset_refresh(); + menu_entries_unset_refresh(false); } break; diff --git a/menu/menu_list.c b/menu/menu_list.c index 04895cf84a..24ef5fc660 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -180,7 +180,7 @@ void menu_list_flush_stack(menu_list_t *list, if (!list) return; - menu_entries_set_refresh(); + menu_entries_set_refresh(false); menu_list_get_last(list->menu_stack, &path, &label, &type, &entry_idx); @@ -205,7 +205,7 @@ void menu_list_pop_stack(menu_list_t *list) menu_driver_list_cache(MENU_LIST_PLAIN, 0); menu_list_pop(list->menu_stack, &nav->selection_ptr); - menu_entries_set_refresh(); + menu_entries_set_refresh(false); } void menu_list_pop_stack_by_needle(menu_list_t *list, @@ -221,7 +221,7 @@ void menu_list_pop_stack_by_needle(menu_list_t *list, if (!list) return; - menu_entries_set_refresh(); + menu_entries_set_refresh(false); menu_list_get_last(list->menu_stack, &path, &label, &type, &entry_idx); needle_hash = menu_hash_calculate(needle); label_hash = menu_hash_calculate(label); diff --git a/menu/menu_shader.c b/menu/menu_shader.c index 047874104c..5f7b1e2aee 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -174,7 +174,7 @@ void menu_shader_manager_set_preset(struct video_shader *shader, } config_file_free(conf); - menu_entries_set_refresh(); + menu_entries_set_refresh(false); #endif } diff --git a/retroarch.c b/retroarch.c index f6afcc735b..94fa0989ff 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1388,7 +1388,7 @@ void rarch_main_set_state(unsigned cmd) system->frame_time_last = 0; } - menu_entries_set_refresh(); + menu_entries_set_refresh(false); menu_driver_set_alive(); #endif #ifdef HAVE_OVERLAY From e8a290bd7b3b11ec6ebc563ff59bb6ccab47e7ea Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 20:54:56 +0200 Subject: [PATCH 329/822] (menu.c) Cleanups --- menu/menu.c | 47 ++++++++++++++--------------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index d456a864be..f7a88997a1 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -180,15 +180,6 @@ void menu_common_load_content(bool persist, enum rarch_core_type type) menu_common_push_content_settings(); } - -static int menu_init_entries(menu_entries_t *entries) -{ - if (!(entries->menu_list = (menu_list_t*)menu_list_new())) - return -1; - - return 0; -} - /** * menu_init: * @data : Menu context handle. @@ -201,20 +192,23 @@ void *menu_init(const void *data) { menu_handle_t *menu = NULL; menu_display_t *disp = NULL; + menu_entries_t *entries = NULL; menu_ctx_driver_t *menu_ctx = (menu_ctx_driver_t*)data; global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); - + if (!menu_ctx) return NULL; if (!(menu = (menu_handle_t*)menu_ctx->init())) return NULL; + entries = &menu->entries; + strlcpy(settings->menu.driver, menu_ctx->ident, sizeof(settings->menu.driver)); - if (menu_init_entries(&menu->entries) != 0) + if (!(entries->menu_list = (menu_list_t*)menu_list_new())) goto error; global->core_info.current = (core_info_t*)calloc(1, sizeof(core_info_t)); @@ -270,25 +264,6 @@ error: return NULL; } - -/** - * menu_free_list: - * @menu : Menu handle. - * - * Frees menu lists. - **/ -static void menu_free_list(menu_entries_t *entries) -{ - if (!entries) - return; - - menu_setting_free(entries->list_settings); - entries->list_settings = NULL; - - menu_list_free(entries->menu_list); - entries->menu_list = NULL; -} - /** * menu_free: * @menu : Menu handle. @@ -299,11 +274,10 @@ void menu_free(menu_handle_t *menu) { global_t *global = global_get_ptr(); menu_display_t *disp = menu_display_get_ptr(); - + menu_entries_t *entries = menu ? &menu->entries : NULL; if (!menu || !disp) return; - if (menu->playlist) content_playlist_free(menu->playlist); menu->playlist = NULL; @@ -318,7 +292,14 @@ void menu_free(menu_handle_t *menu) menu_display_free(menu); - menu_free_list(&menu->entries); + if (entries) + { + menu_setting_free(entries->list_settings); + entries->list_settings = NULL; + + menu_list_free(entries->menu_list); + entries->menu_list = NULL; + } event_command(EVENT_CMD_HISTORY_DEINIT); From 8a42deb189404d77322fe2574eead976126c75b3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 20:56:12 +0200 Subject: [PATCH 330/822] Cleanups - call menu_free from menu_init in case of an error --- menu/menu.c | 115 ++++++++++++++++++++++++---------------------------- 1 file changed, 54 insertions(+), 61 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index f7a88997a1..078ca5f5c5 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -180,6 +180,57 @@ void menu_common_load_content(bool persist, enum rarch_core_type type) menu_common_push_content_settings(); } +/** + * menu_free: + * @menu : Menu handle. + * + * Frees a menu handle + **/ +void menu_free(menu_handle_t *menu) +{ + global_t *global = global_get_ptr(); + menu_display_t *disp = menu_display_get_ptr(); + menu_entries_t *entries = menu ? &menu->entries : NULL; + if (!menu || !disp) + return; + + if (menu->playlist) + content_playlist_free(menu->playlist); + menu->playlist = NULL; + + menu_shader_free(menu); + + menu_driver_free(menu); + +#ifdef HAVE_DYNAMIC + libretro_free_system_info(&global->menu.info); +#endif + + menu_display_free(menu); + + if (entries) + { + menu_setting_free(entries->list_settings); + entries->list_settings = NULL; + + menu_list_free(entries->menu_list); + entries->menu_list = NULL; + } + + event_command(EVENT_CMD_HISTORY_DEINIT); + + if (global->core_info.list) + core_info_list_free(global->core_info.list); + + if (global->core_info.current) + free(global->core_info.current); + global->core_info.current = NULL; + + menu_driver_unset_alive(); + + free(menu); +} + /** * menu_init: * @data : Menu context handle. @@ -249,68 +300,10 @@ void *menu_init(const void *data) menu_driver_set_alive(); return menu; + error: - if (menu->entries.menu_list) - menu_list_free(menu->entries.menu_list); - menu->entries.menu_list = NULL; - if (global->core_info.current) - free(global->core_info.current); - global->core_info.current = NULL; - if (menu->shader) - free(menu->shader); - menu->shader = NULL; - if (menu) - free(menu); + menu_free(menu); + return NULL; } -/** - * menu_free: - * @menu : Menu handle. - * - * Frees a menu handle - **/ -void menu_free(menu_handle_t *menu) -{ - global_t *global = global_get_ptr(); - menu_display_t *disp = menu_display_get_ptr(); - menu_entries_t *entries = menu ? &menu->entries : NULL; - if (!menu || !disp) - return; - - if (menu->playlist) - content_playlist_free(menu->playlist); - menu->playlist = NULL; - - menu_shader_free(menu); - - menu_driver_free(menu); - -#ifdef HAVE_DYNAMIC - libretro_free_system_info(&global->menu.info); -#endif - - menu_display_free(menu); - - if (entries) - { - menu_setting_free(entries->list_settings); - entries->list_settings = NULL; - - menu_list_free(entries->menu_list); - entries->menu_list = NULL; - } - - event_command(EVENT_CMD_HISTORY_DEINIT); - - if (global->core_info.list) - core_info_list_free(global->core_info.list); - - if (global->core_info.current) - free(global->core_info.current); - global->core_info.current = NULL; - - menu_driver_unset_alive(); - - free(menu); -} From a3cedc05d7a251692f08dd0385ee24880e820a0b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 21:19:29 +0200 Subject: [PATCH 331/822] Cleanups --- menu/drivers/glui.c | 4 +-- menu/drivers/xmb.c | 3 +-- menu/menu.c | 15 ++--------- menu/menu_displaylist.c | 6 ++--- menu/menu_entries.c | 60 +++++++++++++++++++++++++++++++++++++---- menu/menu_entries.h | 10 ++++++- menu/menu_list.c | 8 ------ menu/menu_navigation.c | 7 ----- menu/menu_navigation.h | 2 -- menu/menu_setting.c | 9 ------- 10 files changed, 72 insertions(+), 52 deletions(-) diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 9ee6c4ccb3..541e88e8d3 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -344,7 +344,7 @@ static void glui_render_menu_list(glui_handle_t *glui, uint64_t *frame_count = video_driver_get_frame_count(); size_t end = menu_entries_get_end(); menu_display_t *disp = menu_display_get_ptr(); - menu_entries_t *entries = menu_entries_get_ptr(); + menu_navigation_t *nav = menu_navigation_get_ptr(); if (!menu_display_update_pending()) return; @@ -365,7 +365,7 @@ static void glui_render_menu_list(glui_handle_t *glui, menu_entries_get(i, &entry); - entry_selected = entries->navigation.selection_ptr == i; + entry_selected = nav->selection_ptr == i; glui_render_label_value(glui, y, width, *frame_count / 40, entry_selected ? hover_color : normal_color, entry_selected, diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index c85a9dba49..704e13ac69 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -260,8 +260,7 @@ static size_t xmb_list_get_size(void *data, menu_list_type_t type) { size_t list_size = 0; menu_handle_t *menu = (menu_handle_t*)data; - menu_entries_t *entries = menu ? &menu->entries : NULL; - menu_list_t *menu_list = entries ? entries->menu_list : NULL; + menu_list_t *menu_list = menu_list_get_ptr(); xmb_handle_t *xmb = menu ? (xmb_handle_t*)menu->userdata : NULL; switch (type) diff --git a/menu/menu.c b/menu/menu.c index 078ca5f5c5..49c1e26491 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -190,7 +190,6 @@ void menu_free(menu_handle_t *menu) { global_t *global = global_get_ptr(); menu_display_t *disp = menu_display_get_ptr(); - menu_entries_t *entries = menu ? &menu->entries : NULL; if (!menu || !disp) return; @@ -208,14 +207,7 @@ void menu_free(menu_handle_t *menu) menu_display_free(menu); - if (entries) - { - menu_setting_free(entries->list_settings); - entries->list_settings = NULL; - - menu_list_free(entries->menu_list); - entries->menu_list = NULL; - } + menu_entries_free(); event_command(EVENT_CMD_HISTORY_DEINIT); @@ -243,7 +235,6 @@ void *menu_init(const void *data) { menu_handle_t *menu = NULL; menu_display_t *disp = NULL; - menu_entries_t *entries = NULL; menu_ctx_driver_t *menu_ctx = (menu_ctx_driver_t*)data; global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); @@ -254,12 +245,10 @@ void *menu_init(const void *data) if (!(menu = (menu_handle_t*)menu_ctx->init())) return NULL; - entries = &menu->entries; - strlcpy(settings->menu.driver, menu_ctx->ident, sizeof(settings->menu.driver)); - if (!(entries->menu_list = (menu_list_t*)menu_list_new())) + if (!menu_entries_init(menu)) goto error; global->core_info.current = (core_info_t*)calloc(1, sizeof(core_info_t)); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5f1166bc3a..8f27db7e0d 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2824,9 +2824,9 @@ int menu_displaylist_push(file_list_t *list, file_list_t *menu_list) uint32_t hash_label = 0; unsigned type = 0; menu_displaylist_info_t info = {0}; - menu_entries_t *entries = menu_entries_get_ptr(); + menu_list_t *_menu_list = menu_list_get_ptr(); - menu_list_get_last_stack(entries->menu_list, &path, &label, &type, NULL); + menu_list_get_last_stack(_menu_list, &path, &label, &type, NULL); info.list = list; info.menu_list = menu_list; @@ -2849,7 +2849,7 @@ int menu_displaylist_push(file_list_t *list, file_list_t *menu_list) } cbs = (menu_file_list_cbs_t*) - menu_list_get_last_stack_actiondata(entries->menu_list); + menu_list_get_last_stack_actiondata(_menu_list); if (cbs->action_deferred_push) return cbs->action_deferred_push(&info); diff --git a/menu/menu_entries.c b/menu/menu_entries.c index bb1b7947af..8df3ad7b1e 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -16,17 +16,13 @@ #include "menu.h" #include "menu_hash.h" #include "menu_display.h" -#include "menu_entry.h" -#include "menu_navigation.h" -#include "menu_setting.h" -#include "menu_input.h" #include "menu_entries.h" #include "../general.h" #include "../system.h" -menu_entries_t *menu_entries_get_ptr(void) +static menu_entries_t *menu_entries_get_ptr(void) { menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) @@ -35,6 +31,31 @@ menu_entries_t *menu_entries_get_ptr(void) return &menu->entries; } +rarch_setting_t *menu_setting_get_ptr(void) +{ + menu_entries_t *entries = menu_entries_get_ptr(); + + if (!entries) + return NULL; + return entries->list_settings; +} + +menu_list_t *menu_list_get_ptr(void) +{ + menu_entries_t *entries = menu_entries_get_ptr(); + if (!entries) + return NULL; + return entries->menu_list; +} + +menu_navigation_t *menu_navigation_get_ptr(void) +{ + menu_entries_t *entries = menu_entries_get_ptr(); + if (!entries) + return NULL; + return &entries->navigation; +} + /* Sets the starting index of the menu entry list. */ void menu_entries_set_start(size_t i) { @@ -198,3 +219,32 @@ void menu_entries_unset_refresh(bool nonblocking) entries->need_refresh = false; } } + +bool menu_entries_init(void *data) +{ + menu_entries_t *entries = NULL; + menu_handle_t *menu = (menu_handle_t*)data; + if (!menu) + return false; + + entries = &menu->entries; + + if (!(entries->menu_list = (menu_list_t*)menu_list_new())) + return false; + + return true; +} + +void menu_entries_free(void) +{ + menu_entries_t *entries = menu_entries_get_ptr(); + + if (!entries) + return; + + menu_setting_free(entries->list_settings); + entries->list_settings = NULL; + + menu_list_free(entries->menu_list); + entries->menu_list = NULL; +} diff --git a/menu/menu_entries.h b/menu/menu_entries.h index bf66b12d8f..9a241047a2 100644 --- a/menu/menu_entries.h +++ b/menu/menu_entries.h @@ -19,6 +19,8 @@ #include #include +#include + #include "menu_navigation.h" #include "menu_list.h" #include "menu_setting.h" @@ -54,7 +56,9 @@ bool menu_entries_show_back(void); int menu_entries_get_core_title(char *title_msg, size_t title_msg_len); -menu_entries_t *menu_entries_get_ptr(void); +rarch_setting_t *menu_setting_get_ptr(void); + +menu_navigation_t *menu_navigation_get_ptr(void); bool menu_entries_needs_refresh(void); @@ -62,6 +66,10 @@ void menu_entries_set_refresh(bool nonblocking); void menu_entries_unset_refresh(bool nonblocking); +bool menu_entries_init(void *data); + +void menu_entries_free(void); + #ifdef __cplusplus } #endif diff --git a/menu/menu_list.c b/menu/menu_list.c index 24ef5fc660..344a7708d3 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -48,14 +48,6 @@ static void menu_driver_list_insert(file_list_t *list, const char *path, menu_cbs_init(list, path, label, type, idx); } -menu_list_t *menu_list_get_ptr(void) -{ - menu_entries_t *entries = menu_entries_get_ptr(); - if (!entries) - return NULL; - return entries->menu_list; -} - size_t menu_list_get_size(menu_list_t *list) { if (!list) diff --git a/menu/menu_navigation.c b/menu/menu_navigation.c index 69f6da0255..b3ff0dbafa 100644 --- a/menu/menu_navigation.c +++ b/menu/menu_navigation.c @@ -85,13 +85,6 @@ static void menu_driver_navigation_ascend_alphabet(size_t *ptr_out) driver->navigation_ascend_alphabet(ptr_out); } -menu_navigation_t *menu_navigation_get_ptr(void) -{ - menu_entries_t *entries = menu_entries_get_ptr(); - if (!entries) - return NULL; - return &entries->navigation; -} /** * menu_navigation_clear: * @pending_push : pending push ? diff --git a/menu/menu_navigation.h b/menu/menu_navigation.h index af5a103992..a60497eaa5 100644 --- a/menu/menu_navigation.h +++ b/menu/menu_navigation.h @@ -37,8 +37,6 @@ typedef struct menu_navigation size_t selection_ptr; } menu_navigation_t; -menu_navigation_t *menu_navigation_get_ptr(void); - /** * menu_navigation_clear: * @pending_push : pending push ? diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 7a61041b98..406473bd93 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -225,15 +225,6 @@ int menu_action_handle_setting(rarch_setting_t *setting, return -1; } -static rarch_setting_t *menu_setting_get_ptr(void) -{ - menu_entries_t *entries = menu_entries_get_ptr(); - - if (!entries) - return NULL; - return entries->list_settings; -} - /** * menu_setting_find: * @settings : pointer to settings From 65bc2f3a8207e3ec83938dda113f5c956ec0f6b2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 21 Aug 2015 21:34:56 +0200 Subject: [PATCH 332/822] Reimplement MENU_ACTION_REFRESH - do this step at menu_iterate_render --- menu/menu_entry.c | 11 ----------- menu/menu_input.h | 1 - menu/menu_iterate.c | 9 ++++++++- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 5ac1ab1a39..38d208840c 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -358,9 +358,6 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) menu_list_t *menu_list = menu_list_get_ptr(); menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); - if (menu_entries_needs_refresh()) - action = MENU_ACTION_REFRESH; - switch (action) { case MENU_ACTION_UP: @@ -408,14 +405,6 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) ret = cbs->action_select(entry->path, entry->label, entry->type, i); break; - case MENU_ACTION_REFRESH: - if (cbs && cbs->action_refresh) - { - ret = cbs->action_refresh(menu_list->selection_buf, menu_list->menu_stack); - menu_entries_unset_refresh(false); - } - break; - case MENU_ACTION_MESSAGE: { menu_display_t *disp = menu_display_get_ptr(); diff --git a/menu/menu_input.h b/menu/menu_input.h index 45ceb7f90d..00b4e2deb7 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -51,7 +51,6 @@ typedef enum menu_action MENU_ACTION_SEARCH, MENU_ACTION_SCAN, MENU_ACTION_CANCEL, - MENU_ACTION_REFRESH, MENU_ACTION_INFO, MENU_ACTION_SELECT, MENU_ACTION_START, diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index f75b93507d..478735b2d5 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -548,11 +548,18 @@ end: int menu_iterate_render(void) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); + menu_handle_t *menu = menu_driver_get_ptr(); + menu_list_t *menu_list = menu_list_get_ptr(); if (!menu) return -1; + if (menu_entries_needs_refresh()) + { + menu_displaylist_push(menu_list->selection_buf, menu_list->menu_stack); + menu_entries_unset_refresh(false); + } + if (menu->state.fb_is_dirty != menu->state.do_messagebox) menu->state.fb_is_dirty = true; From 5b188066f1d72c7923658cd4234c81ce66721166 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 00:08:25 +0200 Subject: [PATCH 333/822] Revert "Reimplement MENU_ACTION_REFRESH - do this step at menu_iterate_render" This reverts commit 65bc2f3a8207e3ec83938dda113f5c956ec0f6b2. --- menu/menu_entry.c | 11 +++++++++++ menu/menu_input.h | 1 + menu/menu_iterate.c | 9 +-------- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 38d208840c..5ac1ab1a39 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -358,6 +358,9 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) menu_list_t *menu_list = menu_list_get_ptr(); menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); + if (menu_entries_needs_refresh()) + action = MENU_ACTION_REFRESH; + switch (action) { case MENU_ACTION_UP: @@ -405,6 +408,14 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) ret = cbs->action_select(entry->path, entry->label, entry->type, i); break; + case MENU_ACTION_REFRESH: + if (cbs && cbs->action_refresh) + { + ret = cbs->action_refresh(menu_list->selection_buf, menu_list->menu_stack); + menu_entries_unset_refresh(false); + } + break; + case MENU_ACTION_MESSAGE: { menu_display_t *disp = menu_display_get_ptr(); diff --git a/menu/menu_input.h b/menu/menu_input.h index 00b4e2deb7..45ceb7f90d 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -51,6 +51,7 @@ typedef enum menu_action MENU_ACTION_SEARCH, MENU_ACTION_SCAN, MENU_ACTION_CANCEL, + MENU_ACTION_REFRESH, MENU_ACTION_INFO, MENU_ACTION_SELECT, MENU_ACTION_START, diff --git a/menu/menu_iterate.c b/menu/menu_iterate.c index 478735b2d5..f75b93507d 100644 --- a/menu/menu_iterate.c +++ b/menu/menu_iterate.c @@ -548,18 +548,11 @@ end: int menu_iterate_render(void) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); + menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return -1; - if (menu_entries_needs_refresh()) - { - menu_displaylist_push(menu_list->selection_buf, menu_list->menu_stack); - menu_entries_unset_refresh(false); - } - if (menu->state.fb_is_dirty != menu->state.do_messagebox) menu->state.fb_is_dirty = true; From 4ae1e9a53d844e91b12edf41887a298719839724 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 01:42:26 +0200 Subject: [PATCH 334/822] Cleanups --- menu/menu.c | 4 ++-- menu/menu_driver.c | 34 ++++++++++++++++++++-------------- menu/menu_driver.h | 4 ---- retroarch.c | 2 -- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index 49c1e26491..9735eaf79a 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -218,7 +218,7 @@ void menu_free(menu_handle_t *menu) free(global->core_info.current); global->core_info.current = NULL; - menu_driver_unset_alive(); + menu_driver_toggle(false); free(menu); } @@ -286,7 +286,7 @@ void *menu_init(const void *data) rarch_assert(disp->msg_queue = msg_queue_new(8)); - menu_driver_set_alive(); + menu_driver_toggle(true); return menu; diff --git a/menu/menu_driver.c b/menu/menu_driver.c index bb982b312a..3ef215ed66 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -337,12 +337,32 @@ void menu_driver_free(menu_handle_t *menu) driver->free(menu); } +bool menu_driver_alive(void) +{ + return menu_alive; +} + +static void menu_driver_set_alive(void) +{ + menu_alive = true; +} + +static void menu_driver_unset_alive(void) +{ + menu_alive = false; +} + void menu_driver_toggle(bool latch) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); if (driver->toggle) driver->toggle(latch); + + if (latch) + menu_driver_set_alive(); + else + menu_driver_unset_alive(); } bool menu_driver_load_image(void *data, menu_image_type_t type) @@ -355,20 +375,6 @@ bool menu_driver_load_image(void *data, menu_image_type_t type) return false; } -bool menu_driver_alive(void) -{ - return menu_alive; -} - -void menu_driver_set_alive(void) -{ - menu_alive = true; -} - -void menu_driver_unset_alive(void) -{ - menu_alive = false; -} bool menu_environment_cb(menu_environ_cb_t type, void *data) { diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 64781fcbca..53b6399c21 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -226,10 +226,6 @@ void menu_driver_context_destroy(void); bool menu_driver_alive(void); -void menu_driver_set_alive(void); - -void menu_driver_unset_alive(void); - size_t menu_driver_list_get_selection(void); bool menu_environment_cb(menu_environ_cb_t type, void *data); diff --git a/retroarch.c b/retroarch.c index 94fa0989ff..478e28a1f8 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1389,7 +1389,6 @@ void rarch_main_set_state(unsigned cmd) } menu_entries_set_refresh(false); - menu_driver_set_alive(); #endif #ifdef HAVE_OVERLAY if (settings->input.overlay_hide_in_menu) @@ -1428,7 +1427,6 @@ void rarch_main_set_state(unsigned cmd) case RARCH_ACTION_STATE_MENU_RUNNING_FINISHED: #ifdef HAVE_MENU menu_driver_toggle(false); - menu_driver_unset_alive(); driver_set_nonblock_state(driver->nonblock_state); From a9418050a8f711724d7d0247894368d20c342411 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 01:43:13 +0200 Subject: [PATCH 335/822] Cleanups --- menu/menu_driver.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 3ef215ed66..51982f59ec 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -342,16 +342,6 @@ bool menu_driver_alive(void) return menu_alive; } -static void menu_driver_set_alive(void) -{ - menu_alive = true; -} - -static void menu_driver_unset_alive(void) -{ - menu_alive = false; -} - void menu_driver_toggle(bool latch) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); @@ -359,10 +349,7 @@ void menu_driver_toggle(bool latch) if (driver->toggle) driver->toggle(latch); - if (latch) - menu_driver_set_alive(); - else - menu_driver_unset_alive(); + menu_alive = latch; } bool menu_driver_load_image(void *data, menu_image_type_t type) From 8454c712f21a797baec5580890c9e28f774fc473 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 01:47:29 +0200 Subject: [PATCH 336/822] Cleanups --- menu/menu.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/menu/menu.c b/menu/menu.c index 9735eaf79a..2ffc1dc6bf 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -218,8 +218,6 @@ void menu_free(menu_handle_t *menu) free(global->core_info.current); global->core_info.current = NULL; - menu_driver_toggle(false); - free(menu); } @@ -286,8 +284,6 @@ void *menu_init(const void *data) rarch_assert(disp->msg_queue = msg_queue_new(8)); - menu_driver_toggle(true); - return menu; error: From 1a2a88cb8a7e9313de8dc55a68adad3374897363 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 01:55:45 +0200 Subject: [PATCH 337/822] Perform refresh and perform original action immediately afterwards --- menu/menu_entry.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 5ac1ab1a39..bd09b26875 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -359,7 +359,13 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); if (menu_entries_needs_refresh()) - action = MENU_ACTION_REFRESH; + { + if (cbs && cbs->action_refresh) + { + cbs->action_refresh(menu_list->selection_buf, menu_list->menu_stack); + menu_entries_unset_refresh(false); + } + } switch (action) { @@ -407,15 +413,6 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) if (cbs && cbs->action_select) ret = cbs->action_select(entry->path, entry->label, entry->type, i); break; - - case MENU_ACTION_REFRESH: - if (cbs && cbs->action_refresh) - { - ret = cbs->action_refresh(menu_list->selection_buf, menu_list->menu_stack); - menu_entries_unset_refresh(false); - } - break; - case MENU_ACTION_MESSAGE: { menu_display_t *disp = menu_display_get_ptr(); From 1d1cda5cde5a6bbd328914a1f7acfa9c7783879e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 01:56:15 +0200 Subject: [PATCH 338/822] Remove enum --- menu/menu_input.h | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/menu_input.h b/menu/menu_input.h index 45ceb7f90d..00b4e2deb7 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -51,7 +51,6 @@ typedef enum menu_action MENU_ACTION_SEARCH, MENU_ACTION_SCAN, MENU_ACTION_CANCEL, - MENU_ACTION_REFRESH, MENU_ACTION_INFO, MENU_ACTION_SELECT, MENU_ACTION_START, From 7e2a25f232c6009ba545c4a7aed82b3d109eb7b8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 02:07:10 +0200 Subject: [PATCH 339/822] Do refresh at end of menu_entry_action --- menu/menu_entry.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index bd09b26875..6f9f1022c5 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -358,15 +358,6 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) menu_list_t *menu_list = menu_list_get_ptr(); menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); - if (menu_entries_needs_refresh()) - { - if (cbs && cbs->action_refresh) - { - cbs->action_refresh(menu_list->selection_buf, menu_list->menu_stack); - menu_entries_unset_refresh(false); - } - } - switch (action) { case MENU_ACTION_UP: @@ -434,5 +425,14 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) break; } + if (menu_entries_needs_refresh()) + { + if (cbs && cbs->action_refresh) + { + cbs->action_refresh(menu_list->selection_buf, menu_list->menu_stack); + menu_entries_unset_refresh(false); + } + } + return ret; } From bfc969faac280f6684d45636ebcc04de4e0152de Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 03:40:07 +0200 Subject: [PATCH 340/822] Cleanup --- menu/menu_driver.c | 12 ------------ menu/menu_driver.h | 2 -- menu/menu_list.c | 9 ++++++++- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 51982f59ec..301a7b8853 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -224,18 +224,6 @@ void menu_driver_list_free(file_list_t *list, size_t idx, size_t list_size) file_list_free_actiondata(list, idx); } -void menu_driver_list_clear(file_list_t *list) -{ - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - unsigned i; - - if (driver->list_clear) - driver->list_clear(list); - - for (i = 0; i < list->size; i++) - file_list_free_actiondata(list, i); -} - void menu_driver_context_destroy(void) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 53b6399c21..dd7c3760bf 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -212,8 +212,6 @@ void menu_driver_list_cache(menu_list_type_t type, unsigned action); void menu_driver_list_free(file_list_t *list, size_t i, size_t list_size); -void menu_driver_list_clear(file_list_t *list); - size_t menu_driver_list_get_size(menu_list_type_t type); void menu_driver_list_set_selection(file_list_t *list); diff --git a/menu/menu_list.c b/menu/menu_list.c index 344a7708d3..e2a2e41df4 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -239,7 +239,14 @@ void menu_list_pop(file_list_t *list, size_t *directory_ptr) void menu_list_clear(file_list_t *list) { - menu_driver_list_clear(list); + unsigned i; + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->list_clear) + driver->list_clear(list); + + for (i = 0; i < list->size; i++) + file_list_free_actiondata(list, i); if (list) file_list_clear(list); From 9d137e2b1fbf1511c4130ad13805f516f4f280cd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 03:43:55 +0200 Subject: [PATCH 341/822] Cleanups pt. 2 --- menu/menu_list.c | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/menu/menu_list.c b/menu/menu_list.c index e2a2e41df4..3880acb2f3 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -25,29 +25,6 @@ #include "menu_list.h" #include "menu_navigation.h" -static void menu_driver_list_insert(file_list_t *list, const char *path, - const char *label, unsigned type, size_t idx) -{ - menu_file_list_cbs_t *cbs = NULL; - const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); - - if (!list) - return; - - if (driver->list_insert) - driver->list_insert(list, path, label, idx); - - file_list_free_actiondata(list, idx); - cbs = (menu_file_list_cbs_t*) - calloc(1, sizeof(menu_file_list_cbs_t)); - - if (!cbs) - return; - - file_list_set_actiondata(list, idx, cbs); - menu_cbs_init(list, path, label, type, idx); -} - size_t menu_list_get_size(menu_list_t *list) { if (!list) @@ -257,11 +234,28 @@ void menu_list_push(file_list_t *list, unsigned type, size_t directory_ptr, size_t entry_idx) { + size_t idx; + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + menu_file_list_cbs_t *cbs = NULL; if (!list || !label) return; file_list_push(list, path, label, type, directory_ptr, entry_idx); - menu_driver_list_insert(list, path, label, type, list->size - 1); + + idx = list->size - 1; + + if (driver->list_insert) + driver->list_insert(list, path, label, idx); + + file_list_free_actiondata(list, idx); + cbs = (menu_file_list_cbs_t*) + calloc(1, sizeof(menu_file_list_cbs_t)); + + if (!cbs) + return; + + file_list_set_actiondata(list, idx, cbs); + menu_cbs_init(list, path, label, type, idx); } void menu_list_set_alt_at_offset(file_list_t *list, size_t idx, From b56eb3d1bc9ba6c553aa626bcc254b7837aab8ea Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 18:21:00 +0200 Subject: [PATCH 342/822] rarch_main_data_msg_queue_push - in some cases, the data runloop thread is not yet set up when this is called, so make sure it is setup at the end of this call if so --- runloop_data.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/runloop_data.c b/runloop_data.c index e5e5dac232..a5bcc9eb69 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -181,6 +181,9 @@ static void data_thread_loop(void *data) #ifdef HAVE_THREADS static void rarch_main_data_thread_init(void) { + if (!g_data_runloop.thread_inited) + return; + g_data_runloop.lock = slock_new(); g_data_runloop.cond_lock = slock_new(); g_data_runloop.cond = scond_new(); @@ -311,6 +314,9 @@ void rarch_main_data_msg_queue_push(unsigned type, { char new_msg[PATH_MAX_LENGTH]; msg_queue_t *queue = NULL; + settings_t *settings = config_get_ptr(); + + (void)settings; switch(type) { @@ -349,6 +355,14 @@ void rarch_main_data_msg_queue_push(unsigned type, if (flush) msg_queue_clear(queue); msg_queue_push(queue, new_msg, prio, duration); + +#ifdef HAVE_THREADS + if (settings->menu.threaded_data_runloop_enable) + { + if (!g_data_runloop.thread_inited) + rarch_main_data_thread_init(); + } +#endif } void data_runloop_osd_msg(const char *msg, size_t len) From 0b33c8f2b17bd7b3de344af0e302714fb808bf8f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 18:26:14 +0200 Subject: [PATCH 343/822] (runloop_data.c) Use fill_pathname_join_delim --- runloop_data.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/runloop_data.c b/runloop_data.c index a5bcc9eb69..1647cd0ae8 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -17,6 +17,7 @@ #ifdef HAVE_THREADS #include #endif +#include #include "general.h" @@ -324,27 +325,27 @@ void rarch_main_data_msg_queue_push(unsigned type, break; case DATA_TYPE_FILE: queue = rarch_main_data_nbio_get_msg_queue_ptr(); - snprintf(new_msg, sizeof(new_msg), "%s|%s", msg, msg2); + fill_pathname_join_delim(new_msg, msg, msg2, '|', sizeof(new_msg)); break; case DATA_TYPE_IMAGE: queue = rarch_main_data_nbio_image_get_msg_queue_ptr(); - snprintf(new_msg, sizeof(new_msg), "%s|%s", msg, msg2); + fill_pathname_join_delim(new_msg, msg, msg2, '|', sizeof(new_msg)); break; #ifdef HAVE_NETWORKING case DATA_TYPE_HTTP: queue = rarch_main_data_http_get_msg_queue_ptr(); - snprintf(new_msg, sizeof(new_msg), "%s|%s", msg, msg2); + fill_pathname_join_delim(new_msg, msg, msg2, '|', sizeof(new_msg)); break; #endif #ifdef HAVE_OVERLAY case DATA_TYPE_OVERLAY: - snprintf(new_msg, sizeof(new_msg), "%s|%s", msg, msg2); + fill_pathname_join_delim(new_msg, msg, msg2, '|', sizeof(new_msg)); break; #endif #ifdef HAVE_LIBRETRODB case DATA_TYPE_DB: queue = rarch_main_data_db_get_msg_queue_ptr(); - snprintf(new_msg, sizeof(new_msg), "%s|%s", msg, msg2); + fill_pathname_join_delim(new_msg, msg, msg2, '|', sizeof(new_msg)); break; #endif } From be9f2b870a8568bf0ca9574286c55e532eb00394 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 18:38:17 +0200 Subject: [PATCH 344/822] Compile in memmap.c --- Makefile.common | 1 + camera/drivers/video4linux2.c | 2 +- libretro-common/include/memmap.h | 9 +++++++++ libretro-common/memmap/memmap.c | 13 +++++-------- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Makefile.common b/Makefile.common index a6fcc81d02..5d92b93a52 100644 --- a/Makefile.common +++ b/Makefile.common @@ -132,6 +132,7 @@ OBJ += frontend/frontend.o \ libretro-common/file/dir_list.o \ libretro-common/string/string_list.o \ libretro-common/string/stdstring.o \ + libretro-common/memmap/memmap.o \ dir_list_special.o \ file_ops.o \ libretro-common/file/nbio/nbio_stdio.o \ diff --git a/camera/drivers/video4linux2.c b/camera/drivers/video4linux2.c index 1f103f7a1e..aa8a837d75 100644 --- a/camera/drivers/video4linux2.c +++ b/camera/drivers/video4linux2.c @@ -27,12 +27,12 @@ #include #include #include -#include #include #include #include +#include #include #include diff --git a/libretro-common/include/memmap.h b/libretro-common/include/memmap.h index 492ace6636..2dea42bb66 100644 --- a/libretro-common/include/memmap.h +++ b/libretro-common/include/memmap.h @@ -34,6 +34,15 @@ #include #endif +#if !defined(HAVE_MMAN) +#define PROT_EXEC 0x04 +#define MAP_FAILED 0 +#define PROT_READ 0 +#define PROT_WRITE 0 +#define MAP_PRIVATE 0 +#define MAP_ANONYMOUS 0 +#endif + #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON #endif diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index cfc4974459..10f2bb0098 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -125,13 +125,6 @@ int mprotect(void *addr, size_t len, int prot) } #elif !defined(HAVE_MMAN) -#define PROT_EXEC 0x04 -#define MAP_FAILED 0 -#define PROT_READ 0 -#define PROT_WRITE 0 -#define MAP_PRIVATE 0 -#define MAP_ANONYMOUS 0 - void* mmap(void *desired_addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off) { return malloc(len); @@ -162,7 +155,11 @@ int memsync(void *start, void *end) __clear_cache(start, end); return 0; #elif defined(HAVE_MMAN) - return msync(start, len, MS_SYNC | MS_CACHE_ONLY | MS_INVALIDATE_ICACHE); + return msync(start, len, MS_SYNC | MS_INVALIDATE +#ifdef __QNX__ + MS_CACHE_ONLY +#endif + ); #else return 0; #endif From 0673475610c71eb66242dcd22603f31a33c8e473 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 18:38:51 +0200 Subject: [PATCH 345/822] (Griffin )Add memmap.c to Griffin too --- griffin/griffin.c | 1 + 1 file changed, 1 insertion(+) diff --git a/griffin/griffin.c b/griffin/griffin.c index 08cb6a547f..65a7607552 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -63,6 +63,7 @@ COMPATIBILITY ============================================================ */ #include "../compat/compat.c" #include "../libretro-common/compat/compat_fnmatch.c" +#include "../libretro-common/memmap/memmap.c" /*============================================================ CONFIG FILE From 39240d25e38663a770d1f01adcba90caaba60b6a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 18:40:07 +0200 Subject: [PATCH 346/822] (dylib.c) Explicitly cast dlerror to char* --- libretro-common/dynamic/dylib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/dynamic/dylib.c b/libretro-common/dynamic/dylib.c index 4db0fea84f..db0e4223c8 100644 --- a/libretro-common/dynamic/dylib.c +++ b/libretro-common/dynamic/dylib.c @@ -86,7 +86,7 @@ char *dylib_error(void) return last_dyn_error; return NULL; #else - return dlerror(); + return (char*)dlerror(); #endif } From e70ccd2a6d909f3b2fea68a8db2651a3988b1bab Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 18:41:00 +0200 Subject: [PATCH 347/822] (dylib.c) Cleanup --- libretro-common/dynamic/dylib.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/libretro-common/dynamic/dylib.c b/libretro-common/dynamic/dylib.c index db0e4223c8..360a19bf29 100644 --- a/libretro-common/dynamic/dylib.c +++ b/libretro-common/dynamic/dylib.c @@ -95,8 +95,6 @@ function_t dylib_proc(dylib_t lib, const char *proc) function_t sym; void *ptr_sym = NULL; - (void)ptr_sym; - #ifdef _WIN32 sym = (function_t)GetProcAddress(lib ? (HMODULE)lib : GetModuleHandle(NULL), proc); From e6fa079cd91b5f7ecb69a5e93dc297fa3f4254c2 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 22 Aug 2015 18:43:54 +0200 Subject: [PATCH 348/822] (iOS) memmap.c - Fix implicit declarations --- libretro-common/memmap/memmap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index 10f2bb0098..c7f930cf7c 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -143,6 +143,10 @@ int mprotect(void *addr, size_t len, int prot) #endif +#if defined(__MACH__) && defined(__arm__) +#include +#endif + int memsync(void *start, void *end) { size_t len = (char*)end - (char*)start; From f7a54797788b34462df5ddbc697434a8f672e9c3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 18:45:01 +0200 Subject: [PATCH 349/822] memmap.c - Cleanup --- libretro-common/memmap/memmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index c7f930cf7c..2e67640f09 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -150,7 +150,6 @@ int mprotect(void *addr, size_t len, int prot) int memsync(void *start, void *end) { size_t len = (char*)end - (char*)start; - (void)len; #if defined(__MACH__) && defined(__arm__) sys_dcache_flush(start ,len); sys_icache_invalidate(start, len); @@ -165,6 +164,7 @@ int memsync(void *start, void *end) #endif ); #else + (void)len; return 0; #endif } From aa35f56252129ada122904b9b3b0607edd55802a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 18:47:04 +0200 Subject: [PATCH 350/822] memmap.c - another warning fix --- libretro-common/memmap/memmap.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index 2e67640f09..3ea7092485 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -155,6 +155,7 @@ int memsync(void *start, void *end) sys_icache_invalidate(start, len); return 0; #elif defined(__arm__) && !defined(__QNX__) + (void)len; __clear_cache(start, end); return 0; #elif defined(HAVE_MMAN) From 9b83d4d80b1d5bad899683a85d511b252bbe5a19 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 19:17:06 +0200 Subject: [PATCH 351/822] Don't use rarch_sleep anymore in threaded data runloop --- runloop_data.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/runloop_data.c b/runloop_data.c index 1647cd0ae8..d09f855268 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -168,8 +168,8 @@ static void data_thread_loop(void *data) data_runloop_iterate(true); - if (!rarch_main_data_active()) - rarch_sleep(10); + while (!rarch_main_data_active()) + scond_wait(runloop->cond, runloop->lock); slock_unlock(runloop->lock); @@ -362,6 +362,12 @@ void rarch_main_data_msg_queue_push(unsigned type, { if (!g_data_runloop.thread_inited) rarch_main_data_thread_init(); + else + { + slock_lock(g_data_runloop.cond_lock); + scond_signal(g_data_runloop.cond); + slock_unlock(g_data_runloop.cond_lock); + } } #endif } From 2196e734d3b58fe759e77ef6f375cef63e29ca6e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 20:18:08 +0200 Subject: [PATCH 352/822] Revert "Simplify menu_cbs_init_bind_refresh" This reverts commit d405d34c0e4700df688d7aeaa19d9910983ee7ca. --- menu/cbs/menu_cbs_refresh.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/menu/cbs/menu_cbs_refresh.c b/menu/cbs/menu_cbs_refresh.c index 5c9e296e20..09ed3436a4 100644 --- a/menu/cbs/menu_cbs_refresh.c +++ b/menu/cbs/menu_cbs_refresh.c @@ -31,7 +31,16 @@ int menu_cbs_init_bind_refresh(menu_file_list_cbs_t *cbs, if (!cbs) return -1; - cbs->action_refresh = action_refresh_default; + switch (label_hash) + { + case MENU_VALUE_MAIN_MENU: + cbs->action_refresh = NULL; + break; + default: + cbs->action_refresh = action_refresh_default; + break; + } + return -1; } From b826305e3c7411ba741ef35c07362b56bde5b796 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 20:24:19 +0200 Subject: [PATCH 353/822] (Menu) Before we do cbs->refresh, reset 'cbs' - could have become invalid --- menu/menu_entry.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/menu/menu_entry.c b/menu/menu_entry.c index 6f9f1022c5..a3980d35be 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -425,6 +425,8 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) break; } + cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); + if (menu_entries_needs_refresh()) { if (cbs && cbs->action_refresh) From 7c7006498772920901449ebe0957d26bb367f7ff Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 21:00:03 +0200 Subject: [PATCH 354/822] (libretro-test) Fix build --- cores/libretro-test/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/libretro-test/Makefile b/cores/libretro-test/Makefile index 36cd6c3b18..1a06c12b63 100644 --- a/cores/libretro-test/Makefile +++ b/cores/libretro-test/Makefile @@ -42,7 +42,7 @@ else ifneq (,$(findstring qnx,$(platform))) TARGET := $(TARGET_NAME)_libretro_qnx.so fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined -else ifeq ($(platform), emscripten) +else ifneq ($(platform), emscripten) TARGET := $(TARGET_NAME)_libretro_emscripten.bc fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined From 45dd2c2bdeb83f002192a490ea61c3760c269f25 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 21:03:28 +0200 Subject: [PATCH 355/822] Fix Makefile --- cores/libretro-test/Makefile | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/cores/libretro-test/Makefile b/cores/libretro-test/Makefile index 1a06c12b63..7d7142f5b8 100644 --- a/cores/libretro-test/Makefile +++ b/cores/libretro-test/Makefile @@ -1,8 +1,3 @@ - -ifneq ($(EMSCRIPTEN),) - platform = emscripten -endif - ifeq ($(platform),) platform = unix ifeq ($(shell uname -a),) @@ -16,6 +11,21 @@ else ifneq ($(findstring win,$(shell uname -a)),) endif endif +# system platform +system_platform = unix +ifeq ($(shell uname -a),) + EXE_EXT = .exe + system_platform = win +else ifneq ($(findstring Darwin,$(shell uname -a)),) + system_platform = osx + arch = intel +ifeq ($(shell uname -p),powerpc) + arch = ppc +endif +else ifneq ($(findstring MINGW,$(shell uname -a)),) + system_platform = win +endif + TARGET_NAME := test LIBM = -lm @@ -42,7 +52,7 @@ else ifneq (,$(findstring qnx,$(platform))) TARGET := $(TARGET_NAME)_libretro_qnx.so fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined -else ifneq ($(platform), emscripten) +else ifeq ($(platform), emscripten) TARGET := $(TARGET_NAME)_libretro_emscripten.bc fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined From 3c7844faa64ff5438a4f0b2e3d1cecd549664aa6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 22 Aug 2015 23:22:50 +0200 Subject: [PATCH 356/822] Stop audio if we go to Cocoa UI --- ui/drivers/ui_cocoatouch.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 07ca4687f5..377538cb3f 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -359,12 +359,17 @@ enum - (void)toggleUI { + settings_t *settings = config_get_ptr(); + if (ui_companion_is_on_foreground()) { [self showGameView]; } else { + if (settings->menu.pause_libretro) + ui_companion_cocoatouch_event_command(EVENT_CMD_AUDIO_STOP); + [self showPauseMenu:self]; } } From f32ae7633fa79dc900dc5aedb2eecf61fb5b5bb1 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sat, 22 Aug 2015 23:28:17 +0200 Subject: [PATCH 357/822] (iOS) Buildfix --- ui/drivers/ui_cocoatouch.m | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 377538cb3f..c5ff01b361 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -357,6 +357,13 @@ enum [self.window setRootViewController:self]; } +static void ui_companion_cocoatouch_event_command(void *data, + enum event_command cmd) +{ + (void)data; + event_command(cmd); +} + - (void)toggleUI { settings_t *settings = config_get_ptr(); @@ -368,7 +375,7 @@ enum else { if (settings->menu.pause_libretro) - ui_companion_cocoatouch_event_command(EVENT_CMD_AUDIO_STOP); + ui_companion_cocoatouch_event_command(NULL, EVENT_CMD_AUDIO_STOP); [self showPauseMenu:self]; } @@ -495,13 +502,6 @@ static void *ui_companion_cocoatouch_init(void) return handle; } -static void ui_companion_cocoatouch_event_command(void *data, - enum event_command cmd) -{ - (void)data; - event_command(cmd); -} - static void ui_companion_cocoatouch_notify_list_pushed(void *data, file_list_t *list, file_list_t *menu_list) { From 298b29e615f3da240178db27f8ec4eefbe4f70f6 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 23 Aug 2015 00:36:47 +0200 Subject: [PATCH 358/822] (OSX) Add second configuration scheme that allows you to build without Cg --- apple/RetroArch copy-Info.plist | 49 +++++ apple/RetroArch.xcodeproj/project.pbxproj | 227 +++++++++++++++++++++- 2 files changed, 272 insertions(+), 4 deletions(-) create mode 100644 apple/RetroArch copy-Info.plist diff --git a/apple/RetroArch copy-Info.plist b/apple/RetroArch copy-Info.plist new file mode 100644 index 0000000000..8d5965839e --- /dev/null +++ b/apple/RetroArch copy-Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + * + + CFBundleTypeName + All Files + CFBundleTypeRole + Viewer + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + retroarch + CFBundleIdentifier + libretro.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.2.2 + CFBundleSignature + ???? + CFBundleVersion + 1.2.2 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHighResolutionCapable + + NSHumanReadableCopyright + Copyright © 2015 RetroArch. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + RApplication + + diff --git a/apple/RetroArch.xcodeproj/project.pbxproj b/apple/RetroArch.xcodeproj/project.pbxproj index d68077cf16..e64dc8dd2d 100644 --- a/apple/RetroArch.xcodeproj/project.pbxproj +++ b/apple/RetroArch.xcodeproj/project.pbxproj @@ -8,6 +8,20 @@ /* Begin PBXBuildFile section */ 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; + 500845251B89300700CE6073 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 500845261B89300700CE6073 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; + 500845271B89300700CE6073 /* retroarch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 84DD5EB71A89F1C7007336C1 /* retroarch.icns */; }; + 500845291B89300700CE6073 /* griffin_objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */; }; + 5008452A1B89300700CE6073 /* griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = 840222FB1A889EE2009AB261 /* griffin.c */; }; + 5008452C1B89300700CE6073 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5061C8A31AE47E510080AE14 /* libz.dylib */; }; + 5008452D1B89300700CE6073 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EA81A89E4BE007336C1 /* CoreAudio.framework */; }; + 5008452E1B89300700CE6073 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EB21A89E6C0007336C1 /* AudioUnit.framework */; }; + 5008452F1B89300700CE6073 /* Cg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EB01A89E664007336C1 /* Cg.framework */; settings = {ATTRIBUTES = (Required, ); }; }; + 500845301B89300700CE6073 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EAC1A89E5B4007336C1 /* OpenGL.framework */; }; + 500845311B89300700CE6073 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EA61A89E406007336C1 /* CoreLocation.framework */; }; + 500845321B89300700CE6073 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97324FDCFA39411CA2CEA /* AppKit.framework */; }; + 500845331B89300700CE6073 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5E9E1A88E45B007336C1 /* CoreVideo.framework */; }; + 500845341B89300700CE6073 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EB41A89E737007336C1 /* IOKit.framework */; }; 5061C8A41AE47E510080AE14 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5061C8A31AE47E510080AE14 /* libz.dylib */; }; 509F0C9D1AA23AFC00619ECC /* griffin_objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */; }; 840222FC1A889EE2009AB261 /* griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = 840222FB1A889EE2009AB261 /* griffin.c */; }; @@ -18,12 +32,29 @@ 84DD5EAD1A89E5B4007336C1 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EAC1A89E5B4007336C1 /* OpenGL.framework */; }; 84DD5EB31A89E6C0007336C1 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EB21A89E6C0007336C1 /* AudioUnit.framework */; }; 84DD5EB51A89E737007336C1 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EB41A89E737007336C1 /* IOKit.framework */; }; - 84DD5EB61A89E76C007336C1 /* Cg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EB01A89E664007336C1 /* Cg.framework */; }; 84DD5EB81A89F1C7007336C1 /* retroarch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 84DD5EB71A89F1C7007336C1 /* retroarch.icns */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ + 500845351B89300700CE6073 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 500845361B89300700CE6073 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 841CBB831A8A33B60066E9F1 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -48,6 +79,8 @@ 089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = OSX/en.lproj/InfoPlist.strings; sourceTree = ""; }; 1DDD58150DA1D0A300B32029 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = OSX/en.lproj/MainMenu.xib; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 5008453A1B89300700CE6073 /* RetroArch copy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RetroArch copy.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5008453B1B89300700CE6073 /* RetroArch copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "RetroArch copy-Info.plist"; path = "/Users/squarepusher/libretro-super/retroarch/apple/RetroArch copy-Info.plist"; sourceTree = ""; }; 5061C8A31AE47E510080AE14 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = griffin_objc.m; path = ../griffin/griffin_objc.m; sourceTree = ""; }; 840222FB1A889EE2009AB261 /* griffin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = griffin.c; path = ../griffin/griffin.c; sourceTree = SOURCE_ROOT; }; @@ -64,6 +97,22 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 5008452B1B89300700CE6073 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5008452C1B89300700CE6073 /* libz.dylib in Frameworks */, + 5008452D1B89300700CE6073 /* CoreAudio.framework in Frameworks */, + 5008452E1B89300700CE6073 /* AudioUnit.framework in Frameworks */, + 5008452F1B89300700CE6073 /* Cg.framework in Frameworks */, + 500845301B89300700CE6073 /* OpenGL.framework in Frameworks */, + 500845311B89300700CE6073 /* CoreLocation.framework in Frameworks */, + 500845321B89300700CE6073 /* AppKit.framework in Frameworks */, + 500845331B89300700CE6073 /* CoreVideo.framework in Frameworks */, + 500845341B89300700CE6073 /* IOKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D11072E0486CEB800E47090 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -71,7 +120,6 @@ 5061C8A41AE47E510080AE14 /* libz.dylib in Frameworks */, 84DD5EA91A89E4BE007336C1 /* CoreAudio.framework in Frameworks */, 84DD5EB31A89E6C0007336C1 /* AudioUnit.framework in Frameworks */, - 84DD5EB61A89E76C007336C1 /* Cg.framework in Frameworks */, 84DD5EAD1A89E5B4007336C1 /* OpenGL.framework in Frameworks */, 84DD5EA71A89E406007336C1 /* CoreLocation.framework in Frameworks */, 84DD5EA31A89E2AA007336C1 /* AppKit.framework in Frameworks */, @@ -116,6 +164,7 @@ isa = PBXGroup; children = ( 8D1107320486CEB800E47090 /* RetroArch.app */, + 5008453A1B89300700CE6073 /* RetroArch copy.app */, ); name = Products; sourceTree = ""; @@ -130,6 +179,7 @@ 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, + 5008453B1B89300700CE6073 /* RetroArch copy-Info.plist */, ); indentWidth = 3; name = RetroArch; @@ -184,6 +234,26 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 500845231B89300700CE6073 /* RetroArch Cg */ = { + isa = PBXNativeTarget; + buildConfigurationList = 500845371B89300700CE6073 /* Build configuration list for PBXNativeTarget "RetroArch Cg" */; + buildPhases = ( + 500845241B89300700CE6073 /* Resources */, + 500845281B89300700CE6073 /* Sources */, + 5008452B1B89300700CE6073 /* Frameworks */, + 500845351B89300700CE6073 /* CopyFiles */, + 500845361B89300700CE6073 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "RetroArch Cg"; + productInstallPath = "$(HOME)/Applications"; + productName = RetroArch; + productReference = 5008453A1B89300700CE6073 /* RetroArch copy.app */; + productType = "com.apple.product-type.application"; + }; 8D1107260486CEB800E47090 /* RetroArch */ = { isa = PBXNativeTarget; buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "RetroArch" */; @@ -223,12 +293,23 @@ projectDirPath = ""; projectRoot = ""; targets = ( + 500845231B89300700CE6073 /* RetroArch Cg */, 8D1107260486CEB800E47090 /* RetroArch */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 500845241B89300700CE6073 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 500845251B89300700CE6073 /* InfoPlist.strings in Resources */, + 500845261B89300700CE6073 /* MainMenu.xib in Resources */, + 500845271B89300700CE6073 /* retroarch.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D1107290486CEB800E47090 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -242,6 +323,15 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 500845281B89300700CE6073 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 500845291B89300700CE6073 /* griffin_objc.m in Sources */, + 5008452A1B89300700CE6073 /* griffin.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8D11072C0486CEB800E47090 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -273,6 +363,128 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 500845381B89300700CE6073 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(LOCAL_LIBRARY_DIR)/Frameworks", + ); + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/..", + "$(SRCROOT)/../gfx/inc", + "$(SRCROOT)/../libretro-common/include", + ); + INFOPLIST_FILE = "RetroArch copy-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET = 10.5; + OTHER_CFLAGS = ( + "-DHAVE_GRIFFIN", + "-DHAVE_IMAGEVIEWER", + "-DHAVE_CORETEXT", + "-DHAVE_IOHIDMANAGER", + "-DHAVE_CORELOCATION", + "-DHAVE_RGUI", + "-DHAVE_MENU", + "-DOSX", + "-DHAVE_OPENGL", + "-DHAVE_FBO", + "-DHAVE_GLSL", + "-DINLINE=inline", + "-D__LIBRETRO__", + "-DWANT_RPNG", + "-DHAVE_COREAUDIO", + "-DHAVE_DYNAMIC", + "-DHAVE_OVERLAY", + "-DHAVE_ZLIB", + "-DHAVE_RPNG", + "-DHAVE_COCOA", + "-DHAVE_MAIN", + "-DSINC_LOWER_QUALITY", + "-DHAVE_NETPLAY", + "-DHAVE_NETWORKING", + "-DRARCH_INTERNAL", + "-DHAVE_THREADS", + "-DHAVE_DYLIB", + "-DHAVE_CG", + "-DHAVE_7ZIP", + "-DHAVE_GLUI", + "-DHAVE_HID", + "-DHAVE_XMB", + "-DHAVE_LIBRETRODB", + ); + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES; + PRODUCT_NAME = "RetroArch copy"; + }; + name = Debug; + }; + 500845391B89300700CE6073 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(LOCAL_LIBRARY_DIR)/Frameworks", + ); + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/..", + "$(SRCROOT)/../gfx/inc", + "$(SRCROOT)/../libretro-common/include", + ); + INFOPLIST_FILE = "RetroArch copy-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET = 10.5; + OTHER_CFLAGS = ( + "-DHAVE_GRIFFIN", + "-DHAVE_IMAGEVIEWER", + "-DHAVE_IOHIDMANAGER", + "-DHAVE_CORETEXT", + "-DHAVE_CORELOCATION", + "-DHAVE_RGUI", + "-DHAVE_MENU", + "-DOSX", + "-DHAVE_OPENGL", + "-DHAVE_FBO", + "-DHAVE_GLSL", + "-DINLINE=inline", + "-D__LIBRETRO__", + "-DWANT_RPNG", + "-DHAVE_COREAUDIO", + "-DHAVE_DYNAMIC", + "-DHAVE_OVERLAY", + "-DHAVE_ZLIB", + "-DHAVE_RPNG", + "-DHAVE_COCOA", + "-DHAVE_MAIN", + "-DSINC_LOWER_QUALITY", + "-DHAVE_NETPLAY", + "-DHAVE_NETWORKING", + "-DRARCH_INTERNAL", + "-DHAVE_THREADS", + "-DHAVE_DYLIB", + "-DHAVE_CG", + "-DHAVE_7ZIP", + "-DHAVE_GLUI", + "-DHAVE_HID", + "-DHAVE_XMB", + "-DHAVE_LIBRETRODB", + ); + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES; + PRODUCT_NAME = "RetroArch copy"; + }; + name = Release; + }; C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -323,7 +535,6 @@ "-DRARCH_INTERNAL", "-DHAVE_THREADS", "-DHAVE_DYLIB", - "-DHAVE_CG", "-DHAVE_7ZIP", "-DHAVE_GLUI", "-DHAVE_HID", @@ -383,7 +594,6 @@ "-DRARCH_INTERNAL", "-DHAVE_THREADS", "-DHAVE_DYLIB", - "-DHAVE_CG", "-DHAVE_7ZIP", "-DHAVE_GLUI", "-DHAVE_HID", @@ -424,6 +634,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 500845371B89300700CE6073 /* Build configuration list for PBXNativeTarget "RetroArch Cg" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 500845381B89300700CE6073 /* Debug */, + 500845391B89300700CE6073 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "RetroArch" */ = { isa = XCConfigurationList; buildConfigurations = ( From 68fa0bcbe737b09ef8edb6f0e6e84086ce272874 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 23 Aug 2015 07:08:47 +0200 Subject: [PATCH 359/822] (memmap.c) Some Win32 build fixes --- libretro-common/memmap/memmap.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index 3ea7092485..4b413c1449 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -20,21 +20,35 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include #include #ifdef _WIN32 #define MAP_SHARED 0x01 + +#ifndef MAP_PRIVATE #define MAP_PRIVATE 0x02 +#endif + +#ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS 0x20 +#endif + #define MAP_ANON MAP_ANONYMOUS #define MAP_FAILED ((void *) -1) #define PROT_READ 0x1 #define PROT_WRITE 0x2 + /* This flag is only available in WinXP+ */ #ifdef FILE_MAP_EXECUTE +#ifndef PROT_EXEC #define PROT_EXEC 0x4 +#endif #else +#ifndef PROT_EXEC #define PROT_EXEC 0x0 +#endif + #define FILE_MAP_EXECUTE 0 #endif @@ -46,7 +60,7 @@ # define DWORD_LO(x) (x) #endif -void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset) +void *mmap(void *start, size_t length, int prot, int flags, int fd, size_t offset) { uint32_t flProtect, dwDesiredAccess; off_t end; From f87425ef9a029cbfed528eab40ff05e1b0c49788 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 23 Aug 2015 09:20:24 +0200 Subject: [PATCH 360/822] Re-enable UI Companion Start on Boot again --- frontend/frontend.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 1b02a5479c..5c17f59110 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -334,13 +334,11 @@ int rarch_main(int argc, char *argv[], void *data) if (driver) driver->ui_companion = (ui_companion_driver_t*)ui_companion_init_first(); -#if 0 if (driver->ui_companion && driver->ui_companion->toggle) { if (settings->ui.companion_start_on_boot) driver->ui_companion->toggle(driver->ui_companion_data); } -#endif #ifndef HAVE_MAIN do{ From 8a8042bb5ec4e8fb6f46c4c2b5525e6052c5c00e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 23 Aug 2015 21:05:10 +0200 Subject: [PATCH 361/822] Reimplement audio start/stop (courtesy aliaspider) --- ui/drivers/ui_cocoatouch.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index c5ff01b361..7df915dac5 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -345,11 +345,13 @@ enum [[UIApplication sharedApplication] setIdleTimerDisabled:true]; [self.window setRootViewController:[CocoaView get]]; + ui_companion_cocoatouch_event_command(NULL, EVENT_CMD_AUDIO_START); rarch_disable_ui(); } - (IBAction)showPauseMenu:(id)sender { + ui_companion_cocoatouch_event_command(NULL, EVENT_CMD_AUDIO_STOP); rarch_enable_ui(); [[UIApplication sharedApplication] setStatusBarHidden:false withAnimation:UIStatusBarAnimationNone]; @@ -374,8 +376,6 @@ static void ui_companion_cocoatouch_event_command(void *data, } else { - if (settings->menu.pause_libretro) - ui_companion_cocoatouch_event_command(NULL, EVENT_CMD_AUDIO_STOP); [self showPauseMenu:self]; } From 67afbea0f5dc33a677810c2a94379555374fd487 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 24 Aug 2015 01:32:35 +0200 Subject: [PATCH 362/822] (iOS) Flesh out logger code --- libretro-common/include/retro_log.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libretro-common/include/retro_log.h b/libretro-common/include/retro_log.h index 82f45ea657..2e93c4d770 100644 --- a/libretro-common/include/retro_log.h +++ b/libretro-common/include/retro_log.h @@ -81,6 +81,11 @@ bool rarch_main_verbosity(void); #define RARCH_LOG_VERBOSE (true) #endif +#if TARGET_OS_IPHONE && defined(RARCH_INTERNAL) && !TARGET_IPHONE_SIMULATOR +static aslclient asl_client; +static int asl_inited = 0; +#endif + #if defined(RARCH_CONSOLE) && defined(HAVE_LOGGER) && defined(RARCH_INTERNAL) #include #else @@ -92,11 +97,16 @@ static INLINE void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap) #if TARGET_IPHONE_SIMULATOR vprintf(fmt, ap); #else + if (!inited) + { + asl_client = asl_open("RetroArch", "com.apple.console", ASL_OPT_STDERR | ASL_OPT_NO_DELAY); + inited = 1; + } aslmsg msg = asl_new(ASL_TYPE_MSG); asl_set(msg, ASL_KEY_READ_UID, "-1"); if (tag) - asl_log(NULL, msg, ASL_LEVEL_NOTICE, "%s", tag); - asl_vlog(NULL, msg, ASL_LEVEL_NOTICE, fmt, ap); + asl_log(asl_client, msg, ASL_LEVEL_NOTICE, tag); + asl_vlog(asl_client, msg, ASL_LEVEL_NOTICE, fmt, ap); asl_free(msg); #endif #elif defined(_XBOX1) From 05740fc55a39f91e265fb12a534dae0955835441 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Mon, 24 Aug 2015 01:35:52 +0200 Subject: [PATCH 363/822] (iOS) Buildfix --- libretro-common/include/retro_log.h | 6 +++--- ui/drivers/ui_cocoatouch.m | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/libretro-common/include/retro_log.h b/libretro-common/include/retro_log.h index 2e93c4d770..c4e7a9a5d9 100644 --- a/libretro-common/include/retro_log.h +++ b/libretro-common/include/retro_log.h @@ -97,15 +97,15 @@ static INLINE void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap) #if TARGET_IPHONE_SIMULATOR vprintf(fmt, ap); #else - if (!inited) + if (!asl_inited) { asl_client = asl_open("RetroArch", "com.apple.console", ASL_OPT_STDERR | ASL_OPT_NO_DELAY); - inited = 1; + asl_inited = 1; } aslmsg msg = asl_new(ASL_TYPE_MSG); asl_set(msg, ASL_KEY_READ_UID, "-1"); if (tag) - asl_log(asl_client, msg, ASL_LEVEL_NOTICE, tag); + asl_log(asl_client, msg, ASL_LEVEL_NOTICE, "%s", tag); asl_vlog(asl_client, msg, ASL_LEVEL_NOTICE, fmt, ap); asl_free(msg); #endif diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 7df915dac5..5f57a0b3f0 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -368,15 +368,12 @@ static void ui_companion_cocoatouch_event_command(void *data, - (void)toggleUI { - settings_t *settings = config_get_ptr(); - if (ui_companion_is_on_foreground()) { [self showGameView]; } else { - [self showPauseMenu:self]; } } From 3f0cae8e957b199347baa4e96594f21d2a1d823b Mon Sep 17 00:00:00 2001 From: Alcaro Date: Wed, 26 Aug 2015 17:52:27 +0200 Subject: [PATCH 365/822] Fix compilation on native Windows cmd. --- Makefile.win | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Makefile.win b/Makefile.win index 5497ebbc37..1bd58f06d8 100644 --- a/Makefile.win +++ b/Makefile.win @@ -148,24 +148,25 @@ $(TARGET): $(RARCH_OBJ) $(Q)$(CXX) -o $@ $(RARCH_OBJ) $(LIBS) $(LDFLAGS) $(LDCXXFLAGS) $(OBJDIR)/%.o: %.c - @mkdir -p $(dir $@) + #those mkdir shenanigans are really ugly, but I can't find any better solution + @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo CC $<),) $(Q)$(CC) $(CFLAGS) $(DEFINES) -MMD -c -o $@ $< .FORCE: $(OBJDIR)/git_version.o: git_version.c .FORCE - @mkdir -p $(dir $@) + @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo CC $<),) $(Q)$(CC) $(CFLAGS) $(DEFINES) -MMD -c -o $@ $< -$(OBJDIR)/%.o: %.cpp - @mkdir -p $(dir $@) +$(OBJDIR)/%.o: %.cpp | $(dir $@) + @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo CXX $<),) $(Q)$(CXX) $(CXXFLAGS) $(DEFINES) -MMD -c -o $@ $< $(OBJDIR)/%.o: %.rc $(HEADERS) - @mkdir -p $(dir $@) + @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo WINDRES $<),) $(Q)$(WINDRES) -o $@ $< From dcf5958d3fc66eb45c75d2821bca0add1183f18e Mon Sep 17 00:00:00 2001 From: Alcaro Date: Wed, 26 Aug 2015 17:57:49 +0200 Subject: [PATCH 366/822] Whoops, apparently comments don't work that way... --- Makefile.win | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.win b/Makefile.win index 1bd58f06d8..5c511de0c2 100644 --- a/Makefile.win +++ b/Makefile.win @@ -147,8 +147,8 @@ $(TARGET): $(RARCH_OBJ) @$(if $(Q), $(shell echo echo LD $@),) $(Q)$(CXX) -o $@ $(RARCH_OBJ) $(LIBS) $(LDFLAGS) $(LDCXXFLAGS) +#those mkdir shenanigans are really ugly, but I can't find any better solution $(OBJDIR)/%.o: %.c - #those mkdir shenanigans are really ugly, but I can't find any better solution @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo CC $<),) $(Q)$(CC) $(CFLAGS) $(DEFINES) -MMD -c -o $@ $< From 2c397e21020879859693f141b27fd6721e483fd0 Mon Sep 17 00:00:00 2001 From: Alcaro Date: Wed, 26 Aug 2015 17:59:39 +0200 Subject: [PATCH 367/822] Shove out those echos. --- Makefile.win | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile.win b/Makefile.win index 5c511de0c2..07566c33f3 100644 --- a/Makefile.win +++ b/Makefile.win @@ -149,24 +149,24 @@ $(TARGET): $(RARCH_OBJ) #those mkdir shenanigans are really ugly, but I can't find any better solution $(OBJDIR)/%.o: %.c - @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . + @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) @$(if $(Q), $(shell echo echo CC $<),) $(Q)$(CC) $(CFLAGS) $(DEFINES) -MMD -c -o $@ $< .FORCE: $(OBJDIR)/git_version.o: git_version.c .FORCE - @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . + @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) @$(if $(Q), $(shell echo echo CC $<),) $(Q)$(CC) $(CFLAGS) $(DEFINES) -MMD -c -o $@ $< $(OBJDIR)/%.o: %.cpp | $(dir $@) - @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . + @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) @$(if $(Q), $(shell echo echo CXX $<),) $(Q)$(CXX) $(CXXFLAGS) $(DEFINES) -MMD -c -o $@ $< $(OBJDIR)/%.o: %.rc $(HEADERS) - @mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . + @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) @$(if $(Q), $(shell echo echo WINDRES $<),) $(Q)$(WINDRES) -o $@ $< From b238421e28bad1822ac2bdbc7db9e22acc13bcbb Mon Sep 17 00:00:00 2001 From: Alcaro Date: Wed, 26 Aug 2015 18:06:20 +0200 Subject: [PATCH 368/822] Put back the echoes because 'Error 1 (ignored)' is slightly more annoying than an extra dot. --- Makefile.win | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile.win b/Makefile.win index 07566c33f3..159226542f 100644 --- a/Makefile.win +++ b/Makefile.win @@ -149,24 +149,24 @@ $(TARGET): $(RARCH_OBJ) #those mkdir shenanigans are really ugly, but I can't find any better solution $(OBJDIR)/%.o: %.c - @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) + @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo CC $<),) $(Q)$(CC) $(CFLAGS) $(DEFINES) -MMD -c -o $@ $< .FORCE: $(OBJDIR)/git_version.o: git_version.c .FORCE - @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) + @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo CC $<),) $(Q)$(CC) $(CFLAGS) $(DEFINES) -MMD -c -o $@ $< $(OBJDIR)/%.o: %.cpp | $(dir $@) - @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) + @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo CXX $<),) $(Q)$(CXX) $(CXXFLAGS) $(DEFINES) -MMD -c -o $@ $< $(OBJDIR)/%.o: %.rc $(HEADERS) - @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) + @-mkdir -p $(dir $@) || mkdir $(subst /,\,$(dir $@)) || echo . @$(if $(Q), $(shell echo echo WINDRES $<),) $(Q)$(WINDRES) -o $@ $< From 1b6f8c9366aebcd31a16ee130e573c7df1bb75da Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 09:14:29 +0200 Subject: [PATCH 369/822] Remove AUTHORS - we can lookup contributors on Github and authors are credited in copyright header files --- AUTHORS | 73 --------------------------------------------------------- 1 file changed, 73 deletions(-) delete mode 100644 AUTHORS diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 680d9af831..0000000000 --- a/AUTHORS +++ /dev/null @@ -1,73 +0,0 @@ -Hans-Kristian Arntzen - - - Main code - - Initial Gamecube/Wii libogc port - -Daniel De Matteis - - - Maintainer - - Main code - -Devin J. Pohly - - - Joypad axis support - -Chris Moeller - - - CoreAudio audio driver - -Tobias Jakobi - - - OMAP graphics driver - -Jason Fetters - - - Phoenix Java frontend - - Android port patches - - iOS port - -CatalystG - - - Blackberry 10/Playbook input driver - - Blackberry 10/Playbook patches - -David Reichelt - - - XBox 1 port - -tukuyomi - - - Cleanups in quickbuild - -Michael Lelli - - - Gamecube/Wii libogc port - - Raspberry Pi video driver - - Linux Raw keyboard input driver - - Android port patches - -Ali Bouhlel - - - PSP port - - Convoluted Cosine resampler - -Darren Alton - - - OpenPandora port - -Fabian Knopf - - - WGL multi-monitor support - - D3D9 overlay, multi-monitor and menu support - -Gražvydas Ignotas - - - ARM Linux patches - -Saggi Mizrahi - - - RetroLaunch utility - -Alfred Agrell - - - Rewritten savestate manager - -Jean-André Santoni - - - Lakka menu driver - -Morgane Alonso - - - Lakka menu driver (graphic design) - -Timo Strunk - - - 7zip support - -Higor Euripedes - - - SDL2 drivers - -Jay McCarthy - - - CoreText font driver - - (Apple) CFRunLoop improvements From 9960d88d32fe1317dc2ca58f544f1b67c580af64 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 09:15:59 +0200 Subject: [PATCH 370/822] Add signature for memcpy_neon --- mem/neon/memcpy-neon.S | 1 + 1 file changed, 1 insertion(+) diff --git a/mem/neon/memcpy-neon.S b/mem/neon/memcpy-neon.S index a26ace3a75..eb52ae28bb 100644 --- a/mem/neon/memcpy-neon.S +++ b/mem/neon/memcpy-neon.S @@ -11,6 +11,7 @@ .arm .fpu neon +@ void* memcpy(void *destination, const void *source, size_t num) .global memcpy_neon /* From 76fe1163c235931b2fd4eb033735f32e11f1a080 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 09:22:03 +0200 Subject: [PATCH 371/822] Update scond_wait_timeout --- libretro-common/rthreads/rthreads.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libretro-common/rthreads/rthreads.c b/libretro-common/rthreads/rthreads.c index f4d20fd61e..a3496b6051 100644 --- a/libretro-common/rthreads/rthreads.c +++ b/libretro-common/rthreads/rthreads.c @@ -383,6 +383,7 @@ bool scond_wait_timeout(scond_t *cond, slock_t *lock, int64_t timeout_us) return ret == WAIT_OBJECT_0; #else int ret; + int64_t seconds, remainder; struct timespec now = {0}; #ifdef __MACH__ @@ -413,11 +414,11 @@ bool scond_wait_timeout(scond_t *cond, slock_t *lock, int64_t timeout_us) clock_gettime(CLOCK_REALTIME, &now); #endif - now.tv_sec += timeout_us / 1000000; - now.tv_nsec += timeout_us * 1000; + seconds = timeout_us / INT64_C(1000000); + remainder = timeout_us % INT64_C(1000000); - now.tv_sec += now.tv_nsec / 1000000000; - now.tv_nsec = now.tv_nsec % 1000000000; + now.tv_sec += seconds; + now.tv_nsec += remainder * INT64_C(1000); ret = pthread_cond_timedwait(&cond->cond, &lock->lock, &now); return (ret == 0); From b6c34b362d2c814d92e87dbf47cf1006050395d3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 12:43:35 +0200 Subject: [PATCH 372/822] Refactor rarch_main_iterate --- runloop.c | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/runloop.c b/runloop.c index b1eb0d8e4c..bbdeb02e5e 100644 --- a/runloop.c +++ b/runloop.c @@ -992,6 +992,7 @@ int rarch_main_iterate(void) unsigned i; retro_input_t trigger_input; event_cmd_state_t cmd; + bool do_quit = false; int ret = 0; static retro_input_t last_input = 0; driver_t *driver = driver_get_ptr(); @@ -1023,7 +1024,7 @@ int rarch_main_iterate(void) rarch_main_cmd_get_state(driver, settings, &cmd, input, old_input, trigger_input); if (time_to_exit(driver, global, system, &cmd)) - goto quit; + do_quit = true; if (system->frame_time.callback) rarch_update_frame_time(driver, settings->slowmotion_ratio, system); @@ -1051,7 +1052,29 @@ int rarch_main_iterate(void) if (global->exec) { global->exec = false; - goto quit; + do_quit = true; + } + + if (do_quit) + { + /* Quits out of RetroArch main loop. + * On special case, loads dummy core + * instead of exiting RetroArch completely. + * Aborts core shutdown if invoked. + */ + if (global->core_shutdown_initiated + && settings->load_dummy_on_core_shutdown) + { + if (!event_command(EVENT_CMD_PREPARE_DUMMY)) + return -1; + + system->shutdown = false; + global->core_shutdown_initiated = false; + + return 0; + } + + return -1; } if (main_is_idle || do_state_checks(driver, settings, global, &cmd)) @@ -1124,24 +1147,4 @@ success: rarch_limit_frame_time(settings->fastforward_ratio); return ret; - -quit: - /* Quits out of RetroArch main loop. - * On special case, loads dummy core - * instead of exiting RetroArch completely. - * Aborts core shutdown if invoked. - */ - if (global->core_shutdown_initiated - && settings->load_dummy_on_core_shutdown) - { - if (!event_command(EVENT_CMD_PREPARE_DUMMY)) - return -1; - - system->shutdown = false; - global->core_shutdown_initiated = false; - - return 0; - } - - return -1; } From bcb54b2eec135ae9c318eb313f2a010b1dfa7aae Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 12:46:32 +0200 Subject: [PATCH 373/822] (rarch_main_iterate) Another refactor --- runloop.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/runloop.c b/runloop.c index bbdeb02e5e..e0aa431a35 100644 --- a/runloop.c +++ b/runloop.c @@ -993,7 +993,6 @@ int rarch_main_iterate(void) retro_input_t trigger_input; event_cmd_state_t cmd; bool do_quit = false; - int ret = 0; static retro_input_t last_input = 0; driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); @@ -1044,7 +1043,7 @@ int rarch_main_iterate(void) rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); if (!input && settings->menu.pause_libretro) - ret = 1; + return 1; goto success; } #endif @@ -1146,5 +1145,5 @@ success: if (settings->fastforward_ratio_throttle_enable) rarch_limit_frame_time(settings->fastforward_ratio); - return ret; + return 0; } From 3b9eca025ec97f76ce8c82730cb48d2fa0982957 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 12:48:35 +0200 Subject: [PATCH 374/822] rarch_main_iterate - another change --- runloop.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/runloop.c b/runloop.c index e0aa431a35..28051ee16a 100644 --- a/runloop.c +++ b/runloop.c @@ -1033,20 +1033,6 @@ int rarch_main_iterate(void) #ifdef HAVE_OVERLAY rarch_main_iterate_linefeed_overlay(driver, settings); #endif - -#ifdef HAVE_MENU - if (menu_driver_alive()) - { - menu_handle_t *menu = menu_driver_get_ptr(); - if (menu) - if (menu_iterate(true, menu_input_frame(input, trigger_input)) == -1) - rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); - - if (!input && settings->menu.pause_libretro) - return 1; - goto success; - } -#endif if (global->exec) { @@ -1075,6 +1061,20 @@ int rarch_main_iterate(void) return -1; } + +#ifdef HAVE_MENU + if (menu_driver_alive()) + { + menu_handle_t *menu = menu_driver_get_ptr(); + if (menu) + if (menu_iterate(true, menu_input_frame(input, trigger_input)) == -1) + rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); + + if (!input && settings->menu.pause_libretro) + return 1; + goto success; + } +#endif if (main_is_idle || do_state_checks(driver, settings, global, &cmd)) { From d45b9530782433e162692293b51397dee2ebd68f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 13:01:32 +0200 Subject: [PATCH 375/822] Integrate main_is_idle check inside do_state_checks --- runloop.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/runloop.c b/runloop.c index 28051ee16a..0e7895d887 100644 --- a/runloop.c +++ b/runloop.c @@ -518,6 +518,9 @@ static int do_pause_state_checks( static int do_state_checks(driver_t *driver, settings_t *settings, global_t *global, event_cmd_state_t *cmd) { + if (main_is_idle) + return 1; + if (cmd->screenshot_pressed) event_command(EVENT_CMD_TAKE_SCREENSHOT); @@ -1076,7 +1079,7 @@ int rarch_main_iterate(void) } #endif - if (main_is_idle || do_state_checks(driver, settings, global, &cmd)) + if (do_state_checks(driver, settings, global, &cmd)) { /* RetroArch has been paused */ driver->retro_ctx.poll_cb(); From 4b0ee4b9c2e78c4e8d8154732ba481c83658d3ca Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 13:13:14 +0200 Subject: [PATCH 376/822] Move rarch_sleep outside of rarch_main_iterate so that caller can implement the idle step itself --- frontend/drivers/platform_android.c | 3 +++ frontend/drivers/platform_emscripten.c | 2 ++ frontend/frontend.c | 3 +++ runloop.c | 4 +--- ui/drivers/ui_cocoa.m | 2 ++ ui/drivers/ui_cocoatouch.m | 2 ++ 6 files changed, 13 insertions(+), 3 deletions(-) diff --git a/frontend/drivers/platform_android.c b/frontend/drivers/platform_android.c index 1725ba7a46..d6768dbda1 100644 --- a/frontend/drivers/platform_android.c +++ b/frontend/drivers/platform_android.c @@ -249,6 +249,9 @@ static void android_app_entry(void *data) do { ret = rarch_main_iterate(); + + if (ret == 1) + rarch_sleep(10); rarch_main_data_iterate(); }while (ret != -1); diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index 274a08f108..22a00c1d2f 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -28,6 +28,8 @@ static void emscripten_mainloop(void) { int ret = rarch_main_iterate(); + if (ret == 1) + rarch_sleep(10); rarch_main_data_iterate(); if (ret != -1) return; diff --git a/frontend/frontend.c b/frontend/frontend.c index 5c17f59110..e85f64d1c8 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -343,6 +343,9 @@ int rarch_main(int argc, char *argv[], void *data) #ifndef HAVE_MAIN do{ ret = rarch_main_iterate(); + + if (ret == 1) + rarch_sleep(10); rarch_main_data_iterate(); }while(ret != -1); diff --git a/runloop.c b/runloop.c index 0e7895d887..63cf08ddcc 100644 --- a/runloop.c +++ b/runloop.c @@ -1081,10 +1081,8 @@ int rarch_main_iterate(void) if (do_state_checks(driver, settings, global, &cmd)) { - /* RetroArch has been paused */ + /* RetroArch has been paused. */ driver->retro_ctx.poll_cb(); - rarch_sleep(10); - return 1; } diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 24e3701342..bfa407752b 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -210,6 +210,8 @@ static void poll_iteration(void) { poll_iteration(); ret = rarch_main_iterate(); + if (ret == 1) + rarch_sleep(10); rarch_main_data_iterate(); while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, FALSE) == kCFRunLoopRunHandledSource); } diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 5f57a0b3f0..876d83a91a 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -65,6 +65,8 @@ static void rarch_draw_observer(CFRunLoopObserverRef observer, if (ret == 0) menu_iterate(false, MENU_ACTION_NOOP); + if (ret == 1) + rarch_sleep(10); rarch_main_data_iterate(); if (ret == -1) From 84c029e2e00f713e1130729be50f1642fe0d4f85 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 27 Aug 2015 13:24:56 +0200 Subject: [PATCH 377/822] Reimplement rarch_draw_observer --- ui/drivers/ui_cocoatouch.m | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 876d83a91a..63ce3254ec 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -60,12 +60,9 @@ static void rarch_disable_ui(void) static void rarch_draw_observer(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info) { - bool iterate = iterate_observer && !(rarch_main_is_paused()); - int ret = iterate ? rarch_main_iterate() : 0; + int ret = rarch_main_iterate(); - if (ret == 0) - menu_iterate(false, MENU_ACTION_NOOP); - if (ret == 1) + if (ret == 1 && !ui_companion_is_on_foreground()) rarch_sleep(10); rarch_main_data_iterate(); From d4534cca1966a0101675859887102ea575940f31 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 13:56:59 +0200 Subject: [PATCH 378/822] Simplify rarch_frame_limit_time --- runloop.c | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/runloop.c b/runloop.c index 63cf08ddcc..0f0cf78a33 100644 --- a/runloop.c +++ b/runloop.c @@ -628,6 +628,7 @@ static INLINE int time_to_exit(driver_t *driver, global_t *global, * rarch_update_frame_time: * * Updates frame timing if frame timing callback is in use by the core. + * Limits frame time if fast forward ratio throttle is enabled. **/ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, rarch_system_info_t *system) @@ -651,26 +652,34 @@ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, system->frame_time.callback(delta); } -static void rarch_limit_frame_time(float fastforward_ratio) +static int rarch_limit_frame_time(settings_t *settings) { - retro_time_t current = rarch_get_time_usec(); - struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); - double effective_fps = av_info->timing.fps * fastforward_ratio; - double mft_f = 1000000.0f / effective_fps; - retro_time_t frame_limit_minimum_time = (retro_time_t) roundf(mft_f); - retro_time_t target = frame_limit_last_time + frame_limit_minimum_time; - retro_time_t to_sleep_ms = (target - current) / 1000; + double effective_fps, mft_f; + retro_time_t current, target, to_sleep_ms, frame_limit_minimum_time; + struct retro_system_av_info *av_info; + float fastforward_ratio = settings->fastforward_ratio; - if (to_sleep_ms <= 0) + if (!settings->fastforward_ratio_throttle_enable) + return 0; + + av_info = video_viewport_get_system_av_info(); + effective_fps = av_info->timing.fps * fastforward_ratio; + mft_f = 1000000.0f / effective_fps; + frame_limit_minimum_time = (retro_time_t) roundf(mft_f); + current = rarch_get_time_usec(); + target = frame_limit_last_time + frame_limit_minimum_time; + to_sleep_ms = (target - current) / 1000; + + if (to_sleep_ms > 0) { - frame_limit_last_time = rarch_get_time_usec(); - return; + rarch_sleep((unsigned int)to_sleep_ms); + /* Combat jitter a bit. */ + frame_limit_last_time += frame_limit_minimum_time; } + else + frame_limit_last_time = rarch_get_time_usec(); - rarch_sleep((unsigned int)to_sleep_ms); - - /* Combat jitter a bit. */ - frame_limit_last_time += frame_limit_minimum_time; + return 0; } /** @@ -1075,7 +1084,7 @@ int rarch_main_iterate(void) if (!input && settings->menu.pause_libretro) return 1; - goto success; + return rarch_limit_frame_time(settings); } #endif @@ -1141,10 +1150,5 @@ int rarch_main_iterate(void) unlock_autosave(); #endif -success: - /* Limit frame time if fast forward ratio throttle is enabled. */ - if (settings->fastforward_ratio_throttle_enable) - rarch_limit_frame_time(settings->fastforward_ratio); - - return 0; + return rarch_limit_frame_time(settings); } From 4e03865a78dbee8738252fb16a4b6c065128c892 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 14:09:32 +0200 Subject: [PATCH 379/822] Cleanup --- retroarch.c | 2 +- runloop.c | 4 ++-- runloop.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/retroarch.c b/retroarch.c index 478e28a1f8..fc896569ed 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1157,7 +1157,7 @@ void rarch_init_system_av_info(void) video_viewport_get_system_av_info(); pretro_get_system_av_info(av_info); - rarch_main_set_frame_limit_last_time(rarch_get_time_usec()); + rarch_main_set_frame_limit_last_time(); } /** diff --git a/runloop.c b/runloop.c index 0f0cf78a33..8527712475 100644 --- a/runloop.c +++ b/runloop.c @@ -834,9 +834,9 @@ void rarch_main_state_free(void) main_max_frames = 0; } -void rarch_main_set_frame_limit_last_time(retro_time_t t) +void rarch_main_set_frame_limit_last_time(void) { - frame_limit_last_time = t; + frame_limit_last_time = rarch_get_time_usec(); } void rarch_main_global_free(void) diff --git a/runloop.h b/runloop.h index 0db287bf9f..fa15a8c342 100644 --- a/runloop.h +++ b/runloop.h @@ -338,7 +338,7 @@ void rarch_main_set_slowmotion(unsigned enable); void rarch_main_set_pause(unsigned enable); -void rarch_main_set_frame_limit_last_time(retro_time_t t); +void rarch_main_set_frame_limit_last_time(void); void rarch_main_set_max_frames(unsigned val); From fc763f5e2514990a6998601a549f44d59ed5c0ff Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 14:25:57 +0200 Subject: [PATCH 380/822] Add EVENT_CMD_SET_FRAME_LIMIT --- command_event.c | 3 +++ command_event.h | 1 + menu/menu_setting.c | 1 + retroarch.c | 2 +- runloop.c | 17 ++++++++--------- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/command_event.c b/command_event.c index 2fd26f7070..c317e07ddc 100644 --- a/command_event.c +++ b/command_event.c @@ -1705,6 +1705,9 @@ bool event_command(enum event_command cmd) case EVENT_CMD_VOLUME_DOWN: event_set_volume(-0.5f); break; + case EVENT_CMD_SET_FRAME_LIMIT: + rarch_main_set_frame_limit_last_time(); + break; case EVENT_CMD_NONE: default: return false; diff --git a/command_event.h b/command_event.h index 535746490b..54fc4c3c40 100644 --- a/command_event.h +++ b/command_event.h @@ -196,6 +196,7 @@ enum event_command EVENT_CMD_REMAPPING_DEINIT, EVENT_CMD_VOLUME_UP, EVENT_CMD_VOLUME_DOWN, + EVENT_CMD_SET_FRAME_LIMIT, EVENT_CMD_DATA_RUNLOOP_FREE }; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 406473bd93..63c4264439 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2956,6 +2956,7 @@ static bool setting_append_list_frame_throttling_options( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_SET_FRAME_LIMIT); menu_settings_list_current_add_range(list, list_info, 1, 10, 0.1, true, true); CONFIG_FLOAT( diff --git a/retroarch.c b/retroarch.c index fc896569ed..248cda445e 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1157,7 +1157,7 @@ void rarch_init_system_av_info(void) video_viewport_get_system_av_info(); pretro_get_system_av_info(av_info); - rarch_main_set_frame_limit_last_time(); + event_command(EVENT_CMD_SET_FRAME_LIMIT); } /** diff --git a/runloop.c b/runloop.c index 8527712475..80279b4489 100644 --- a/runloop.c +++ b/runloop.c @@ -52,6 +52,7 @@ static bool main_is_slowmotion; static unsigned main_max_frames; static retro_time_t frame_limit_last_time; +static retro_time_t frame_limit_minimum_time; /** * check_pause: @@ -654,18 +655,11 @@ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, static int rarch_limit_frame_time(settings_t *settings) { - double effective_fps, mft_f; - retro_time_t current, target, to_sleep_ms, frame_limit_minimum_time; - struct retro_system_av_info *av_info; - float fastforward_ratio = settings->fastforward_ratio; + retro_time_t current, target, to_sleep_ms; if (!settings->fastforward_ratio_throttle_enable) return 0; - av_info = video_viewport_get_system_av_info(); - effective_fps = av_info->timing.fps * fastforward_ratio; - mft_f = 1000000.0f / effective_fps; - frame_limit_minimum_time = (retro_time_t) roundf(mft_f); current = rarch_get_time_usec(); target = frame_limit_last_time + frame_limit_minimum_time; to_sleep_ms = (target - current) / 1000; @@ -836,7 +830,12 @@ void rarch_main_state_free(void) void rarch_main_set_frame_limit_last_time(void) { - frame_limit_last_time = rarch_get_time_usec(); + settings_t *settings = config_get_ptr(); + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); + float fastforward_ratio = settings->fastforward_ratio; + + frame_limit_last_time = rarch_get_time_usec(); + frame_limit_minimum_time = (retro_time_t)roundf(1000000.0f / (av_info->timing.fps * fastforward_ratio)); } void rarch_main_global_free(void) From 805e2ffde3e64aad5caefb03570fcadae751ab21 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 14:27:57 +0200 Subject: [PATCH 381/822] Add EVENT_CMD_SET_FRAME_LIMIT callback to limit maximum run speed too --- menu/menu_setting.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 63c4264439..ace64b95cf 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2944,6 +2944,7 @@ static bool setting_append_list_frame_throttling_options( parent_group, general_write_handler, general_read_handler); + menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_SET_FRAME_LIMIT); CONFIG_FLOAT( settings->fastforward_ratio, @@ -2957,7 +2958,7 @@ static bool setting_append_list_frame_throttling_options( general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_SET_FRAME_LIMIT); - menu_settings_list_current_add_range(list, list_info, 1, 10, 0.1, true, true); + menu_settings_list_current_add_range(list, list_info, 1, 10, 1.0, true, true); CONFIG_FLOAT( settings->slowmotion_ratio, From 1ec90df165f8c3e697daf4d0c3912f14a04b5888 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 14:39:42 +0200 Subject: [PATCH 382/822] Refactor fastforward ratio --- config.def.h | 5 +---- configuration.c | 10 ++-------- configuration.h | 1 - menu/menu_setting.c | 16 +--------------- retroarch.cfg | 6 ++---- runloop.c | 11 +++++++---- 6 files changed, 13 insertions(+), 36 deletions(-) diff --git a/config.def.h b/config.def.h index 0d62f33a50..4f576d8b5c 100644 --- a/config.def.h +++ b/config.def.h @@ -677,10 +677,7 @@ static const bool savestate_auto_load = false; static const float slowmotion_ratio = 3.0; /* Maximum fast forward ratio. */ -static const float fastforward_ratio = 1.0; - -/* Throttle fast forward. */ -static const bool fastforward_ratio_throttle_enable = false; +static const float fastforward_ratio = 0.0; /* Enable stdin/network command interface. */ static const bool network_cmd_enable = false; diff --git a/configuration.c b/configuration.c index a3e050fde6..2f5df1fa0a 100644 --- a/configuration.c +++ b/configuration.c @@ -538,7 +538,6 @@ static void config_set_defaults(void) settings->rewind_granularity = rewind_granularity; settings->slowmotion_ratio = slowmotion_ratio; settings->fastforward_ratio = fastforward_ratio; - settings->fastforward_ratio_throttle_enable = fastforward_ratio_throttle_enable; settings->pause_nonactive = pause_nonactive; settings->autosave_interval = autosave_interval; @@ -1599,11 +1598,8 @@ static bool config_load_file(const char *path, bool set_defaults) /* Sanitize fastforward_ratio value - previously range was -1 * and up (with 0 being skipped) */ - if (settings->fastforward_ratio <= 0.0f) - settings->fastforward_ratio = 1.0f; - - CONFIG_GET_BOOL_BASE(conf, settings, fastforward_ratio_throttle_enable, - "fastforward_ratio_throttle_enable"); + if (settings->fastforward_ratio < 0.0f) + settings->fastforward_ratio = 0.0f; CONFIG_GET_BOOL_BASE(conf, settings, pause_nonactive, "pause_nonactive"); CONFIG_GET_INT_BASE(conf, settings, autosave_interval, "autosave_interval"); @@ -2709,8 +2705,6 @@ bool config_save_file(const char *path) settings->history_list_enable); config_set_float(conf, "fastforward_ratio", settings->fastforward_ratio); - config_set_bool(conf, "fastforward_ratio_throttle_enable", - settings->fastforward_ratio_throttle_enable); config_set_float(conf, "slowmotion_ratio", settings->slowmotion_ratio); config_set_bool(conf, "config_save_on_exit", diff --git a/configuration.h b/configuration.h index bcaa6dc5cc..895d9a7f3b 100644 --- a/configuration.h +++ b/configuration.h @@ -314,7 +314,6 @@ typedef struct settings float slowmotion_ratio; float fastforward_ratio; - bool fastforward_ratio_throttle_enable; bool pause_nonactive; unsigned autosave_interval; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index ace64b95cf..987c732c73 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2932,20 +2932,6 @@ static bool setting_append_list_frame_throttling_options( START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); - CONFIG_BOOL( - settings->fastforward_ratio_throttle_enable, - menu_hash_to_str(MENU_LABEL_FRAME_THROTTLE_ENABLE), - menu_hash_to_str(MENU_LABEL_VALUE_FRAME_THROTTLE_ENABLE), - fastforward_ratio_throttle_enable, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - group_info.name, - subgroup_info.name, - parent_group, - general_write_handler, - general_read_handler); - menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_SET_FRAME_LIMIT); - CONFIG_FLOAT( settings->fastforward_ratio, menu_hash_to_str(MENU_LABEL_FASTFORWARD_RATIO), @@ -2958,7 +2944,7 @@ static bool setting_append_list_frame_throttling_options( general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_SET_FRAME_LIMIT); - menu_settings_list_current_add_range(list, list_info, 1, 10, 1.0, true, true); + menu_settings_list_current_add_range(list, list_info, 0, 10, 1.0, true, true); CONFIG_FLOAT( settings->slowmotion_ratio, diff --git a/retroarch.cfg b/retroarch.cfg index 81cf46a2e5..8a9909fa3f 100644 --- a/retroarch.cfg +++ b/retroarch.cfg @@ -760,10 +760,8 @@ # The maximum rate at which content will be run when using fast forward. (E.g. 5.0 for 60 fps content => 300 fps cap). # RetroArch will go to sleep to ensure that the maximum rate will not be exceeded. # Do not rely on this cap to be perfectly accurate. -# fastforward_ratio = 1.0 - -# Setting this to false equals no FPS cap and will override the fastforward_ratio value. -# fastforward_ratio_throttle_enable = false +# If this is set at 0, then fastforward ratio is unlimited (no FPS cap) +# fastforward_ratio = 0.0 # Enable stdin/network command interface. # network_cmd_enable = false diff --git a/runloop.c b/runloop.c index 80279b4489..98782bd9f4 100644 --- a/runloop.c +++ b/runloop.c @@ -653,11 +653,11 @@ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, system->frame_time.callback(delta); } -static int rarch_limit_frame_time(settings_t *settings) +static int rarch_limit_frame_time(float fastforward_ratio) { retro_time_t current, target, to_sleep_ms; - if (!settings->fastforward_ratio_throttle_enable) + if (!fastforward_ratio) return 0; current = rarch_get_time_usec(); @@ -834,6 +834,9 @@ void rarch_main_set_frame_limit_last_time(void) struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); float fastforward_ratio = settings->fastforward_ratio; + if (fastforward_ratio == 0.0f) + fastforward_ratio = 1.0f; + frame_limit_last_time = rarch_get_time_usec(); frame_limit_minimum_time = (retro_time_t)roundf(1000000.0f / (av_info->timing.fps * fastforward_ratio)); } @@ -1083,7 +1086,7 @@ int rarch_main_iterate(void) if (!input && settings->menu.pause_libretro) return 1; - return rarch_limit_frame_time(settings); + return rarch_limit_frame_time(settings->fastforward_ratio); } #endif @@ -1149,5 +1152,5 @@ int rarch_main_iterate(void) unlock_autosave(); #endif - return rarch_limit_frame_time(settings); + return rarch_limit_frame_time(settings->fastforward_ratio); } From fdd1d3ee9f075606588b8ce376bea5d5fb8cd721 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 14:52:02 +0200 Subject: [PATCH 383/822] Pass sleep_ms argument to rarch_main_iterate --- frontend/drivers/platform_android.c | 7 ++++--- frontend/drivers/platform_emscripten.c | 7 ++++--- frontend/frontend.c | 7 ++++--- runloop.c | 12 +++++++----- runloop.h | 2 +- ui/drivers/ui_cocoa.m | 13 +++++++------ ui/drivers/ui_cocoatouch.m | 7 ++++--- 7 files changed, 31 insertions(+), 24 deletions(-) diff --git a/frontend/drivers/platform_android.c b/frontend/drivers/platform_android.c index d6768dbda1..90e893190b 100644 --- a/frontend/drivers/platform_android.c +++ b/frontend/drivers/platform_android.c @@ -248,10 +248,11 @@ static void android_app_entry(void *data) #ifndef HAVE_MAIN do { - ret = rarch_main_iterate(); + unsigned sleep_ms = 0; + ret = rarch_main_iterate(&sleep_ms); - if (ret == 1) - rarch_sleep(10); + if (ret == 1 && sleep_ms > 0) + rarch_sleep(sleep_ms); rarch_main_data_iterate(); }while (ret != -1); diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index 22a00c1d2f..764f2ba715 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -27,9 +27,10 @@ static void emscripten_mainloop(void) { - int ret = rarch_main_iterate(); - if (ret == 1) - rarch_sleep(10); + unsigned sleep_ms = 0; + int ret = rarch_main_iterate(&sleep_ms); + if (ret == 1 && sleep_ms > 0) + rarch_sleep(sleep_ms); rarch_main_data_iterate(); if (ret != -1) return; diff --git a/frontend/frontend.c b/frontend/frontend.c index e85f64d1c8..e9a3283853 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -342,10 +342,11 @@ int rarch_main(int argc, char *argv[], void *data) #ifndef HAVE_MAIN do{ - ret = rarch_main_iterate(); + unsigned sleep_ms = 0; + ret = rarch_main_iterate(&sleep_ms); - if (ret == 1) - rarch_sleep(10); + if (ret == 1 && sleep_ms > 0) + rarch_sleep(sleep_ms); rarch_main_data_iterate(); }while(ret != -1); diff --git a/runloop.c b/runloop.c index 98782bd9f4..23b8fccf97 100644 --- a/runloop.c +++ b/runloop.c @@ -653,7 +653,7 @@ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio, system->frame_time.callback(delta); } -static int rarch_limit_frame_time(float fastforward_ratio) +static int rarch_limit_frame_time(float fastforward_ratio, unsigned *sleep_ms) { retro_time_t current, target, to_sleep_ms; @@ -666,9 +666,10 @@ static int rarch_limit_frame_time(float fastforward_ratio) if (to_sleep_ms > 0) { - rarch_sleep((unsigned int)to_sleep_ms); + *sleep_ms = (unsigned)to_sleep_ms; /* Combat jitter a bit. */ frame_limit_last_time += frame_limit_minimum_time; + return 1; } else frame_limit_last_time = rarch_get_time_usec(); @@ -1001,7 +1002,7 @@ static void rarch_main_cmd_get_state(driver_t *driver, * Returns: 0 on success, 1 if we have to wait until button input in order * to wake up the loop, -1 if we forcibly quit out of the RetroArch iteration loop. **/ -int rarch_main_iterate(void) +int rarch_main_iterate(unsigned *sleep_ms) { unsigned i; retro_input_t trigger_input; @@ -1086,7 +1087,7 @@ int rarch_main_iterate(void) if (!input && settings->menu.pause_libretro) return 1; - return rarch_limit_frame_time(settings->fastforward_ratio); + return rarch_limit_frame_time(settings->fastforward_ratio, sleep_ms); } #endif @@ -1094,6 +1095,7 @@ int rarch_main_iterate(void) { /* RetroArch has been paused. */ driver->retro_ctx.poll_cb(); + *sleep_ms = 10; return 1; } @@ -1152,5 +1154,5 @@ int rarch_main_iterate(void) unlock_autosave(); #endif - return rarch_limit_frame_time(settings->fastforward_ratio); + return rarch_limit_frame_time(settings->fastforward_ratio, sleep_ms); } diff --git a/runloop.h b/runloop.h index fa15a8c342..1ec33009e3 100644 --- a/runloop.h +++ b/runloop.h @@ -308,7 +308,7 @@ global_t *global_get_ptr(void); * Returns: 0 on successful run, 1 if we have to wait until button input in order * to wake up the loop, -1 if we forcibly quit out of the RetroArch iteration loop. **/ -int rarch_main_iterate(void); +int rarch_main_iterate(unsigned *sleep_ms); void rarch_main_msg_queue_push(const char *msg, unsigned prio, unsigned duration, bool flush); diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index bfa407752b..5885f35bd2 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -208,12 +208,13 @@ static void poll_iteration(void) int ret = 0; while (ret != -1) { - poll_iteration(); - ret = rarch_main_iterate(); - if (ret == 1) - rarch_sleep(10); - rarch_main_data_iterate(); - while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, FALSE) == kCFRunLoopRunHandledSource); + unsigned sleep_ms = 0; + poll_iteration(); + ret = rarch_main_iterate(&sleep_ms); + if (ret == 1 && sleep_ms > 0) + rarch_sleep(sleep_ms); + rarch_main_data_iterate(); + while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, FALSE) == kCFRunLoopRunHandledSource); } main_exit(NULL); diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 63ce3254ec..e3b54e6181 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -60,10 +60,11 @@ static void rarch_disable_ui(void) static void rarch_draw_observer(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info) { - int ret = rarch_main_iterate(); + unsigned sleep_ms = 0; + int ret = rarch_main_iterate(&sleep_ms); - if (ret == 1 && !ui_companion_is_on_foreground()) - rarch_sleep(10); + if (ret == 1 && !ui_companion_is_on_foreground() && sleep_ms > 0) + rarch_sleep(sleep_ms); rarch_main_data_iterate(); if (ret == -1) From 70ff0a62f38c8fb8904731de854f533bacf8914c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Aug 2015 15:00:48 +0200 Subject: [PATCH 384/822] N/A --- runloop.c | 1 - 1 file changed, 1 deletion(-) diff --git a/runloop.c b/runloop.c index 23b8fccf97..c40f42afd2 100644 --- a/runloop.c +++ b/runloop.c @@ -1129,7 +1129,6 @@ int rarch_main_iterate(unsigned *sleep_ms) if ((settings->video.frame_delay > 0) && !driver->nonblock_state) rarch_sleep(settings->video.frame_delay); - /* Run libretro for one frame. */ pretro_run(); From 4f23188309166cf18db91f0d442c5b580aff8e34 Mon Sep 17 00:00:00 2001 From: radius Date: Thu, 27 Aug 2015 21:35:05 -0500 Subject: [PATCH 385/822] [input autoconf] improve logging --- input/input_autodetect.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 99d048c431..2dd8d710e5 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -82,7 +82,7 @@ static int input_try_autoconfigure_joypad_from_conf(config_file_t *conf, { score += 3; #if 0 - RARCH_LOG("Autoconf: VID/PID match score=%d\n", score); + RARCH_LOG("Autodetect: VID/PID match score=%d\n", score); #endif } @@ -91,7 +91,7 @@ static int input_try_autoconfigure_joypad_from_conf(config_file_t *conf, { score += 2; #if 0 - RARCH_LOG("Autoconf: exact name match score=%d\n", score); + RARCH_LOG("Autodetect: exact name match score=%d\n", score); #endif } else @@ -100,11 +100,11 @@ static int input_try_autoconfigure_joypad_from_conf(config_file_t *conf, { score += 1; #if 0 - RARCH_LOG("Autoconf: partial name match score=%d\n", score); + RARCH_LOG("Autodetect: partial name match score=%d\n", score); #endif } } - RARCH_LOG("Autoconf: configuration score=%d\n", score); + RARCH_LOG("Autodetect: configuration file: %s score: %d\n", conf->path, score); return score; } @@ -157,7 +157,7 @@ static void input_autoconfigure_joypad_add( rarch_main_msg_queue_push(msg, 0, 60, false); } - RARCH_LOG("%s\n", msg); + RARCH_LOG("Autodetect: %s\n", msg); } #if defined(HAVE_BUILTIN_AUTOCONFIG) @@ -207,7 +207,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( if(!list) return false; - RARCH_LOG("Autoconfig: %d profiles found\n", list->size); + RARCH_LOG("Autodetect: %d profiles found\n", list->size); for (i = 0; i < list->size; i++) { @@ -222,16 +222,16 @@ static bool input_autoconfigure_joypad_from_conf_dir( } if(index >= 0 && current_best > 0) - { - RARCH_LOG("Autoconf: best configuration score=%d\n", current_best); + { conf = config_file_new(list->elems[index].data); + RARCH_LOG("Autodetect: selected configuration: %s\n", conf->path); input_autoconfigure_joypad_add(conf, params); config_file_free(conf); ret = 1; } else { - RARCH_LOG("Autoconf: no profiles found for %s (%d/%d)", params->name, params->vid, params->pid); + RARCH_LOG("Autodetect: no profiles found for %s (%d/%d)", params->name, params->vid, params->pid); snprintf(msg, sizeof(msg), "%s (%d/%d) not configured", params->name, params->vid, params->pid); rarch_main_msg_queue_push(msg, 0, 60, false); ret = 0; @@ -326,5 +326,5 @@ void input_config_autoconfigure_disconnect(unsigned i, const char *ident) snprintf(msg, sizeof(msg), "Device #%u (%s) disconnected.", i, ident); rarch_main_msg_queue_push(msg, 0, 60, false); - RARCH_LOG("%s\n", msg); + RARCH_LOG("Autodetect: %s\n", msg); } From bad3a110507244932efbb517a9a21b1c94145c72 Mon Sep 17 00:00:00 2001 From: radius Date: Thu, 27 Aug 2015 21:47:22 -0500 Subject: [PATCH 386/822] [config overrides / input remapping] improve logging --- configuration.c | 62 ++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/configuration.c b/configuration.c index 2f5df1fa0a..a11677fead 100644 --- a/configuration.c +++ b/configuration.c @@ -1020,7 +1020,7 @@ static config_file_t *open_default_config_file(void) "retroarch.cfg", sizeof(skeleton_conf)); conf = config_file_new(skeleton_conf); if (conf) - RARCH_WARN("Using skeleton config \"%s\" as base for a new config file.\n", skeleton_conf); + RARCH_WARN("Config: using skeleton config \"%s\" as base for a new config file.\n", skeleton_conf); else conf = config_file_new(NULL); @@ -1040,7 +1040,7 @@ static config_file_t *open_default_config_file(void) return NULL; } - RARCH_WARN("Created new config file in: \"%s\".\n", conf_path); + RARCH_WARN("Config: Created new config file in: \"%s\".\n", conf_path); } } } @@ -1205,10 +1205,10 @@ static bool config_load_file(const char *path, bool set_defaults) while (extra_path) { bool ret = false; - RARCH_LOG("Appending config \"%s\"\n", extra_path); + RARCH_LOG("Config: appending config \"%s\"\n", extra_path); ret = config_append_file(conf, extra_path); if (!ret) - RARCH_ERR("Failed to append config \"%s\"\n", extra_path); + RARCH_ERR("Config: failed to append config \"%s\"\n", extra_path); extra_path = strtok_r(NULL, "|", &save); } #if 0 @@ -1783,11 +1783,11 @@ static void config_load_core_specific(void) global->has_set.state_path = false; strlcpy(tmp, settings->libretro, sizeof(tmp)); - RARCH_LOG("Loading core-specific config from: %s.\n", + RARCH_LOG("Config: loading core-specific config from: %s.\n", global->path.core_specific_config); if (!config_load_file(global->path.core_specific_config, true)) - RARCH_WARN("Core-specific config not found, reusing last config.\n"); + RARCH_WARN("Config: core-specific config not found, reusing last config.\n"); /* Force some parameters which are implied when using core specific configs. * Don't have the core config file overwrite the libretro path. */ @@ -1835,8 +1835,8 @@ bool config_load_override(void) if (!info->info.library_name || !strcmp(info->info.library_name,"No Core")) return false; - RARCH_LOG("Game name: %s\n", global->name.base); - RARCH_LOG("Core name: %s\n", info->info.library_name); + RARCH_LOG("Overrides: core name: %s\n", info->info.library_name); + RARCH_LOG("Overrides: game name: %s\n", global->name.base); if (!global || !settings ) { @@ -1853,11 +1853,11 @@ bool config_load_override(void) fill_pathname_basedir(config_directory, global->path.config, PATH_MAX_LENGTH); else { - RARCH_WARN("No config directory set under Settings > Path and retroarch.cfg not found.\n"); + RARCH_WARN("Overrides: no config directory set\n"); return false; } - RARCH_LOG("Config directory: %s\n", config_directory); + RARCH_LOG("Overrides: config directory: %s\n", config_directory); core_name = info->info.library_name; game_name = path_basename(global->name.base); @@ -1879,15 +1879,15 @@ bool config_load_override(void) { if (settings->core_specific_config) { - RARCH_LOG("Can't use overrides in conjunction with per-core configs, disabling overrides\n"); + RARCH_LOG("Overrides: can't use overrides with with per-core configs, disabling overrides\n"); return false; } - RARCH_LOG("Core-specific overrides found at %s. Appending.\n", core_path); + RARCH_LOG("Overrides: core-specific overrides found at %s\n", core_path); strlcpy(global->path.append_config, core_path, sizeof(global->path.append_config)); should_append = true; } else - RARCH_LOG("No core-specific overrides found at %s.\n", core_path); + RARCH_LOG("Overrides: no core-specific overrides found at %s\n", core_path); /* Create a new config file from game_path */ new_conf = config_file_new(game_path); @@ -1895,7 +1895,7 @@ bool config_load_override(void) /* If a game override exists, add it's location to append_config_path */ if (new_conf) { - RARCH_LOG("Game-specific overrides found at %s. Appending.\n", game_path); + RARCH_LOG("Overrides: game-specific overrides found at %s\n", game_path); if (should_append) { strlcat(global->path.append_config, "|", sizeof(global->path.append_config)); @@ -1907,7 +1907,7 @@ bool config_load_override(void) should_append = true; } else - RARCH_LOG("No game-specific overrides found at %s.\n", game_path); + RARCH_LOG("Overrides: no game-specific overrides found at %s\n", game_path); /* Re-load the configuration with any overrides that might have been found */ if (should_append) @@ -1916,14 +1916,14 @@ bool config_load_override(void) if (settings->core_specific_config) { - RARCH_WARN("Can't use overrides in conjunction with per-core configs, disabling overrides\n"); + RARCH_LOG("Overrides: can't use overrides with with per-core configs, disabling overrides\n"); return false; } #ifdef HAVE_NETPLAY if (global->netplay.enable) { - RARCH_WARN("Can't use overrides in conjunction with netplay, disabling overrides\n"); + RARCH_WARN("Overrides: can't use overrides in conjunction with netplay, disabling overrides\n"); return false; } #endif @@ -1970,12 +1970,12 @@ bool config_load_override(void) *global->path.append_config = '\0'; /* Toggle has_save_path to false so it resets */ - global->has_set.save_path = false; - global->has_set.state_path = false; + global->has_set.save_path = false; + global->has_set.state_path = false; if (config_load_file(global->path.config, false)) { - RARCH_LOG("Configuration overrides unloaded, original configuration reset\n"); + RARCH_LOG("Overrides: configuration overrides unloaded, original configuration restored\n"); /* Reset save paths */ global->has_set.save_path = true; @@ -2016,8 +2016,8 @@ bool config_load_remap(void) if (!info->info.library_name || !strcmp(info->info.library_name,"No Core")) return false; - RARCH_LOG("Game name: %s\n", global->name.base); - RARCH_LOG("Core name: %s\n", info->info.library_name); + RARCH_LOG("Remaps: core name: %s\n", info->info.library_name); + RARCH_LOG("Remaps: game name: %s\n", global->name.base); /* Remap directory: remap_directory. * Try remap directory setting, no fallbacks defined */ @@ -2025,10 +2025,10 @@ bool config_load_remap(void) strlcpy(remap_directory, settings->input_remapping_directory, PATH_MAX_LENGTH); else { - RARCH_WARN("No remap directory set.\n"); + RARCH_WARN("Remaps: no remap directory set.\n"); return false; } - RARCH_LOG("Remap directory: %s\n", remap_directory); + RARCH_LOG("Remaps: remap directory: %s\n", remap_directory); core_name = info->info.library_name; game_name = path_basename(global->name.base); @@ -2048,7 +2048,7 @@ bool config_load_remap(void) /* If a game remap file exists, load it. */ if (new_conf) { - RARCH_LOG("Game-specific remap found at %s. Appending.\n", game_path); + RARCH_LOG("Remaps: game-specific remap found at %s\n", game_path); if (input_remapping_load_file(game_path)) { rarch_main_msg_queue_push("Game remap file loaded", 1, 100, true); @@ -2057,7 +2057,7 @@ bool config_load_remap(void) } else { - RARCH_LOG("No core-specific remap found at %s.\n", core_path); + RARCH_LOG("Remaps: no game-specific remap found at %s\n", game_path); *settings->input.remapping_path= '\0'; input_remapping_set_defaults(); } @@ -2070,7 +2070,7 @@ bool config_load_remap(void) /* If a core remap file exists, load it. */ if (new_conf) { - RARCH_LOG("Core-specific remap found at %s. Loading.\n", core_path); + RARCH_LOG("Remaps: core-specific remap found at %s\n", core_path); if (input_remapping_load_file(core_path)) { rarch_main_msg_queue_push("Core remap file loaded", 1, 100, true); @@ -2079,7 +2079,7 @@ bool config_load_remap(void) } else { - RARCH_LOG("No core-specific remap found at %s.\n", core_path); + RARCH_LOG("Remaps: no core-specific remap found at %s\n", core_path); *settings->input.remapping_path= '\0'; input_remapping_set_defaults(); } @@ -2097,19 +2097,19 @@ static void parse_config_file(void) if (*global->path.config) { - RARCH_LOG("Loading config from: %s.\n", global->path.config); + RARCH_LOG("Config: loading config from: %s.\n", global->path.config); } else { RARCH_LOG("Loading default config.\n"); if (*global->path.config) - RARCH_LOG("Found default config: %s.\n", global->path.config); + RARCH_LOG("Config: found default config: %s.\n", global->path.config); } if (ret) return; - RARCH_ERR("Couldn't find config at path: \"%s\"\n", + RARCH_ERR("Config: couldn't find config at path: \"%s\"\n", global->path.config); } From 0cd3a9ec633089ba0970253c1ac2b13b788bac96 Mon Sep 17 00:00:00 2001 From: radius Date: Thu, 27 Aug 2015 22:16:52 -0500 Subject: [PATCH 387/822] [android] add defaults for keyboard overlay --- configuration.c | 6 ++++-- frontend/drivers/platform_android.c | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/configuration.c b/configuration.c index a11677fead..709c6e9efa 100644 --- a/configuration.c +++ b/configuration.c @@ -640,6 +640,8 @@ static void config_set_defaults(void) settings->input.autodetect_enable = input_autodetect_enable; *settings->input.keyboard_layout = '\0'; + settings->osk.enable = true; + for (i = 0; i < MAX_USERS; i++) { settings->input.joypad_map[i] = i; @@ -788,10 +790,10 @@ static void config_set_defaults(void) fill_pathname_expand_special(global->dir.osk_overlay, g_defaults.dir.osk_overlay, sizeof(global->dir.osk_overlay)); #ifdef RARCH_MOBILE - if (!*settings->input.overlay) + if (!*settings->input.osk_overlay) fill_pathname_join(settings->osk.overlay, global->dir.osk_overlay, - "overlays/keyboards/US-101/US-101.cfg", + "overlays/keyboards/modular-keyboard/opaque/big.cfg", sizeof(settings->osk.overlay)); #endif } diff --git a/frontend/drivers/platform_android.c b/frontend/drivers/platform_android.c index 90e893190b..6b6fab2869 100644 --- a/frontend/drivers/platform_android.c +++ b/frontend/drivers/platform_android.c @@ -756,6 +756,8 @@ static void frontend_android_get_environment_settings(int *argc, "shaders", sizeof(g_defaults.dir.shader)); fill_pathname_join(g_defaults.dir.overlay, app_dir, "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.osk_overlay, app_dir, + "overlays", sizeof(g_defaults.dir.osk_overlay)); fill_pathname_join(g_defaults.dir.core, app_dir, "cores", sizeof(g_defaults.dir.core)); fill_pathname_join(g_defaults.dir.core_info, From e361207cd322e022cce2d5458ff8cb9155e2b68b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 28 Aug 2015 21:25:17 +0200 Subject: [PATCH 388/822] (deps/zlib) Cleanups --- deps/zlib/gzlib.c | 15 --------------- deps/zlib/gzread.c | 6 ------ deps/zlib/gzwrite.c | 8 -------- 3 files changed, 29 deletions(-) diff --git a/deps/zlib/gzlib.c b/deps/zlib/gzlib.c index 7443a75c19..12940e8578 100644 --- a/deps/zlib/gzlib.c +++ b/deps/zlib/gzlib.c @@ -264,19 +264,16 @@ local gzFile gz_open(const void *path, int fd, const char *mode) return (gzFile)state; } -/* -- see zlib.h -- */ gzFile ZEXPORT gzopen(const char *path, const char *mode) { return gz_open(path, -1, mode); } -/* -- see zlib.h -- */ gzFile ZEXPORT gzopen64(const char *path, const char *mode) { return gz_open(path, -1, mode); } -/* -- see zlib.h -- */ gzFile ZEXPORT gzdopen(int fd, const char *mode) { char *path; /* identifier for error messages */ @@ -294,7 +291,6 @@ gzFile ZEXPORT gzdopen(int fd, const char *mode) return gz; } -/* -- see zlib.h -- */ #ifdef _WIN32 gzFile ZEXPORT gzopen_w(const wchar_t *path, const char *mode) { @@ -302,7 +298,6 @@ gzFile ZEXPORT gzopen_w(const wchar_t *path, const char *mode) } #endif -/* -- see zlib.h -- */ int ZEXPORT gzbuffer(gzFile file, unsigned size) { gz_statep state; @@ -325,7 +320,6 @@ int ZEXPORT gzbuffer(gzFile file, unsigned size) return 0; } -/* -- see zlib.h -- */ int ZEXPORT gzrewind(gzFile file) { gz_statep state; @@ -347,7 +341,6 @@ int ZEXPORT gzrewind(gzFile file) return 0; } -/* -- see zlib.h -- */ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { unsigned n; @@ -421,7 +414,6 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) return state->x.pos + offset; } -/* -- see zlib.h -- */ z_off_t ZEXPORT gzseek(gzFile file, z_off_t offset, int whence) { z_off64_t ret; @@ -430,7 +422,6 @@ z_off_t ZEXPORT gzseek(gzFile file, z_off_t offset, int whence) return ret == (z_off_t)ret ? (z_off_t)ret : -1; } -/* -- see zlib.h -- */ z_off64_t ZEXPORT gztell64(gzFile file) { gz_statep state; @@ -446,7 +437,6 @@ z_off64_t ZEXPORT gztell64(gzFile file) return state->x.pos + (state->seek ? state->skip : 0); } -/* -- see zlib.h -- */ z_off_t ZEXPORT gztell(gzFile file) { z_off64_t ret; @@ -455,7 +445,6 @@ z_off_t ZEXPORT gztell(gzFile file) return ret == (z_off_t)ret ? (z_off_t)ret : -1; } -/* -- see zlib.h -- */ z_off64_t ZEXPORT gzoffset64(gzFile file) { z_off64_t offset; @@ -477,14 +466,12 @@ z_off64_t ZEXPORT gzoffset64(gzFile file) return offset; } -/* -- see zlib.h -- */ z_off_t ZEXPORT gzoffset(gzFile file) { z_off64_t ret = gzoffset64(file); return ret == (z_off_t)ret ? (z_off_t)ret : -1; } -/* -- see zlib.h -- */ int ZEXPORT gzeof(gzFile file) { gz_statep state; @@ -500,7 +487,6 @@ int ZEXPORT gzeof(gzFile file) return state->mode == GZ_READ ? state->past : 0; } -/* -- see zlib.h -- */ const char * ZEXPORT gzerror(gzFile file, int *errnum) { gz_statep state; @@ -519,7 +505,6 @@ const char * ZEXPORT gzerror(gzFile file, int *errnum) (state->msg == NULL ? "" : state->msg); } -/* -- see zlib.h -- */ void ZEXPORT gzclearerr(gzFile file) { gz_statep state; diff --git a/deps/zlib/gzread.c b/deps/zlib/gzread.c index 7f6ec7ed3d..b304b4eb15 100644 --- a/deps/zlib/gzread.c +++ b/deps/zlib/gzread.c @@ -276,7 +276,6 @@ local int gz_skip(gz_statep state, z_off64_t len) return 0; } -/* -- see zlib.h -- */ int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { unsigned got, n; @@ -368,7 +367,6 @@ int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) return (int)got; } -/* -- see zlib.h -- */ #ifdef Z_PREFIX_SET # undef z_gzgetc #else @@ -407,7 +405,6 @@ int ZEXPORT gzgetc_(gzFile file) return gzgetc(file); } -/* -- see zlib.h -- */ int ZEXPORT gzungetc(int c, gzFile file) { gz_statep state; @@ -465,7 +462,6 @@ int ZEXPORT gzungetc(int c, gzFile file) return c; } -/* -- see zlib.h -- */ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { unsigned left, n; @@ -526,7 +522,6 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) return str; } -/* -- see zlib.h -- */ int ZEXPORT gzdirect(gzFile file) { gz_statep state; @@ -545,7 +540,6 @@ int ZEXPORT gzdirect(gzFile file) return state->direct; } -/* -- see zlib.h -- */ int gzclose_r(gzFile file) { int ret, err; diff --git a/deps/zlib/gzwrite.c b/deps/zlib/gzwrite.c index 61b217e23a..6c1c91bf0f 100644 --- a/deps/zlib/gzwrite.c +++ b/deps/zlib/gzwrite.c @@ -158,7 +158,6 @@ local int gz_zero(gz_statep state, z_off64_t len) return 0; } -/* -- see zlib.h -- */ int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) { unsigned put = len; @@ -235,7 +234,6 @@ int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) return (int)put; } -/* -- see zlib.h -- */ int ZEXPORT gzputc(gzFile file, int c) { unsigned have; @@ -281,7 +279,6 @@ int ZEXPORT gzputc(gzFile file, int c) return c & 0xff; } -/* -- see zlib.h -- */ int ZEXPORT gzputs(gzFile file, const char *str) { int ret; @@ -296,7 +293,6 @@ int ZEXPORT gzputs(gzFile file, const char *str) #if defined(STDC) || defined(Z_HAVE_STDARG_H) #include -/* -- see zlib.h -- */ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { int size, len; @@ -372,7 +368,6 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) #else /* !STDC && !Z_HAVE_STDARG_H */ -/* -- see zlib.h -- */ int ZEXPORTVA gzprintf (gzFile file, const char *format, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20) { @@ -447,7 +442,6 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, int a1, int a2, int a3, #endif -/* -- see zlib.h -- */ int ZEXPORT gzflush(gzFile file, int flush) { gz_statep state; @@ -477,7 +471,6 @@ int ZEXPORT gzflush(gzFile file, int flush) return state->err; } -/* -- see zlib.h -- */ int ZEXPORT gzsetparams(gzFile file, int level, int strategy) { gz_statep state; @@ -516,7 +509,6 @@ int ZEXPORT gzsetparams(gzFile file, int level, int strategy) return Z_OK; } -/* -- see zlib.h -- */ int gzclose_w(gzFile file) { int ret = Z_OK; From 6edea1d9c718631c89e7bb44b6fb4d749750a360 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 28 Aug 2015 21:35:09 +0200 Subject: [PATCH 389/822] Create compat versions of zlib.h and zutil.h --- deps/zlib/adler32.c | 2 +- deps/zlib/compress.c | 2 +- deps/zlib/deflate.h | 2 +- deps/zlib/gzguts.h | 2 +- deps/zlib/infback.c | 2 +- deps/zlib/inffast.c | 2 +- deps/zlib/inflate.c | 2 +- deps/zlib/inftrees.c | 2 +- deps/zlib/ioapi.h | 2 +- deps/zlib/uncompr.c | 2 +- deps/zlib/unzip.c | 2 +- deps/zlib/unzip.h | 2 +- deps/zlib/zutil.c | 2 +- libretro-common/file/file_extract.c | 2 +- .../zlib => libretro-common/include/compat}/zlib.h | 11 +++++++++++ .../zlib => libretro-common/include/compat}/zutil.h | 13 ++++++++++++- libretro-common/utils/crc32.c | 3 ++- 17 files changed, 39 insertions(+), 16 deletions(-) rename {deps/zlib => libretro-common/include/compat}/zlib.h (99%) rename {deps/zlib => libretro-common/include/compat}/zutil.h (98%) diff --git a/deps/zlib/adler32.c b/deps/zlib/adler32.c index cccb3a2999..a7abb77725 100644 --- a/deps/zlib/adler32.c +++ b/deps/zlib/adler32.c @@ -8,7 +8,7 @@ #define ZLIB_INTERNAL #include #include -#include "zutil.h" +#include #define BASE 65521UL /* largest prime smaller than 65536 */ #define NMAX 5552 diff --git a/deps/zlib/compress.c b/deps/zlib/compress.c index 48465bd77a..b30cec47e9 100644 --- a/deps/zlib/compress.c +++ b/deps/zlib/compress.c @@ -6,7 +6,7 @@ /* @(#) $Id$ */ #define ZLIB_INTERNAL -#include "zlib.h" +#include /* =========================================================================== Compresses the source buffer into the destination buffer. The level diff --git a/deps/zlib/deflate.h b/deps/zlib/deflate.h index 82fe93e224..e284189775 100644 --- a/deps/zlib/deflate.h +++ b/deps/zlib/deflate.h @@ -13,7 +13,7 @@ #ifndef DEFLATE_H #define DEFLATE_H -#include "zutil.h" +#include /* define NO_GZIP when compiling if you want to disable gzip header and trailer creation by deflate(). NO_GZIP would be used to avoid linking in diff --git a/deps/zlib/gzguts.h b/deps/zlib/gzguts.h index 6068d41957..d0b51066bb 100644 --- a/deps/zlib/gzguts.h +++ b/deps/zlib/gzguts.h @@ -22,7 +22,7 @@ #endif #include -#include "zlib.h" +#include #ifdef STDC # include # include diff --git a/deps/zlib/infback.c b/deps/zlib/infback.c index 7206cde5c2..d8f91e3db5 100644 --- a/deps/zlib/infback.c +++ b/deps/zlib/infback.c @@ -10,7 +10,7 @@ inflate_fast() can be used with either inflate.c or infback.c. */ -#include "zutil.h" +#include #include "inftrees.h" #include "inflate.h" #include "inffast.h" diff --git a/deps/zlib/inffast.c b/deps/zlib/inffast.c index a88859f37d..01fe74a465 100644 --- a/deps/zlib/inffast.c +++ b/deps/zlib/inffast.c @@ -3,7 +3,7 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ -#include "zutil.h" +#include #include "inftrees.h" #include "inflate.h" #include "inffast.h" diff --git a/deps/zlib/inflate.c b/deps/zlib/inflate.c index 0b4f0b7825..dfef06ecc1 100644 --- a/deps/zlib/inflate.c +++ b/deps/zlib/inflate.c @@ -80,7 +80,7 @@ * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. */ -#include "zutil.h" +#include #include "inftrees.h" #include "inflate.h" #include "inffast.h" diff --git a/deps/zlib/inftrees.c b/deps/zlib/inftrees.c index 8b8a9648f1..8ef80d6731 100644 --- a/deps/zlib/inftrees.c +++ b/deps/zlib/inftrees.c @@ -3,7 +3,7 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ -#include "zutil.h" +#include #include "inftrees.h" #define MAXBITS 15 diff --git a/deps/zlib/ioapi.h b/deps/zlib/ioapi.h index a6332ed3d9..daf2556634 100644 --- a/deps/zlib/ioapi.h +++ b/deps/zlib/ioapi.h @@ -42,7 +42,7 @@ #include #include -#include "zlib.h" +#include #if defined(USE_FILE32API) #define fopen64 fopen diff --git a/deps/zlib/uncompr.c b/deps/zlib/uncompr.c index c7e30b3c7a..0697ed8dc1 100644 --- a/deps/zlib/uncompr.c +++ b/deps/zlib/uncompr.c @@ -6,7 +6,7 @@ /* @(#) $Id$ */ #define ZLIB_INTERNAL -#include "zlib.h" +#include /* =========================================================================== Decompresses the source buffer into the destination buffer. sourceLen is diff --git a/deps/zlib/unzip.c b/deps/zlib/unzip.c index 8f5730d25b..873cb4d855 100644 --- a/deps/zlib/unzip.c +++ b/deps/zlib/unzip.c @@ -72,7 +72,7 @@ #define NOUNCRYPT #endif -#include "zlib.h" +#include #include "unzip.h" #ifdef STDC diff --git a/deps/zlib/unzip.h b/deps/zlib/unzip.h index 3183968b77..1ceb5846b7 100644 --- a/deps/zlib/unzip.h +++ b/deps/zlib/unzip.h @@ -48,7 +48,7 @@ extern "C" { #endif #ifndef _ZLIB_H -#include "zlib.h" +#include #endif #ifndef _ZLIBIOAPI_H diff --git a/deps/zlib/zutil.c b/deps/zlib/zutil.c index c9353fe56d..4bcceb536a 100644 --- a/deps/zlib/zutil.c +++ b/deps/zlib/zutil.c @@ -5,7 +5,7 @@ /* @(#) $Id$ */ -#include "zutil.h" +#include #ifndef Z_SOLO # include "gzguts.h" #endif diff --git a/libretro-common/file/file_extract.c b/libretro-common/file/file_extract.c index f682b6dfab..40105609df 100644 --- a/libretro-common/file/file_extract.c +++ b/libretro-common/file/file_extract.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include /* File backends. Can be fleshed out later, but keep it simple for now. * The file is mapped to memory directly (via mmap() or just diff --git a/deps/zlib/zlib.h b/libretro-common/include/compat/zlib.h similarity index 99% rename from deps/zlib/zlib.h rename to libretro-common/include/compat/zlib.h index aa5935d22f..bf3d53db40 100644 --- a/deps/zlib/zlib.h +++ b/libretro-common/include/compat/zlib.h @@ -1,3 +1,8 @@ +#ifndef _COMPAT_ZLIB_H +#define _COMPAT_ZLIB_H + +#ifdef WANT_ZLIB + /* zlib.h -- interface of the 'zlib' general purpose compression library version 1.2.8, April 28th, 2013 @@ -1761,3 +1766,9 @@ ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, #endif #endif /* ZLIB_H */ + +#else +#include +#endif + +#endif diff --git a/deps/zlib/zutil.h b/libretro-common/include/compat/zutil.h similarity index 98% rename from deps/zlib/zutil.h rename to libretro-common/include/compat/zutil.h index 5c6929f40b..8aebee91f8 100644 --- a/deps/zlib/zutil.h +++ b/libretro-common/include/compat/zutil.h @@ -1,3 +1,8 @@ +#ifndef _COMPAT_ZUTIL_H +#define _COMPAT_ZUTIL_H + +#ifdef WANT_ZLIB + /* zutil.h -- internal interface and configuration of the compression library * Copyright (C) 1995-2013 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h @@ -19,7 +24,7 @@ # define ZLIB_INTERNAL #endif -#include "zlib.h" +#include #if defined(STDC) && !defined(Z_SOLO) # if !(defined(_WIN32_WCE) && defined(_MSC_VER)) @@ -251,3 +256,9 @@ extern char * const z_errmsg[10]; /* indexed by 2-zlib_error */ (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) #endif /* ZUTIL_H */ + +#else +#include +#endif + +#endif diff --git a/libretro-common/utils/crc32.c b/libretro-common/utils/crc32.c index 6ccb866bb0..d56c0702d3 100644 --- a/libretro-common/utils/crc32.c +++ b/libretro-common/utils/crc32.c @@ -1,10 +1,11 @@ /* gcc -O3 -o crc32 crc32.c -lz */ #include -#include #include #include +#include + int main(int argc, const char* argv[]) { if (argc != 2 ) From 3edb4d1244ee0abade7b3bb2847dd9e3a36c039d Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 28 Aug 2015 20:36:55 -0500 Subject: [PATCH 390/822] [mobile] build fix --- configuration.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.c b/configuration.c index 709c6e9efa..d625ae6b0d 100644 --- a/configuration.c +++ b/configuration.c @@ -790,7 +790,7 @@ static void config_set_defaults(void) fill_pathname_expand_special(global->dir.osk_overlay, g_defaults.dir.osk_overlay, sizeof(global->dir.osk_overlay)); #ifdef RARCH_MOBILE - if (!*settings->input.osk_overlay) + if (!*settings->osk.osk_overlay) fill_pathname_join(settings->osk.overlay, global->dir.osk_overlay, "overlays/keyboards/modular-keyboard/opaque/big.cfg", From a7c5e98fb33a5d8ad659282e3216d025edab9fb7 Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 29 Aug 2015 00:17:46 -0500 Subject: [PATCH 391/822] [mobile] build fix --- configuration.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.c b/configuration.c index d625ae6b0d..d3a91b57c6 100644 --- a/configuration.c +++ b/configuration.c @@ -790,7 +790,7 @@ static void config_set_defaults(void) fill_pathname_expand_special(global->dir.osk_overlay, g_defaults.dir.osk_overlay, sizeof(global->dir.osk_overlay)); #ifdef RARCH_MOBILE - if (!*settings->osk.osk_overlay) + if (!*settings->osk.overlay) fill_pathname_join(settings->osk.overlay, global->dir.osk_overlay, "overlays/keyboards/modular-keyboard/opaque/big.cfg", From 195aba50b24ed360f3f788ea33734923356162e3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 14:20:15 +0200 Subject: [PATCH 392/822] Try to avoid some symbol conflicts --- input/connect/connect_wii.c | 64 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/input/connect/connect_wii.c b/input/connect/connect_wii.c index bda914399a..c761c3427d 100644 --- a/input/connect/connect_wii.c +++ b/input/connect/connect_wii.c @@ -107,33 +107,33 @@ typedef struct axis_t float value; } axis_t; -typedef struct joystick_t +typedef struct connect_wii_joystick_t { axis_t x; axis_t y; -} joystick_t; +} connect_wii_joystick_t; -typedef struct classic_ctrl_t +typedef struct connect_wii_classic_ctrl_t { int16_t btns; - struct joystick_t ljs; - struct joystick_t rjs; -} classic_ctrl_t; + struct connect_wii_joystick_t ljs; + struct connect_wii_joystick_t rjs; +} connect_wii_classic_ctrl_t; /* Generic expansion device plugged into wiimote. */ -typedef struct expansion_t +typedef struct connect_wii_expansion_t { /* Type of expansion attached. */ int type; union { - struct classic_ctrl_t classic; + struct connect_wii_classic_ctrl_t classic; } cc; -} expansion_t; +} connect_wii_expansion_t; /* Wiimote structure. */ -typedef struct wiimote_t +typedef struct connect_wii_wiimote_t { /* User specified ID. */ int unid; @@ -150,10 +150,10 @@ typedef struct wiimote_t /* The state of the connection handshake. */ uint8_t handshake_state; /* Wiimote expansion device. */ - struct expansion_t exp; + struct connect_wii_expansion_t exp; /* What buttons have just been pressed. */ uint16_t btns; -} wiimote; +} connect_wii_wiimote; /* Macro to manage states */ #define WIIMOTE_IS_SET(wm, s) ((wm->state & (s)) == (s)) @@ -161,7 +161,7 @@ typedef struct wiimote_t #define WIIMOTE_DISABLE_STATE(wm, s) (wm->state &= ~(s)) #define WIIMOTE_TOGGLE_STATE(wm, s) ((wm->state & (s)) ? WIIMOTE_DISABLE_STATE(wm, s) : WIIMOTE_ENABLE_STATE(wm, s)) -static bool wiimote_is_connected(struct wiimote_t *wm) +static bool wiimote_is_connected(struct connect_wii_wiimote_t *wm) { return WIIMOTE_IS_SET(wm, WIIMOTE_STATE_CONNECTED); } @@ -171,7 +171,7 @@ static bool wiimote_is_connected(struct wiimote_t *wm) * * This function should replace any write()s directly to the wiimote device. */ -static int wiimote_send(struct wiimote_t* wm, +static int wiimote_send(struct connect_wii_wiimote_t* wm, uint8_t report_type, uint8_t* msg, int len) { uint8_t buf[32] = {0}; @@ -198,7 +198,7 @@ static int wiimote_send(struct wiimote_t* wm, * * Controller status includes: battery level, LED status, expansions. */ -static void wiimote_status(struct wiimote_t* wm) +static void wiimote_status(struct connect_wii_wiimote_t* wm) { uint8_t buf = 0; @@ -212,7 +212,7 @@ static void wiimote_status(struct wiimote_t* wm) wiimote_send(wm, WM_CMD_CTRL_STATUS, &buf, 1); } -static void wiimote_data_report(struct wiimote_t* wm, uint8_t type) +static void wiimote_data_report(struct connect_wii_wiimote_t* wm, uint8_t type) { uint8_t buf[2] = {0x0,0x0}; @@ -235,7 +235,7 @@ static void wiimote_data_report(struct wiimote_t* wm, uint8_t type) * - WIIMOTE_LED_4 */ -static void wiimote_set_leds(struct wiimote_t* wm, int leds) +static void wiimote_set_leds(struct connect_wii_wiimote_t* wm, int leds) { uint8_t buf = {0}; @@ -250,7 +250,7 @@ static void wiimote_set_leds(struct wiimote_t* wm, int leds) } /* Find what buttons are pressed. */ -static void wiimote_pressed_buttons(struct wiimote_t* wm, uint8_t* msg) +static void wiimote_pressed_buttons(struct connect_wii_wiimote_t* wm, uint8_t* msg) { /* Convert to big endian. */ int16_t *val = (int16_t*)msg; @@ -259,8 +259,8 @@ static void wiimote_pressed_buttons(struct wiimote_t* wm, uint8_t* msg) wm->btns = now; } -static int wiimote_classic_ctrl_handshake(struct wiimote_t* wm, - struct classic_ctrl_t* cc, uint8_t* data, uint16_t len) +static int wiimote_classic_ctrl_handshake(struct connect_wii_wiimote_t* wm, + struct connect_wii_classic_ctrl_t* cc, uint8_t* data, uint16_t len) { memset(cc, 0, sizeof(*cc)); wm->exp.type = EXP_CLASSIC; @@ -300,7 +300,7 @@ static void wiimote_process_axis(struct axis_t* axis, uint8_t raw) axis->value = 0; } -static void classic_ctrl_event(struct classic_ctrl_t* cc, uint8_t* msg) +static void classic_ctrl_event(struct connect_wii_classic_ctrl_t* cc, uint8_t* msg) { if (!cc) return; @@ -317,7 +317,7 @@ static void classic_ctrl_event(struct classic_ctrl_t* cc, uint8_t* msg) /* * Handle data from the expansion. */ -static void wiimote_handle_expansion(struct wiimote_t* wm, uint8_t* msg) +static void wiimote_handle_expansion(struct connect_wii_wiimote_t* wm, uint8_t* msg) { switch (wm->exp.type) { @@ -332,7 +332,7 @@ static void wiimote_handle_expansion(struct wiimote_t* wm, uint8_t* msg) /* * Write data to the wiimote. */ -static int wiimote_write_data(struct wiimote_t* wm, +static int wiimote_write_data(struct connect_wii_wiimote_t* wm, uint32_t addr, uint8_t* data, uint8_t len) { uint8_t buf[21] = {0}; /* the payload is always 23 */ @@ -376,7 +376,7 @@ static int wiimote_write_data(struct wiimote_t* wm, * finishes. */ -static int wiimote_read_data(struct wiimote_t* wm, uint32_t addr, +static int wiimote_read_data(struct connect_wii_wiimote_t* wm, uint32_t addr, uint16_t len) { uint8_t buf[6] = {0}; @@ -403,14 +403,14 @@ static int wiimote_read_data(struct wiimote_t* wm, uint32_t addr, /* * Get initialization data from the Wiimote. * - * When first called for a wiimote_t structure, a request + * When first called for a connect_wii_wiimote_t structure, a request * is sent to the wiimote for initialization information. * This includes factory set accelerometer data. * The handshake will be concluded when the wiimote responds * with this data. */ -static int wiimote_handshake(struct wiimote_t* wm, +static int wiimote_handshake(struct connect_wii_wiimote_t* wm, uint8_t event, uint8_t* data, uint16_t len) { if (!wm) @@ -603,7 +603,7 @@ static int wiimote_handshake(struct wiimote_t* wm, static void hidpad_wii_deinit(void *data) { - struct wiimote_t* device = (struct wiimote_t*)data; + struct connect_wii_wiimote_t* device = (struct connect_wii_wiimote_t*)data; if (device) free(device); @@ -613,8 +613,8 @@ static void* hidpad_wii_init(void *data, uint32_t slot, send_control_t ptr) { struct pad_connection *connection = (struct pad_connection*)data; - struct wiimote_t *device = (struct wiimote_t*) - calloc(1, sizeof(struct wiimote_t)); + struct connect_wii_wiimote_t *device = (struct connect_wii_wiimote_t*) + calloc(1, sizeof(struct connect_wii_wiimote_t)); if (!device) goto error; @@ -639,7 +639,7 @@ error: static int16_t hidpad_wii_get_axis(void *data, unsigned axis) { - struct wiimote_t* device = (struct wiimote_t*)data; + struct connect_wii_wiimote_t* device = (struct connect_wii_wiimote_t*)data; if (!device) return 0; @@ -668,7 +668,7 @@ static int16_t hidpad_wii_get_axis(void *data, unsigned axis) static uint64_t hidpad_wii_get_buttons(void *data) { - struct wiimote_t* device = (struct wiimote_t*)data; + struct connect_wii_wiimote_t* device = (struct connect_wii_wiimote_t*)data; if (!device) return 0; return device->btns | (device->exp.cc.classic.btns << 16); @@ -677,7 +677,7 @@ static uint64_t hidpad_wii_get_buttons(void *data) static void hidpad_wii_packet_handler(void *data, uint8_t *packet, uint16_t size) { - struct wiimote_t* device = (struct wiimote_t*)data; + struct connect_wii_wiimote_t* device = (struct connect_wii_wiimote_t*)data; uint8_t *msg = packet + 2; if (!device) From 4b3d520c1962bcaa6fa8bcb79a637cd938d8a7e1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 15:04:59 +0200 Subject: [PATCH 393/822] Buildfix --- runloop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runloop.c b/runloop.c index c40f42afd2..dc4a30e7a0 100644 --- a/runloop.c +++ b/runloop.c @@ -293,7 +293,7 @@ static bool check_movie_init(global_t *global) rarch_main_msg_queue_push_new( MSG_FAILED_TO_START_MOVIE_RECORD, 1, 180, true); - RARCH_ERR(msg_hash_to_str(MSG_FAILED_TO_START_MOVIE_RECORD)); + RARCH_ERR("%s\n", msg_hash_to_str(MSG_FAILED_TO_START_MOVIE_RECORD)); } return ret; From d7cde1675d6ce0fdce988e6e86ec395c110fe166 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 15:05:40 +0200 Subject: [PATCH 394/822] Build fixes --- record/record_driver.c | 2 +- runloop.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/record/record_driver.c b/record/record_driver.c index 779a98d625..36c4e39f05 100644 --- a/record/record_driver.c +++ b/record/record_driver.c @@ -414,7 +414,7 @@ bool recording_init(void) if (!record_driver_init_first(&driver->recording, &driver->recording_data, ¶ms)) { - RARCH_ERR(msg_hash_to_str(MSG_FAILED_TO_START_RECORDING)); + RARCH_ERR("%s\n", msg_hash_to_str(MSG_FAILED_TO_START_RECORDING)); event_command(EVENT_CMD_GPU_RECORD_DEINIT); return false; diff --git a/runloop.c b/runloop.c index dc4a30e7a0..81cccd11e1 100644 --- a/runloop.c +++ b/runloop.c @@ -423,7 +423,7 @@ static void check_shader_dir(global_t *global, shader); if (!video_driver_set_shader(type, shader)) - RARCH_WARN(msg_hash_to_str(MSG_FAILED_TO_APPLY_SHADER)); + RARCH_WARN("%s\n", msg_hash_to_str(MSG_FAILED_TO_APPLY_SHADER)); } #ifdef HAVE_MENU From ec039cc2b69c6631dcd856c1056ee5f526630a5a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 15:10:53 +0200 Subject: [PATCH 395/822] Buildfix --- record/record_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/record/record_driver.c b/record/record_driver.c index 36c4e39f05..9b3b5d4e96 100644 --- a/record/record_driver.c +++ b/record/record_driver.c @@ -301,7 +301,7 @@ bool recording_init(void) if (global->inited.core.type == CORE_TYPE_DUMMY) { - RARCH_WARN(msg_hash_to_str(MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED)); + RARCH_WARN("%s\n", msg_hash_to_str(MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED)); return false; } From 3824812ac9d0b8b1f01ce4e67b79f95c76116283 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 15:14:01 +0200 Subject: [PATCH 396/822] (dir_list.c) Prevent implicit memsets --- libretro-common/file/dir_list.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 38a512a100..774b34bc68 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -232,8 +232,8 @@ struct string_list *dir_list_new(const char *dir, do { + char file_path[PATH_MAX_LENGTH]; int ret = 0; - char file_path[PATH_MAX_LENGTH] = {0}; const char *name = ffd.cFileName; const char *file_ext = path_get_extension(name); bool is_dir = ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; @@ -264,8 +264,8 @@ error: while ((entry = readdir(directory))) { + char file_path[PATH_MAX_LENGTH]; int ret = 0; - char file_path[PATH_MAX_LENGTH] = {0}; const char *name = entry->d_name; const char *file_ext = path_get_extension(name); bool is_dir = false; From 5caf0627f88bc7dc8e17e29f6f73baf326858060 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 15:24:23 +0200 Subject: [PATCH 397/822] Replace some references to sys_timer_usleep --- audio/librsound.c | 19 +++---------------- logger/netlogger/logger.c | 10 +++++----- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/audio/librsound.c b/audio/librsound.c index bf4abf3fcf..30f5e3d2bb 100644 --- a/audio/librsound.c +++ b/audio/librsound.c @@ -46,6 +46,7 @@ #define NETWORK_COMPAT_HEADERS 1 #endif + #ifdef NETWORK_COMPAT_HEADERS #include #include @@ -71,6 +72,7 @@ #include #include +#include /* **************************************************************************** @@ -748,22 +750,7 @@ static int64_t rsnd_get_time_usec(void) static void rsnd_sleep(int msec) { -#if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) - sys_timer_usleep(1000 * msec); -#elif defined(PSP) - sceKernelDelayThread(1000 * msec); -#elif defined(_WIN32) - Sleep(msec); -#elif defined(XENON) - udelay(1000 * msec); -#elif defined(GEKKO) || defined(__PSL1GHT__) || defined(__QNX__) - usleep(1000 * msec); -#else - struct timespec tv = {0}; - tv.tv_sec = msec / 1000; - tv.tv_nsec = (msec % 1000) * 1000000; - nanosleep(&tv, NULL); -#endif + rarch_sleep(msec); } diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index ede9eaf112..851d8aeaad 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -34,6 +34,8 @@ #include #include +#include + #ifndef GEKKO #include #endif @@ -92,7 +94,7 @@ static int if_up_with(int index) if (state == CELL_NET_CTL_STATE_IPObtained) break; - sys_timer_usleep(500 * 1000); + rarch_sleep(500); timeout_count--; if (index && timeout_count < 0) { @@ -103,17 +105,15 @@ static int if_up_with(int index) #elif defined(GEKKO) char t[16]; if (if_config(t, NULL, NULL, TRUE) < 0) - { return -1; - } #endif sock=socket(AF_INET, SOCK_DGRAM, 0); target.sin_family = AF_INET; - target.sin_port = htons(PC_DEVELOPMENT_UDP_PORT); + target.sin_port = htons(PC_DEVELOPMENT_UDP_PORT); #ifdef GEKKO - target.sin_len = 8; + target.sin_len = 8; #endif inet_pton(AF_INET, PC_DEVELOPMENT_IP_ADDRESS, &target.sin_addr); From 5b67aaaa17663a989c0a3e1d35631d7807b34816 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 15:40:23 +0200 Subject: [PATCH 398/822] Start making the logging code more portable --- Makefile.griffin | 6 +++++- libretro-common/include/net/net_compat.h | 9 ++++++++- logger/netlogger/logger.c | 14 -------------- logger/netlogger/psl1ght_logger.c | 6 +----- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index a50ba349fe..ac5e473104 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -144,11 +144,15 @@ OBJ = griffin/griffin.o $(PLATOBJS) INCLUDE += -I./libretro-common/include ifeq ($(HAVE_LOGGER), 1) -CFLAGS += -DHAVE_LOGGER +CFLAGS += -DHAVE_LOGGER CFLAGS += -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) INCLUDE += -Ilogger/netlogger endif +ifeq ($(platform), wii) +CFLAGS += -DHAVE_SOCKET_LEGACY +endif + ifeq ($(HAVE_LIBRETRO_MANAGEMENT), 1) CFLAGS += -DHAVE_LIBRETRO_MANAGEMENT endif diff --git a/libretro-common/include/net/net_compat.h b/libretro-common/include/net/net_compat.h index d96a138562..8a3236782e 100644 --- a/libretro-common/include/net/net_compat.h +++ b/libretro-common/include/net/net_compat.h @@ -47,6 +47,10 @@ #include #include +#elif defined(GEKKO) + +#include + #else #include #include @@ -60,11 +64,12 @@ #include #include #include -#include #if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) #include #include +#include +#include #ifndef EWOULDBLOCK #define EWOULDBLOCK SYS_NET_EWOULDBLOCK @@ -76,6 +81,8 @@ #endif +#include + static INLINE bool isagain(int bytes) { #if defined(_WIN32) diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index 851d8aeaad..e6e8c037ce 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -16,17 +16,6 @@ #if defined(__CELLOS_LV2__) #include "../../defines/ps3_defines.h" -#ifndef __PSL1GHT__ -#include -#include -#include -#include -#endif -#include -#include -#include -#elif defined(GEKKO) -#include #endif #include @@ -35,10 +24,7 @@ #include #include - -#ifndef GEKKO #include -#endif #include "logger.h" diff --git a/logger/netlogger/psl1ght_logger.c b/logger/netlogger/psl1ght_logger.c index 3e1a38d418..006a66d63c 100644 --- a/logger/netlogger/psl1ght_logger.c +++ b/logger/netlogger/psl1ght_logger.c @@ -14,7 +14,7 @@ * If not, see . */ -#include +#include #include #include @@ -23,10 +23,6 @@ #include #include -#include -#include -#include - #include "logger.h" #if !defined(PC_DEVELOPMENT_IP_ADDRESS) From 4f80afe03ec56b4428364b66e839d23e7b95d7cb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 16:02:10 +0200 Subject: [PATCH 399/822] Move code to net_compat.h --- libretro-common/include/net/net_compat.h | 13 +++++++++++++ logger/netlogger/logger.c | 13 ------------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libretro-common/include/net/net_compat.h b/libretro-common/include/net/net_compat.h index 8a3236782e..4b6044cf7d 100644 --- a/libretro-common/include/net/net_compat.h +++ b/libretro-common/include/net/net_compat.h @@ -83,6 +83,19 @@ #include +#ifdef GEKKO +#define sendto(s, msg, len, flags, addr, tolen) net_sendto(s, msg, len, 0, addr, 8) +#define socket(domain, type, protocol) net_socket(domain, type, protocol) + +static INLINE int inet_pton(int af, const char *src, void *dst) +{ + if (af != AF_INET) + return -1; + + return inet_aton (src, dst); +} +#endif + static INLINE bool isagain(int bytes) { #if defined(_WIN32) diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index e6e8c037ce..3a14638def 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -41,19 +41,6 @@ static int sock; static struct sockaddr_in target; static char sendbuf[4096]; -#ifdef GEKKO -#define sendto(s, msg, len, flags, addr, tolen) net_sendto(s, msg, len, 0, addr, 8) -#define socket(domain, type, protocol) net_socket(domain, type, protocol) - -static int inet_pton(int af, const char *src, void *dst) -{ - if (af != AF_INET) - return -1; - - return inet_aton (src, dst); -} -#endif - static int if_up_with(int index) { (void)index; From e32b99ac0c0e012f2e2c62670d8dfedb5c5031e5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 16:24:38 +0200 Subject: [PATCH 400/822] Consolidate PSL1GHT logger into logger/netlogger/logger.c and expand net/net_compat.c --- griffin/griffin.c | 10 ++- libretro-common/include/net/net_compat.h | 5 ++ libretro-common/net/net_compat.c | 67 ++++++++++++++++++++ logger/netlogger/logger.c | 77 +++-------------------- logger/netlogger/psl1ght_logger.c | 79 ------------------------ 5 files changed, 86 insertions(+), 152 deletions(-) delete mode 100644 logger/netlogger/psl1ght_logger.c diff --git a/griffin/griffin.c b/griffin/griffin.c index 65a7607552..bbf9af772d 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -26,17 +26,15 @@ #include #endif +#if defined(HAVE_LOGGER) && !defined(ANDROID) +#include "../logger/netlogger/logger.c" +#endif + /*============================================================ CONSOLE EXTENSIONS ============================================================ */ #ifdef RARCH_CONSOLE -#if defined(HAVE_LOGGER) && defined(__PSL1GHT__) -#include "../logger/netlogger/psl1ght_logger.c" -#elif defined(HAVE_LOGGER) && !defined(ANDROID) -#include "../logger/netlogger/logger.c" -#endif - #ifdef HW_DOL #include "../ngc/ssaram.c" #endif diff --git a/libretro-common/include/net/net_compat.h b/libretro-common/include/net/net_compat.h index 4b6044cf7d..9f07dae808 100644 --- a/libretro-common/include/net/net_compat.h +++ b/libretro-common/include/net/net_compat.h @@ -192,5 +192,10 @@ bool network_init(void); **/ void network_deinit(void); +int network_interface_up(struct sockaddr_in *target, int index, + const char *ip_address, unsigned udp_port, int *s); + +int network_interface_down(struct sockaddr_in *target, int *s); + #endif diff --git a/libretro-common/net/net_compat.c b/libretro-common/net/net_compat.c index b0cfbf6920..37d8d29c84 100644 --- a/libretro-common/net/net_compat.c +++ b/libretro-common/net/net_compat.c @@ -201,3 +201,70 @@ void network_deinit(void) cellSysmoduleUnloadModule(CELL_SYSMODULE_NET); #endif } + +int network_interface_up(struct sockaddr_in *target, int index, + const char *ip_address, unsigned udp_port, int *s) +{ + int ret = 0; + + (void)index; + +#ifdef __CELLOS_LV2__ + int state, timeout_count = 10; + ret = cellNetCtlInit(); + if (ret < 0) + { + printf("cellNetCtlInit() failed(%x)\n", ret); + return -1; + } + + for (;;) + { + ret = cellNetCtlGetState(&state); + if (ret < 0) + { + printf("cellNetCtlGetState() failed(%x)\n", ret); + return -1; + } + if (state == CELL_NET_CTL_STATE_IPObtained) + break; + + rarch_sleep(500); + timeout_count--; + if (index && timeout_count < 0) + { + printf("if_up_with(%d) timeout\n", index); + return 0; + } + } +#elif defined(GEKKO) + char t[16]; + if (if_config(t, NULL, NULL, TRUE) < 0) + ret = -1; +#endif + if (ret < 0) + return -1; + + *s = socket(AF_INET, SOCK_DGRAM, 0); + + target->sin_family = AF_INET; + target->sin_port = htons(udp_port); +#ifdef GEKKO + target->sin_len = 8; +#endif + + inet_pton(AF_INET, ip_address, &target->sin_addr); + + return 0; +} + +int network_interface_down(struct sockaddr_in *target, int *s) +{ + socket_close(*s); +#ifdef __CELLOS_LV2__ + cellNetCtlTerm(); +#elif defined(GEKKO) && !defined(HW_DOL) + net_deinit(); +#endif + return 0; +} diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index 3a14638def..6d0f89ec1f 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -14,7 +14,7 @@ * If not, see . */ -#if defined(__CELLOS_LV2__) +#if defined(__CELLOS_LV2__) || defined(__PSL1GHT__) #include "../../defines/ps3_defines.h" #endif @@ -41,78 +41,21 @@ static int sock; static struct sockaddr_in target; static char sendbuf[4096]; -static int if_up_with(int index) -{ - (void)index; -#ifdef __CELLOS_LV2__ - int timeout_count = 10; - int state; - int ret; - - ret = cellNetCtlInit(); - if (ret < 0) - { - printf("cellNetCtlInit() failed(%x)\n", ret); - return -1; - } - - for (;;) - { - ret = cellNetCtlGetState(&state); - if (ret < 0) - { - printf("cellNetCtlGetState() failed(%x)\n", ret); - return -1; - } - if (state == CELL_NET_CTL_STATE_IPObtained) - break; - - rarch_sleep(500); - timeout_count--; - if (index && timeout_count < 0) - { - printf("if_up_with(%d) timeout\n", index); - return 0; - } - } -#elif defined(GEKKO) - char t[16]; - if (if_config(t, NULL, NULL, TRUE) < 0) - return -1; -#endif - - sock=socket(AF_INET, SOCK_DGRAM, 0); - - target.sin_family = AF_INET; - target.sin_port = htons(PC_DEVELOPMENT_UDP_PORT); -#ifdef GEKKO - target.sin_len = 8; -#endif - - inet_pton(AF_INET, PC_DEVELOPMENT_IP_ADDRESS, &target.sin_addr); - - return 0; -} - -static int if_down(int sid) -{ - (void)sid; -#ifdef __CELLOS_LV2__ - cellNetCtlTerm(); -#elif defined(GEKKO) && !defined(HW_DOL) - net_deinit(); -#endif - return 0; -} - void logger_init (void) { - g_sid = if_up_with(1); + if (network_interface_up(&target, 1, + PC_DEVELOPMENT_IP_ADDRESS,PC_DEVELOPMENT_UDP_PORT, &g_sid) < 0) + { + printf("Could not initialize network logger interface.\n"); + } } void logger_shutdown (void) { - if_down(g_sid); + if (network_interface_down(&target, &g_sid) < 0) + { + printf("Could not deinitialize network logger interface.\n"); + } } void logger_send(const char *__format,...) diff --git a/logger/netlogger/psl1ght_logger.c b/logger/netlogger/psl1ght_logger.c deleted file mode 100644 index 006a66d63c..0000000000 --- a/logger/netlogger/psl1ght_logger.c +++ /dev/null @@ -1,79 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2015 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include - -#include -#include -#include -#include -#include -#include - -#include "logger.h" - -#if !defined(PC_DEVELOPMENT_IP_ADDRESS) -#error "An IP address for the PC logging server was not set in the Makefile, cannot continue." -#endif - -#if !defined(PC_DEVELOPMENT_UDP_PORT) -#error "An UDP port for the PC logging server was not set in the Makefile, cannot continue." -#endif - -int s; -struct sockaddr_in server; - -#define INITSTRING "Logging Started\n" -#define BYESTRING "Logging Stopped\n" - -void logger_init (void) -{ - s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); - memset(&server, 0, sizeof(server)); - server.sin_len = sizeof(server); - server.sin_family = AF_INET; - inet_pton(AF_INET, PC_DEVELOPMENT_IP_ADDRESS, &server.sin_addr); - server.sin_port = htons(PC_DEVELOPMENT_UDP_PORT); - - sendto(s, INITSTRING, strlen(INITSTRING), 0, (struct sockaddr*)&server, sizeof(server)); -} - -void logger_shutdown (void) -{ - sendto(s, BYESTRING, strlen(BYESTRING), 0, (struct sockaddr*)&server, sizeof(server)); - close(s); -} - -void logger_send(const char *format,...) -{ - char log_buf[1024]; - va_list va; - int max; - - if(s == -1) - return; - - max = sizeof(logBuffer); - va_start(va, format); - - int wrote = vsnprintf(logBuffer, max, format, va); - - if(wrote > max) - wrote = max; - - va_end(va); - sendto(s, logBuffer, wrote, 0, (struct sockaddr *)&server, sizeof(server)); -} From 532c73210ba9549a6d9eb3fa82acc9f7bdfb533c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 16:27:50 +0200 Subject: [PATCH 401/822] Add !defined(__PSL1GHT__) defines --- libretro-common/net/net_compat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libretro-common/net/net_compat.c b/libretro-common/net/net_compat.c index 37d8d29c84..27dc83b98a 100644 --- a/libretro-common/net/net_compat.c +++ b/libretro-common/net/net_compat.c @@ -209,7 +209,7 @@ int network_interface_up(struct sockaddr_in *target, int index, (void)index; -#ifdef __CELLOS_LV2__ +#if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) int state, timeout_count = 10; ret = cellNetCtlInit(); if (ret < 0) @@ -261,7 +261,7 @@ int network_interface_up(struct sockaddr_in *target, int index, int network_interface_down(struct sockaddr_in *target, int *s) { socket_close(*s); -#ifdef __CELLOS_LV2__ +#if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) cellNetCtlTerm(); #elif defined(GEKKO) && !defined(HW_DOL) net_deinit(); From aa1881febf82af70a91d8574885c5bdd7267eed0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 16:28:35 +0200 Subject: [PATCH 402/822] Cleanups --- libretro-common/net/net_compat.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/libretro-common/net/net_compat.c b/libretro-common/net/net_compat.c index 27dc83b98a..158e49426f 100644 --- a/libretro-common/net/net_compat.c +++ b/libretro-common/net/net_compat.c @@ -213,29 +213,21 @@ int network_interface_up(struct sockaddr_in *target, int index, int state, timeout_count = 10; ret = cellNetCtlInit(); if (ret < 0) - { - printf("cellNetCtlInit() failed(%x)\n", ret); return -1; - } for (;;) { ret = cellNetCtlGetState(&state); if (ret < 0) - { - printf("cellNetCtlGetState() failed(%x)\n", ret); return -1; - } + if (state == CELL_NET_CTL_STATE_IPObtained) break; rarch_sleep(500); timeout_count--; if (index && timeout_count < 0) - { - printf("if_up_with(%d) timeout\n", index); return 0; - } } #elif defined(GEKKO) char t[16]; From e00ea900ed713f456ab7cdfa5f61c9865a75f0eb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 16:48:53 +0200 Subject: [PATCH 403/822] Refactor logger headers --- libretro-common/include/retro_log.h | 91 ++++++++++++++++++++++++- logger/netlogger/logger.c | 2 +- logger/netlogger/logger.h | 31 --------- logger/netlogger/logger_override.h | 102 ---------------------------- 4 files changed, 90 insertions(+), 136 deletions(-) delete mode 100644 logger/netlogger/logger.h delete mode 100644 logger/netlogger/logger_override.h diff --git a/libretro-common/include/retro_log.h b/libretro-common/include/retro_log.h index c4e7a9a5d9..26454df5db 100644 --- a/libretro-common/include/retro_log.h +++ b/libretro-common/include/retro_log.h @@ -86,8 +86,95 @@ static aslclient asl_client; static int asl_inited = 0; #endif -#if defined(RARCH_CONSOLE) && defined(HAVE_LOGGER) && defined(RARCH_INTERNAL) -#include +#if defined(HAVE_LOGGER) && defined(RARCH_INTERNAL) + +#define BUFSIZE (64 * 1024) +#define TCPDUMP_STACKSIZE (16 * 1024) +#define TCPDUMP_PRIO (2048) + +void logger_init (void); +void logger_shutdown (void); +void logger_send (const char *__format,...); +void logger_send_v(const char *__format, va_list args); + +#ifdef IS_SALAMANDER + +#define RARCH_LOG(...) do { \ + logger_send("RetroArch Salamander: " __VA_ARGS__); \ +} while(0) + +#define RARCH_LOG_V(tag, fmt, vp) do { \ + logger_send("RetroArch Salamander: " tag); \ + logger_send_v(fmt, vp); \ +} while (0) + +#define RARCH_LOG_OUTPUT(...) do { \ + logger_send("RetroArch Salamander [OUTPUT] :: " __VA_ARGS__); \ +} while(0) + +#define RARCH_LOG_OUTPUT_V(tag, fmt, vp) do { \ + logger_send("RetroArch Salamander [OUTPUT] :: " tag); \ + logger_send_v(fmt, vp); \ +} while (0) + +#define RARCH_ERR(...) do { \ + logger_send("RetroArch Salamander [ERROR] :: " __VA_ARGS__); \ +} while(0) + +#define RARCH_ERR_V(tag, fmt, vp) do { \ + logger_send("RetroArch Salamander [ERROR] :: " tag); \ + logger_send_v(fmt, vp); \ +} while (0) + +#define RARCH_WARN(...) do { \ + logger_send("RetroArch Salamander [WARN] :: " __VA_ARGS__); \ +} while(0) + +#define RARCH_WARN_V(tag, fmt, vp) do { \ + logger_send("RetroArch Salamander [WARN] :: " tag); \ + logger_send_v(fmt, vp); \ +} while (0) + +#else + +#define RARCH_LOG(...) do { \ + logger_send("RetroArch: " __VA_ARGS__); \ +} while(0) + +#define RARCH_LOG_V(tag, fmt, vp) do { \ + logger_send("RetroArch: " tag); \ + logger_send_v(fmt, vp); \ +} while (0) + +#define RARCH_ERR(...) do { \ + logger_send("RetroArch [ERROR] :: " __VA_ARGS__); \ +} while(0) + +#define RARCH_ERR_V(tag, fmt, vp) do { \ + logger_send("RetroArch [ERROR] :: " tag); \ + logger_send_v(fmt, vp); \ +} while (0) + +#define RARCH_WARN(...) do { \ + logger_send("RetroArch [WARN] :: " __VA_ARGS__); \ +} while(0) + +#define RARCH_WARN_V(tag, fmt, vp) do { \ + logger_send("RetroArch [WARN] :: " tag); \ + logger_send_v(fmt, vp); \ +} while (0) + +#define RARCH_LOG_OUTPUT(...) do { \ + logger_send("RetroArch [OUTPUT] :: " __VA_ARGS__); \ +} while(0) + +#define RARCH_LOG_OUTPUT_V(tag, fmt, vp) do { \ + logger_send("RetroArch [OUTPUT] :: " tag); \ + logger_send_v(fmt, vp); \ +} while (0) + +#endif + #else static INLINE void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap) { diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index 6d0f89ec1f..fefd0416d4 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -26,7 +26,7 @@ #include #include -#include "logger.h" +#include #if !defined(PC_DEVELOPMENT_IP_ADDRESS) #error "An IP address for the PC logging server was not set in the Makefile, cannot continue." diff --git a/logger/netlogger/logger.h b/logger/netlogger/logger.h deleted file mode 100644 index c96bb70f26..0000000000 --- a/logger/netlogger/logger.h +++ /dev/null @@ -1,31 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2015 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#ifndef _LOGGER_H_ -#define _LOGGER_H_ - -#include - -#define BUFSIZE (64 * 1024) -#define TCPDUMP_STACKSIZE (16 * 1024) -#define TCPDUMP_PRIO (2048) - -void logger_init (void); -void logger_shutdown (void); -void logger_send (const char *__format,...); -void logger_send_v(const char *__format, va_list args); - -#endif diff --git a/logger/netlogger/logger_override.h b/logger/netlogger/logger_override.h deleted file mode 100644 index 08376e0976..0000000000 --- a/logger/netlogger/logger_override.h +++ /dev/null @@ -1,102 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2015 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#ifndef __RARCH_LOGGER_OVERRIDE_H -#define __RARCH_LOGGER_OVERRIDE_H - -#if defined(HAVE_LOGGER) -#include "logger.h" - -#ifdef IS_SALAMANDER - -#define RARCH_LOG(...) do { \ - logger_send("RetroArch Salamander: " __VA_ARGS__); \ -} while(0) - -#define RARCH_LOG_V(tag, fmt, vp) do { \ - logger_send("RetroArch Salamander: " tag); \ - logger_send_v(fmt, vp); \ -} while (0) - -#define RARCH_LOG_OUTPUT(...) do { \ - logger_send("RetroArch Salamander [OUTPUT] :: " __VA_ARGS__); \ -} while(0) - -#define RARCH_LOG_OUTPUT_V(tag, fmt, vp) do { \ - logger_send("RetroArch Salamander [OUTPUT] :: " tag); \ - logger_send_v(fmt, vp); \ -} while (0) - -#define RARCH_ERR(...) do { \ - logger_send("RetroArch Salamander [ERROR] :: " __VA_ARGS__); \ -} while(0) - -#define RARCH_ERR_V(tag, fmt, vp) do { \ - logger_send("RetroArch Salamander [ERROR] :: " tag); \ - logger_send_v(fmt, vp); \ -} while (0) - -#define RARCH_WARN(...) do { \ - logger_send("RetroArch Salamander [WARN] :: " __VA_ARGS__); \ -} while(0) - -#define RARCH_WARN_V(tag, fmt, vp) do { \ - logger_send("RetroArch Salamander [WARN] :: " tag); \ - logger_send_v(fmt, vp); \ -} while (0) - -#else - -#define RARCH_LOG(...) do { \ - logger_send("RetroArch: " __VA_ARGS__); \ -} while(0) - -#define RARCH_LOG_V(tag, fmt, vp) do { \ - logger_send("RetroArch: " tag); \ - logger_send_v(fmt, vp); \ -} while (0) - -#define RARCH_ERR(...) do { \ - logger_send("RetroArch [ERROR] :: " __VA_ARGS__); \ -} while(0) - -#define RARCH_ERR_V(tag, fmt, vp) do { \ - logger_send("RetroArch [ERROR] :: " tag); \ - logger_send_v(fmt, vp); \ -} while (0) - -#define RARCH_WARN(...) do { \ - logger_send("RetroArch [WARN] :: " __VA_ARGS__); \ -} while(0) - -#define RARCH_WARN_V(tag, fmt, vp) do { \ - logger_send("RetroArch [WARN] :: " tag); \ - logger_send_v(fmt, vp); \ -} while (0) - -#define RARCH_LOG_OUTPUT(...) do { \ - logger_send("RetroArch [OUTPUT] :: " __VA_ARGS__); \ -} while(0) - -#define RARCH_LOG_OUTPUT_V(tag, fmt, vp) do { \ - logger_send("RetroArch [OUTPUT] :: " tag); \ - logger_send_v(fmt, vp); \ -} while (0) - -#endif - -#endif - -#endif From 31e093dadb34edf5dc25b4188fde67dcadaea182 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 17:06:39 +0200 Subject: [PATCH 404/822] (Android) Fix Android build --- android/phoenix/jni/Android.mk | 6 +++--- tasks/task_http.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/android/phoenix/jni/Android.mk b/android/phoenix/jni/Android.mk index b8781786a9..5893a94777 100644 --- a/android/phoenix/jni/Android.mk +++ b/android/phoenix/jni/Android.mk @@ -3,7 +3,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := retroarch-jni RARCH_DIR := ../../.. -LOCAL_CFLAGS += -std=gnu99 -Wall -DHAVE_LOGGER -DRARCH_DUMMY_LOG -DHAVE_ZLIB -DHAVE_MMAP -DRARCH_INTERNAL +LOCAL_CFLAGS += -std=gnu99 -Wall -DRARCH_DUMMY_LOG -DHAVE_ZLIB -DHAVE_MMAP -DRARCH_INTERNAL LOCAL_LDLIBS := -llog -lz LOCAL_SRC_FILES := apk-extract/apk-extract.c $(RARCH_DIR)/libretro-common/file/file_extract.c $(RARCH_DIR)/libretro-common/file/file_path.c $(RARCH_DIR)/file_ops.c $(RARCH_DIR)/libretro-common/string/string_list.c $(RARCH_DIR)/libretro-common/compat/compat.c @@ -11,8 +11,8 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(RARCH_DIR)/libretro-common/include/ include $(BUILD_SHARED_LIBRARY) -HAVE_NEON := 1 -HAVE_LOGGER := 1 +HAVE_NEON := 1 +HAVE_LOGGER := 0 include $(CLEAR_VARS) ifeq ($(TARGET_ARCH),arm) diff --git a/tasks/task_http.c b/tasks/task_http.c index 63e72b6ae6..88aa5ea303 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -147,7 +147,7 @@ static int cb_generic_download(void *data, size_t len, { if (!zlib_parse_file(output_path, NULL, zlib_extract_core_callback, (void*)dir_path)) - RARCH_LOG(msg_hash_to_str(MSG_COULD_NOT_PROCESS_ZIP_FILE)); + RARCH_LOG("%s\n", msg_hash_to_str(MSG_COULD_NOT_PROCESS_ZIP_FILE)); if (path_file_exists(output_path)) remove(output_path); From 3e7d92ddca3712855ee3d199fd53f5edf9965338 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 17:08:52 +0200 Subject: [PATCH 405/822] (Android) Another buildfix --- android/phoenix/jni/Android.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/phoenix/jni/Android.mk b/android/phoenix/jni/Android.mk index 5893a94777..8fb288d01a 100644 --- a/android/phoenix/jni/Android.mk +++ b/android/phoenix/jni/Android.mk @@ -47,8 +47,8 @@ LOCAL_SRC_FILES += $(RARCH_DIR)/griffin/griffin.c ifeq ($(HAVE_LOGGER), 1) LOCAL_CFLAGS += -DHAVE_LOGGER - LOGGER_LDLIBS := -llog endif +LOGGER_LDLIBS := -llog ifeq ($(GLES),3) GLES_LIB := -lGLESv3 From 2dabf432632a816d6c40a2019e30a25b2c633e62 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 17:30:28 +0200 Subject: [PATCH 406/822] (libretro-common) Simplify pixconv.c --- libretro-common/gfx/scaler/pixconv.c | 273 ++++----------------------- 1 file changed, 41 insertions(+), 232 deletions(-) diff --git a/libretro-common/gfx/scaler/pixconv.c b/libretro-common/gfx/scaler/pixconv.c index f7d3264b35..a0048f2322 100644 --- a/libretro-common/gfx/scaler/pixconv.c +++ b/libretro-common/gfx/scaler/pixconv.c @@ -35,23 +35,25 @@ #include #endif -#if defined(__SSE2_) void conv_rgb565_0rgb1555(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w; + unsigned h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint16_t *output = (uint16_t*)output_; +#if defined(__SSE2_) int max_width = width - 7; const __m128i hi_mask = _mm_set1_epi16(0x7fe0); const __m128i lo_mask = _mm_set1_epi16(0x1f); +#endif for (h = 0; h < height; h++, output += out_stride >> 1, input += in_stride >> 1) { +#if defined(__SSE2_) for (w = 0; w < max_width; w += 8) { const __m128i in = _mm_loadu_si128((const __m128i*)(input + w)); @@ -59,29 +61,9 @@ void conv_rgb565_0rgb1555(void *output_, const void *input_, __m128i lo = _mm_and_si128(in, lo_mask); _mm_storeu_si128((__m128i*)(output + w), _mm_or_si128(hi, lo)); } +#endif for (; w < width; w++) - { - uint16_t col = input[w]; - uint16_t hi = (col >> 1) & 0x7fe0; - uint16_t lo = col & 0x1f; - output[w] = hi | lo; - } - } -} -#else -void conv_rgb565_0rgb1555(void *output_, const void *input_, - int width, int height, - int out_stride, int in_stride) -{ - int h, w; - const uint16_t *input = (const uint16_t*)input_; - uint16_t *output = (uint16_t*)output_; - - for (h = 0; h < height; - h++, output += out_stride >> 1, input += in_stride >> 1) - { - for (w = 0; w < width; w++) { uint16_t col = input[w]; uint16_t hi = (col >> 1) & 0x7fe0; @@ -91,27 +73,27 @@ void conv_rgb565_0rgb1555(void *output_, const void *input_, } } -#endif - -#if defined(__SSE2__) void conv_0rgb1555_rgb565(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w; + unsigned h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint16_t *output = (uint16_t*)output_; +#if defined(__SSE2__) int max_width = width - 7; const __m128i hi_mask = _mm_set1_epi16( (int16_t)((0x1f << 11) | (0x1f << 6))); const __m128i lo_mask = _mm_set1_epi16(0x1f); const __m128i glow_mask = _mm_set1_epi16(1 << 5); +#endif for (h = 0; h < height; h++, output += out_stride >> 1, input += in_stride >> 1) { +#if defined(__SSE2__) for (w = 0; w < max_width; w += 8) { const __m128i in = _mm_loadu_si128((const __m128i*)(input + w)); @@ -121,6 +103,7 @@ void conv_0rgb1555_rgb565(void *output_, const void *input_, _mm_storeu_si128((__m128i*)(output + w), _mm_or_si128(rg, _mm_or_si128(b, glow))); } +#endif for (; w < width; w++) { @@ -132,39 +115,16 @@ void conv_0rgb1555_rgb565(void *output_, const void *input_, } } } -#else -void conv_0rgb1555_rgb565(void *output_, const void *input_, - int width, int height, - int out_stride, int in_stride) -{ - int h, w; - const uint16_t *input = (const uint16_t*)input_; - uint16_t *output = (uint16_t*)output_; - for (h = 0; h < height; - h++, output += out_stride >> 1, input += in_stride >> 1) - { - for (w = 0; w < width; w++) - { - uint16_t col = input[w]; - uint16_t rg = (col << 1) & ((0x1f << 11) | (0x1f << 6)); - uint16_t b = col & 0x1f; - uint16_t glow = (col >> 4) & (1 << 5); - output[w] = rg | b | glow; - } - } -} -#endif - -#if defined(__SSE2__) void conv_0rgb1555_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w; + unsigned h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint32_t *output = (uint32_t*)output_; +#ifdef __SSE2__ const __m128i pix_mask_r = _mm_set1_epi16(0x1f << 10); const __m128i pix_mask_gb = _mm_set1_epi16(0x1f << 5); const __m128i mul15_mid = _mm_set1_epi16(0x4200); @@ -172,10 +132,12 @@ void conv_0rgb1555_argb8888(void *output_, const void *input_, const __m128i a = _mm_set1_epi16(0x00ff); int max_width = width - 7; +#endif for (h = 0; h < height; h++, output += out_stride >> 2, input += in_stride >> 1) { +#ifdef __SSE2__ for (w = 0; w < max_width; w += 8) { __m128i res_lo_bg, res_hi_bg; @@ -203,6 +165,7 @@ void conv_0rgb1555_argb8888(void *output_, const void *input_, _mm_storeu_si128((__m128i*)(output + w + 0), res_lo); _mm_storeu_si128((__m128i*)(output + w + 4), res_hi); } +#endif for (; w < width; w++) { @@ -214,47 +177,20 @@ void conv_0rgb1555_argb8888(void *output_, const void *input_, g = (g << 3) | (g >> 2); b = (b << 3) | (b >> 2); - output[w] = (0xff << 24) | (r << 16) | (g << 8) | (b << 0); - } - } -} -#else -void conv_0rgb1555_argb8888(void *output_, const void *input_, - int width, int height, - int out_stride, int in_stride) -{ - int h, w; - const uint16_t *input = (const uint16_t*)input_; - uint32_t *output = (uint32_t*)output_; - - for (h = 0; h < height; - h++, output += out_stride >> 2, input += in_stride >> 1) - { - for (w = 0; w < width; w++) - { - uint32_t col = input[w]; - uint32_t r = (col >> 10) & 0x1f; - uint32_t g = (col >> 5) & 0x1f; - uint32_t b = (col >> 0) & 0x1f; - r = (r << 3) | (r >> 2); - g = (g << 3) | (g >> 2); - b = (b << 3) | (b >> 2); - output[w] = (0xffu << 24) | (r << 16) | (g << 8) | (b << 0); } } } -#endif -#if defined(__SSE2__) void conv_rgb565_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w; + unsigned h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint32_t *output = (uint32_t*)output_; +#if defined(__SSE2__) const __m128i pix_mask_r = _mm_set1_epi16(0x1f << 10); const __m128i pix_mask_g = _mm_set1_epi16(0x3f << 5); const __m128i pix_mask_b = _mm_set1_epi16(0x1f << 5); @@ -264,10 +200,12 @@ void conv_rgb565_argb8888(void *output_, const void *input_, const __m128i a = _mm_set1_epi16(0x00ff); int max_width = width - 7; +#endif for (h = 0; h < height; h++, output += out_stride >> 2, input += in_stride >> 1) { +#if defined(__SSE2__) for (w = 0; w < max_width; w += 8) { __m128i res_lo, res_hi; @@ -294,6 +232,7 @@ void conv_rgb565_argb8888(void *output_, const void *input_, _mm_storeu_si128((__m128i*)(output + w + 0), res_lo); _mm_storeu_si128((__m128i*)(output + w + 4), res_hi); } +#endif for (; w < width; w++) { @@ -305,37 +244,10 @@ void conv_rgb565_argb8888(void *output_, const void *input_, g = (g << 2) | (g >> 4); b = (b << 3) | (b >> 2); - output[w] = (0xff << 24) | (r << 16) | (g << 8) | (b << 0); - } - } -} -#else -void conv_rgb565_argb8888(void *output_, const void *input_, - int width, int height, - int out_stride, int in_stride) -{ - int h, w; - const uint16_t *input = (const uint16_t*)input_; - uint32_t *output = (uint32_t*)output_; - - for (h = 0; h < height; - h++, output += out_stride >> 2, input += in_stride >> 1) - { - for (w = 0; w < width; w++) - { - uint32_t col = input[w]; - uint32_t r = (col >> 11) & 0x1f; - uint32_t g = (col >> 5) & 0x3f; - uint32_t b = (col >> 0) & 0x1f; - r = (r << 3) | (r >> 2); - g = (g << 2) | (g >> 4); - b = (b << 3) | (b >> 2); - output[w] = (0xffu << 24) | (r << 16) | (g << 8) | (b << 0); } } } -#endif void conv_rgba4444_argb8888(void *output_, const void *input_, int width, int height, @@ -433,15 +345,17 @@ static INLINE void store_bgr24_sse2(void *output, __m128i a, _mm_or_si128(c0, _mm_or_si128(c1, _mm_or_si128(c2, _mm_or_si128(c3, _mm_or_si128(c4, c5)))))); } +#endif void conv_0rgb1555_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w; + unsigned h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint8_t *output = (uint8_t*)output_; +#if defined(__SSE2__) const __m128i pix_mask_r = _mm_set1_epi16(0x1f << 10); const __m128i pix_mask_gb = _mm_set1_epi16(0x1f << 5); const __m128i mul15_mid = _mm_set1_epi16(0x4200); @@ -449,12 +363,14 @@ void conv_0rgb1555_bgr24(void *output_, const void *input_, const __m128i a = _mm_set1_epi16(0x00ff); int max_width = width - 15; +#endif for (h = 0; h < height; h++, output += out_stride, input += in_stride >> 1) { uint8_t *out = output; +#if defined(__SSE2__) for (w = 0; w < max_width; w += 16, out += 48) { __m128i res_lo_bg0, res_lo_bg1, res_hi_bg0, res_hi_bg1, @@ -497,6 +413,7 @@ void conv_0rgb1555_bgr24(void *output_, const void *input_, /* Non-POT pixel sizes ftl :( */ store_bgr24_sse2(out, res_lo0, res_hi0, res_lo1, res_hi1); } +#endif for (; w < width; w++) { @@ -519,10 +436,11 @@ void conv_rgb565_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w; + unsigned h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint8_t *output = (uint8_t*)output_; +#if defined(__SSE2__) const __m128i pix_mask_r = _mm_set1_epi16(0x1f << 10); const __m128i pix_mask_g = _mm_set1_epi16(0x3f << 5); const __m128i pix_mask_b = _mm_set1_epi16(0x1f << 5); @@ -532,11 +450,13 @@ void conv_rgb565_bgr24(void *output_, const void *input_, const __m128i a = _mm_set1_epi16(0x00ff); int max_width = width - 15; +#endif for (h = 0; h < height; h++, output += out_stride, input += in_stride >> 1) { uint8_t *out = output; +#if defined(__SSE2__) for (w = 0; w < max_width; w += 16, out += 48) { __m128i res_lo_bg0, res_hi_bg0, res_lo_ra0, res_hi_ra0; @@ -578,6 +498,7 @@ void conv_rgb565_bgr24(void *output_, const void *input_, store_bgr24_sse2(out, res_lo0, res_hi0, res_lo1, res_hi1); } +#endif for (; w < width; w++) { @@ -595,65 +516,6 @@ void conv_rgb565_bgr24(void *output_, const void *input_, } } } -#else -void conv_0rgb1555_bgr24(void *output_, const void *input_, - int width, int height, - int out_stride, int in_stride) -{ - int h, w; - const uint16_t *input = (const uint16_t*)input_; - uint8_t *output = (uint8_t*)output_; - - for (h = 0; h < height; - h++, output += out_stride, input += in_stride >> 1) - { - uint8_t *out = output; - for (w = 0; w < width; w++) - { - uint32_t col = input[w]; - uint32_t b = (col >> 0) & 0x1f; - uint32_t g = (col >> 5) & 0x1f; - uint32_t r = (col >> 10) & 0x1f; - b = (b << 3) | (b >> 2); - g = (g << 3) | (g >> 2); - r = (r << 3) | (r >> 2); - - *out++ = b; - *out++ = g; - *out++ = r; - } - } -} - -void conv_rgb565_bgr24(void *output_, const void *input_, - int width, int height, - int out_stride, int in_stride) -{ - int h, w; - const uint16_t *input = (const uint16_t*)input_; - uint8_t *output = (uint8_t*)output_; - - for (h = 0; h < height; - h++, output += out_stride, input += in_stride >> 1) - { - uint8_t *out = output; - for (w = 0; w < width; w++) - { - uint32_t col = input[w]; - uint32_t b = (col >> 0) & 0x1f; - uint32_t g = (col >> 5) & 0x3f; - uint32_t r = (col >> 11) & 0x1f; - b = (b << 3) | (b >> 2); - g = (g << 2) | (g >> 4); - r = (r << 3) | (r >> 2); - - *out++ = b; - *out++ = g; - *out++ = r; - } - } -} -#endif void conv_bgr24_argb8888(void *output_, const void *input_, int width, int height, @@ -699,22 +561,24 @@ void conv_argb8888_0rgb1555(void *output_, const void *input_, } } -#if defined(__SSE2__) void conv_argb8888_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w; + unsigned h, w = 0; const uint32_t *input = (const uint32_t*)input_; uint8_t *output = (uint8_t*)output_; +#if defined(__SSE2__) int max_width = width - 15; +#endif for (h = 0; h < height; h++, output += out_stride, input += in_stride >> 2) { uint8_t *out = output; +#if defined(__SSE2__) for (w = 0; w < max_width; w += 16, out += 48) { store_bgr24_sse2(out, @@ -723,6 +587,7 @@ void conv_argb8888_bgr24(void *output_, const void *input_, _mm_loadu_si128((const __m128i*)(input + w + 8)), _mm_loadu_si128((const __m128i*)(input + w + 12))); } +#endif for (; w < width; w++) { @@ -733,29 +598,6 @@ void conv_argb8888_bgr24(void *output_, const void *input_, } } } -#else -void conv_argb8888_bgr24(void *output_, const void *input_, - int width, int height, - int out_stride, int in_stride) -{ - int h, w; - const uint32_t *input = (const uint32_t*)input_; - uint8_t *output = (uint8_t*)output_; - - for (h = 0; h < height; - h++, output += out_stride, input += in_stride >> 2) - { - uint8_t *out = output; - for (w = 0; w < width; w++) - { - uint32_t col = input[w]; - *out++ = (uint8_t)(col >> 0); - *out++ = (uint8_t)(col >> 8); - *out++ = (uint8_t)(col >> 16); - } - } -} -#endif void conv_argb8888_abgr8888(void *output_, const void *input_, int width, int height, @@ -785,15 +627,15 @@ void conv_argb8888_abgr8888(void *output_, const void *input_, #define YUV_MAT_V_R (90) #define YUV_MAT_V_G (-46) -#if defined(__SSE2__) void conv_yuyv_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w; + unsigned h, w = 0; const uint8_t *input = (const uint8_t*)input_; uint32_t *output = (uint32_t*)output_; +#if defined(__SSE2__) const __m128i mask_y = _mm_set1_epi16(0xffu); const __m128i mask_u = _mm_set1_epi32(0xffu << 8); const __m128i mask_v = _mm_set1_epi32(0xffu << 24); @@ -807,12 +649,14 @@ void conv_yuyv_argb8888(void *output_, const void *input_, const __m128i v_g_mul = _mm_set1_epi16(YUV_MAT_V_G); const __m128i a = _mm_cmpeq_epi16( _mm_setzero_si128(), _mm_setzero_si128()); +#endif for (h = 0; h < height; h++, output += out_stride >> 2, input += in_stride) { const uint8_t *src = input; uint32_t *dst = output; +#if defined(__SSE2__) /* Each loop processes 16 pixels. */ for (w = 0; w + 16 <= width; w += 16, src += 32, dst += 16) { @@ -895,6 +739,7 @@ void conv_yuyv_argb8888(void *output_, const void *input_, _mm_storeu_si128((__m128i*)(dst + 8), res2); _mm_storeu_si128((__m128i*)(dst + 12), res3); } +#endif /* Finish off the rest (if any) in C. */ for (; w < width; w += 2, src += 4, dst += 2) @@ -917,42 +762,6 @@ void conv_yuyv_argb8888(void *output_, const void *input_, } } } -#else -void conv_yuyv_argb8888(void *output_, const void *input_, - int width, int height, - int out_stride, int in_stride) -{ - int h, w; - const uint8_t *input = (const uint8_t*)input_; - uint32_t *output = (uint32_t*)output_; - - for (h = 0; h < height; - h++, output += out_stride >> 2, input += in_stride) - { - const uint8_t *src = input; - uint32_t *dst = output; - - for (w = 0; w < width; w += 2, src += 4, dst += 2) - { - int _y0 = src[0]; - int u = src[1] - 128; - int _y1 = src[2]; - int v = src[3] - 128; - - uint8_t r0 = clamp_8bit((YUV_MAT_Y * _y0 + YUV_MAT_V_R * v + YUV_OFFSET) >> YUV_SHIFT); - uint8_t g0 = clamp_8bit((YUV_MAT_Y * _y0 + YUV_MAT_U_G * u + YUV_MAT_V_G * v + YUV_OFFSET) >> YUV_SHIFT); - uint8_t b0 = clamp_8bit((YUV_MAT_Y * _y0 + YUV_MAT_U_B * u + YUV_OFFSET) >> YUV_SHIFT); - - uint8_t r1 = clamp_8bit((YUV_MAT_Y * _y1 + YUV_MAT_V_R * v + YUV_OFFSET) >> YUV_SHIFT); - uint8_t g1 = clamp_8bit((YUV_MAT_Y * _y1 + YUV_MAT_U_G * u + YUV_MAT_V_G * v + YUV_OFFSET) >> YUV_SHIFT); - uint8_t b1 = clamp_8bit((YUV_MAT_Y * _y1 + YUV_MAT_U_B * u + YUV_OFFSET) >> YUV_SHIFT); - - dst[0] = 0xff000000u | (r0 << 16) | (g0 << 8) | (b0 << 0); - dst[1] = 0xff000000u | (r1 << 16) | (g1 << 8) | (b1 << 0); - } - } -} -#endif void conv_copy(void *output_, const void *input_, int width, int height, From cd56d21003636cd65eee83cdeab72c1144a89be2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 18:45:42 +0200 Subject: [PATCH 407/822] (Wii) Compile in HAVE_NETWORKING if HAVE_LOGGER is defined --- Makefile.griffin | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile.griffin b/Makefile.griffin index ac5e473104..2f28fdf2e1 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -104,6 +104,9 @@ endif LIBS := -lfat $(WHOLE_START) -lretro_wii $(WHOLE_END) -logc -lwiiuse -lbte ifeq ($(USBGECKO), 1) LIBS += -ldb +endif +ifeq ($(HAVE_LOGGER), 1) + HAVE_NETWORKING=1 endif APP_BOOTER_DIR = wii/app_booter PLATOBJS := $(APP_BOOTER_DIR)/app_booter.binobj From 3336849e80154f17c4772d5a77a6096861f22ab8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 18:50:35 +0200 Subject: [PATCH 408/822] (wii) Define HAVE_NETPLAY --- Makefile.griffin | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.griffin b/Makefile.griffin index 2f28fdf2e1..35377bf5b0 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -107,6 +107,7 @@ ifeq ($(USBGECKO), 1) endif ifeq ($(HAVE_LOGGER), 1) HAVE_NETWORKING=1 + HAVE_NETPLAY=1 endif APP_BOOTER_DIR = wii/app_booter PLATOBJS := $(APP_BOOTER_DIR)/app_booter.binobj From 039b4e0454e9485eb2eff235628145dbcd24e49c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Aug 2015 18:57:07 +0200 Subject: [PATCH 409/822] Move code back to logger.c --- Makefile.griffin | 4 -- libretro-common/include/net/net_compat.h | 5 -- libretro-common/net/net_compat.c | 59 --------------------- logger/netlogger/logger.c | 67 ++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 68 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index 35377bf5b0..ac5e473104 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -104,10 +104,6 @@ endif LIBS := -lfat $(WHOLE_START) -lretro_wii $(WHOLE_END) -logc -lwiiuse -lbte ifeq ($(USBGECKO), 1) LIBS += -ldb -endif -ifeq ($(HAVE_LOGGER), 1) - HAVE_NETWORKING=1 - HAVE_NETPLAY=1 endif APP_BOOTER_DIR = wii/app_booter PLATOBJS := $(APP_BOOTER_DIR)/app_booter.binobj diff --git a/libretro-common/include/net/net_compat.h b/libretro-common/include/net/net_compat.h index 9f07dae808..4b6044cf7d 100644 --- a/libretro-common/include/net/net_compat.h +++ b/libretro-common/include/net/net_compat.h @@ -192,10 +192,5 @@ bool network_init(void); **/ void network_deinit(void); -int network_interface_up(struct sockaddr_in *target, int index, - const char *ip_address, unsigned udp_port, int *s); - -int network_interface_down(struct sockaddr_in *target, int *s); - #endif diff --git a/libretro-common/net/net_compat.c b/libretro-common/net/net_compat.c index 158e49426f..b0cfbf6920 100644 --- a/libretro-common/net/net_compat.c +++ b/libretro-common/net/net_compat.c @@ -201,62 +201,3 @@ void network_deinit(void) cellSysmoduleUnloadModule(CELL_SYSMODULE_NET); #endif } - -int network_interface_up(struct sockaddr_in *target, int index, - const char *ip_address, unsigned udp_port, int *s) -{ - int ret = 0; - - (void)index; - -#if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) - int state, timeout_count = 10; - ret = cellNetCtlInit(); - if (ret < 0) - return -1; - - for (;;) - { - ret = cellNetCtlGetState(&state); - if (ret < 0) - return -1; - - if (state == CELL_NET_CTL_STATE_IPObtained) - break; - - rarch_sleep(500); - timeout_count--; - if (index && timeout_count < 0) - return 0; - } -#elif defined(GEKKO) - char t[16]; - if (if_config(t, NULL, NULL, TRUE) < 0) - ret = -1; -#endif - if (ret < 0) - return -1; - - *s = socket(AF_INET, SOCK_DGRAM, 0); - - target->sin_family = AF_INET; - target->sin_port = htons(udp_port); -#ifdef GEKKO - target->sin_len = 8; -#endif - - inet_pton(AF_INET, ip_address, &target->sin_addr); - - return 0; -} - -int network_interface_down(struct sockaddr_in *target, int *s) -{ - socket_close(*s); -#if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) - cellNetCtlTerm(); -#elif defined(GEKKO) && !defined(HW_DOL) - net_deinit(); -#endif - return 0; -} diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index fefd0416d4..23591605bb 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -41,6 +41,73 @@ static int sock; static struct sockaddr_in target; static char sendbuf[4096]; +static int network_interface_up(struct sockaddr_in *target, int index, + const char *ip_address, unsigned udp_port, int *s) +{ + int ret = 0; + + (void)index; + +#if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) + int state, timeout_count = 10; + ret = cellNetCtlInit(); + if (ret < 0) + return -1; + + for (;;) + { + ret = cellNetCtlGetState(&state); + if (ret < 0) + return -1; + + if (state == CELL_NET_CTL_STATE_IPObtained) + break; + + rarch_sleep(500); + timeout_count--; + if (index && timeout_count < 0) + return 0; + } +#elif defined(GEKKO) + char t[16]; + if (if_config(t, NULL, NULL, TRUE) < 0) + ret = -1; +#endif + if (ret < 0) + return -1; + + *s = socket(AF_INET, SOCK_DGRAM, 0); + + target->sin_family = AF_INET; + target->sin_port = htons(udp_port); +#ifdef GEKKO + target->sin_len = 8; +#endif + + inet_pton(AF_INET, ip_address, &target->sin_addr); + + return 0; +} + +static int network_interface_down(struct sockaddr_in *target, int *s) +{ + int ret = 0; +#if defined(_WIN32) && !defined(_XBOX360) + /* WinSock has headers from the stone age. */ + ret = closesocket(*s); +#elif defined(__CELLOS_LV2__) + ret = socketclose(*s); +#else + ret = close(*s); +#endif +#if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) + cellNetCtlTerm(); +#elif defined(GEKKO) && !defined(HW_DOL) + net_deinit(); +#endif + return ret; +} + void logger_init (void) { if (network_interface_up(&target, 1, From 24a94490ab972130a6ad59fef496244ad4cac6ed Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 09:36:50 +0200 Subject: [PATCH 410/822] Remove some header includes --- input/drivers_hid/libusb_hid.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/input/drivers_hid/libusb_hid.c b/input/drivers_hid/libusb_hid.c index 7ba5eae7d5..aa5c9dcd37 100644 --- a/input/drivers_hid/libusb_hid.c +++ b/input/drivers_hid/libusb_hid.c @@ -19,8 +19,6 @@ #include #include #include "../connect/joypad_connection.h" -#include "../../driver.h" -#include "../../runloop.h" #include "../input_autodetect.h" #include "../input_hid_driver.h" From f95049e99c5b0e3c0a9e27cc32505a3966f51bf7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 09:48:38 +0200 Subject: [PATCH 411/822] Add wiiusb_hid driver courtesy of @xerpi --- Makefile.griffin | 6 + frontend/drivers/platform_gx.c | 2 +- griffin/griffin.c | 4 + input/connect/connect_ps4.c | 21 ++ input/drivers_hid/wiiusb_hid.c | 544 +++++++++++++++++++++++++++++++++ input/input_hid_driver.c | 3 + input/input_hid_driver.h | 1 + 7 files changed, 580 insertions(+), 1 deletion(-) create mode 100644 input/drivers_hid/wiiusb_hid.c diff --git a/Makefile.griffin b/Makefile.griffin index ac5e473104..3cc1f53bc2 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -88,6 +88,8 @@ else ifeq ($(platform), ps3-cobra) #TODO MEDIA_SHADER_DIR := ps3/iso/PS3_GAME/USRDIR/cores/shaders else ifeq ($(platform), wii) + HAVE_WIIUSB_HID := 1 + CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) LD = $(DEVKITPPC)/bin/powerpc-eabi-ld$(EXE_EXT) @@ -161,6 +163,10 @@ ifeq ($(HAVE_LIBSICKSAXIS), 1) CFLAGS += -DHAVE_LIBSICKSAXIS endif +ifeq ($(HAVE_WIIUSB_HID), 1) +CFLAGS += -DHAVE_WIIUSB_HID -DHAVE_HID +endif + ifeq ($(HAVE_LIBRETRODB), 1) CFLAGS += -DHAVE_LIBRETRODB endif diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index 936c3c4941..9fe0d9eadf 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -146,7 +146,7 @@ static void gx_devthread(void *a) int gx_logger_net(struct _reent *r, int fd, const char *ptr, size_t len) { static char temp[4000]; - size_t l = len >= 4000 ? 3999 : len; + size_t l = len >= 4000 ? 3999 : len - 1; memcpy(temp, ptr, l); temp[l] = 0; logger_send("%s", temp); diff --git a/griffin/griffin.c b/griffin/griffin.c index bbf9af772d..b98808fa23 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -379,6 +379,10 @@ INPUT (HID) #include "../input/drivers_hid/iohidmanager_hid.c" #endif +#ifdef HAVE_WIIUSB_HID +#include "../input/drivers_hid/wiiusb_hid.c" +#endif + #ifdef HAVE_HID #include "../input/connect/joypad_connection.c" #include "../input/connect/connect_ps3.c" diff --git a/input/connect/connect_ps4.c b/input/connect/connect_ps4.c index 967e3209cf..a55a8fe472 100644 --- a/input/connect/connect_ps4.c +++ b/input/connect/connect_ps4.c @@ -36,6 +36,26 @@ enum connect_ps4_dpad_states struct ps4buttons { +#ifdef MSB_FIRST + uint8_t triangle : 1; + uint8_t circle : 1; + uint8_t cross : 1; + uint8_t square : 1; + uint8_t dpad : 4; + + uint8_t r3 : 1; + uint8_t l3 : 1; + uint8_t options : 1; + uint8_t share : 1; + uint8_t r2 : 1; + uint8_t l2 : 1; + uint8_t r1 : 1; + uint8_t l1 : 1; + + uint8_t reportcounter : 6; + uint8_t touchpad : 1; + uint8_t ps : 1; +#else uint8_t dpad : 4; uint8_t square : 1; uint8_t cross : 1; @@ -54,6 +74,7 @@ struct ps4buttons uint8_t ps : 1; uint8_t touchpad : 1; uint8_t reportcounter : 6; +#endif }__attribute__((packed)); struct ps4 diff --git a/input/drivers_hid/wiiusb_hid.c b/input/drivers_hid/wiiusb_hid.c new file mode 100644 index 0000000000..89bd6fdcbf --- /dev/null +++ b/input/drivers_hid/wiiusb_hid.c @@ -0,0 +1,544 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2015 - Sergi Granell (xerpi) + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include +#include +#include "../connect/joypad_connection.h" +#include "../input_autodetect.h" +#include "../input_hid_driver.h" + +typedef struct wiiusb_hid +{ + joypad_connection_t *slots; + int hp; /* wiiusb_hotplug_callback_handle is just int */ + int quit; +} wiiusb_hid_t; + +struct wiiusb_adapter +{ + wiiusb_hid_t *hid; + volatile bool quitting; + usb_device_entry device; + int handle; + int interface_number; + int endpoint_in; + int endpoint_out; + int endpoint_in_max_size; + int endpoint_out_max_size; + + uint8_t manufacturer_name[255]; + uint8_t name[255]; + uint8_t *data; + + int slot; + + sthread_t *thread; + slock_t *send_control_lock; + fifo_buffer_t *send_control_buffer; + struct wiiusb_adapter *next; +}; + +static struct wiiusb_adapter adapters; + +static void adapter_thread(void *data) +{ + uint8_t __attribute__((aligned(32))) send_command_buf[4096]; + struct wiiusb_adapter *adapter = (struct wiiusb_adapter*)data; + wiiusb_hid_t *hid = adapter ? adapter->hid : NULL; + + if (!adapter) + return; + + while (!adapter->quitting) + { + size_t send_command_size; + int tmp; + int report_number; + int size = 0; + + slock_lock(adapter->send_control_lock); + if (fifo_read_avail(adapter->send_control_buffer) >= sizeof(send_command_size)) + { + fifo_read(adapter->send_control_buffer, &send_command_size, sizeof(send_command_size)); + if (fifo_read_avail(adapter->send_control_buffer) >= sizeof(send_command_size)) + { + fifo_read(adapter->send_control_buffer, send_command_buf, send_command_size); + USB_WriteIntrMsg(adapter->handle, adapter->endpoint_out, send_command_size, send_command_buf); + } + } + slock_unlock(adapter->send_control_lock); + + size = USB_ReadIntrMsg(adapter->handle, adapter->endpoint_in, adapter->endpoint_in_max_size, &adapter->data[0]); + /* RARCH_LOG("%p USB_ReadIntrMsg(%i, %i, %i, %p): %i\n", &adapter->data[0], + adapter->handle, adapter->endpoint_in, adapter->endpoint_in_max_size, &adapter->data[0], + size); */ + + //RARCH_LOG("%03i %03i %03i %03i\n", adapter->data[0], adapter->data[1], adapter->data[2], adapter->data[3], adapter->data[4]); + //memmove(&adapter->data[1], &adapter->data[0], 2048); + + if (adapter && hid && hid->slots && size) + pad_connection_packet(&hid->slots[adapter->slot], adapter->slot, + adapter->data - 1, size+1); + } +} + +static void wiiusb_hid_device_send_control(void *data, + uint8_t* data_buf, size_t size) +{ + struct wiiusb_adapter *adapter = (struct wiiusb_adapter*)data; + + if (!adapter) + return; + + slock_lock(adapter->send_control_lock); + + if (fifo_write_avail(adapter->send_control_buffer) >= size + sizeof(size)) + { + fifo_write(adapter->send_control_buffer, &size, sizeof(size)); + fifo_write(adapter->send_control_buffer, data_buf, size); + } + else + { + RARCH_WARN("adapter write buffer is full, cannot write send control\n"); + } + slock_unlock(adapter->send_control_lock); +} + +static void wiiusb_hid_device_add_autodetect(unsigned idx, + const char *device_name, const char *driver_name, + uint16_t dev_vid, uint16_t dev_pid) +{ + autoconfig_params_t params = {{0}}; + + params.idx = idx; + params.vid = dev_vid; + params.pid = dev_pid; + + strlcpy(params.name, device_name, sizeof(params.name)); + strlcpy(params.driver, driver_name, sizeof(params.driver)); + + input_config_autoconfigure_joypad(¶ms); +} + +static void wiiusb_get_description(usb_device_entry *device, + struct wiiusb_adapter *adapter, usb_devdesc *devdesc) +{ + unsigned char c; + unsigned i, k; + + for (c = 0; c < devdesc->bNumConfigurations; c++) + { + const usb_configurationdesc *config = &devdesc->configurations[c]; + for (i = 0; i < (int)config->bNumInterfaces; i++) + { + const usb_interfacedesc *inter = &config->interfaces[i]; +#if 0 + if (inter->bInterfaceClass == USB_CLASS_HID) +#endif + { + adapter->interface_number = (int)inter->bInterfaceNumber; + + for(k = 0; k < (int)inter->bNumEndpoints; k++) + { + const usb_endpointdesc *epdesc = &inter->endpoints[k]; + bool is_int = (epdesc->bmAttributes & 0x03) == USB_ENDPOINT_INTERRUPT; + bool is_out = (epdesc->bEndpointAddress & 0x80) == USB_ENDPOINT_OUT; + bool is_in = (epdesc->bEndpointAddress & 0x80) == USB_ENDPOINT_IN; + if (is_int) + { + if (is_in) + { + adapter->endpoint_in = epdesc->bEndpointAddress; + adapter->endpoint_in_max_size = epdesc->wMaxPacketSize; + } + if (is_out) + { + adapter->endpoint_out = epdesc->bEndpointAddress; + adapter->endpoint_out_max_size = epdesc->wMaxPacketSize; + } + } + } + } + break; + } + } +} + +static int remove_adapter(void *data, usb_device_entry *dev) +{ + struct wiiusb_adapter *adapter = (struct wiiusb_adapter*)&adapters; + struct wiiusb_hid *hid = (struct wiiusb_hid*)data; + + while (adapter->next == NULL) + return -1; + + if (&adapter->next->device == dev) + { + struct wiiusb_adapter *new_next = NULL; + const char *name = (const char*)adapter->next->name; + + input_config_autoconfigure_disconnect(adapter->slot, name); + + adapter->next->quitting = true; + sthread_join(adapter->next->thread); + + pad_connection_pad_deinit(&hid->slots[adapter->slot], adapter->slot); + + slock_free(adapter->send_control_lock); + fifo_free(adapter->send_control_buffer); + + free(adapter->data); + + USB_CloseDevice(&adapter->next->handle); + + new_next = adapter->next->next; + free(adapter->next); + adapter->next = new_next; + + return 0; + } + + adapter = adapter->next; + + return -1; +} + +static int wiiusb_hid_removalnotify_cb(int result, void *usrdata) +{ + wiiusb_hid_t *hid = (wiiusb_hid_t*)usrdata; + + if (!hid) + return -1; + + remove_adapter(hid, &adapters.next->device); + + return 0; +} + +static int add_adapter(void *data, usb_device_entry *dev) +{ + int rc; + usb_devdesc desc; + const char *device_name = NULL; + struct wiiusb_adapter *old_head = NULL; + struct wiiusb_hid *hid = (struct wiiusb_hid*)data; + struct wiiusb_adapter *adapter = (struct wiiusb_adapter*) + calloc(1, sizeof(struct wiiusb_adapter)); + + if (!adapter) + return -1; + + if (!hid) + { + free(adapter); + RARCH_ERR("Allocation of adapter failed.\n"); + return -1; + } + + if (USB_OpenDevice(dev->device_id, dev->vid, dev->pid, &adapter->handle) < 0) + { + RARCH_ERR("Error opening device 0x%p (VID/PID: %04x:%04x).\n", + (void*)&adapter->device, dev->vid, dev->pid); + free(adapter); + return -1; + } + + adapter->device = *dev; + + USB_GetDescriptors(adapter->handle, &desc); + + wiiusb_get_description(&adapter->device, adapter, &desc); + + if (adapter->endpoint_in == 0) + { + RARCH_ERR("Could not find HID config for device.\n"); + goto error; + } + + if (desc.iManufacturer) + { + USB_GetAsciiString(adapter->handle, desc.iManufacturer, 0, + sizeof(adapter->manufacturer_name), adapter->manufacturer_name); +#if 0 + RARCH_ERR(" Adapter Manufacturer name: %s\n", adapter->manufacturer_name); +#endif + } + + if (desc.iProduct) + { + USB_GetAsciiString(adapter->handle, desc.iProduct, 0, + sizeof(adapter->name), adapter->name); +#if 0 + RARCH_ERR(" Adapter name: %s\n", adapter->name); +#endif + } + + device_name = (const char *)adapter->name; + + if (adapter->name[0] == '\0') + { + strcpy(adapter->name, "dummydev"); + // goto error; + } + + adapter->send_control_lock = slock_new(); + adapter->send_control_buffer = fifo_new(4096); + + if (!adapter->send_control_lock || !adapter->send_control_buffer) + { + RARCH_ERR("Error creating send control buffer.\n"); + goto error; + } + + adapter->slot = pad_connection_pad_init(hid->slots, + device_name, desc.idVendor, desc.idProduct, + adapter, &wiiusb_hid_device_send_control); + + if (adapter->slot == -1) + goto error; + + if (!pad_connection_has_interface(hid->slots, adapter->slot)) + { + RARCH_ERR(" Interface not found (%s).\n", adapter->name); + goto error; + } + + RARCH_LOG("Interface found: [%s].\n", adapter->name); + + RARCH_LOG("Device 0x%p attached (VID/PID: %04x:%04x).\n", + adapter->device, desc.idVendor, desc.idProduct); + + wiiusb_hid_device_add_autodetect(adapter->slot, + device_name, wiiusb_hid.ident, desc.idVendor, desc.idProduct); + + adapter->hid = hid; + adapter->thread = sthread_create(adapter_thread, adapter); + + if (!adapter->thread) + { + RARCH_ERR("Error initializing adapter thread.\n"); + goto error; + } + + adapter->data = memalign(32, 2048); + + old_head = adapters.next; + adapters.next = adapter; + adapter->next = old_head; + + USB_FreeDescriptors(&desc); + + USB_DeviceRemovalNotifyAsync(adapter->handle, wiiusb_hid_removalnotify_cb, (void *)hid); + + return 0; + +error: + if (adapter->thread) + sthread_join(adapter->thread); + if (adapter->send_control_lock) + slock_free(adapter->send_control_lock); + if (adapter->send_control_buffer) + fifo_free(adapter->send_control_buffer); + if (adapter) + free(adapter); + USB_FreeDescriptors(&desc); + USB_CloseDevice(&adapter->handle); + return -1; +} + +static int wiiusb_hid_changenotify_cb(int result, void *usrdata) +{ + wiiusb_hid_t *hid = (wiiusb_hid_t*)usrdata; + + if (!hid) + return -1; + + /* usb_device_entry entries[8]; + u8 cnt = 0; + + USB_GetDeviceList(entries, 8, USB_CLASS_HID, &cnt); + + add_adapter((void *)hid, &entries[0]); */ + + // RARCH_LOG("Wii USB hid change notify callback\n"); + + USB_DeviceChangeNotifyAsync(USB_CLASS_HID, wiiusb_hid_changenotify_cb, usrdata); + + return 0; +} + +static bool wiiusb_hid_joypad_query(void *data, unsigned pad) +{ + return pad < MAX_USERS; +} + +static const char *wiiusb_hid_joypad_name(void *data, unsigned pad) +{ + /* TODO/FIXME - implement properly */ + if (pad >= MAX_USERS) + return NULL; + + return NULL; +} + +static uint64_t wiiusb_hid_joypad_get_buttons(void *data, unsigned port) +{ + wiiusb_hid_t *hid = (wiiusb_hid_t*)data; + if (hid) + return pad_connection_get_buttons(&hid->slots[port], port); + return 0; +} + +static bool wiiusb_hid_joypad_button(void *data, unsigned port, uint16_t joykey) +{ + uint64_t buttons = wiiusb_hid_joypad_get_buttons(data, port); + + if (joykey == NO_BTN) + return false; + + /* Check hat. */ + if (GET_HAT_DIR(joykey)) + return false; + + /* Check the button. */ + if ((port < MAX_USERS) && (joykey < 32)) + return ((buttons & (1 << joykey)) != 0); + return false; +} + +static bool wiiusb_hid_joypad_rumble(void *data, unsigned pad, + enum retro_rumble_effect effect, uint16_t strength) +{ + wiiusb_hid_t *hid = (wiiusb_hid_t*)data; + if (!hid) + return false; + return pad_connection_rumble(&hid->slots[pad], pad, effect, strength); +} + +static int16_t wiiusb_hid_joypad_axis(void *data, + unsigned port, uint32_t joyaxis) +{ + wiiusb_hid_t *hid = (wiiusb_hid_t*)data; + int16_t val = 0; + + if (joyaxis == AXIS_NONE) + return 0; + + if (AXIS_NEG_GET(joyaxis) < 4) + { + val = pad_connection_get_axis(&hid->slots[port], + port, AXIS_NEG_GET(joyaxis)); + + if (val >= 0) + val = 0; + } + else if(AXIS_POS_GET(joyaxis) < 4) + { + val = pad_connection_get_axis(&hid->slots[port], + port, AXIS_POS_GET(joyaxis)); + + if (val <= 0) + val = 0; + } + + return val; +} + +static void wiiusb_hid_free(void *data) +{ + wiiusb_hid_t *hid = (wiiusb_hid_t*)data; + + while (adapters.next) + if (remove_adapter(hid, &adapters.next->device) == -1) + RARCH_ERR("could not remove device %p\n", + adapters.next->device); + + pad_connection_destroy(hid->slots); + + // wiiusb_hotplug_deregister_callback(hid->ctx, hid->hp); + + USB_Deinitialize(); + + if (hid) + free(hid); +} + +static void *wiiusb_hid_init(void) +{ + unsigned i; + u8 count; + int ret; + usb_device_entry *dev_entries; + wiiusb_hid_t *hid = (wiiusb_hid_t*)calloc(1, sizeof(*hid)); + + if (!hid) + goto error; + + hid->slots = pad_connection_init(MAX_USERS); + + if (!hid->slots) + goto error; + + dev_entries = (usb_device_entry *)calloc(MAX_USERS, sizeof(*dev_entries)); + + if (!dev_entries) + goto error; + + USB_Initialize(); + + if (USB_GetDeviceList(dev_entries, MAX_USERS, USB_CLASS_HID, &count) < 0) + { + free(dev_entries); + goto error; + } + + for (i = 0; i < count; i++) + { + if (dev_entries[i].vid > 0 && dev_entries[i].pid > 0) + add_adapter(hid, &dev_entries[i]); + } + + free(dev_entries); + + USB_DeviceChangeNotifyAsync(USB_CLASS_HID, wiiusb_hid_changenotify_cb, (void *)hid); + + return hid; + +error: + wiiusb_hid_free(hid); + return NULL; +} + + +static void wiiusb_hid_poll(void *data) +{ + (void)data; +} + +hid_driver_t wiiusb_hid = { + wiiusb_hid_init, + wiiusb_hid_joypad_query, + wiiusb_hid_free, + wiiusb_hid_joypad_button, + wiiusb_hid_joypad_get_buttons, + wiiusb_hid_joypad_axis, + wiiusb_hid_poll, + wiiusb_hid_joypad_rumble, + wiiusb_hid_joypad_name, + "wiiusb", +}; diff --git a/input/input_hid_driver.c b/input/input_hid_driver.c index 02ec23ece2..018ff7e4bc 100644 --- a/input/input_hid_driver.c +++ b/input/input_hid_driver.c @@ -31,6 +31,9 @@ static hid_driver_t *hid_drivers[] = { #endif #ifdef HAVE_LIBUSB &libusb_hid, +#endif +#ifdef GEKKO + &wiiusb_hid, #endif &null_hid, NULL, diff --git a/input/input_hid_driver.h b/input/input_hid_driver.h index faa593579c..3bf0b24f19 100644 --- a/input/input_hid_driver.h +++ b/input/input_hid_driver.h @@ -46,6 +46,7 @@ struct hid_driver extern hid_driver_t iohidmanager_hid; extern hid_driver_t btstack_hid; extern hid_driver_t libusb_hid; +extern hid_driver_t wiiusb_hid; extern hid_driver_t null_hid; /** From 32551516900a9dd344f0d962b7cc72eae061693b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 10:00:27 +0200 Subject: [PATCH 412/822] (psp1) Indent nits --- psp1/kernelFunctionsPrx/main.c | 40 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/psp1/kernelFunctionsPrx/main.c b/psp1/kernelFunctionsPrx/main.c index ae2774d382..a17bc5a8b3 100644 --- a/psp1/kernelFunctionsPrx/main.c +++ b/psp1/kernelFunctionsPrx/main.c @@ -17,26 +17,26 @@ static SceUID main_thread_id; static int main_thread(SceSize args, void *argp) { - SceCtrlData paddata; + SceCtrlData paddata; - thread_active = 1; + thread_active = 1; while (thread_active) - { + { sceCtrlPeekBufferPositive(&paddata, 1); - buttons = paddata.Buttons; - sceKernelDelayThread(1000000/60); - } + buttons = paddata.Buttons; + sceKernelDelayThread(1000000/60); + } - sceKernelExitThread(0); + sceKernelExitThread(0); - return 0; + return 0; } unsigned int read_system_buttons(void) { - return buttons; + return buttons; } void exitspawn_kernel( const char* fileName, SceSize args, void * argp){ @@ -65,23 +65,23 @@ int module_start(SceSize args, void *argp) (void)args; (void)argp; - buttons = 0; - thread_active = 0; - main_thread_id = sceKernelCreateThread("main Thread", main_thread, 0x11, 0x200, 0, NULL); + buttons = 0; + thread_active = 0; + main_thread_id = sceKernelCreateThread("main Thread", main_thread, 0x11, 0x200, 0, NULL); if (main_thread >= 0) - sceKernelStartThread(main_thread_id, 0, 0); + sceKernelStartThread(main_thread_id, 0, 0); - return 0; + return 0; } int module_stop(void) { - if (main_thread_id >= 0) - { - thread_active = 0; - sceKernelWaitThreadEnd(main_thread_id, NULL); - } - return 0; + if (main_thread_id >= 0) + { + thread_active = 0; + sceKernelWaitThreadEnd(main_thread_id, NULL); + } + return 0; } From d92a24377d3e1a8e41d02b253ec2d7e676e10dee Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 10:05:13 +0200 Subject: [PATCH 413/822] (ALSA) Don't use messy TRY_ALSA macro --- audio/drivers/alsa.c | 75 +++++++++++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 25 deletions(-) diff --git a/audio/drivers/alsa.c b/audio/drivers/alsa.c index fa98672166..67263fe617 100644 --- a/audio/drivers/alsa.c +++ b/audio/drivers/alsa.c @@ -13,15 +13,11 @@ * If not, see . */ - -#include "../../driver.h" #include #include -#include "../../general.h" -#define TRY_ALSA(x) if (x < 0) { \ - goto error; \ - } +#include "../../driver.h" +#include "../../general.h" typedef struct alsa { @@ -73,43 +69,72 @@ static void *alsa_init(const char *device, unsigned rate, unsigned latency) if (device) alsa_dev = device; - TRY_ALSA(snd_pcm_open( - &alsa->pcm, alsa_dev, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK)); - TRY_ALSA(snd_pcm_hw_params_malloc(¶ms)); + if (snd_pcm_open( + &alsa->pcm, alsa_dev, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK) < 0) + goto error; + + if (snd_pcm_hw_params_malloc(¶ms) < 0) + goto error; + alsa->has_float = find_float_format(alsa->pcm, params); format = alsa->has_float ? SND_PCM_FORMAT_FLOAT : SND_PCM_FORMAT_S16; - TRY_ALSA(snd_pcm_hw_params_any(alsa->pcm, params)); - TRY_ALSA(snd_pcm_hw_params_set_access( - alsa->pcm, params, SND_PCM_ACCESS_RW_INTERLEAVED)); - TRY_ALSA(snd_pcm_hw_params_set_format(alsa->pcm, params, format)); - TRY_ALSA(snd_pcm_hw_params_set_channels(alsa->pcm, params, channels)); - TRY_ALSA(snd_pcm_hw_params_set_rate(alsa->pcm, params, rate, 0)); + if (snd_pcm_hw_params_any(alsa->pcm, params) < 0) + goto error; - TRY_ALSA(snd_pcm_hw_params_set_buffer_time_near( - alsa->pcm, params, &latency_usec, NULL)); - TRY_ALSA(snd_pcm_hw_params_set_periods_near( - alsa->pcm, params, &periods, NULL)); + if (snd_pcm_hw_params_set_access( + alsa->pcm, params, SND_PCM_ACCESS_RW_INTERLEAVED) < 0) + goto error; - TRY_ALSA(snd_pcm_hw_params(alsa->pcm, params)); + if (snd_pcm_hw_params_set_format(alsa->pcm, params, format) < 0) + goto error; + + if (snd_pcm_hw_params_set_channels(alsa->pcm, params, channels) < 0) + goto error; + + if (snd_pcm_hw_params_set_rate(alsa->pcm, params, rate, 0) < 0) + goto error; + + if (snd_pcm_hw_params_set_buffer_time_near( + alsa->pcm, params, &latency_usec, NULL) < 0) + goto error; + + if (snd_pcm_hw_params_set_periods_near( + alsa->pcm, params, &periods, NULL) < 0) + goto error; + + if (snd_pcm_hw_params(alsa->pcm, params) < 0) + goto error; /* Shouldn't have to bother with this, * but some drivers are apparently broken. */ if (snd_pcm_hw_params_get_period_size(params, &buffer_size, NULL)) snd_pcm_hw_params_get_period_size_min(params, &buffer_size, NULL); + RARCH_LOG("ALSA: Period size: %d frames\n", (int)buffer_size); + if (snd_pcm_hw_params_get_buffer_size(params, &buffer_size)) snd_pcm_hw_params_get_buffer_size_max(params, &buffer_size); + RARCH_LOG("ALSA: Buffer size: %d frames\n", (int)buffer_size); + alsa->buffer_size = snd_pcm_frames_to_bytes(alsa->pcm, buffer_size); alsa->can_pause = snd_pcm_hw_params_can_pause(params); + RARCH_LOG("ALSA: Can pause: %s.\n", alsa->can_pause ? "yes" : "no"); - TRY_ALSA(snd_pcm_sw_params_malloc(&sw_params)); - TRY_ALSA(snd_pcm_sw_params_current(alsa->pcm, sw_params)); - TRY_ALSA(snd_pcm_sw_params_set_start_threshold( - alsa->pcm, sw_params, buffer_size / 2)); - TRY_ALSA(snd_pcm_sw_params(alsa->pcm, sw_params)); + if (snd_pcm_sw_params_malloc(&sw_params) < 0) + goto error; + + if (snd_pcm_sw_params_current(alsa->pcm, sw_params) < 0) + goto error; + + if (snd_pcm_sw_params_set_start_threshold( + alsa->pcm, sw_params, buffer_size / 2) < 0) + goto error; + + if (snd_pcm_sw_params(alsa->pcm, sw_params) < 0) + goto error; snd_pcm_hw_params_free(params); snd_pcm_sw_params_free(sw_params); From 626592a7a65f2e21c255daa27c307dea507ceed5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 10:25:25 +0200 Subject: [PATCH 414/822] (CoreAudio) Use rthreads --- audio/drivers/coreaudio.c | 58 +++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/audio/drivers/coreaudio.c b/audio/drivers/coreaudio.c index d07cb04ea4..06abc31752 100644 --- a/audio/drivers/coreaudio.c +++ b/audio/drivers/coreaudio.c @@ -14,12 +14,11 @@ * If not, see . */ -#include "../../driver.h" -#include "../../general.h" -#include #include #include -#include + +#include +#include #if TARGET_OS_IPHONE #include @@ -31,6 +30,9 @@ #include #include +#include "../../driver.h" +#include "../../general.h" + #if defined(__powerpc__) || defined(__ppc__) || defined(__POWERPC__) #ifndef OSX_PPC @@ -41,8 +43,8 @@ typedef struct coreaudio { - pthread_mutex_t lock; - pthread_cond_t cond; + slock_t *lock; + scond_t *cond; #ifdef OSX_PPC ComponentInstance dev; @@ -79,8 +81,10 @@ static void coreaudio_free(void *data) if (dev->buffer) fifo_free(dev->buffer); - pthread_mutex_destroy(&dev->lock); - pthread_cond_destroy(&dev->cond); + if (dev->lock) + slock_free(dev->lock); + if (dev->cond) + scond_free(dev->cond); free(dev); } @@ -106,7 +110,7 @@ static OSStatus audio_write_cb(void *userdata, write_avail = io_data->mBuffers[0].mDataByteSize; outbuf = io_data->mBuffers[0].mData; - pthread_mutex_lock(&dev->lock); + slock_lock(dev->lock); if (fifo_read_avail(dev->buffer) < write_avail) { @@ -115,16 +119,16 @@ static OSStatus audio_write_cb(void *userdata, /* Seems to be needed. */ memset(outbuf, 0, write_avail); - pthread_mutex_unlock(&dev->lock); + slock_unlock(dev->lock); /* Technically possible to deadlock without. */ - pthread_cond_signal(&dev->cond); + scond_signal(dev->cond); return noErr; } fifo_read(dev->buffer, outbuf, write_avail); - pthread_mutex_unlock(&dev->lock); - pthread_cond_signal(&dev->cond); + slock_unlock(dev->lock); + scond_signal(dev->cond); return noErr; } @@ -215,8 +219,8 @@ static void *coreaudio_init(const char *device, if (!dev) return NULL; - pthread_mutex_init(&dev->lock, NULL); - pthread_cond_init(&dev->cond, NULL); + dev->lock = slock_new(); + dev->cond = scond_new(); #if TARGET_OS_IPHONE if (!session_initialized) @@ -341,21 +345,15 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) size_t written = 0; #if TARGET_OS_IPHONE - struct timespec timeout; struct timeval time; - - gettimeofday(&time, 0); - - memset(&timeout, 0, sizeof(timeout)); - timeout.tv_sec = time.tv_sec + 3; - timeout.tv_nsec = time.tv_usec * 1000; + gettimeofday(&time, NULL); #endif while (!g_interrupted && size > 0) { size_t write_avail; - pthread_mutex_lock(&dev->lock); + slock_lock(dev->lock); write_avail = fifo_write_avail(dev->buffer); if (write_avail > size) @@ -368,19 +366,19 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) if (dev->nonblock) { - pthread_mutex_unlock(&dev->lock); + slock_unlock(dev->lock); break; } #if TARGET_OS_IPHONE - if (write_avail == 0 && pthread_cond_timedwait( - &dev->cond, &dev->lock, &timeout) == ETIMEDOUT) + if (write_avail == 0 && scond_wait_timeout( + dev->cond, dev->lock, time.tv_usec) == ETIMEDOUT) g_interrupted = true; #else if (write_avail == 0) - pthread_cond_wait(&dev->cond, &dev->lock); + scond_wait(dev->cond, dev->lock); #endif - pthread_mutex_unlock(&dev->lock); + slock_unlock(dev->lock); } return written; @@ -430,9 +428,9 @@ static size_t coreaudio_write_avail(void *data) size_t avail; coreaudio_t *dev = (coreaudio_t*)data; - pthread_mutex_lock(&dev->lock); + slock_lock(dev->lock); avail = fifo_write_avail(dev->buffer); - pthread_mutex_unlock(&dev->lock); + slock_unlock(dev->lock); return avail; } From 98f06988d6b228d26a758320582f73350f02db71 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 30 Aug 2015 10:32:19 +0200 Subject: [PATCH 415/822] Revert "(CoreAudio) Use rthreads" This reverts commit 626592a7a65f2e21c255daa27c307dea507ceed5. --- audio/drivers/coreaudio.c | 58 ++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/audio/drivers/coreaudio.c b/audio/drivers/coreaudio.c index 06abc31752..d07cb04ea4 100644 --- a/audio/drivers/coreaudio.c +++ b/audio/drivers/coreaudio.c @@ -14,11 +14,12 @@ * If not, see . */ +#include "../../driver.h" +#include "../../general.h" +#include #include #include - -#include -#include +#include #if TARGET_OS_IPHONE #include @@ -30,9 +31,6 @@ #include #include -#include "../../driver.h" -#include "../../general.h" - #if defined(__powerpc__) || defined(__ppc__) || defined(__POWERPC__) #ifndef OSX_PPC @@ -43,8 +41,8 @@ typedef struct coreaudio { - slock_t *lock; - scond_t *cond; + pthread_mutex_t lock; + pthread_cond_t cond; #ifdef OSX_PPC ComponentInstance dev; @@ -81,10 +79,8 @@ static void coreaudio_free(void *data) if (dev->buffer) fifo_free(dev->buffer); - if (dev->lock) - slock_free(dev->lock); - if (dev->cond) - scond_free(dev->cond); + pthread_mutex_destroy(&dev->lock); + pthread_cond_destroy(&dev->cond); free(dev); } @@ -110,7 +106,7 @@ static OSStatus audio_write_cb(void *userdata, write_avail = io_data->mBuffers[0].mDataByteSize; outbuf = io_data->mBuffers[0].mData; - slock_lock(dev->lock); + pthread_mutex_lock(&dev->lock); if (fifo_read_avail(dev->buffer) < write_avail) { @@ -119,16 +115,16 @@ static OSStatus audio_write_cb(void *userdata, /* Seems to be needed. */ memset(outbuf, 0, write_avail); - slock_unlock(dev->lock); + pthread_mutex_unlock(&dev->lock); /* Technically possible to deadlock without. */ - scond_signal(dev->cond); + pthread_cond_signal(&dev->cond); return noErr; } fifo_read(dev->buffer, outbuf, write_avail); - slock_unlock(dev->lock); - scond_signal(dev->cond); + pthread_mutex_unlock(&dev->lock); + pthread_cond_signal(&dev->cond); return noErr; } @@ -219,8 +215,8 @@ static void *coreaudio_init(const char *device, if (!dev) return NULL; - dev->lock = slock_new(); - dev->cond = scond_new(); + pthread_mutex_init(&dev->lock, NULL); + pthread_cond_init(&dev->cond, NULL); #if TARGET_OS_IPHONE if (!session_initialized) @@ -345,15 +341,21 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) size_t written = 0; #if TARGET_OS_IPHONE + struct timespec timeout; struct timeval time; - gettimeofday(&time, NULL); + + gettimeofday(&time, 0); + + memset(&timeout, 0, sizeof(timeout)); + timeout.tv_sec = time.tv_sec + 3; + timeout.tv_nsec = time.tv_usec * 1000; #endif while (!g_interrupted && size > 0) { size_t write_avail; - slock_lock(dev->lock); + pthread_mutex_lock(&dev->lock); write_avail = fifo_write_avail(dev->buffer); if (write_avail > size) @@ -366,19 +368,19 @@ static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) if (dev->nonblock) { - slock_unlock(dev->lock); + pthread_mutex_unlock(&dev->lock); break; } #if TARGET_OS_IPHONE - if (write_avail == 0 && scond_wait_timeout( - dev->cond, dev->lock, time.tv_usec) == ETIMEDOUT) + if (write_avail == 0 && pthread_cond_timedwait( + &dev->cond, &dev->lock, &timeout) == ETIMEDOUT) g_interrupted = true; #else if (write_avail == 0) - scond_wait(dev->cond, dev->lock); + pthread_cond_wait(&dev->cond, &dev->lock); #endif - slock_unlock(dev->lock); + pthread_mutex_unlock(&dev->lock); } return written; @@ -428,9 +430,9 @@ static size_t coreaudio_write_avail(void *data) size_t avail; coreaudio_t *dev = (coreaudio_t*)data; - slock_lock(dev->lock); + pthread_mutex_lock(&dev->lock); avail = fifo_write_avail(dev->buffer); - slock_unlock(dev->lock); + pthread_mutex_unlock(&dev->lock); return avail; } From d00c1ed44397cef6484e203eabfe694917447bbe Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 30 Aug 2015 10:46:34 +0200 Subject: [PATCH 416/822] Fix some bugs in pixconv.c refactor --- libretro-common/gfx/scaler/pixconv.c | 41 +++++++++++++++++----------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/libretro-common/gfx/scaler/pixconv.c b/libretro-common/gfx/scaler/pixconv.c index a0048f2322..dc68b0f715 100644 --- a/libretro-common/gfx/scaler/pixconv.c +++ b/libretro-common/gfx/scaler/pixconv.c @@ -39,7 +39,7 @@ void conv_rgb565_0rgb1555(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - unsigned h, w = 0; + int h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint16_t *output = (uint16_t*)output_; @@ -53,8 +53,9 @@ void conv_rgb565_0rgb1555(void *output_, const void *input_, for (h = 0; h < height; h++, output += out_stride >> 1, input += in_stride >> 1) { + w = 0; #if defined(__SSE2_) - for (w = 0; w < max_width; w += 8) + for (; w < max_width; w += 8) { const __m128i in = _mm_loadu_si128((const __m128i*)(input + w)); __m128i hi = _mm_and_si128(_mm_slli_epi16(in, 1), hi_mask); @@ -77,7 +78,7 @@ void conv_0rgb1555_rgb565(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - unsigned h, w = 0; + int h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint16_t *output = (uint16_t*)output_; @@ -93,8 +94,9 @@ void conv_0rgb1555_rgb565(void *output_, const void *input_, for (h = 0; h < height; h++, output += out_stride >> 1, input += in_stride >> 1) { + w = 0; #if defined(__SSE2__) - for (w = 0; w < max_width; w += 8) + for (; w < max_width; w += 8) { const __m128i in = _mm_loadu_si128((const __m128i*)(input + w)); __m128i rg = _mm_and_si128(_mm_slli_epi16(in, 1), hi_mask); @@ -120,7 +122,7 @@ void conv_0rgb1555_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - unsigned h, w = 0; + int h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint32_t *output = (uint32_t*)output_; @@ -137,8 +139,9 @@ void conv_0rgb1555_argb8888(void *output_, const void *input_, for (h = 0; h < height; h++, output += out_stride >> 2, input += in_stride >> 1) { + w = 0; #ifdef __SSE2__ - for (w = 0; w < max_width; w += 8) + for (; w < max_width; w += 8) { __m128i res_lo_bg, res_hi_bg; __m128i res_lo_ra, res_hi_ra; @@ -186,7 +189,7 @@ void conv_rgb565_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - unsigned h, w = 0; + int h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint32_t *output = (uint32_t*)output_; @@ -205,8 +208,9 @@ void conv_rgb565_argb8888(void *output_, const void *input_, for (h = 0; h < height; h++, output += out_stride >> 2, input += in_stride >> 1) { + w = 0; #if defined(__SSE2__) - for (w = 0; w < max_width; w += 8) + for (; w < max_width; w += 8) { __m128i res_lo, res_hi; __m128i res_lo_bg, res_hi_bg, res_lo_ra, res_hi_ra; @@ -351,7 +355,7 @@ void conv_0rgb1555_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - unsigned h, w = 0; + int h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint8_t *output = (uint8_t*)output_; @@ -370,8 +374,9 @@ void conv_0rgb1555_bgr24(void *output_, const void *input_, { uint8_t *out = output; + w = 0; #if defined(__SSE2__) - for (w = 0; w < max_width; w += 16, out += 48) + for (; w < max_width; w += 16, out += 48) { __m128i res_lo_bg0, res_lo_bg1, res_hi_bg0, res_hi_bg1, res_lo_ra0, res_lo_ra1, res_hi_ra0, res_hi_ra1, @@ -436,7 +441,7 @@ void conv_rgb565_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - unsigned h, w = 0; + int h, w = 0; const uint16_t *input = (const uint16_t*)input_; uint8_t *output = (uint8_t*)output_; @@ -456,8 +461,9 @@ void conv_rgb565_bgr24(void *output_, const void *input_, { uint8_t *out = output; + w = 0; #if defined(__SSE2__) - for (w = 0; w < max_width; w += 16, out += 48) + for (; w < max_width; w += 16, out += 48) { __m128i res_lo_bg0, res_hi_bg0, res_lo_ra0, res_hi_ra0; __m128i res_lo_bg1, res_hi_bg1, res_lo_ra1, res_hi_ra1; @@ -565,7 +571,7 @@ void conv_argb8888_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - unsigned h, w = 0; + int h, w = 0; const uint32_t *input = (const uint32_t*)input_; uint8_t *output = (uint8_t*)output_; @@ -578,8 +584,9 @@ void conv_argb8888_bgr24(void *output_, const void *input_, { uint8_t *out = output; + w = 0; #if defined(__SSE2__) - for (w = 0; w < max_width; w += 16, out += 48) + for (; w < max_width; w += 16, out += 48) { store_bgr24_sse2(out, _mm_loadu_si128((const __m128i*)(input + w + 0)), @@ -631,7 +638,7 @@ void conv_yuyv_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - unsigned h, w = 0; + int h, w = 0; const uint8_t *input = (const uint8_t*)input_; uint32_t *output = (uint32_t*)output_; @@ -655,10 +662,12 @@ void conv_yuyv_argb8888(void *output_, const void *input_, { const uint8_t *src = input; uint32_t *dst = output; + + w = 0; #if defined(__SSE2__) /* Each loop processes 16 pixels. */ - for (w = 0; w + 16 <= width; w += 16, src += 32, dst += 16) + for (; w + 16 <= width; w += 16, src += 32, dst += 16) { __m128i u, v, u0_g, u1_g, u0_b, u1_b, v0_r, v1_r, v0_g, v1_g, r0, g0, b0, r1, g1, b1; From 3c7098fdfd31a1a0aeaf633603570a26dd4cb72e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 10:56:04 +0200 Subject: [PATCH 417/822] Cleanups --- libretro-common/gfx/scaler/pixconv.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libretro-common/gfx/scaler/pixconv.c b/libretro-common/gfx/scaler/pixconv.c index dc68b0f715..c57d0f21c3 100644 --- a/libretro-common/gfx/scaler/pixconv.c +++ b/libretro-common/gfx/scaler/pixconv.c @@ -39,7 +39,7 @@ void conv_rgb565_0rgb1555(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w = 0; + int h, w; const uint16_t *input = (const uint16_t*)input_; uint16_t *output = (uint16_t*)output_; @@ -78,7 +78,7 @@ void conv_0rgb1555_rgb565(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w = 0; + int h, w; const uint16_t *input = (const uint16_t*)input_; uint16_t *output = (uint16_t*)output_; @@ -122,7 +122,7 @@ void conv_0rgb1555_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w = 0; + int h, w; const uint16_t *input = (const uint16_t*)input_; uint32_t *output = (uint32_t*)output_; @@ -189,7 +189,7 @@ void conv_rgb565_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w = 0; + int h, w; const uint16_t *input = (const uint16_t*)input_; uint32_t *output = (uint32_t*)output_; @@ -355,7 +355,7 @@ void conv_0rgb1555_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w = 0; + int h, w; const uint16_t *input = (const uint16_t*)input_; uint8_t *output = (uint8_t*)output_; @@ -441,7 +441,7 @@ void conv_rgb565_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w = 0; + int h, w; const uint16_t *input = (const uint16_t*)input_; uint8_t *output = (uint8_t*)output_; @@ -571,7 +571,7 @@ void conv_argb8888_bgr24(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w = 0; + int h, w; const uint32_t *input = (const uint32_t*)input_; uint8_t *output = (uint8_t*)output_; @@ -638,7 +638,7 @@ void conv_yuyv_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) { - int h, w = 0; + int h, w; const uint8_t *input = (const uint8_t*)input_; uint32_t *output = (uint32_t*)output_; From 202ffaee3bfeb75a3f733dff3fea9989412cefef Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 12:44:29 +0200 Subject: [PATCH 418/822] (wiiusb_hid.c) Don't call remove_adapter from remove_notify --- input/drivers_hid/wiiusb_hid.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/input/drivers_hid/wiiusb_hid.c b/input/drivers_hid/wiiusb_hid.c index 89bd6fdcbf..b4fdd59785 100644 --- a/input/drivers_hid/wiiusb_hid.c +++ b/input/drivers_hid/wiiusb_hid.c @@ -225,8 +225,6 @@ static int wiiusb_hid_removalnotify_cb(int result, void *usrdata) if (!hid) return -1; - remove_adapter(hid, &adapters.next->device); - return 0; } From 7079cdb798f83ce2d117b0761393623015b7181c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 13:03:34 +0200 Subject: [PATCH 419/822] Add notify_refresh to UI companion driver interface --- ui/drivers/ui_cocoa.m | 1 + ui/drivers/ui_cocoatouch.m | 15 ++++++++++----- ui/drivers/ui_null.c | 1 + ui/drivers/ui_qt.c | 1 + ui/ui_companion_driver.h | 1 + 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 5885f35bd2..5bd8d2247a 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -497,5 +497,6 @@ const ui_companion_driver_t ui_companion_cocoa = { ui_companion_cocoa_notify_content_loaded, ui_companion_cocoa_notify_list_pushed, NULL, + NULL, "cocoa", }; diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index e3b54e6181..b4e5f77e5b 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -502,13 +502,17 @@ static void *ui_companion_cocoatouch_init(void) static void ui_companion_cocoatouch_notify_list_pushed(void *data, file_list_t *list, file_list_t *menu_list) { - (void)data; - (void)list; - (void)menu_list; + RetroArch_iOS *ap = (RetroArch_iOS *)apple_platform; - RetroArch_iOS *ap = (RetroArch_iOS *)apple_platform; + if (ap) + [ap mainMenuRefresh]; +} - if (ap) +static void ui_companion_cocoatouch_notify_refresh(void *data) +{ + RetroArch_iOS *ap = (RetroArch_iOS *)apple_platform; + + if (ap) [ap mainMenuRefresh]; } @@ -531,6 +535,7 @@ const ui_companion_driver_t ui_companion_cocoatouch = { ui_companion_cocoatouch_event_command, ui_companion_cocoatouch_notify_content_loaded, ui_companion_cocoatouch_notify_list_pushed, + ui_companion_cocoatouch_notify_refresh, ui_companion_cocoatouch_render_messagebox, "cocoatouch", }; diff --git a/ui/drivers/ui_null.c b/ui/drivers/ui_null.c index 10dacbae44..6290763bd4 100644 --- a/ui/drivers/ui_null.c +++ b/ui/drivers/ui_null.c @@ -86,5 +86,6 @@ const ui_companion_driver_t ui_companion_null = { ui_companion_null_notify_content_loaded, ui_companion_null_notify_list_pushed, NULL, + NULL, "null", }; diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c index da468f0bba..0191b747e6 100644 --- a/ui/drivers/ui_qt.c +++ b/ui/drivers/ui_qt.c @@ -131,5 +131,6 @@ const ui_companion_driver_t ui_companion_qt = { ui_companion_qt_notify_content_loaded, ui_companion_qt_notify_list_pushed, NULL, + NULL, "qt", }; diff --git a/ui/ui_companion_driver.h b/ui/ui_companion_driver.h index 0db75aa573..b406abb606 100644 --- a/ui/ui_companion_driver.h +++ b/ui/ui_companion_driver.h @@ -41,6 +41,7 @@ typedef struct ui_companion_driver void (*event_command)(void *data, enum event_command action); void (*notify_content_loaded)(void *data); void (*notify_list_loaded)(void *data, file_list_t *list, file_list_t *menu_list); + void (*notify_refresh)(void *data); void (*render_messagebox)(const char *msg); const char *ident; } ui_companion_driver_t; From d21dc218ed1b96862920a4cfb8d366401695e447 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 30 Aug 2015 13:45:58 +0200 Subject: [PATCH 420/822] (UI companion) Call notify_refresh when core option next is toggled --- menu/cbs/menu_cbs_right.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 510f4a91ee..d28e974a74 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -323,6 +323,13 @@ int core_setting_right(unsigned type, const char *label, (void)label; core_option_next(system->core_options, idx); + + driver_t * driver = driver_get_ptr(); + const ui_companion_driver_t *ui = ui_companion_get_ptr(); + + if (ui->notify_refresh && ui_companion_is_on_foreground()) + ui->notify_refresh(driver->ui_companion_data); + return 0; } From 75c649d807f0bf72987ea5c3b56f81a6993d46e3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 13:46:51 +0200 Subject: [PATCH 421/822] Cleanups --- menu/cbs/menu_cbs_right.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index d28e974a74..602e987052 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -317,19 +317,17 @@ static int action_right_video_resolution(unsigned type, const char *label, int core_setting_right(unsigned type, const char *label, bool wraparound) { + driver_t * driver = driver_get_ptr(); + const ui_companion_driver_t *ui = ui_companion_get_ptr(); unsigned idx = type - MENU_SETTINGS_CORE_OPTION_START; rarch_system_info_t *system = rarch_system_info_get_ptr(); (void)label; core_option_next(system->core_options, idx); - - driver_t * driver = driver_get_ptr(); - const ui_companion_driver_t *ui = ui_companion_get_ptr(); - - if (ui->notify_refresh && ui_companion_is_on_foreground()) - ui->notify_refresh(driver->ui_companion_data); + if (ui->notify_refresh && ui_companion_is_on_foreground()) + ui->notify_refresh(driver->ui_companion_data); return 0; } From af7569da8c5da700836aab8336de04e113a2fda4 Mon Sep 17 00:00:00 2001 From: stefan-gr Date: Sun, 30 Aug 2015 15:02:20 +0200 Subject: [PATCH 422/822] zlib: define _Z_OF --- deps/zlib/ioapi.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/deps/zlib/ioapi.h b/deps/zlib/ioapi.h index daf2556634..56637594db 100644 --- a/deps/zlib/ioapi.h +++ b/deps/zlib/ioapi.h @@ -61,6 +61,16 @@ #endif #endif +#ifdef _Z_OF +#undef OF +#define OF _Z_OF +#else +#ifndef OF +#define _Z_OF(args) args +#define OF _Z_OF +#endif +#endif + /* #ifndef ZPOS64_T #ifdef _WIN32 From cd781ff4b5cf5175a37df19d2215a60aa26bf422 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 15:15:39 +0200 Subject: [PATCH 423/822] Cleanups --- input/drivers_hid/wiiusb_hid.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/input/drivers_hid/wiiusb_hid.c b/input/drivers_hid/wiiusb_hid.c index b4fdd59785..877e3b1db7 100644 --- a/input/drivers_hid/wiiusb_hid.c +++ b/input/drivers_hid/wiiusb_hid.c @@ -71,7 +71,11 @@ static void adapter_thread(void *data) int report_number; int size = 0; + (void)tmp; + (void)report_number; + slock_lock(adapter->send_control_lock); + if (fifo_read_avail(adapter->send_control_buffer) >= sizeof(send_command_size)) { fifo_read(adapter->send_control_buffer, &send_command_size, sizeof(send_command_size)); @@ -238,6 +242,8 @@ static int add_adapter(void *data, usb_device_entry *dev) struct wiiusb_adapter *adapter = (struct wiiusb_adapter*) calloc(1, sizeof(struct wiiusb_adapter)); + (void)rc; + if (!adapter) return -1; @@ -484,6 +490,8 @@ static void *wiiusb_hid_init(void) usb_device_entry *dev_entries; wiiusb_hid_t *hid = (wiiusb_hid_t*)calloc(1, sizeof(*hid)); + (void)ret; + if (!hid) goto error; From 7e86e2158d3be19c004b94e2bcda7538eed1ae35 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 16:12:45 +0200 Subject: [PATCH 424/822] (Vita) Update net and netlogger --- libretro-common/include/net/net_compat.h | 14 ++++++++++++-- logger/netlogger/logger.c | 15 ++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/libretro-common/include/net/net_compat.h b/libretro-common/include/net/net_compat.h index 4b6044cf7d..dde91f3a51 100644 --- a/libretro-common/include/net/net_compat.h +++ b/libretro-common/include/net/net_compat.h @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -51,6 +51,16 @@ #include +#elif defined(VITA) + +#include +#include + +#define sockaddr_in SceNetSockaddrIn +#define sockaddr SceNetSockaddr +#define sendto sceNetSendto +#define MSG_DONTWAIT PSP2_NET_MSG_DONTWAIT + #else #include #include @@ -112,7 +122,7 @@ static INLINE bool isagain(int bytes) #ifdef _XBOX #define socklen_t int -#ifndef h_addr +#ifndef h_addr #define h_addr h_addr_list[0] /* for backward compatibility */ #endif diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index 23591605bb..046991ade3 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -44,11 +44,20 @@ static char sendbuf[4096]; static int network_interface_up(struct sockaddr_in *target, int index, const char *ip_address, unsigned udp_port, int *s) { - int ret = 0; - (void)index; +#if defined(VITA) + *s = sceNetSocket("RA_netlogger", PSP2_NET_AF_INET, PSP2_NET_SOCK_DGRAM, 0); + target->sin_family = PSP2_NET_AF_INET; + target->sin_port = sceNetHtons(udp_port); + target->sin_len = 8; + + sceNetInetPton(PSP2_NET_AF_INET, ip_address, &target->sin_addr); +#else + #if defined(__CELLOS_LV2__) && !defined(__PSL1GHT__) + int ret = 0; + int state, timeout_count = 10; ret = cellNetCtlInit(); if (ret < 0) @@ -85,7 +94,7 @@ static int network_interface_up(struct sockaddr_in *target, int index, #endif inet_pton(AF_INET, ip_address, &target->sin_addr); - +#endif return 0; } From f0ea1fd454a06b7d53a4b0b16f9bc133a8cf734f Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 16:12:45 +0200 Subject: [PATCH 425/822] (Vita) Update Makefile.griffin, performance.c and file extensions --- Makefile.griffin | 32 ++++++++++++++++++++++++++++++++ file_ext.h | 5 ++++- performance.c | 31 +++++++++++++++++++------------ 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index 3cc1f53bc2..f904b0f0e2 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -137,6 +137,22 @@ else ifeq ($(platform), psp1) HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_RPNG := 1 +else ifeq ($(platform), vita) + CC = arm-vita-eabi-gcc$(EXE_EXT) + CXX = arm-vita-eabi-g++$(EXE_EXT) + LD = arm-vita-eabi-ld$(EXE_EXT) + INCLUDE += + EXT_TARGET := $(TARGET_NAME).velf + EXT_INTER_TARGET := $(TARGET_NAME).elf + MACHDEP := -DVITA + PLATCFLAGS := -Wl,-q -Wall -O3 + LIBS += -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub \ + -lSceSysmodule_stub -lSceCtrl_stub -lScePgf_stub \ + -lpng -ljpeg -lfreetype -lz -lm -lc + + HAVE_LIBRETRO_MANAGEMENT := 1 + HAVE_RPNG := 1 + HAVE_VITA2D := 1 endif CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(INCLUDE) @@ -155,6 +171,10 @@ ifeq ($(platform), wii) CFLAGS += -DHAVE_SOCKET_LEGACY endif +ifeq ($(platform), vita) +CFLAGS += -DHAVE_SOCKET_LEGACY +endif + ifeq ($(HAVE_LIBRETRO_MANAGEMENT), 1) CFLAGS += -DHAVE_LIBRETRO_MANAGEMENT endif @@ -167,6 +187,10 @@ ifeq ($(HAVE_WIIUSB_HID), 1) CFLAGS += -DHAVE_WIIUSB_HID -DHAVE_HID endif +ifeq ($(HAVE_VITA2D), 1) +CFLAGS += -DHAVE_VITA2D +endif + ifeq ($(HAVE_LIBRETRODB), 1) CFLAGS += -DHAVE_LIBRETRODB endif @@ -225,6 +249,10 @@ LIBS += -lpthread-psp endif endif +ifeq ($(HAVE_VITA2D), 1) +LIBS += -lvita2d +endif + ifeq ($(HAVE_RSOUND), 1) CFLAGS += -DHAVE_RSOUND endif @@ -242,6 +270,10 @@ all: $(EXT_TARGET) %.dol: %.elf $(ELF2DOL) $< $@ +%.velf: %.elf + arm-vita-eabi-strip -g $< + vita-elf-create $< $@ $(VITASDK)/bin/db.json + $(EXT_INTER_TARGET): $(OBJ) $(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(LIBS) diff --git a/file_ext.h b/file_ext.h index 5616e68d7b..b1976bace2 100644 --- a/file_ext.h +++ b/file_ext.h @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -32,6 +32,9 @@ #elif defined(PSP) #define EXT_EXECUTABLES "pbp" #define SALAMANDER_FILE "EBOOT.PBP" +#elif defined(VITA) +#define EXT_EXECUTABLES "velf" +#define SALAMANDER_FILE "default.velf" #elif defined(_XBOX1) #define EXT_EXECUTABLES "xbe" #define SALAMANDER_FILE "default.xbe" diff --git a/performance.c b/performance.c index 6bf2df44d7..33240b65e2 100644 --- a/performance.c +++ b/performance.c @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -53,6 +53,11 @@ #include #endif +#if defined(VITA) +#include +#include +#endif + #if defined(__PSL1GHT__) #include #elif defined(__CELLOS_LV2__) @@ -106,7 +111,7 @@ void rarch_perf_register(struct retro_perf_counter *perf) { global_t *global = global_get_ptr(); - if (!global->perfcnt_enable || perf->registered + if (!global->perfcnt_enable || perf->registered || perf_ptr_rarch >= MAX_COUNTERS) return; @@ -139,7 +144,7 @@ static void log_counters( { RARCH_LOG(PERF_LOG_FMT, counters[i]->ident, - (unsigned long long)counters[i]->total / + (unsigned long long)counters[i]->total / (unsigned long long)counters[i]->call_cnt, (unsigned long long)counters[i]->call_cnt); } @@ -176,10 +181,10 @@ retro_perf_tick_t rarch_get_perf_counter(void) #if defined(__linux__) || defined(__QNX__) || defined(__MACH__) struct timespec tv; if (clock_gettime(CLOCK_MONOTONIC, &tv) == 0) - time_ticks = (retro_perf_tick_t)tv.tv_sec * 1000000000 + + time_ticks = (retro_perf_tick_t)tv.tv_sec * 1000000000 + (retro_perf_tick_t)tv.tv_nsec; -#elif defined(__GNUC__) && !defined(RARCH_CONSOLE) +#elif defined(__GNUC__) && !defined(RARCH_CONSOLE) #if defined(__i386__) || defined(__i486__) || defined(__i686__) __asm__ volatile ("rdtsc" : "=A" (time_ticks)); @@ -193,7 +198,7 @@ retro_perf_tick_t rarch_get_perf_counter(void) __asm__ volatile( "mrc p15, 0, %0, c9, c13, 0" : "=r"(time_ticks) ); #elif defined(__CELLOS_LV2__) || defined(GEKKO) || defined(_XBOX360) || defined(__powerpc__) || defined(__ppc__) || defined(__POWERPC__) time_ticks = __mftb(); -#elif defined(PSP) +#elif defined(PSP) || defined(VITA) sceRtcGetCurrentTick(&time_ticks); #elif defined(_3DS) time_ticks = svcGetSystemTick(); @@ -259,6 +264,8 @@ retro_time_t rarch_get_time_usec(void) return (1000000 * tv.tv_sec + tv.tv_usec); #elif defined(_3DS) return osGetTime() * 1000; +#elif defined(VITA) + return sceKernelGetProcessTimeWide(); #else #error "Your platform does not have a timer function implemented in rarch_get_time_usec(). Cannot continue." #endif @@ -275,7 +282,7 @@ retro_time_t rarch_get_time_usec(void) #ifdef CPU_X86 static void x86_cpuid(int func, int flags[4]) { - /* On Android, we compile RetroArch with PIC, and we + /* On Android, we compile RetroArch with PIC, and we * are not allowed to clobber the ebx register. */ #ifdef __x86_64__ #define REG_b "rbx" @@ -306,7 +313,7 @@ static uint64_t xgetbv_x86(uint32_t idx) #if defined(__GNUC__) uint32_t eax, edx; __asm__ volatile ( - /* Older GCC versions (Apple's GCC for example) do + /* Older GCC versions (Apple's GCC for example) do * not understand xgetbv instruction. * Stamp out the machine code directly. */ @@ -326,7 +333,7 @@ static uint64_t xgetbv_x86(uint32_t idx) #if defined(__ARM_NEON__) static void arm_enable_runfast_mode(void) { - /* RunFast mode. Enables flush-to-zero and some + /* RunFast mode. Enables flush-to-zero and some * floating point optimizations. */ static const unsigned x = 0x04086060; static const unsigned y = 0x03000000; @@ -418,7 +425,7 @@ uint64_t rarch_get_cpu_features(void) char buf[sizeof(" MMX MMXEXT SSE SSE2 SSE3 SSSE3 SS4 SSE4.2 AES AVX AVX2 NEON VMX VMX128 VFPU PS")]; memset(buf, 0, sizeof(buf)); - + (void)cpu_flags; (void)flags; (void)max_flag; @@ -471,9 +478,9 @@ uint64_t rarch_get_cpu_features(void) cpu |= RETRO_SIMD_AES; - /* Must only perform xgetbv check if we have + /* Must only perform xgetbv check if we have * AVX CPU support (guaranteed to have at least i686). */ - if (((flags[2] & avx_flags) == avx_flags) + if (((flags[2] & avx_flags) == avx_flags) && ((xgetbv_x86(0) & 0x6) == 0x6)) cpu |= RETRO_SIMD_AVX; From 458152fc8e087f582bfb187ef1ad2d44bbd377cf Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 16:12:45 +0200 Subject: [PATCH 426/822] (Vita) Update psp_ defines.h --- defines/psp_defines.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/defines/psp_defines.h b/defines/psp_defines.h index 60947c70de..89167ad065 100644 --- a/defines/psp_defines.h +++ b/defines/psp_defines.h @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -79,8 +79,8 @@ #define PSP_CTRL_SQUARE PSP2_CTRL_SQUARE #define PSP_CTRL_CROSS PSP2_CTRL_CROSS #define PSP_CTRL_CIRCLE PSP2_CTRL_CIRCLE -#define PSP_CTRL_L PSP2_CTRL_L -#define PSP_CTRL_R PSP2_CTRL_R +#define PSP_CTRL_L PSP2_CTRL_LTRIGGER +#define PSP_CTRL_R PSP2_CTRL_RTRIGGER #else #define DEFAULT_SAMPLING_MODE (SCE_CTRL_MODE_DIGITALANALOG) From e60247d4b35cb19a23ef34698ad6a02b4c804ecd Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 16:12:45 +0200 Subject: [PATCH 427/822] (Vita) Update psp_audio.c --- audio/drivers/psp_audio.c | 56 +++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/audio/drivers/psp_audio.c b/audio/drivers/psp_audio.c index 99fb780f02..5876114bc0 100644 --- a/audio/drivers/psp_audio.c +++ b/audio/drivers/psp_audio.c @@ -28,6 +28,7 @@ #include #endif #include +#include typedef struct psp_audio { @@ -64,10 +65,10 @@ static int audioMainLoop(SceSize args, void* argp) < (AUDIO_OUT_COUNT * 2); #ifdef VITA - sceAudioOutOutput(0, + sceAudioOutOutput(0, cond ? psp->zeroBuffer : (psp->buffer + readPos)); #else - sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, cond ? (psp->zeroBuffer) + sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, cond ? (psp->zeroBuffer) : (psp->buffer + readPos)); #endif @@ -111,8 +112,13 @@ static void *psp_audio_init(const char *device, psp->readPos = 0; psp->writePos = 0; psp->rate = rate; +#if defined(VITA) + psp->thread = sceKernelCreateThread + ("audioMainLoop", audioMainLoop, 0x10000100, 0x10000, 0, 0, NULL); +#else psp->thread = sceKernelCreateThread ("audioMainLoop", audioMainLoop, 0x08, 0x10000, 0, NULL); +#endif psp->nonblocking = false; psp->running = true; @@ -129,8 +135,11 @@ static void psp_audio_free(void *data) return; psp->running = false; - +#if defined(VITA) + sceKernelWaitThreadEnd(psp->thread, NULL, &timeout); +#else sceKernelWaitThreadEnd(psp->thread, &timeout); +#endif sceKernelDeleteThread(psp->thread); free(psp->buffer); @@ -181,29 +190,64 @@ static bool psp_audio_alive(void *data) static bool psp_audio_stop(void *data) { - SceKernelThreadRunStatus runStatus; SceUInt timeout = 100000; psp_audio_t* psp = (psp_audio_t*)data; +#if defined(VITA) + SceKernelThreadInfo info; + + info.size = sizeof(SceKernelThreadInfo); + + if (sceKernelGetThreadInfo( + psp->thread, &info) < 0) /* Error */ + return false; + + if (info.status == PSP2_THREAD_STOPPED) + return false; + +#else + SceKernelThreadRunStatus runStatus; + runStatus.size = sizeof(SceKernelThreadRunStatus); if (sceKernelReferThreadRunStatus( psp->thread, &runStatus) < 0) /* Error */ return false; + if (runStatus.status == PSP_THREAD_STOPPED) return false; +#endif + psp->running = false; +#if defined(VITA) + sceKernelWaitThreadEnd(psp->thread, NULL, &timeout); +#else sceKernelWaitThreadEnd(psp->thread, &timeout); +#endif return true; } static bool psp_audio_start(void *data) { - SceKernelThreadRunStatus runStatus; psp_audio_t* psp = (psp_audio_t*)data; +#if defined(VITA) + SceKernelThreadInfo info; + + info.size = sizeof(SceKernelThreadInfo); + + if (sceKernelGetThreadInfo( + psp->thread, &info) < 0) /* Error */ + return false; + + if (info.status != PSP2_THREAD_STOPPED) + return false; + +#else + SceKernelThreadRunStatus runStatus; + runStatus.size = sizeof(SceKernelThreadRunStatus); if (sceKernelReferThreadRunStatus( @@ -212,6 +256,8 @@ static bool psp_audio_start(void *data) if (runStatus.status != PSP_THREAD_STOPPED) return false; +#endif + psp->running = true; sceKernelStartThread(psp->thread, sizeof(psp_audio_t*), &psp); From aee5e74001b77d2f46b697e6ef5d30ae8c5a1374 Mon Sep 17 00:00:00 2001 From: CautiousAlbino Date: Wed, 26 Aug 2015 14:21:24 +0200 Subject: [PATCH 428/822] Add support for shader pass feedback. --- gfx/drivers/gl.c | 395 ++++++++++++++++++++---------- gfx/drivers/gl_common.h | 5 + gfx/drivers_shader/shader_gl_cg.c | 130 +++++----- gfx/drivers_shader/shader_glsl.c | 51 +++- gfx/drivers_shader/shader_hlsl.c | 9 + gfx/drivers_shader/shader_null.c | 8 + gfx/video_shader_driver.h | 2 + gfx/video_shader_parse.c | 5 + gfx/video_shader_parse.h | 4 + tools/cg2glsl.py | 4 + 10 files changed, 402 insertions(+), 211 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index fe0fadd5c9..41938da36a 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -429,109 +429,128 @@ static void gl_compute_fbo_geometry(gl_t *gl, unsigned width, unsigned height, } } -static void gl_create_fbo_textures(gl_t *gl) +static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture) { - int i; settings_t *settings = config_get_ptr(); + + enum gfx_wrap_type wrap; + GLenum min_filter, mag_filter, wrap_enum; + bool mipmapped = false; + bool smooth = false; + bool fp_fbo, srgb_fbo; + GLuint base_filt = settings->video.smooth ? GL_LINEAR : GL_NEAREST; GLuint base_mip_filt = settings->video.smooth ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST; + glBindTexture(GL_TEXTURE_2D, texture); + + mipmapped = gl->shader->mipmap_input(i + 2); + + min_filter = mipmapped ? base_mip_filt : base_filt; + if (gl->shader->filter_type(i + 2, &smooth)) + { + min_filter = mipmapped ? (smooth ? + GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST) + : (smooth ? GL_LINEAR : GL_NEAREST); + } + + mag_filter = min_filter_to_mag(min_filter); + + wrap = gl->shader->wrap_type(i + 2); + wrap_enum = gl_wrap_type_to_enum(wrap); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum); + + fp_fbo = gl->fbo_scale[i].fp_fbo; + srgb_fbo = gl->fbo_scale[i].srgb_fbo; + + if (fp_fbo) + { + if (!gl->has_fp_fbo) + RARCH_ERR("[GL]: Floating-point FBO was requested, but is not supported. Falling back to UNORM. Result may band/clip/etc.!\n"); + } + else if (srgb_fbo) + { + if (!gl->has_srgb_fbo) + RARCH_ERR("[GL]: sRGB FBO was requested, but it is not supported. Falling back to UNORM. Result may have banding!\n"); + } + + if (settings->video.force_srgb_disable) + srgb_fbo = false; + +#ifndef HAVE_OPENGLES2 + if (fp_fbo && gl->has_fp_fbo) + { + RARCH_LOG("[GL]: FBO pass #%d is floating-point.\n", i); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, + 0, GL_RGBA, GL_FLOAT, NULL); + } + else +#endif + { +#ifndef HAVE_OPENGLES + settings_t *settings = config_get_ptr(); + GLuint base_filt = settings->video.smooth ? GL_LINEAR : GL_NEAREST; + GLuint base_mip_filt = settings->video.smooth ? + GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST; + + if (srgb_fbo && gl->has_srgb_fbo) + { + RARCH_LOG("[GL]: FBO pass #%d is sRGB.\n", i); +#ifdef HAVE_OPENGLES2 + /* EXT defines are same as core GLES3 defines, + * but GLES3 variant requires different arguments. */ + glTexImage2D(GL_TEXTURE_2D, + 0, GL_SRGB_ALPHA_EXT, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + gl->has_srgb_fbo_gles3 ? GL_RGBA : GL_SRGB_ALPHA_EXT, + GL_UNSIGNED_BYTE, NULL); +#else + glTexImage2D(GL_TEXTURE_2D, + 0, GL_SRGB8_ALPHA8, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); +#endif + } + else +#endif + { +#ifdef HAVE_OPENGLES2 + glTexImage2D(GL_TEXTURE_2D, + 0, GL_RGBA, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); +#else + /* Avoid potential performance + * reductions on particular platforms. */ + glTexImage2D(GL_TEXTURE_2D, + 0, RARCH_GL_INTERNAL_FORMAT32, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL); +#endif + } + } +} + +static void gl_create_fbo_textures(gl_t *gl) +{ + int i; glGenTextures(gl->fbo_pass, gl->fbo_texture); for (i = 0; i < gl->fbo_pass; i++) { - enum gfx_wrap_type wrap; - GLenum min_filter, mag_filter, wrap_enum; - bool mipmapped = false; - bool smooth = false; - bool fp_fbo, srgb_fbo; + gl_create_fbo_texture(gl, i, gl->fbo_texture[i]); + } - glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]); - - mipmapped = gl->shader->mipmap_input(i + 2); - - min_filter = mipmapped ? base_mip_filt : base_filt; - if (gl->shader->filter_type(i + 2, &smooth)) - min_filter = mipmapped ? (smooth ? - GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST) - : (smooth ? GL_LINEAR : GL_NEAREST); - - mag_filter = min_filter_to_mag(min_filter); - - wrap = gl->shader->wrap_type(i + 2); - wrap_enum = gl_wrap_type_to_enum(wrap); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum); - - fp_fbo = gl->fbo_scale[i].fp_fbo; - srgb_fbo = gl->fbo_scale[i].srgb_fbo; - - if (fp_fbo) - { - if (!gl->has_fp_fbo) - RARCH_ERR("[GL]: Floating-point FBO was requested, but is not supported. Falling back to UNORM. Result may band/clip/etc.!\n"); - } - else if (srgb_fbo) - { - if (!gl->has_srgb_fbo) - RARCH_ERR("[GL]: sRGB FBO was requested, but it is not supported. Falling back to UNORM. Result may have banding!\n"); - } - - if (settings->video.force_srgb_disable) - srgb_fbo = false; - - #ifndef HAVE_OPENGLES2 - if (fp_fbo && gl->has_fp_fbo) - { - RARCH_LOG("[GL]: FBO pass #%d is floating-point.\n", i); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, - 0, GL_RGBA, GL_FLOAT, NULL); - } - else - #endif - { - #ifndef HAVE_OPENGLES - if (srgb_fbo && gl->has_srgb_fbo) - { - RARCH_LOG("[GL]: FBO pass #%d is sRGB.\n", i); - #ifdef HAVE_OPENGLES2 - /* EXT defines are same as core GLES3 defines, - * but GLES3 variant requires different arguments. */ - glTexImage2D(GL_TEXTURE_2D, - 0, GL_SRGB_ALPHA_EXT, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - gl->has_srgb_fbo_gles3 ? GL_RGBA : GL_SRGB_ALPHA_EXT, - GL_UNSIGNED_BYTE, NULL); - #else - glTexImage2D(GL_TEXTURE_2D, - 0, GL_SRGB8_ALPHA8, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - #endif - } - else - #endif - { - #ifdef HAVE_OPENGLES2 - glTexImage2D(GL_TEXTURE_2D, - 0, GL_RGBA, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - #else - /* Avoid potential performance - * reductions on particular platforms. */ - glTexImage2D(GL_TEXTURE_2D, - 0, RARCH_GL_INTERNAL_FORMAT32, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL); - #endif - } - } + if (gl->fbo_feedback_enable) + { + glGenTextures(1, &gl->fbo_feedback_texture); + gl_create_fbo_texture(gl, gl->fbo_feedback_pass, gl->fbo_feedback_texture); } glBindTexture(GL_TEXTURE_2D, 0); @@ -545,10 +564,10 @@ static bool gl_create_fbo_targets(gl_t *gl) glBindTexture(GL_TEXTURE_2D, 0); glGenFramebuffers(gl->fbo_pass, gl->fbo); + GLenum status; + for (i = 0; i < gl->fbo_pass; i++) { - GLenum status; - glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo[i]); glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_texture[i], 0); @@ -558,10 +577,28 @@ static bool gl_create_fbo_targets(gl_t *gl) goto error; } + if (gl->fbo_feedback_texture) + { + glGenFramebuffers(1, &gl->fbo_feedback); + glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo_feedback); + glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, + RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_feedback_texture, 0); + + status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); + if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) + goto error; + + /* Make sure the feedback textures are cleared so we don't feedback noise. */ + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + } + return true; error: glDeleteFramebuffers(gl->fbo_pass, gl->fbo); + if (gl->fbo_feedback) + glDeleteFramebuffers(1, &gl->fbo_feedback); RARCH_ERR("Failed to set up frame buffer objects. Multi-pass shading will not work.\n"); return false; } @@ -577,6 +614,16 @@ static void gl_deinit_fbo(gl_t *gl) memset(gl->fbo, 0, sizeof(gl->fbo)); gl->fbo_inited = false; gl->fbo_pass = 0; + + if (gl->fbo_feedback) + glDeleteFramebuffers(1, &gl->fbo_feedback); + if (gl->fbo_feedback_texture) + glDeleteTextures(1, &gl->fbo_feedback_texture); + + gl->fbo_feedback_enable = false; + gl->fbo_feedback_pass = -1; + gl->fbo_feedback_texture = 0; + gl->fbo_feedback = 0; } /* Set up render to texture. */ @@ -642,6 +689,20 @@ static void gl_init_fbo(gl_t *gl, unsigned fbo_width, unsigned fbo_height) gl->fbo_rect[i].width, gl->fbo_rect[i].height); } + gl->fbo_feedback_enable = gl->shader->get_feedback_pass(&gl->fbo_feedback_pass); + + if (gl->fbo_feedback_enable && gl->fbo_feedback_pass < (unsigned)gl->fbo_pass) + { + RARCH_LOG("[GL]: Creating feedback FBO %d @ %ux%u\n", i, + gl->fbo_rect[gl->fbo_feedback_pass].width, gl->fbo_rect[gl->fbo_feedback_pass].height); + } + else if (gl->fbo_feedback_enable) + { + RARCH_WARN("[GL]: Tried to create feedback FBO of pass #%u, but there are only %d FBO passes. Will use input texture as feedback texture.\n", + gl->fbo_feedback_pass, gl->fbo_pass); + gl->fbo_feedback_enable = false; + } + gl_create_fbo_textures(gl); if (!gl_create_fbo_targets(gl)) { @@ -918,42 +979,35 @@ static INLINE void gl_start_frame_fbo(gl_t *gl) #endif } -/* On resize, we might have to recreate our FBOs - * due to "Viewport" scale, and set a new viewport. */ - -static void gl_check_fbo_dimensions(gl_t *gl) +static void gl_check_fbo_dimension(gl_t *gl, unsigned i, GLuint fbo, GLuint texture, bool update_feedback) { - int i; + GLenum status; + unsigned img_width, img_height, max, pow2_size; + bool check_dimensions = false; + struct gfx_fbo_rect *fbo_rect = &gl->fbo_rect[i]; + + if (!fbo_rect) + return; + + check_dimensions = + (fbo_rect->max_img_width > fbo_rect->width) || + (fbo_rect->max_img_height > fbo_rect->height); + + if (!check_dimensions) + return; + + /* Check proactively since we might suddently + * get sizes of tex_w width or tex_h height. */ + img_width = fbo_rect->max_img_width; + img_height = fbo_rect->max_img_height; + max = img_width > img_height ? img_width : img_height; + pow2_size = next_pow2(max); + + fbo_rect->width = fbo_rect->height = pow2_size; - /* Check if we have to recreate our FBO textures. */ - for (i = 0; i < gl->fbo_pass; i++) { - GLenum status; - unsigned img_width, img_height, max, pow2_size; - bool check_dimensions = false; - struct gfx_fbo_rect *fbo_rect = &gl->fbo_rect[i]; - - if (!fbo_rect) - continue; - - check_dimensions = - (fbo_rect->max_img_width > fbo_rect->width) || - (fbo_rect->max_img_height > fbo_rect->height); - - if (!check_dimensions) - continue; - - /* Check proactively since we might suddently - * get sizes of tex_w width or tex_h height. */ - img_width = fbo_rect->max_img_width; - img_height = fbo_rect->max_img_height; - max = img_width > img_height ? img_width : img_height; - pow2_size = next_pow2(max); - - fbo_rect->width = fbo_rect->height = pow2_size; - - glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo[i]); - glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]); + glBindFramebuffer(RARCH_GL_FRAMEBUFFER, fbo); + glBindTexture(GL_TEXTURE_2D, texture); glTexImage2D(GL_TEXTURE_2D, 0, RARCH_GL_INTERNAL_FORMAT32, @@ -964,19 +1018,62 @@ static void gl_check_fbo_dimensions(gl_t *gl) glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, - gl->fbo_texture[i], 0); + texture, 0); status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) RARCH_WARN("Failed to reinitialize FBO texture.\n"); + } - RARCH_LOG("[GL]: Recreating FBO texture #%d: %ux%u\n", - i, fbo_rect->width, fbo_rect->height); + /* Update feedback texture in-place so we avoid having to juggle two different fbo_rect structs since they get updated here. */ + if (update_feedback) + { + glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo_feedback); + glBindTexture(GL_TEXTURE_2D, gl->fbo_feedback_texture); + + glTexImage2D(GL_TEXTURE_2D, + 0, RARCH_GL_INTERNAL_FORMAT32, + fbo_rect->width, + fbo_rect->height, + 0, RARCH_GL_TEXTURE_TYPE32, + RARCH_GL_FORMAT32, NULL); + + glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, + RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + gl->fbo_feedback_texture, 0); + + status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); + if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) + RARCH_WARN("Failed to reinitialize FBO texture.\n"); + else + { + /* Make sure the feedback textures are cleared so we don't feedback noise. */ + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + } + } + + RARCH_LOG("[GL]: Recreating FBO texture #%d: %ux%u\n", + i, fbo_rect->width, fbo_rect->height); +} + +/* On resize, we might have to recreate our FBOs + * due to "Viewport" scale, and set a new viewport. */ + +static void gl_check_fbo_dimensions(gl_t *gl) +{ + int i; + + /* Check if we have to recreate our FBO textures. */ + for (i = 0; i < gl->fbo_pass; i++) + { + bool update_feedback = gl->fbo_feedback_enable && (unsigned)i == gl->fbo_feedback_pass; + gl_check_fbo_dimension(gl, i, gl->fbo[i], gl->fbo_texture[i], update_feedback); } } static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, - const struct gfx_tex_info *tex_info) + const struct gfx_tex_info *tex_info, const struct gfx_tex_info *feedback_info) { unsigned width, height; const struct gfx_fbo_rect *prev_rect; @@ -1029,7 +1126,7 @@ static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, gl->shader->set_params(gl, prev_rect->img_width, prev_rect->img_height, prev_rect->width, prev_rect->height, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - tex_info, gl->prev_info, fbo_tex_info, fbo_tex_info_cnt); + tex_info, gl->prev_info, feedback_info, fbo_tex_info, fbo_tex_info_cnt); gl->coords.vertices = 4; gl->shader->set_coords(&gl->coords); @@ -1076,7 +1173,7 @@ static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, prev_rect->img_width, prev_rect->img_height, prev_rect->width, prev_rect->height, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - tex_info, gl->prev_info, fbo_tex_info, fbo_tex_info_cnt); + tex_info, gl->prev_info, feedback_info, fbo_tex_info, fbo_tex_info_cnt); gl->coords.vertex = gl->vertex_ptr; @@ -1417,6 +1514,17 @@ static INLINE void gl_set_prev_texture(gl_t *gl, sizeof(*tex_info) * (gl->textures - 1)); memcpy(&gl->prev_info[0], tex_info, sizeof(*tex_info)); + + /* Implement feedback by swapping out FBO/textures for FBO pass #N and feedbacks. */ + if (gl->fbo_feedback_enable) + { + GLuint tmp_fbo = gl->fbo_feedback; + GLuint tmp_tex = gl->fbo_feedback_texture; + gl->fbo_feedback = gl->fbo[gl->fbo_feedback_pass]; + gl->fbo_feedback_texture = gl->fbo_texture[gl->fbo_feedback_pass]; + gl->fbo[gl->fbo_feedback_pass] = tmp_fbo; + gl->fbo_texture[gl->fbo_feedback_pass] = tmp_tex; + } } static INLINE void gl_set_shader_viewport(gl_t *gl, unsigned shader) @@ -1633,6 +1741,22 @@ static bool gl_frame(void *data, const void *frame, gl->tex_info.tex_size[0] = gl->tex_w; gl->tex_info.tex_size[1] = gl->tex_h; + struct gfx_tex_info feedback_info = gl->tex_info; + if (gl->fbo_feedback_enable) + { + const struct gfx_fbo_rect *rect = &gl->fbo_rect[gl->fbo_feedback_pass]; + GLfloat xamt = (GLfloat)rect->img_width / rect->width; + GLfloat yamt = (GLfloat)rect->img_height / rect->height; + + feedback_info.tex = gl->fbo_feedback_texture; + feedback_info.input_size[0] = rect->img_width; + feedback_info.input_size[1] = rect->img_height; + feedback_info.tex_size[0] = rect->width; + feedback_info.tex_size[1] = rect->height; + + set_texture_coords(feedback_info.coord, xamt, yamt); + } + glClear(GL_COLOR_BUFFER_BIT); gl->shader->set_params(gl, @@ -1640,7 +1764,8 @@ static bool gl_frame(void *data, const void *frame, gl->tex_w, gl->tex_h, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - &gl->tex_info, gl->prev_info, NULL, 0); + &gl->tex_info, gl->prev_info, &feedback_info, + NULL, 0); gl->coords.vertices = 4; gl->shader->set_coords(&gl->coords); @@ -1649,7 +1774,7 @@ static bool gl_frame(void *data, const void *frame, #ifdef HAVE_FBO if (gl->fbo_inited) - gl_frame_fbo(gl, frame_count, &gl->tex_info); + gl_frame_fbo(gl, frame_count, &gl->tex_info, &feedback_info); #endif gl_set_prev_texture(gl, &gl->tex_info); diff --git a/gfx/drivers/gl_common.h b/gfx/drivers/gl_common.h index 161aff5f8c..c4c21a89c6 100644 --- a/gfx/drivers/gl_common.h +++ b/gfx/drivers/gl_common.h @@ -209,6 +209,11 @@ typedef struct gl int fbo_pass; bool fbo_inited; + bool fbo_feedback_enable; + unsigned fbo_feedback_pass; + GLuint fbo_feedback; + GLuint fbo_feedback_texture; + GLuint hw_render_fbo[GFX_MAX_TEXTURES]; GLuint hw_render_depth[GFX_MAX_TEXTURES]; bool hw_render_fbo_init; diff --git a/gfx/drivers_shader/shader_gl_cg.c b/gfx/drivers_shader/shader_gl_cg.c index 556bdedc13..71d398ff6c 100644 --- a/gfx/drivers_shader/shader_gl_cg.c +++ b/gfx/drivers_shader/shader_gl_cg.c @@ -139,6 +139,7 @@ struct cg_program struct cg_fbo_params fbo[GFX_MAX_SHADERS]; struct cg_fbo_params orig; + struct cg_fbo_params feedback; struct cg_fbo_params prev[PREV_TEXTURES]; }; @@ -152,7 +153,7 @@ typedef struct cg_shader_data struct video_shader *shader; state_tracker_t *state_tracker; GLuint lut_textures[GFX_MAX_TEXTURES]; - CGparameter cg_attribs[PREV_TEXTURES + 1 + 4 + GFX_MAX_SHADERS]; + CGparameter cg_attribs[PREV_TEXTURES + 2 + 4 + GFX_MAX_SHADERS]; char cg_alias_define[GFX_MAX_SHADERS][128]; CGcontext cgCtx; } cg_shader_data_t; @@ -222,12 +223,40 @@ fallback: #define set_param_1f(param, x) \ if (param) cgGLSetParameter1f(param, x) +static void gl_cg_set_texture_info(cg_shader_data_t *cg, const struct cg_fbo_params *params, const struct gfx_tex_info *info) +{ + CGparameter param = params->tex; + if (param) + { + cgGLSetTextureParameter(param, info->tex); + cgGLEnableTextureParameter(param); + } + + set_param_2f(params->vid_size_v, + info->input_size[0], info->input_size[1]); + set_param_2f(params->vid_size_f, + info->input_size[0], info->input_size[1]); + set_param_2f(params->tex_size_v, + info->tex_size[0], info->tex_size[1]); + set_param_2f(params->tex_size_f, + info->tex_size[0], info->tex_size[1]); + + if (params->coord) + { + cgGLSetParameterPointer(params->coord, 2, + GL_FLOAT, 0, info->coord); + cgGLEnableClientState(params->coord); + cg->cg_attribs[cg->cg_attrib_idx++] = params->coord; + } +} + static void gl_cg_set_params(void *data, unsigned width, unsigned height, unsigned tex_width, unsigned tex_height, unsigned out_width, unsigned out_height, unsigned frame_count, const void *_info, const void *_prev_info, + const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { @@ -235,6 +264,7 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, CGparameter param; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; + const struct gfx_tex_info *feedback_info = (const struct gfx_tex_info*)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); @@ -269,57 +299,14 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, } /* Set orig texture. */ - param = cg->prg[cg->active_idx].orig.tex; - if (param) - { - cgGLSetTextureParameter(param, info->tex); - cgGLEnableTextureParameter(param); - } + gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].orig, info); - set_param_2f(cg->prg[cg->active_idx].orig.vid_size_v, - info->input_size[0], info->input_size[1]); - set_param_2f(cg->prg[cg->active_idx].orig.vid_size_f, - info->input_size[0], info->input_size[1]); - set_param_2f(cg->prg[cg->active_idx].orig.tex_size_v, - info->tex_size[0], info->tex_size[1]); - set_param_2f(cg->prg[cg->active_idx].orig.tex_size_f, - info->tex_size[0], info->tex_size[1]); - - if (cg->prg[cg->active_idx].orig.coord) - { - cgGLSetParameterPointer(cg->prg[cg->active_idx].orig.coord, 2, - GL_FLOAT, 0, info->coord); - cgGLEnableClientState(cg->prg[cg->active_idx].orig.coord); - cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].orig.coord; - } + /* Set feedback texture. */ + gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].feedback, feedback_info); /* Set prev textures. */ for (i = 0; i < PREV_TEXTURES; i++) - { - param = cg->prg[cg->active_idx].prev[i].tex; - if (param) - { - cgGLSetTextureParameter(param, prev_info[i].tex); - cgGLEnableTextureParameter(param); - } - - set_param_2f(cg->prg[cg->active_idx].prev[i].vid_size_v, - prev_info[i].input_size[0], prev_info[i].input_size[1]); - set_param_2f(cg->prg[cg->active_idx].prev[i].vid_size_f, - prev_info[i].input_size[0], prev_info[i].input_size[1]); - set_param_2f(cg->prg[cg->active_idx].prev[i].tex_size_v, - prev_info[i].tex_size[0], prev_info[i].tex_size[1]); - set_param_2f(cg->prg[cg->active_idx].prev[i].tex_size_f, - prev_info[i].tex_size[0], prev_info[i].tex_size[1]); - - if (cg->prg[cg->active_idx].prev[i].coord) - { - cgGLSetParameterPointer(cg->prg[cg->active_idx].prev[i].coord, - 2, GL_FLOAT, 0, prev_info[i].coord); - cgGLEnableClientState(cg->prg[cg->active_idx].prev[i].coord); - cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].prev[i].coord; - } - } + gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].prev[i], &prev_info[i]); /* Set lookup textures. */ for (i = 0; i < cg->shader->luts; i++) @@ -348,32 +335,7 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, if (cg->active_idx) { for (i = 0; i < fbo_info_cnt; i++) - { - if (cg->prg[cg->active_idx].fbo[i].tex) - { - cgGLSetTextureParameter( - cg->prg[cg->active_idx].fbo[i].tex, fbo_info[i].tex); - cgGLEnableTextureParameter(cg->prg[cg->active_idx].fbo[i].tex); - } - - set_param_2f(cg->prg[cg->active_idx].fbo[i].vid_size_v, - fbo_info[i].input_size[0], fbo_info[i].input_size[1]); - set_param_2f(cg->prg[cg->active_idx].fbo[i].vid_size_f, - fbo_info[i].input_size[0], fbo_info[i].input_size[1]); - - set_param_2f(cg->prg[cg->active_idx].fbo[i].tex_size_v, - fbo_info[i].tex_size[0], fbo_info[i].tex_size[1]); - set_param_2f(cg->prg[cg->active_idx].fbo[i].tex_size_f, - fbo_info[i].tex_size[0], fbo_info[i].tex_size[1]); - - if (cg->prg[cg->active_idx].fbo[i].coord) - { - cgGLSetParameterPointer(cg->prg[cg->active_idx].fbo[i].coord, - 2, GL_FLOAT, 0, fbo_info[i].coord); - cgGLEnableClientState(cg->prg[cg->active_idx].fbo[i].coord); - cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].fbo[i].coord; - } - } + gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].fbo[i], &fbo_info[i]); } /* #pragma parameters. */ @@ -850,6 +812,13 @@ static void set_program_attributes(cg_shader_data_t *cg, unsigned i) cg->prg[i].orig.tex_size_f = cgGetNamedParameter(cg->prg[i].fprg, "ORIG.texture_size"); cg->prg[i].orig.coord = cgGetNamedParameter(cg->prg[i].vprg, "ORIG.tex_coord"); + cg->prg[i].feedback.tex = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.texture"); + cg->prg[i].feedback.vid_size_v = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.video_size"); + cg->prg[i].feedback.vid_size_f = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.video_size"); + cg->prg[i].feedback.tex_size_v = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.texture_size"); + cg->prg[i].feedback.tex_size_f = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.texture_size"); + cg->prg[i].feedback.coord = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.tex_coord"); + if (i > 1) { char pass_str[64] = {0}; @@ -1081,6 +1050,18 @@ static unsigned gl_cg_get_prev_textures(void) return max_prev; } +static bool gl_cg_get_feedback_pass(unsigned *pass) +{ + driver_t *driver = driver_get_ptr(); + cg_shader_data_t *cg = (cg_shader_data_t*)driver->video_shader_data; + + if (!cg || cg->shader->feedback_pass < 0) + return false; + + *pass = cg->shader->feedback_pass; + return true; +} + static bool gl_cg_mipmap_input(unsigned idx) { driver_t *driver = driver_get_ptr(); @@ -1111,6 +1092,7 @@ const shader_backend_t gl_cg_backend = { gl_cg_set_coords, gl_cg_set_mvp, gl_cg_get_prev_textures, + gl_cg_get_feedback_pass, gl_cg_mipmap_input, gl_cg_get_current_shader, diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index f7242376b6..4df43ebceb 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -89,6 +89,7 @@ struct shader_uniforms int lut_texture[GFX_MAX_TEXTURES]; struct shader_uniforms_frame orig; + struct shader_uniforms_frame feedback; struct shader_uniforms_frame pass[GFX_MAX_SHADERS]; struct shader_uniforms_frame prev[PREV_TEXTURES]; }; @@ -212,7 +213,7 @@ typedef struct glsl_shader_data unsigned gl_attrib_index; GLuint gl_program[GFX_MAX_SHADERS]; GLuint gl_teximage[GFX_MAX_TEXTURES]; - GLint gl_attribs[PREV_TEXTURES + 1 + 4 + GFX_MAX_SHADERS]; + GLint gl_attribs[PREV_TEXTURES + 2 + 4 + GFX_MAX_SHADERS]; state_tracker_t *gl_state_tracker; } glsl_shader_data_t; @@ -606,6 +607,9 @@ static void find_uniforms(glsl_shader_data_t *glsl, clear_uniforms_frame(&uni->orig); find_uniforms_frame(glsl, prog, &uni->orig, "Orig"); + clear_uniforms_frame(&uni->feedback); + find_uniforms_frame(glsl, prog, &uni->feedback, "Feedback"); + if (pass > 1) { snprintf(frame_base, sizeof(frame_base), "PassPrev%u", pass); @@ -944,6 +948,7 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, unsigned frame_count, const void *_info, const void *_prev_info, + const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { GLfloat buffer[512]; @@ -954,6 +959,7 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, size_t size = 0, attribs_size = 0; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; + const struct gfx_tex_info *feedback_info = (const struct gfx_tex_info*)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; struct glsl_attrib *attr = (struct glsl_attrib*)attribs; driver_t *driver = driver_get_ptr(); @@ -1011,9 +1017,9 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, texunit++; } - /* Set original texture. */ if (glsl->glsl_active_index) { + /* Set original texture. */ if (uni->orig.texture >= 0) { /* Bind original texture. */ @@ -1042,6 +1048,35 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, size += 8; } + /* Set feedback texture. */ + if (uni->feedback.texture >= 0) + { + /* Bind original texture. */ + glActiveTexture(GL_TEXTURE0 + texunit); + glUniform1i(uni->feedback.texture, texunit); + glBindTexture(GL_TEXTURE_2D, feedback_info->tex); + texunit++; + } + + if (uni->feedback.texture_size >= 0) + glUniform2fv(uni->feedback.texture_size, 1, feedback_info->tex_size); + + if (uni->feedback.input_size >= 0) + glUniform2fv(uni->feedback.input_size, 1, feedback_info->input_size); + + /* Pass texture coordinates. */ + if (uni->feedback.tex_coord >= 0) + { + attr->loc = uni->feedback.tex_coord; + attr->size = 2; + attr->offset = size * sizeof(GLfloat); + attribs_size++; + attr++; + + memcpy(buffer + size, feedback_info->coord, 8 * sizeof(GLfloat)); + size += 8; + } + /* Bind FBO textures. */ for (i = 0; i < fbo_info_cnt; i++) { @@ -1350,6 +1385,17 @@ static bool gl_glsl_mipmap_input(unsigned idx) return false; } +static bool gl_glsl_get_feedback_pass(unsigned *index) +{ + driver_t *driver = driver_get_ptr(); + glsl_shader_data_t *glsl = (glsl_shader_data_t*)driver->video_shader_data; + if (!glsl || glsl->shader->feedback_pass < 0) + return false; + + *index = glsl->shader->feedback_pass; + return true; +} + static struct video_shader *gl_glsl_get_current_shader(void) { driver_t *driver = driver_get_ptr(); @@ -1384,6 +1430,7 @@ const shader_backend_t gl_glsl_backend = { gl_glsl_set_coords, gl_glsl_set_mvp, gl_glsl_get_prev_textures, + gl_glsl_get_feedback_pass, gl_glsl_mipmap_input, gl_glsl_get_current_shader, diff --git a/gfx/drivers_shader/shader_hlsl.c b/gfx/drivers_shader/shader_hlsl.c index 369d190241..ddc2bc46a6 100644 --- a/gfx/drivers_shader/shader_hlsl.c +++ b/gfx/drivers_shader/shader_hlsl.c @@ -107,12 +107,14 @@ static void hlsl_set_params(void *data, unsigned width, unsigned height, unsigned frame_counter, const void *_info, const void *_prev_info, + const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { d3d_video_t *d3d = (d3d_video_t*)data; LPDIRECT3DDEVICE d3d_device_ptr = (LPDIRECT3DDEVICE)d3d->dev; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; + (void)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); @@ -477,6 +479,12 @@ static bool hlsl_mipmap_input(unsigned idx) return false; } +static bool hlsl_get_feedback_pass(unsigned *idx) +{ + (void)idx; + return false; +} + static struct video_shader *hlsl_get_current_shader(void) { return NULL; @@ -494,6 +502,7 @@ const shader_backend_t hlsl_backend = { NULL, /* hlsl_set_coords */ hlsl_set_mvp, NULL, /* hlsl_get_prev_textures */ + hlsl_get_feedback_pass, hlsl_mipmap_input, hlsl_get_current_shader, diff --git a/gfx/drivers_shader/shader_null.c b/gfx/drivers_shader/shader_null.c index 6f0125e3cb..1297b4573e 100644 --- a/gfx/drivers_shader/shader_null.c +++ b/gfx/drivers_shader/shader_null.c @@ -43,6 +43,7 @@ static void shader_null_set_params(void *data, unsigned width, unsigned height, unsigned frame_count, const void *info, const void *prev_info, + const void *feedback_info, const void *fbo_info, unsigned fbo_info_cnt) { } @@ -118,6 +119,12 @@ static bool shader_null_mipmap_input(unsigned idx) return false; } +static bool shader_null_get_feedback_pass(unsigned *idx) +{ + (void)idx; + return false; +} + static struct video_shader *shader_null_get_current_shader(void) { return NULL; @@ -135,6 +142,7 @@ const shader_backend_t shader_null_backend = { shader_null_set_coords, shader_null_set_mvp, shader_null_get_prev_textures, + shader_null_get_feedback_pass, shader_null_mipmap_input, shader_null_get_current_shader, diff --git a/gfx/video_shader_driver.h b/gfx/video_shader_driver.h index b502f09479..48ffcc13c1 100644 --- a/gfx/video_shader_driver.h +++ b/gfx/video_shader_driver.h @@ -35,6 +35,7 @@ typedef struct shader_backend unsigned frame_counter, const void *info, const void *prev_info, + const void *feedback_info, const void *fbo_info, unsigned fbo_info_cnt); void (*use)(void *data, unsigned index); @@ -45,6 +46,7 @@ typedef struct shader_backend bool (*set_coords)(const void *data); bool (*set_mvp)(void *data, const math_matrix_4x4 *mat); unsigned (*get_prev_textures)(void); + bool (*get_feedback_pass)(unsigned *pass); bool (*mipmap_input)(unsigned index); struct video_shader *(*get_current_shader)(void); diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index 670d77795e..61a3dc8fbd 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -616,6 +616,9 @@ bool video_shader_read_conf_cgp(config_file_t *conf, struct video_shader *shader return false; } + if (!config_get_int(conf, "feedback_pass", &shader->feedback_pass)) + shader->feedback_pass = -1; + shader->passes = min(shaders, GFX_MAX_SHADERS); for (i = 0; i < shader->passes; i++) { @@ -771,6 +774,8 @@ void video_shader_write_conf_cgp(config_file_t *conf, unsigned i; config_set_int(conf, "shaders", shader->passes); + if (shader->feedback_pass >= 0) + config_set_int(conf, "feedback_pass", shader->feedback_pass); for (i = 0; i < shader->passes; i++) { diff --git a/gfx/video_shader_parse.h b/gfx/video_shader_parse.h index a3502badec..8b8c0ebd3e 100644 --- a/gfx/video_shader_parse.h +++ b/gfx/video_shader_parse.h @@ -150,6 +150,10 @@ struct video_shader char script_path[PATH_MAX_LENGTH]; char *script; /* Dynamically allocated. Must be free'd. Only used by XML. */ char script_class[512]; + + /* If < 0, no feedback pass is used. Otherwise, + * the FBO after pass #N is passed a texture to next frame. */ + int feedback_pass; }; /** diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index a412673879..63bea006fb 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -246,6 +246,7 @@ def translate_varying(cg): 'IN.vertex_coord': 'VertexCoord', 'IN.lut_tex_coord': 'LUTTexCoord', 'ORIG.tex_coord': 'OrigTexCoord', + 'FEEDBACK.tex_coord': 'FeedbackTexCoord', 'PREV.tex_coord': 'PrevTexCoord', 'PREV1.tex_coord': 'Prev1TexCoord', 'PREV2.tex_coord': 'Prev2TexCoord', @@ -276,6 +277,7 @@ def translate_varying(cg): def translate_texture_size(cg): translations = { 'ORIG.texture_size': 'OrigTextureSize', + 'FEEDBACK.texture_size': 'FeedbackTextureSize', 'PREV.texture_size': 'PrevTextureSize', 'PREV1.texture_size': 'Prev1TextureSize', 'PREV2.texture_size': 'Prev2TextureSize', @@ -299,6 +301,7 @@ def translate_texture_size(cg): 'PASSPREV7.texture_size': 'PassPrev7TextureSize', 'PASSPREV8.texture_size': 'PassPrev8TextureSize', 'ORIG.video_size': 'OrigInputSize', + 'FEEDBACK.video_size': 'FeedbackInputSize', 'PREV.video_size': 'PrevInputSize', 'PREV1.video_size': 'Prev1InputSize', 'PREV2.video_size': 'Prev2InputSize', @@ -451,6 +454,7 @@ def replace_global_fragment(source): def translate_texture(cg): translations = { 'ORIG.texture': 'OrigTexture', + 'FEEDBACK.texture': 'FeedbackTexture', 'PREV.texture': 'PrevTexture', 'PREV1.texture': 'Prev1Texture', 'PREV2.texture': 'Prev2Texture', From c4691b26685563af628f4c498498420dbd196059 Mon Sep 17 00:00:00 2001 From: CautiousAlbino Date: Sun, 30 Aug 2015 16:57:34 +0200 Subject: [PATCH 429/822] Add include_compressed param to dir_list_new. Do not try to load in compressed archives unless we expect them. Fixes hang in input autodetect where it tried to parse a zip file as an archive. --- audio/audio_dsp_filter.c | 2 +- dir_list_special.c | 4 ++-- frontend/frontend_salamander.c | 2 +- gfx/drivers_context/drm_egl_ctx.c | 2 +- gfx/video_filter.c | 2 +- input/input_autodetect.c | 4 ++-- libretro-common/file/dir_list.c | 30 +++++++++++++----------- libretro-common/file/dir_list_obj.m | 31 ++++++++++++++----------- libretro-common/include/file/dir_list.h | 9 +++---- menu/menu_displaylist.c | 2 +- 10 files changed, 49 insertions(+), 39 deletions(-) diff --git a/audio/audio_dsp_filter.c b/audio/audio_dsp_filter.c index ef4da4c9ec..c0b9d77d02 100644 --- a/audio/audio_dsp_filter.c +++ b/audio/audio_dsp_filter.c @@ -242,7 +242,7 @@ rarch_dsp_filter_t *rarch_dsp_filter_new( #if !defined(HAVE_FILTERS_BUILTIN) && defined(HAVE_DYLIB) fill_pathname_basedir(basedir, filter_config, sizeof(basedir)); - plugs = dir_list_new(basedir, EXT_EXECUTABLES, false); + plugs = dir_list_new(basedir, EXT_EXECUTABLES, false, false); if (!plugs) goto error; #endif diff --git a/dir_list_special.c b/dir_list_special.c index 0a8913ec76..463359c43b 100644 --- a/dir_list_special.c +++ b/dir_list_special.c @@ -25,7 +25,7 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty const char *exts = NULL; bool include_dirs = false; - global_t *global = global_get_ptr(); + global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); (void)input_dir; @@ -58,5 +58,5 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty return NULL; } - return dir_list_new(dir, exts, include_dirs); + return dir_list_new(dir, exts, include_dirs, false); } diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index 78d6174efa..b6611dc229 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -42,7 +42,7 @@ static void find_first_libretro_core(char *first_file, RARCH_LOG("Searching for valid libretro implementation in: \"%s\".\n", dir); - list = dir_list_new(dir, ext, false); + list = dir_list_new(dir, ext, false, false); if (!list) { RARCH_ERR("Couldn't read directory. Cannot infer default libretro core.\n"); diff --git a/gfx/drivers_context/drm_egl_ctx.c b/gfx/drivers_context/drm_egl_ctx.c index ca64e8ba79..1d75843bf0 100644 --- a/gfx/drivers_context/drm_egl_ctx.c +++ b/gfx/drivers_context/drm_egl_ctx.c @@ -444,7 +444,7 @@ static bool gfx_ctx_drm_egl_init(void *data) return false; drm->g_drm_fd = -1; - gpu_descriptors = dir_list_new("/dev/dri", NULL, false); + gpu_descriptors = dir_list_new("/dev/dri", NULL, false, false); nextgpu: free_drm_resources(drm); diff --git a/gfx/video_filter.c b/gfx/video_filter.c index 5df658891f..c9c3f5d774 100644 --- a/gfx/video_filter.c +++ b/gfx/video_filter.c @@ -396,7 +396,7 @@ rarch_softfilter_t *rarch_softfilter_new(const char *filter_config, #if defined(HAVE_DYLIB) fill_pathname_basedir(basedir, filter_config, sizeof(basedir)); - plugs = dir_list_new(basedir, EXT_EXECUTABLES, false); + plugs = dir_list_new(basedir, EXT_EXECUTABLES, false, false); if (!plugs) { RARCH_ERR("[SoftFilter]: Could not build up string list...\n"); diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 2dd8d710e5..aa25b32354 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -199,10 +199,10 @@ static bool input_autoconfigure_joypad_from_conf_dir( sizeof(path)); if (settings) - list = dir_list_new(path, "cfg", false); + list = dir_list_new(path, "cfg", false, false); if (!list || !list->size) - list = dir_list_new(settings->input.autoconfig_dir, "cfg", false); + list = dir_list_new(settings->input.autoconfig_dir, "cfg", false, false); if(!list) return false; diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 774b34bc68..8c10645c7b 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -129,13 +129,14 @@ static bool dirent_is_directory(const char *path, /** * parse_dir_entry: - * @name : name of the directory listing entry. - * @file_path : file path of the directory listing entry. - * @is_dir : is the directory listing a directory? - * @include_dirs : include directories as part of the finished directory listing? - * @list : pointer to directory listing. - * @ext_list : pointer to allowed file extensions listing. - * @file_ext : file extension of the directory listing entry. + * @name : name of the directory listing entry. + * @file_path : file path of the directory listing entry. + * @is_dir : is the directory listing a directory? + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : Include compressed files, even if not part of ext_list. + * @list : pointer to directory listing. + * @ext_list : pointer to allowed file extensions listing. + * @file_ext : file extension of the directory listing entry. * * Parses a directory listing. * @@ -143,7 +144,7 @@ static bool dirent_is_directory(const char *path, * continue to the next entry in the directory listing. **/ static int parse_dir_entry(const char *name, char *file_path, - bool is_dir, bool include_dirs, + bool is_dir, bool include_dirs, bool include_compressed, struct string_list *list, struct string_list *ext_list, const char *file_ext) { @@ -169,6 +170,9 @@ static int parse_dir_entry(const char *name, char *file_path, if (!is_compressed_file && !is_dir && ext_list && !supported_by_core) return 1; + if (!include_compressed && !supported_by_core) + return 1; + if (is_dir) attr.i = RARCH_DIRECTORY; if (is_compressed_file) @@ -195,6 +199,7 @@ static int parse_dir_entry(const char *name, char *file_path, * @dir : directory path. * @ext : allowed extensions of file directory entries to include. * @include_dirs : include directories as part of the finished directory listing? + * @strict_ext : Only include files which match ext. Do not try to match compressed files, etc. * * Create a directory listing. * @@ -202,7 +207,7 @@ static int parse_dir_entry(const char *name, char *file_path, * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, - const char *ext, bool include_dirs) + const char *ext, bool include_dirs, bool include_compressed) { #ifdef _WIN32 WIN32_FIND_DATA ffd; @@ -241,14 +246,14 @@ struct string_list *dir_list_new(const char *dir, fill_pathname_join(file_path, dir, name, sizeof(file_path)); ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, list, ext_list, file_ext); + include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) goto error; if (ret == 1) continue; - }while (FindNextFile(hFind, &ffd) != 0); + } while (FindNextFile(hFind, &ffd) != 0); FindClose(hFind); string_list_free(ext_list); @@ -275,7 +280,7 @@ error: is_dir = dirent_is_directory(file_path, entry); ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, list, ext_list, file_ext); + include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) goto error; @@ -290,7 +295,6 @@ error: return list; error: - if (directory) closedir(directory); diff --git a/libretro-common/file/dir_list_obj.m b/libretro-common/file/dir_list_obj.m index b1325acee1..4fd38f4bf2 100644 --- a/libretro-common/file/dir_list_obj.m +++ b/libretro-common/file/dir_list_obj.m @@ -105,13 +105,14 @@ static bool dirent_is_directory(const char *path) /** * parse_dir_entry: - * @name : name of the directory listing entry. - * @file_path : file path of the directory listing entry. - * @is_dir : is the directory listing a directory? - * @include_dirs : include directories as part of the finished directory listing? - * @list : pointer to directory listing. - * @ext_list : pointer to allowed file extensions listing. - * @file_ext : file extension of the directory listing entry. + * @name : name of the directory listing entry. + * @file_path : file path of the directory listing entry. + * @is_dir : is the directory listing a directory? + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : include compressed files, even when not part of ext_list. + * @list : pointer to directory listing. + * @ext_list : pointer to allowed file extensions listing. + * @file_ext : file extension of the directory listing entry. * * Parses a directory listing. * @@ -119,7 +120,7 @@ static bool dirent_is_directory(const char *path) * continue to the next entry in the directory listing. **/ static int parse_dir_entry(const char *name, char *file_path, - bool is_dir, bool include_dirs, + bool is_dir, bool include_dirs, bool include_compressed, struct string_list *list, struct string_list *ext_list, const char *file_ext) { @@ -145,6 +146,9 @@ static int parse_dir_entry(const char *name, char *file_path, if (!is_compressed_file && !is_dir && ext_list && !supported_by_core) return 1; + if (!include_compressed && !supported_by_core) + return 1; + if (is_dir) attr.i = RARCH_DIRECTORY; if (is_compressed_file) @@ -168,9 +172,10 @@ static int parse_dir_entry(const char *name, char *file_path, /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : Include compressed files, even if not part of ext. * * Create a directory listing. * @@ -178,7 +183,7 @@ static int parse_dir_entry(const char *name, char *file_path, * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, - const char *ext, bool include_dirs) + const char *ext, bool include_dirs, bool include_compressed) { NSArray *entries = NULL; char path_buf[PATH_MAX_LENGTH] = {0}; @@ -207,7 +212,7 @@ struct string_list *dir_list_new(const char *dir, is_dir = dirent_is_directory(file_path); ret = parse_dir_entry([name UTF8String], file_path, is_dir, - include_dirs, list, ext_list, file_ext); + include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) goto error; diff --git a/libretro-common/include/file/dir_list.h b/libretro-common/include/file/dir_list.h index 724fa3f119..6fc3e0f6b1 100644 --- a/libretro-common/include/file/dir_list.h +++ b/libretro-common/include/file/dir_list.h @@ -31,9 +31,10 @@ extern "C" { /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : include compressed files, even when not part of ext. * * Create a directory listing. * @@ -41,7 +42,7 @@ extern "C" { * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, const char *ext, - bool include_dirs); + bool include_dirs, bool include_compressed); /** * dir_list_sort: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 8f27db7e0d..0f8d7c085f 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2118,7 +2118,7 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n else str_list = dir_list_new(info->path, filter_ext ? info->exts : NULL, - true); + true, true); if (hash_label == MENU_LABEL_SCAN_DIRECTORY) menu_list_push(info->list, From 9f3f0c1f1a1f75d63cc3ad1f797e6202c9879724 Mon Sep 17 00:00:00 2001 From: CautiousAlbino Date: Sun, 30 Aug 2015 17:02:52 +0200 Subject: [PATCH 430/822] Typo fix. --- libretro-common/file/dir_list.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 8c10645c7b..0071a7078d 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -196,10 +196,10 @@ static int parse_dir_entry(const char *name, char *file_path, /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? - * @strict_ext : Only include files which match ext. Do not try to match compressed files, etc. + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : Only include files which match ext. Do not try to match compressed files, etc. * * Create a directory listing. * From bbeb4d4298b178c60213b2e96529e73f02cf4506 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 17:05:14 +0200 Subject: [PATCH 431/822] (Vita) parse_drive_list - add cache0 path --- frontend/drivers/platform_psp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 29889ebd97..09de71f359 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -302,12 +302,17 @@ static int frontend_psp_parse_drive_list(void *data) #ifndef IS_SALAMANDER file_list_t *list = (file_list_t*)data; +#ifdef VITA + menu_list_push(list, + "cache0:/", "", MENU_FILE_DIRECTORY, 0, 0); +#else menu_list_push(list, "ms0:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "ef0:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "host0:/", "", MENU_FILE_DIRECTORY, 0, 0); +#endif #endif return 0; From f7631c41cde5ae6508916e8d06e29dec90ebe223 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 17:23:01 +0200 Subject: [PATCH 432/822] Backport xerpi's patch --- Makefile.griffin | 5 ++-- file_ops.c | 3 ++ file_path_special.c | 3 ++ libretro-common/file/dir_list.c | 48 ++++++++++++++++++++++++++++++-- libretro-common/file/file_path.c | 3 ++ 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index f904b0f0e2..f3a3756198 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -147,11 +147,12 @@ else ifeq ($(platform), vita) MACHDEP := -DVITA PLATCFLAGS := -Wl,-q -Wall -O3 LIBS += -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub \ - -lSceSysmodule_stub -lSceCtrl_stub -lScePgf_stub \ - -lpng -ljpeg -lfreetype -lz -lm -lc + -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ + -lSceRtc_stub -lz -lm -lc HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_RPNG := 1 + HAVE_ZLIB := 1 HAVE_VITA2D := 1 endif diff --git a/file_ops.c b/file_ops.c index 090003c6e2..148f3c6fc0 100644 --- a/file_ops.c +++ b/file_ops.c @@ -54,6 +54,9 @@ #include #include #endif +#elif defined(VITA) +#include +#include #else #include #include diff --git a/file_path_special.c b/file_path_special.c index bf7e732cc4..b87474ca39 100644 --- a/file_path_special.c +++ b/file_path_special.c @@ -59,6 +59,9 @@ #include #include #endif +#elif defined(VITA) +#include +#include #else #include #include diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 0071a7078d..1d290cde3f 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -38,6 +38,9 @@ #include #include #endif +#elif defined(VITA) +#include +#include #else #include #include @@ -96,7 +99,7 @@ void dir_list_free(struct string_list *list) string_list_free(list); } -#ifndef _WIN32 +#if !defined(_WIN32) && !defined(VITA) /** * * dirent_is_directory: @@ -209,9 +212,12 @@ static int parse_dir_entry(const char *name, char *file_path, struct string_list *dir_list_new(const char *dir, const char *ext, bool include_dirs, bool include_compressed) { -#ifdef _WIN32 +#if defined(_WIN32) WIN32_FIND_DATA ffd; HANDLE hFind = INVALID_HANDLE_VALUE; +#elif defined(VITA) + SceUID directory; + SceIoDirent entry; #else DIR *directory = NULL; const struct dirent *entry = NULL; @@ -262,6 +268,43 @@ struct string_list *dir_list_new(const char *dir, error: if (hFind != INVALID_HANDLE_VALUE) FindClose(hFind); +#elif defined(VITA) + directory = sceIoDopen(dir); + if (directory < 0) + goto error; + + while (sceIoDread(directory, &entry) > 0) + { + char file_path[PATH_MAX_LENGTH]; + int ret = 0; + const char *name = entry.d_name; + const char *file_ext = path_get_extension(name); + bool is_dir = false; + + fill_pathname_join(file_path, dir, name, sizeof(file_path)); + + is_dir = PSP2_S_ISDIR(entry.d_stat.st_mode); + + ret = parse_dir_entry(name, file_path, is_dir, + include_dirs, include_compressed, list, ext_list, file_ext); + + if (ret == -1) + { + sceIoDclose(directory); + goto error; + } + + if (ret == 1) + continue; + } + + sceIoDclose(directory); + + string_list_free(ext_list); + return list; + +error: + #else directory = opendir(dir); if (!directory) @@ -297,7 +340,6 @@ error: error: if (directory) closedir(directory); - #endif string_list_free(list); string_list_free(ext_list); diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index 9e7ca8e732..7fd3760f7c 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -63,6 +63,9 @@ #include #include #endif +#elif defined(VITA) +#include +#include #else #include #include From ad1825ca50f014cc2faff636bcd8395344c139b9 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 30 Aug 2015 18:21:07 +0200 Subject: [PATCH 433/822] Revert "Add support for shader pass feedback." --- gfx/drivers/gl.c | 411 +++++++++++------------------- gfx/drivers/gl_common.h | 5 - gfx/drivers_shader/shader_gl_cg.c | 130 ++++++---- gfx/drivers_shader/shader_glsl.c | 51 +--- gfx/drivers_shader/shader_hlsl.c | 9 - gfx/drivers_shader/shader_null.c | 8 - gfx/video_shader_driver.h | 2 - gfx/video_shader_parse.c | 5 - gfx/video_shader_parse.h | 4 - tools/cg2glsl.py | 4 - 10 files changed, 219 insertions(+), 410 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 41938da36a..fe0fadd5c9 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -429,128 +429,109 @@ static void gl_compute_fbo_geometry(gl_t *gl, unsigned width, unsigned height, } } -static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture) +static void gl_create_fbo_textures(gl_t *gl) { + int i; settings_t *settings = config_get_ptr(); - - enum gfx_wrap_type wrap; - GLenum min_filter, mag_filter, wrap_enum; - bool mipmapped = false; - bool smooth = false; - bool fp_fbo, srgb_fbo; - GLuint base_filt = settings->video.smooth ? GL_LINEAR : GL_NEAREST; GLuint base_mip_filt = settings->video.smooth ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST; - glBindTexture(GL_TEXTURE_2D, texture); - - mipmapped = gl->shader->mipmap_input(i + 2); - - min_filter = mipmapped ? base_mip_filt : base_filt; - if (gl->shader->filter_type(i + 2, &smooth)) - { - min_filter = mipmapped ? (smooth ? - GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST) - : (smooth ? GL_LINEAR : GL_NEAREST); - } - - mag_filter = min_filter_to_mag(min_filter); - - wrap = gl->shader->wrap_type(i + 2); - wrap_enum = gl_wrap_type_to_enum(wrap); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum); - - fp_fbo = gl->fbo_scale[i].fp_fbo; - srgb_fbo = gl->fbo_scale[i].srgb_fbo; - - if (fp_fbo) - { - if (!gl->has_fp_fbo) - RARCH_ERR("[GL]: Floating-point FBO was requested, but is not supported. Falling back to UNORM. Result may band/clip/etc.!\n"); - } - else if (srgb_fbo) - { - if (!gl->has_srgb_fbo) - RARCH_ERR("[GL]: sRGB FBO was requested, but it is not supported. Falling back to UNORM. Result may have banding!\n"); - } - - if (settings->video.force_srgb_disable) - srgb_fbo = false; - -#ifndef HAVE_OPENGLES2 - if (fp_fbo && gl->has_fp_fbo) - { - RARCH_LOG("[GL]: FBO pass #%d is floating-point.\n", i); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, - 0, GL_RGBA, GL_FLOAT, NULL); - } - else -#endif - { -#ifndef HAVE_OPENGLES - settings_t *settings = config_get_ptr(); - GLuint base_filt = settings->video.smooth ? GL_LINEAR : GL_NEAREST; - GLuint base_mip_filt = settings->video.smooth ? - GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST; - - if (srgb_fbo && gl->has_srgb_fbo) - { - RARCH_LOG("[GL]: FBO pass #%d is sRGB.\n", i); -#ifdef HAVE_OPENGLES2 - /* EXT defines are same as core GLES3 defines, - * but GLES3 variant requires different arguments. */ - glTexImage2D(GL_TEXTURE_2D, - 0, GL_SRGB_ALPHA_EXT, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - gl->has_srgb_fbo_gles3 ? GL_RGBA : GL_SRGB_ALPHA_EXT, - GL_UNSIGNED_BYTE, NULL); -#else - glTexImage2D(GL_TEXTURE_2D, - 0, GL_SRGB8_ALPHA8, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); -#endif - } - else -#endif - { -#ifdef HAVE_OPENGLES2 - glTexImage2D(GL_TEXTURE_2D, - 0, GL_RGBA, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); -#else - /* Avoid potential performance - * reductions on particular platforms. */ - glTexImage2D(GL_TEXTURE_2D, - 0, RARCH_GL_INTERNAL_FORMAT32, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL); -#endif - } - } -} - -static void gl_create_fbo_textures(gl_t *gl) -{ - int i; glGenTextures(gl->fbo_pass, gl->fbo_texture); for (i = 0; i < gl->fbo_pass; i++) { - gl_create_fbo_texture(gl, i, gl->fbo_texture[i]); - } + enum gfx_wrap_type wrap; + GLenum min_filter, mag_filter, wrap_enum; + bool mipmapped = false; + bool smooth = false; + bool fp_fbo, srgb_fbo; - if (gl->fbo_feedback_enable) - { - glGenTextures(1, &gl->fbo_feedback_texture); - gl_create_fbo_texture(gl, gl->fbo_feedback_pass, gl->fbo_feedback_texture); + glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]); + + mipmapped = gl->shader->mipmap_input(i + 2); + + min_filter = mipmapped ? base_mip_filt : base_filt; + if (gl->shader->filter_type(i + 2, &smooth)) + min_filter = mipmapped ? (smooth ? + GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST) + : (smooth ? GL_LINEAR : GL_NEAREST); + + mag_filter = min_filter_to_mag(min_filter); + + wrap = gl->shader->wrap_type(i + 2); + wrap_enum = gl_wrap_type_to_enum(wrap); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum); + + fp_fbo = gl->fbo_scale[i].fp_fbo; + srgb_fbo = gl->fbo_scale[i].srgb_fbo; + + if (fp_fbo) + { + if (!gl->has_fp_fbo) + RARCH_ERR("[GL]: Floating-point FBO was requested, but is not supported. Falling back to UNORM. Result may band/clip/etc.!\n"); + } + else if (srgb_fbo) + { + if (!gl->has_srgb_fbo) + RARCH_ERR("[GL]: sRGB FBO was requested, but it is not supported. Falling back to UNORM. Result may have banding!\n"); + } + + if (settings->video.force_srgb_disable) + srgb_fbo = false; + + #ifndef HAVE_OPENGLES2 + if (fp_fbo && gl->has_fp_fbo) + { + RARCH_LOG("[GL]: FBO pass #%d is floating-point.\n", i); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, + 0, GL_RGBA, GL_FLOAT, NULL); + } + else + #endif + { + #ifndef HAVE_OPENGLES + if (srgb_fbo && gl->has_srgb_fbo) + { + RARCH_LOG("[GL]: FBO pass #%d is sRGB.\n", i); + #ifdef HAVE_OPENGLES2 + /* EXT defines are same as core GLES3 defines, + * but GLES3 variant requires different arguments. */ + glTexImage2D(GL_TEXTURE_2D, + 0, GL_SRGB_ALPHA_EXT, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + gl->has_srgb_fbo_gles3 ? GL_RGBA : GL_SRGB_ALPHA_EXT, + GL_UNSIGNED_BYTE, NULL); + #else + glTexImage2D(GL_TEXTURE_2D, + 0, GL_SRGB8_ALPHA8, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); + #endif + } + else + #endif + { + #ifdef HAVE_OPENGLES2 + glTexImage2D(GL_TEXTURE_2D, + 0, GL_RGBA, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); + #else + /* Avoid potential performance + * reductions on particular platforms. */ + glTexImage2D(GL_TEXTURE_2D, + 0, RARCH_GL_INTERNAL_FORMAT32, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL); + #endif + } + } } glBindTexture(GL_TEXTURE_2D, 0); @@ -564,10 +545,10 @@ static bool gl_create_fbo_targets(gl_t *gl) glBindTexture(GL_TEXTURE_2D, 0); glGenFramebuffers(gl->fbo_pass, gl->fbo); - GLenum status; - for (i = 0; i < gl->fbo_pass; i++) { + GLenum status; + glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo[i]); glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_texture[i], 0); @@ -577,28 +558,10 @@ static bool gl_create_fbo_targets(gl_t *gl) goto error; } - if (gl->fbo_feedback_texture) - { - glGenFramebuffers(1, &gl->fbo_feedback); - glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo_feedback); - glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, - RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_feedback_texture, 0); - - status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); - if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) - goto error; - - /* Make sure the feedback textures are cleared so we don't feedback noise. */ - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClear(GL_COLOR_BUFFER_BIT); - } - return true; error: glDeleteFramebuffers(gl->fbo_pass, gl->fbo); - if (gl->fbo_feedback) - glDeleteFramebuffers(1, &gl->fbo_feedback); RARCH_ERR("Failed to set up frame buffer objects. Multi-pass shading will not work.\n"); return false; } @@ -614,16 +577,6 @@ static void gl_deinit_fbo(gl_t *gl) memset(gl->fbo, 0, sizeof(gl->fbo)); gl->fbo_inited = false; gl->fbo_pass = 0; - - if (gl->fbo_feedback) - glDeleteFramebuffers(1, &gl->fbo_feedback); - if (gl->fbo_feedback_texture) - glDeleteTextures(1, &gl->fbo_feedback_texture); - - gl->fbo_feedback_enable = false; - gl->fbo_feedback_pass = -1; - gl->fbo_feedback_texture = 0; - gl->fbo_feedback = 0; } /* Set up render to texture. */ @@ -689,20 +642,6 @@ static void gl_init_fbo(gl_t *gl, unsigned fbo_width, unsigned fbo_height) gl->fbo_rect[i].width, gl->fbo_rect[i].height); } - gl->fbo_feedback_enable = gl->shader->get_feedback_pass(&gl->fbo_feedback_pass); - - if (gl->fbo_feedback_enable && gl->fbo_feedback_pass < (unsigned)gl->fbo_pass) - { - RARCH_LOG("[GL]: Creating feedback FBO %d @ %ux%u\n", i, - gl->fbo_rect[gl->fbo_feedback_pass].width, gl->fbo_rect[gl->fbo_feedback_pass].height); - } - else if (gl->fbo_feedback_enable) - { - RARCH_WARN("[GL]: Tried to create feedback FBO of pass #%u, but there are only %d FBO passes. Will use input texture as feedback texture.\n", - gl->fbo_feedback_pass, gl->fbo_pass); - gl->fbo_feedback_enable = false; - } - gl_create_fbo_textures(gl); if (!gl_create_fbo_targets(gl)) { @@ -979,84 +918,6 @@ static INLINE void gl_start_frame_fbo(gl_t *gl) #endif } -static void gl_check_fbo_dimension(gl_t *gl, unsigned i, GLuint fbo, GLuint texture, bool update_feedback) -{ - GLenum status; - unsigned img_width, img_height, max, pow2_size; - bool check_dimensions = false; - struct gfx_fbo_rect *fbo_rect = &gl->fbo_rect[i]; - - if (!fbo_rect) - return; - - check_dimensions = - (fbo_rect->max_img_width > fbo_rect->width) || - (fbo_rect->max_img_height > fbo_rect->height); - - if (!check_dimensions) - return; - - /* Check proactively since we might suddently - * get sizes of tex_w width or tex_h height. */ - img_width = fbo_rect->max_img_width; - img_height = fbo_rect->max_img_height; - max = img_width > img_height ? img_width : img_height; - pow2_size = next_pow2(max); - - fbo_rect->width = fbo_rect->height = pow2_size; - - { - glBindFramebuffer(RARCH_GL_FRAMEBUFFER, fbo); - glBindTexture(GL_TEXTURE_2D, texture); - - glTexImage2D(GL_TEXTURE_2D, - 0, RARCH_GL_INTERNAL_FORMAT32, - fbo_rect->width, - fbo_rect->height, - 0, RARCH_GL_TEXTURE_TYPE32, - RARCH_GL_FORMAT32, NULL); - - glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, - RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, - texture, 0); - - status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); - if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) - RARCH_WARN("Failed to reinitialize FBO texture.\n"); - } - - /* Update feedback texture in-place so we avoid having to juggle two different fbo_rect structs since they get updated here. */ - if (update_feedback) - { - glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo_feedback); - glBindTexture(GL_TEXTURE_2D, gl->fbo_feedback_texture); - - glTexImage2D(GL_TEXTURE_2D, - 0, RARCH_GL_INTERNAL_FORMAT32, - fbo_rect->width, - fbo_rect->height, - 0, RARCH_GL_TEXTURE_TYPE32, - RARCH_GL_FORMAT32, NULL); - - glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, - RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, - gl->fbo_feedback_texture, 0); - - status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); - if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) - RARCH_WARN("Failed to reinitialize FBO texture.\n"); - else - { - /* Make sure the feedback textures are cleared so we don't feedback noise. */ - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClear(GL_COLOR_BUFFER_BIT); - } - } - - RARCH_LOG("[GL]: Recreating FBO texture #%d: %ux%u\n", - i, fbo_rect->width, fbo_rect->height); -} - /* On resize, we might have to recreate our FBOs * due to "Viewport" scale, and set a new viewport. */ @@ -1067,13 +928,55 @@ static void gl_check_fbo_dimensions(gl_t *gl) /* Check if we have to recreate our FBO textures. */ for (i = 0; i < gl->fbo_pass; i++) { - bool update_feedback = gl->fbo_feedback_enable && (unsigned)i == gl->fbo_feedback_pass; - gl_check_fbo_dimension(gl, i, gl->fbo[i], gl->fbo_texture[i], update_feedback); + GLenum status; + unsigned img_width, img_height, max, pow2_size; + bool check_dimensions = false; + struct gfx_fbo_rect *fbo_rect = &gl->fbo_rect[i]; + + if (!fbo_rect) + continue; + + check_dimensions = + (fbo_rect->max_img_width > fbo_rect->width) || + (fbo_rect->max_img_height > fbo_rect->height); + + if (!check_dimensions) + continue; + + /* Check proactively since we might suddently + * get sizes of tex_w width or tex_h height. */ + img_width = fbo_rect->max_img_width; + img_height = fbo_rect->max_img_height; + max = img_width > img_height ? img_width : img_height; + pow2_size = next_pow2(max); + + fbo_rect->width = fbo_rect->height = pow2_size; + + glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo[i]); + glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]); + + glTexImage2D(GL_TEXTURE_2D, + 0, RARCH_GL_INTERNAL_FORMAT32, + fbo_rect->width, + fbo_rect->height, + 0, RARCH_GL_TEXTURE_TYPE32, + RARCH_GL_FORMAT32, NULL); + + glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, + RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + gl->fbo_texture[i], 0); + + status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); + if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) + RARCH_WARN("Failed to reinitialize FBO texture.\n"); + + RARCH_LOG("[GL]: Recreating FBO texture #%d: %ux%u\n", + i, fbo_rect->width, fbo_rect->height); } } static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, - const struct gfx_tex_info *tex_info, const struct gfx_tex_info *feedback_info) + const struct gfx_tex_info *tex_info) { unsigned width, height; const struct gfx_fbo_rect *prev_rect; @@ -1126,7 +1029,7 @@ static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, gl->shader->set_params(gl, prev_rect->img_width, prev_rect->img_height, prev_rect->width, prev_rect->height, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - tex_info, gl->prev_info, feedback_info, fbo_tex_info, fbo_tex_info_cnt); + tex_info, gl->prev_info, fbo_tex_info, fbo_tex_info_cnt); gl->coords.vertices = 4; gl->shader->set_coords(&gl->coords); @@ -1173,7 +1076,7 @@ static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, prev_rect->img_width, prev_rect->img_height, prev_rect->width, prev_rect->height, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - tex_info, gl->prev_info, feedback_info, fbo_tex_info, fbo_tex_info_cnt); + tex_info, gl->prev_info, fbo_tex_info, fbo_tex_info_cnt); gl->coords.vertex = gl->vertex_ptr; @@ -1514,17 +1417,6 @@ static INLINE void gl_set_prev_texture(gl_t *gl, sizeof(*tex_info) * (gl->textures - 1)); memcpy(&gl->prev_info[0], tex_info, sizeof(*tex_info)); - - /* Implement feedback by swapping out FBO/textures for FBO pass #N and feedbacks. */ - if (gl->fbo_feedback_enable) - { - GLuint tmp_fbo = gl->fbo_feedback; - GLuint tmp_tex = gl->fbo_feedback_texture; - gl->fbo_feedback = gl->fbo[gl->fbo_feedback_pass]; - gl->fbo_feedback_texture = gl->fbo_texture[gl->fbo_feedback_pass]; - gl->fbo[gl->fbo_feedback_pass] = tmp_fbo; - gl->fbo_texture[gl->fbo_feedback_pass] = tmp_tex; - } } static INLINE void gl_set_shader_viewport(gl_t *gl, unsigned shader) @@ -1741,22 +1633,6 @@ static bool gl_frame(void *data, const void *frame, gl->tex_info.tex_size[0] = gl->tex_w; gl->tex_info.tex_size[1] = gl->tex_h; - struct gfx_tex_info feedback_info = gl->tex_info; - if (gl->fbo_feedback_enable) - { - const struct gfx_fbo_rect *rect = &gl->fbo_rect[gl->fbo_feedback_pass]; - GLfloat xamt = (GLfloat)rect->img_width / rect->width; - GLfloat yamt = (GLfloat)rect->img_height / rect->height; - - feedback_info.tex = gl->fbo_feedback_texture; - feedback_info.input_size[0] = rect->img_width; - feedback_info.input_size[1] = rect->img_height; - feedback_info.tex_size[0] = rect->width; - feedback_info.tex_size[1] = rect->height; - - set_texture_coords(feedback_info.coord, xamt, yamt); - } - glClear(GL_COLOR_BUFFER_BIT); gl->shader->set_params(gl, @@ -1764,8 +1640,7 @@ static bool gl_frame(void *data, const void *frame, gl->tex_w, gl->tex_h, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - &gl->tex_info, gl->prev_info, &feedback_info, - NULL, 0); + &gl->tex_info, gl->prev_info, NULL, 0); gl->coords.vertices = 4; gl->shader->set_coords(&gl->coords); @@ -1774,7 +1649,7 @@ static bool gl_frame(void *data, const void *frame, #ifdef HAVE_FBO if (gl->fbo_inited) - gl_frame_fbo(gl, frame_count, &gl->tex_info, &feedback_info); + gl_frame_fbo(gl, frame_count, &gl->tex_info); #endif gl_set_prev_texture(gl, &gl->tex_info); diff --git a/gfx/drivers/gl_common.h b/gfx/drivers/gl_common.h index c4c21a89c6..161aff5f8c 100644 --- a/gfx/drivers/gl_common.h +++ b/gfx/drivers/gl_common.h @@ -209,11 +209,6 @@ typedef struct gl int fbo_pass; bool fbo_inited; - bool fbo_feedback_enable; - unsigned fbo_feedback_pass; - GLuint fbo_feedback; - GLuint fbo_feedback_texture; - GLuint hw_render_fbo[GFX_MAX_TEXTURES]; GLuint hw_render_depth[GFX_MAX_TEXTURES]; bool hw_render_fbo_init; diff --git a/gfx/drivers_shader/shader_gl_cg.c b/gfx/drivers_shader/shader_gl_cg.c index 71d398ff6c..556bdedc13 100644 --- a/gfx/drivers_shader/shader_gl_cg.c +++ b/gfx/drivers_shader/shader_gl_cg.c @@ -139,7 +139,6 @@ struct cg_program struct cg_fbo_params fbo[GFX_MAX_SHADERS]; struct cg_fbo_params orig; - struct cg_fbo_params feedback; struct cg_fbo_params prev[PREV_TEXTURES]; }; @@ -153,7 +152,7 @@ typedef struct cg_shader_data struct video_shader *shader; state_tracker_t *state_tracker; GLuint lut_textures[GFX_MAX_TEXTURES]; - CGparameter cg_attribs[PREV_TEXTURES + 2 + 4 + GFX_MAX_SHADERS]; + CGparameter cg_attribs[PREV_TEXTURES + 1 + 4 + GFX_MAX_SHADERS]; char cg_alias_define[GFX_MAX_SHADERS][128]; CGcontext cgCtx; } cg_shader_data_t; @@ -223,40 +222,12 @@ fallback: #define set_param_1f(param, x) \ if (param) cgGLSetParameter1f(param, x) -static void gl_cg_set_texture_info(cg_shader_data_t *cg, const struct cg_fbo_params *params, const struct gfx_tex_info *info) -{ - CGparameter param = params->tex; - if (param) - { - cgGLSetTextureParameter(param, info->tex); - cgGLEnableTextureParameter(param); - } - - set_param_2f(params->vid_size_v, - info->input_size[0], info->input_size[1]); - set_param_2f(params->vid_size_f, - info->input_size[0], info->input_size[1]); - set_param_2f(params->tex_size_v, - info->tex_size[0], info->tex_size[1]); - set_param_2f(params->tex_size_f, - info->tex_size[0], info->tex_size[1]); - - if (params->coord) - { - cgGLSetParameterPointer(params->coord, 2, - GL_FLOAT, 0, info->coord); - cgGLEnableClientState(params->coord); - cg->cg_attribs[cg->cg_attrib_idx++] = params->coord; - } -} - static void gl_cg_set_params(void *data, unsigned width, unsigned height, unsigned tex_width, unsigned tex_height, unsigned out_width, unsigned out_height, unsigned frame_count, const void *_info, const void *_prev_info, - const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { @@ -264,7 +235,6 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, CGparameter param; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; - const struct gfx_tex_info *feedback_info = (const struct gfx_tex_info*)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); @@ -299,14 +269,57 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, } /* Set orig texture. */ - gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].orig, info); + param = cg->prg[cg->active_idx].orig.tex; + if (param) + { + cgGLSetTextureParameter(param, info->tex); + cgGLEnableTextureParameter(param); + } - /* Set feedback texture. */ - gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].feedback, feedback_info); + set_param_2f(cg->prg[cg->active_idx].orig.vid_size_v, + info->input_size[0], info->input_size[1]); + set_param_2f(cg->prg[cg->active_idx].orig.vid_size_f, + info->input_size[0], info->input_size[1]); + set_param_2f(cg->prg[cg->active_idx].orig.tex_size_v, + info->tex_size[0], info->tex_size[1]); + set_param_2f(cg->prg[cg->active_idx].orig.tex_size_f, + info->tex_size[0], info->tex_size[1]); + + if (cg->prg[cg->active_idx].orig.coord) + { + cgGLSetParameterPointer(cg->prg[cg->active_idx].orig.coord, 2, + GL_FLOAT, 0, info->coord); + cgGLEnableClientState(cg->prg[cg->active_idx].orig.coord); + cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].orig.coord; + } /* Set prev textures. */ for (i = 0; i < PREV_TEXTURES; i++) - gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].prev[i], &prev_info[i]); + { + param = cg->prg[cg->active_idx].prev[i].tex; + if (param) + { + cgGLSetTextureParameter(param, prev_info[i].tex); + cgGLEnableTextureParameter(param); + } + + set_param_2f(cg->prg[cg->active_idx].prev[i].vid_size_v, + prev_info[i].input_size[0], prev_info[i].input_size[1]); + set_param_2f(cg->prg[cg->active_idx].prev[i].vid_size_f, + prev_info[i].input_size[0], prev_info[i].input_size[1]); + set_param_2f(cg->prg[cg->active_idx].prev[i].tex_size_v, + prev_info[i].tex_size[0], prev_info[i].tex_size[1]); + set_param_2f(cg->prg[cg->active_idx].prev[i].tex_size_f, + prev_info[i].tex_size[0], prev_info[i].tex_size[1]); + + if (cg->prg[cg->active_idx].prev[i].coord) + { + cgGLSetParameterPointer(cg->prg[cg->active_idx].prev[i].coord, + 2, GL_FLOAT, 0, prev_info[i].coord); + cgGLEnableClientState(cg->prg[cg->active_idx].prev[i].coord); + cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].prev[i].coord; + } + } /* Set lookup textures. */ for (i = 0; i < cg->shader->luts; i++) @@ -335,7 +348,32 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, if (cg->active_idx) { for (i = 0; i < fbo_info_cnt; i++) - gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].fbo[i], &fbo_info[i]); + { + if (cg->prg[cg->active_idx].fbo[i].tex) + { + cgGLSetTextureParameter( + cg->prg[cg->active_idx].fbo[i].tex, fbo_info[i].tex); + cgGLEnableTextureParameter(cg->prg[cg->active_idx].fbo[i].tex); + } + + set_param_2f(cg->prg[cg->active_idx].fbo[i].vid_size_v, + fbo_info[i].input_size[0], fbo_info[i].input_size[1]); + set_param_2f(cg->prg[cg->active_idx].fbo[i].vid_size_f, + fbo_info[i].input_size[0], fbo_info[i].input_size[1]); + + set_param_2f(cg->prg[cg->active_idx].fbo[i].tex_size_v, + fbo_info[i].tex_size[0], fbo_info[i].tex_size[1]); + set_param_2f(cg->prg[cg->active_idx].fbo[i].tex_size_f, + fbo_info[i].tex_size[0], fbo_info[i].tex_size[1]); + + if (cg->prg[cg->active_idx].fbo[i].coord) + { + cgGLSetParameterPointer(cg->prg[cg->active_idx].fbo[i].coord, + 2, GL_FLOAT, 0, fbo_info[i].coord); + cgGLEnableClientState(cg->prg[cg->active_idx].fbo[i].coord); + cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].fbo[i].coord; + } + } } /* #pragma parameters. */ @@ -812,13 +850,6 @@ static void set_program_attributes(cg_shader_data_t *cg, unsigned i) cg->prg[i].orig.tex_size_f = cgGetNamedParameter(cg->prg[i].fprg, "ORIG.texture_size"); cg->prg[i].orig.coord = cgGetNamedParameter(cg->prg[i].vprg, "ORIG.tex_coord"); - cg->prg[i].feedback.tex = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.texture"); - cg->prg[i].feedback.vid_size_v = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.video_size"); - cg->prg[i].feedback.vid_size_f = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.video_size"); - cg->prg[i].feedback.tex_size_v = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.texture_size"); - cg->prg[i].feedback.tex_size_f = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.texture_size"); - cg->prg[i].feedback.coord = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.tex_coord"); - if (i > 1) { char pass_str[64] = {0}; @@ -1050,18 +1081,6 @@ static unsigned gl_cg_get_prev_textures(void) return max_prev; } -static bool gl_cg_get_feedback_pass(unsigned *pass) -{ - driver_t *driver = driver_get_ptr(); - cg_shader_data_t *cg = (cg_shader_data_t*)driver->video_shader_data; - - if (!cg || cg->shader->feedback_pass < 0) - return false; - - *pass = cg->shader->feedback_pass; - return true; -} - static bool gl_cg_mipmap_input(unsigned idx) { driver_t *driver = driver_get_ptr(); @@ -1092,7 +1111,6 @@ const shader_backend_t gl_cg_backend = { gl_cg_set_coords, gl_cg_set_mvp, gl_cg_get_prev_textures, - gl_cg_get_feedback_pass, gl_cg_mipmap_input, gl_cg_get_current_shader, diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index 4df43ebceb..f7242376b6 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -89,7 +89,6 @@ struct shader_uniforms int lut_texture[GFX_MAX_TEXTURES]; struct shader_uniforms_frame orig; - struct shader_uniforms_frame feedback; struct shader_uniforms_frame pass[GFX_MAX_SHADERS]; struct shader_uniforms_frame prev[PREV_TEXTURES]; }; @@ -213,7 +212,7 @@ typedef struct glsl_shader_data unsigned gl_attrib_index; GLuint gl_program[GFX_MAX_SHADERS]; GLuint gl_teximage[GFX_MAX_TEXTURES]; - GLint gl_attribs[PREV_TEXTURES + 2 + 4 + GFX_MAX_SHADERS]; + GLint gl_attribs[PREV_TEXTURES + 1 + 4 + GFX_MAX_SHADERS]; state_tracker_t *gl_state_tracker; } glsl_shader_data_t; @@ -607,9 +606,6 @@ static void find_uniforms(glsl_shader_data_t *glsl, clear_uniforms_frame(&uni->orig); find_uniforms_frame(glsl, prog, &uni->orig, "Orig"); - clear_uniforms_frame(&uni->feedback); - find_uniforms_frame(glsl, prog, &uni->feedback, "Feedback"); - if (pass > 1) { snprintf(frame_base, sizeof(frame_base), "PassPrev%u", pass); @@ -948,7 +944,6 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, unsigned frame_count, const void *_info, const void *_prev_info, - const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { GLfloat buffer[512]; @@ -959,7 +954,6 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, size_t size = 0, attribs_size = 0; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; - const struct gfx_tex_info *feedback_info = (const struct gfx_tex_info*)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; struct glsl_attrib *attr = (struct glsl_attrib*)attribs; driver_t *driver = driver_get_ptr(); @@ -1017,9 +1011,9 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, texunit++; } + /* Set original texture. */ if (glsl->glsl_active_index) { - /* Set original texture. */ if (uni->orig.texture >= 0) { /* Bind original texture. */ @@ -1048,35 +1042,6 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, size += 8; } - /* Set feedback texture. */ - if (uni->feedback.texture >= 0) - { - /* Bind original texture. */ - glActiveTexture(GL_TEXTURE0 + texunit); - glUniform1i(uni->feedback.texture, texunit); - glBindTexture(GL_TEXTURE_2D, feedback_info->tex); - texunit++; - } - - if (uni->feedback.texture_size >= 0) - glUniform2fv(uni->feedback.texture_size, 1, feedback_info->tex_size); - - if (uni->feedback.input_size >= 0) - glUniform2fv(uni->feedback.input_size, 1, feedback_info->input_size); - - /* Pass texture coordinates. */ - if (uni->feedback.tex_coord >= 0) - { - attr->loc = uni->feedback.tex_coord; - attr->size = 2; - attr->offset = size * sizeof(GLfloat); - attribs_size++; - attr++; - - memcpy(buffer + size, feedback_info->coord, 8 * sizeof(GLfloat)); - size += 8; - } - /* Bind FBO textures. */ for (i = 0; i < fbo_info_cnt; i++) { @@ -1385,17 +1350,6 @@ static bool gl_glsl_mipmap_input(unsigned idx) return false; } -static bool gl_glsl_get_feedback_pass(unsigned *index) -{ - driver_t *driver = driver_get_ptr(); - glsl_shader_data_t *glsl = (glsl_shader_data_t*)driver->video_shader_data; - if (!glsl || glsl->shader->feedback_pass < 0) - return false; - - *index = glsl->shader->feedback_pass; - return true; -} - static struct video_shader *gl_glsl_get_current_shader(void) { driver_t *driver = driver_get_ptr(); @@ -1430,7 +1384,6 @@ const shader_backend_t gl_glsl_backend = { gl_glsl_set_coords, gl_glsl_set_mvp, gl_glsl_get_prev_textures, - gl_glsl_get_feedback_pass, gl_glsl_mipmap_input, gl_glsl_get_current_shader, diff --git a/gfx/drivers_shader/shader_hlsl.c b/gfx/drivers_shader/shader_hlsl.c index ddc2bc46a6..369d190241 100644 --- a/gfx/drivers_shader/shader_hlsl.c +++ b/gfx/drivers_shader/shader_hlsl.c @@ -107,14 +107,12 @@ static void hlsl_set_params(void *data, unsigned width, unsigned height, unsigned frame_counter, const void *_info, const void *_prev_info, - const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { d3d_video_t *d3d = (d3d_video_t*)data; LPDIRECT3DDEVICE d3d_device_ptr = (LPDIRECT3DDEVICE)d3d->dev; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; - (void)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); @@ -479,12 +477,6 @@ static bool hlsl_mipmap_input(unsigned idx) return false; } -static bool hlsl_get_feedback_pass(unsigned *idx) -{ - (void)idx; - return false; -} - static struct video_shader *hlsl_get_current_shader(void) { return NULL; @@ -502,7 +494,6 @@ const shader_backend_t hlsl_backend = { NULL, /* hlsl_set_coords */ hlsl_set_mvp, NULL, /* hlsl_get_prev_textures */ - hlsl_get_feedback_pass, hlsl_mipmap_input, hlsl_get_current_shader, diff --git a/gfx/drivers_shader/shader_null.c b/gfx/drivers_shader/shader_null.c index 1297b4573e..6f0125e3cb 100644 --- a/gfx/drivers_shader/shader_null.c +++ b/gfx/drivers_shader/shader_null.c @@ -43,7 +43,6 @@ static void shader_null_set_params(void *data, unsigned width, unsigned height, unsigned frame_count, const void *info, const void *prev_info, - const void *feedback_info, const void *fbo_info, unsigned fbo_info_cnt) { } @@ -119,12 +118,6 @@ static bool shader_null_mipmap_input(unsigned idx) return false; } -static bool shader_null_get_feedback_pass(unsigned *idx) -{ - (void)idx; - return false; -} - static struct video_shader *shader_null_get_current_shader(void) { return NULL; @@ -142,7 +135,6 @@ const shader_backend_t shader_null_backend = { shader_null_set_coords, shader_null_set_mvp, shader_null_get_prev_textures, - shader_null_get_feedback_pass, shader_null_mipmap_input, shader_null_get_current_shader, diff --git a/gfx/video_shader_driver.h b/gfx/video_shader_driver.h index 48ffcc13c1..b502f09479 100644 --- a/gfx/video_shader_driver.h +++ b/gfx/video_shader_driver.h @@ -35,7 +35,6 @@ typedef struct shader_backend unsigned frame_counter, const void *info, const void *prev_info, - const void *feedback_info, const void *fbo_info, unsigned fbo_info_cnt); void (*use)(void *data, unsigned index); @@ -46,7 +45,6 @@ typedef struct shader_backend bool (*set_coords)(const void *data); bool (*set_mvp)(void *data, const math_matrix_4x4 *mat); unsigned (*get_prev_textures)(void); - bool (*get_feedback_pass)(unsigned *pass); bool (*mipmap_input)(unsigned index); struct video_shader *(*get_current_shader)(void); diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index 61a3dc8fbd..670d77795e 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -616,9 +616,6 @@ bool video_shader_read_conf_cgp(config_file_t *conf, struct video_shader *shader return false; } - if (!config_get_int(conf, "feedback_pass", &shader->feedback_pass)) - shader->feedback_pass = -1; - shader->passes = min(shaders, GFX_MAX_SHADERS); for (i = 0; i < shader->passes; i++) { @@ -774,8 +771,6 @@ void video_shader_write_conf_cgp(config_file_t *conf, unsigned i; config_set_int(conf, "shaders", shader->passes); - if (shader->feedback_pass >= 0) - config_set_int(conf, "feedback_pass", shader->feedback_pass); for (i = 0; i < shader->passes; i++) { diff --git a/gfx/video_shader_parse.h b/gfx/video_shader_parse.h index 8b8c0ebd3e..a3502badec 100644 --- a/gfx/video_shader_parse.h +++ b/gfx/video_shader_parse.h @@ -150,10 +150,6 @@ struct video_shader char script_path[PATH_MAX_LENGTH]; char *script; /* Dynamically allocated. Must be free'd. Only used by XML. */ char script_class[512]; - - /* If < 0, no feedback pass is used. Otherwise, - * the FBO after pass #N is passed a texture to next frame. */ - int feedback_pass; }; /** diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index 63bea006fb..a412673879 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -246,7 +246,6 @@ def translate_varying(cg): 'IN.vertex_coord': 'VertexCoord', 'IN.lut_tex_coord': 'LUTTexCoord', 'ORIG.tex_coord': 'OrigTexCoord', - 'FEEDBACK.tex_coord': 'FeedbackTexCoord', 'PREV.tex_coord': 'PrevTexCoord', 'PREV1.tex_coord': 'Prev1TexCoord', 'PREV2.tex_coord': 'Prev2TexCoord', @@ -277,7 +276,6 @@ def translate_varying(cg): def translate_texture_size(cg): translations = { 'ORIG.texture_size': 'OrigTextureSize', - 'FEEDBACK.texture_size': 'FeedbackTextureSize', 'PREV.texture_size': 'PrevTextureSize', 'PREV1.texture_size': 'Prev1TextureSize', 'PREV2.texture_size': 'Prev2TextureSize', @@ -301,7 +299,6 @@ def translate_texture_size(cg): 'PASSPREV7.texture_size': 'PassPrev7TextureSize', 'PASSPREV8.texture_size': 'PassPrev8TextureSize', 'ORIG.video_size': 'OrigInputSize', - 'FEEDBACK.video_size': 'FeedbackInputSize', 'PREV.video_size': 'PrevInputSize', 'PREV1.video_size': 'Prev1InputSize', 'PREV2.video_size': 'Prev2InputSize', @@ -454,7 +451,6 @@ def replace_global_fragment(source): def translate_texture(cg): translations = { 'ORIG.texture': 'OrigTexture', - 'FEEDBACK.texture': 'FeedbackTexture', 'PREV.texture': 'PrevTexture', 'PREV1.texture': 'Prev1Texture', 'PREV2.texture': 'Prev2Texture', From aa382a5c7c26183715a3c71a7f8a425ce726e563 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 30 Aug 2015 18:36:25 +0200 Subject: [PATCH 434/822] Revert "Add include_compressed param to dir_list_new." --- audio/audio_dsp_filter.c | 2 +- dir_list_special.c | 4 +-- frontend/frontend_salamander.c | 2 +- gfx/drivers_context/drm_egl_ctx.c | 2 +- gfx/video_filter.c | 2 +- input/input_autodetect.c | 4 +-- libretro-common/file/dir_list.c | 36 +++++++++++-------------- libretro-common/file/dir_list_obj.m | 31 +++++++++------------ libretro-common/include/file/dir_list.h | 9 +++---- menu/menu_displaylist.c | 2 +- 10 files changed, 42 insertions(+), 52 deletions(-) diff --git a/audio/audio_dsp_filter.c b/audio/audio_dsp_filter.c index c0b9d77d02..ef4da4c9ec 100644 --- a/audio/audio_dsp_filter.c +++ b/audio/audio_dsp_filter.c @@ -242,7 +242,7 @@ rarch_dsp_filter_t *rarch_dsp_filter_new( #if !defined(HAVE_FILTERS_BUILTIN) && defined(HAVE_DYLIB) fill_pathname_basedir(basedir, filter_config, sizeof(basedir)); - plugs = dir_list_new(basedir, EXT_EXECUTABLES, false, false); + plugs = dir_list_new(basedir, EXT_EXECUTABLES, false); if (!plugs) goto error; #endif diff --git a/dir_list_special.c b/dir_list_special.c index 463359c43b..0a8913ec76 100644 --- a/dir_list_special.c +++ b/dir_list_special.c @@ -25,7 +25,7 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty const char *exts = NULL; bool include_dirs = false; - global_t *global = global_get_ptr(); + global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); (void)input_dir; @@ -58,5 +58,5 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty return NULL; } - return dir_list_new(dir, exts, include_dirs, false); + return dir_list_new(dir, exts, include_dirs); } diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index b6611dc229..78d6174efa 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -42,7 +42,7 @@ static void find_first_libretro_core(char *first_file, RARCH_LOG("Searching for valid libretro implementation in: \"%s\".\n", dir); - list = dir_list_new(dir, ext, false, false); + list = dir_list_new(dir, ext, false); if (!list) { RARCH_ERR("Couldn't read directory. Cannot infer default libretro core.\n"); diff --git a/gfx/drivers_context/drm_egl_ctx.c b/gfx/drivers_context/drm_egl_ctx.c index 1d75843bf0..ca64e8ba79 100644 --- a/gfx/drivers_context/drm_egl_ctx.c +++ b/gfx/drivers_context/drm_egl_ctx.c @@ -444,7 +444,7 @@ static bool gfx_ctx_drm_egl_init(void *data) return false; drm->g_drm_fd = -1; - gpu_descriptors = dir_list_new("/dev/dri", NULL, false, false); + gpu_descriptors = dir_list_new("/dev/dri", NULL, false); nextgpu: free_drm_resources(drm); diff --git a/gfx/video_filter.c b/gfx/video_filter.c index c9c3f5d774..5df658891f 100644 --- a/gfx/video_filter.c +++ b/gfx/video_filter.c @@ -396,7 +396,7 @@ rarch_softfilter_t *rarch_softfilter_new(const char *filter_config, #if defined(HAVE_DYLIB) fill_pathname_basedir(basedir, filter_config, sizeof(basedir)); - plugs = dir_list_new(basedir, EXT_EXECUTABLES, false, false); + plugs = dir_list_new(basedir, EXT_EXECUTABLES, false); if (!plugs) { RARCH_ERR("[SoftFilter]: Could not build up string list...\n"); diff --git a/input/input_autodetect.c b/input/input_autodetect.c index aa25b32354..2dd8d710e5 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -199,10 +199,10 @@ static bool input_autoconfigure_joypad_from_conf_dir( sizeof(path)); if (settings) - list = dir_list_new(path, "cfg", false, false); + list = dir_list_new(path, "cfg", false); if (!list || !list->size) - list = dir_list_new(settings->input.autoconfig_dir, "cfg", false, false); + list = dir_list_new(settings->input.autoconfig_dir, "cfg", false); if(!list) return false; diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 1d290cde3f..bcadc321de 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -132,14 +132,13 @@ static bool dirent_is_directory(const char *path, /** * parse_dir_entry: - * @name : name of the directory listing entry. - * @file_path : file path of the directory listing entry. - * @is_dir : is the directory listing a directory? - * @include_dirs : include directories as part of the finished directory listing? - * @include_compressed : Include compressed files, even if not part of ext_list. - * @list : pointer to directory listing. - * @ext_list : pointer to allowed file extensions listing. - * @file_ext : file extension of the directory listing entry. + * @name : name of the directory listing entry. + * @file_path : file path of the directory listing entry. + * @is_dir : is the directory listing a directory? + * @include_dirs : include directories as part of the finished directory listing? + * @list : pointer to directory listing. + * @ext_list : pointer to allowed file extensions listing. + * @file_ext : file extension of the directory listing entry. * * Parses a directory listing. * @@ -147,7 +146,7 @@ static bool dirent_is_directory(const char *path, * continue to the next entry in the directory listing. **/ static int parse_dir_entry(const char *name, char *file_path, - bool is_dir, bool include_dirs, bool include_compressed, + bool is_dir, bool include_dirs, struct string_list *list, struct string_list *ext_list, const char *file_ext) { @@ -173,9 +172,6 @@ static int parse_dir_entry(const char *name, char *file_path, if (!is_compressed_file && !is_dir && ext_list && !supported_by_core) return 1; - if (!include_compressed && !supported_by_core) - return 1; - if (is_dir) attr.i = RARCH_DIRECTORY; if (is_compressed_file) @@ -199,10 +195,9 @@ static int parse_dir_entry(const char *name, char *file_path, /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? - * @include_compressed : Only include files which match ext. Do not try to match compressed files, etc. + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? * * Create a directory listing. * @@ -210,7 +205,7 @@ static int parse_dir_entry(const char *name, char *file_path, * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, - const char *ext, bool include_dirs, bool include_compressed) + const char *ext, bool include_dirs) { #if defined(_WIN32) WIN32_FIND_DATA ffd; @@ -252,14 +247,14 @@ struct string_list *dir_list_new(const char *dir, fill_pathname_join(file_path, dir, name, sizeof(file_path)); ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, include_compressed, list, ext_list, file_ext); + include_dirs, list, ext_list, file_ext); if (ret == -1) goto error; if (ret == 1) continue; - } while (FindNextFile(hFind, &ffd) != 0); + }while (FindNextFile(hFind, &ffd) != 0); FindClose(hFind); string_list_free(ext_list); @@ -323,7 +318,7 @@ error: is_dir = dirent_is_directory(file_path, entry); ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, include_compressed, list, ext_list, file_ext); + include_dirs, list, ext_list, file_ext); if (ret == -1) goto error; @@ -338,6 +333,7 @@ error: return list; error: + if (directory) closedir(directory); #endif diff --git a/libretro-common/file/dir_list_obj.m b/libretro-common/file/dir_list_obj.m index 4fd38f4bf2..b1325acee1 100644 --- a/libretro-common/file/dir_list_obj.m +++ b/libretro-common/file/dir_list_obj.m @@ -105,14 +105,13 @@ static bool dirent_is_directory(const char *path) /** * parse_dir_entry: - * @name : name of the directory listing entry. - * @file_path : file path of the directory listing entry. - * @is_dir : is the directory listing a directory? - * @include_dirs : include directories as part of the finished directory listing? - * @include_compressed : include compressed files, even when not part of ext_list. - * @list : pointer to directory listing. - * @ext_list : pointer to allowed file extensions listing. - * @file_ext : file extension of the directory listing entry. + * @name : name of the directory listing entry. + * @file_path : file path of the directory listing entry. + * @is_dir : is the directory listing a directory? + * @include_dirs : include directories as part of the finished directory listing? + * @list : pointer to directory listing. + * @ext_list : pointer to allowed file extensions listing. + * @file_ext : file extension of the directory listing entry. * * Parses a directory listing. * @@ -120,7 +119,7 @@ static bool dirent_is_directory(const char *path) * continue to the next entry in the directory listing. **/ static int parse_dir_entry(const char *name, char *file_path, - bool is_dir, bool include_dirs, bool include_compressed, + bool is_dir, bool include_dirs, struct string_list *list, struct string_list *ext_list, const char *file_ext) { @@ -146,9 +145,6 @@ static int parse_dir_entry(const char *name, char *file_path, if (!is_compressed_file && !is_dir && ext_list && !supported_by_core) return 1; - if (!include_compressed && !supported_by_core) - return 1; - if (is_dir) attr.i = RARCH_DIRECTORY; if (is_compressed_file) @@ -172,10 +168,9 @@ static int parse_dir_entry(const char *name, char *file_path, /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? - * @include_compressed : Include compressed files, even if not part of ext. + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? * * Create a directory listing. * @@ -183,7 +178,7 @@ static int parse_dir_entry(const char *name, char *file_path, * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, - const char *ext, bool include_dirs, bool include_compressed) + const char *ext, bool include_dirs) { NSArray *entries = NULL; char path_buf[PATH_MAX_LENGTH] = {0}; @@ -212,7 +207,7 @@ struct string_list *dir_list_new(const char *dir, is_dir = dirent_is_directory(file_path); ret = parse_dir_entry([name UTF8String], file_path, is_dir, - include_dirs, include_compressed, list, ext_list, file_ext); + include_dirs, list, ext_list, file_ext); if (ret == -1) goto error; diff --git a/libretro-common/include/file/dir_list.h b/libretro-common/include/file/dir_list.h index 6fc3e0f6b1..724fa3f119 100644 --- a/libretro-common/include/file/dir_list.h +++ b/libretro-common/include/file/dir_list.h @@ -31,10 +31,9 @@ extern "C" { /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? - * @include_compressed : include compressed files, even when not part of ext. + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? * * Create a directory listing. * @@ -42,7 +41,7 @@ extern "C" { * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, const char *ext, - bool include_dirs, bool include_compressed); + bool include_dirs); /** * dir_list_sort: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 0f8d7c085f..8f27db7e0d 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2118,7 +2118,7 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n else str_list = dir_list_new(info->path, filter_ext ? info->exts : NULL, - true, true); + true); if (hash_label == MENU_LABEL_SCAN_DIRECTORY) menu_list_push(info->list, From e8d266cb9d607c93cfbef786240b8dc08232e02e Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 30 Aug 2015 18:37:41 +0200 Subject: [PATCH 435/822] Revert "Revert "Add support for shader pass feedback."" --- gfx/drivers/gl.c | 395 ++++++++++++++++++++---------- gfx/drivers/gl_common.h | 5 + gfx/drivers_shader/shader_gl_cg.c | 130 +++++----- gfx/drivers_shader/shader_glsl.c | 51 +++- gfx/drivers_shader/shader_hlsl.c | 9 + gfx/drivers_shader/shader_null.c | 8 + gfx/video_shader_driver.h | 2 + gfx/video_shader_parse.c | 5 + gfx/video_shader_parse.h | 4 + tools/cg2glsl.py | 4 + 10 files changed, 402 insertions(+), 211 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index fe0fadd5c9..41938da36a 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -429,109 +429,128 @@ static void gl_compute_fbo_geometry(gl_t *gl, unsigned width, unsigned height, } } -static void gl_create_fbo_textures(gl_t *gl) +static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture) { - int i; settings_t *settings = config_get_ptr(); + + enum gfx_wrap_type wrap; + GLenum min_filter, mag_filter, wrap_enum; + bool mipmapped = false; + bool smooth = false; + bool fp_fbo, srgb_fbo; + GLuint base_filt = settings->video.smooth ? GL_LINEAR : GL_NEAREST; GLuint base_mip_filt = settings->video.smooth ? GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST; + glBindTexture(GL_TEXTURE_2D, texture); + + mipmapped = gl->shader->mipmap_input(i + 2); + + min_filter = mipmapped ? base_mip_filt : base_filt; + if (gl->shader->filter_type(i + 2, &smooth)) + { + min_filter = mipmapped ? (smooth ? + GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST) + : (smooth ? GL_LINEAR : GL_NEAREST); + } + + mag_filter = min_filter_to_mag(min_filter); + + wrap = gl->shader->wrap_type(i + 2); + wrap_enum = gl_wrap_type_to_enum(wrap); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum); + + fp_fbo = gl->fbo_scale[i].fp_fbo; + srgb_fbo = gl->fbo_scale[i].srgb_fbo; + + if (fp_fbo) + { + if (!gl->has_fp_fbo) + RARCH_ERR("[GL]: Floating-point FBO was requested, but is not supported. Falling back to UNORM. Result may band/clip/etc.!\n"); + } + else if (srgb_fbo) + { + if (!gl->has_srgb_fbo) + RARCH_ERR("[GL]: sRGB FBO was requested, but it is not supported. Falling back to UNORM. Result may have banding!\n"); + } + + if (settings->video.force_srgb_disable) + srgb_fbo = false; + +#ifndef HAVE_OPENGLES2 + if (fp_fbo && gl->has_fp_fbo) + { + RARCH_LOG("[GL]: FBO pass #%d is floating-point.\n", i); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, + 0, GL_RGBA, GL_FLOAT, NULL); + } + else +#endif + { +#ifndef HAVE_OPENGLES + settings_t *settings = config_get_ptr(); + GLuint base_filt = settings->video.smooth ? GL_LINEAR : GL_NEAREST; + GLuint base_mip_filt = settings->video.smooth ? + GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST; + + if (srgb_fbo && gl->has_srgb_fbo) + { + RARCH_LOG("[GL]: FBO pass #%d is sRGB.\n", i); +#ifdef HAVE_OPENGLES2 + /* EXT defines are same as core GLES3 defines, + * but GLES3 variant requires different arguments. */ + glTexImage2D(GL_TEXTURE_2D, + 0, GL_SRGB_ALPHA_EXT, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + gl->has_srgb_fbo_gles3 ? GL_RGBA : GL_SRGB_ALPHA_EXT, + GL_UNSIGNED_BYTE, NULL); +#else + glTexImage2D(GL_TEXTURE_2D, + 0, GL_SRGB8_ALPHA8, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); +#endif + } + else +#endif + { +#ifdef HAVE_OPENGLES2 + glTexImage2D(GL_TEXTURE_2D, + 0, GL_RGBA, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); +#else + /* Avoid potential performance + * reductions on particular platforms. */ + glTexImage2D(GL_TEXTURE_2D, + 0, RARCH_GL_INTERNAL_FORMAT32, + gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, + RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL); +#endif + } + } +} + +static void gl_create_fbo_textures(gl_t *gl) +{ + int i; glGenTextures(gl->fbo_pass, gl->fbo_texture); for (i = 0; i < gl->fbo_pass; i++) { - enum gfx_wrap_type wrap; - GLenum min_filter, mag_filter, wrap_enum; - bool mipmapped = false; - bool smooth = false; - bool fp_fbo, srgb_fbo; + gl_create_fbo_texture(gl, i, gl->fbo_texture[i]); + } - glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]); - - mipmapped = gl->shader->mipmap_input(i + 2); - - min_filter = mipmapped ? base_mip_filt : base_filt; - if (gl->shader->filter_type(i + 2, &smooth)) - min_filter = mipmapped ? (smooth ? - GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST) - : (smooth ? GL_LINEAR : GL_NEAREST); - - mag_filter = min_filter_to_mag(min_filter); - - wrap = gl->shader->wrap_type(i + 2); - wrap_enum = gl_wrap_type_to_enum(wrap); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum); - - fp_fbo = gl->fbo_scale[i].fp_fbo; - srgb_fbo = gl->fbo_scale[i].srgb_fbo; - - if (fp_fbo) - { - if (!gl->has_fp_fbo) - RARCH_ERR("[GL]: Floating-point FBO was requested, but is not supported. Falling back to UNORM. Result may band/clip/etc.!\n"); - } - else if (srgb_fbo) - { - if (!gl->has_srgb_fbo) - RARCH_ERR("[GL]: sRGB FBO was requested, but it is not supported. Falling back to UNORM. Result may have banding!\n"); - } - - if (settings->video.force_srgb_disable) - srgb_fbo = false; - - #ifndef HAVE_OPENGLES2 - if (fp_fbo && gl->has_fp_fbo) - { - RARCH_LOG("[GL]: FBO pass #%d is floating-point.\n", i); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, - 0, GL_RGBA, GL_FLOAT, NULL); - } - else - #endif - { - #ifndef HAVE_OPENGLES - if (srgb_fbo && gl->has_srgb_fbo) - { - RARCH_LOG("[GL]: FBO pass #%d is sRGB.\n", i); - #ifdef HAVE_OPENGLES2 - /* EXT defines are same as core GLES3 defines, - * but GLES3 variant requires different arguments. */ - glTexImage2D(GL_TEXTURE_2D, - 0, GL_SRGB_ALPHA_EXT, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - gl->has_srgb_fbo_gles3 ? GL_RGBA : GL_SRGB_ALPHA_EXT, - GL_UNSIGNED_BYTE, NULL); - #else - glTexImage2D(GL_TEXTURE_2D, - 0, GL_SRGB8_ALPHA8, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - #endif - } - else - #endif - { - #ifdef HAVE_OPENGLES2 - glTexImage2D(GL_TEXTURE_2D, - 0, GL_RGBA, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - #else - /* Avoid potential performance - * reductions on particular platforms. */ - glTexImage2D(GL_TEXTURE_2D, - 0, RARCH_GL_INTERNAL_FORMAT32, - gl->fbo_rect[i].width, gl->fbo_rect[i].height, 0, - RARCH_GL_TEXTURE_TYPE32, RARCH_GL_FORMAT32, NULL); - #endif - } - } + if (gl->fbo_feedback_enable) + { + glGenTextures(1, &gl->fbo_feedback_texture); + gl_create_fbo_texture(gl, gl->fbo_feedback_pass, gl->fbo_feedback_texture); } glBindTexture(GL_TEXTURE_2D, 0); @@ -545,10 +564,10 @@ static bool gl_create_fbo_targets(gl_t *gl) glBindTexture(GL_TEXTURE_2D, 0); glGenFramebuffers(gl->fbo_pass, gl->fbo); + GLenum status; + for (i = 0; i < gl->fbo_pass; i++) { - GLenum status; - glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo[i]); glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_texture[i], 0); @@ -558,10 +577,28 @@ static bool gl_create_fbo_targets(gl_t *gl) goto error; } + if (gl->fbo_feedback_texture) + { + glGenFramebuffers(1, &gl->fbo_feedback); + glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo_feedback); + glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, + RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl->fbo_feedback_texture, 0); + + status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); + if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) + goto error; + + /* Make sure the feedback textures are cleared so we don't feedback noise. */ + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + } + return true; error: glDeleteFramebuffers(gl->fbo_pass, gl->fbo); + if (gl->fbo_feedback) + glDeleteFramebuffers(1, &gl->fbo_feedback); RARCH_ERR("Failed to set up frame buffer objects. Multi-pass shading will not work.\n"); return false; } @@ -577,6 +614,16 @@ static void gl_deinit_fbo(gl_t *gl) memset(gl->fbo, 0, sizeof(gl->fbo)); gl->fbo_inited = false; gl->fbo_pass = 0; + + if (gl->fbo_feedback) + glDeleteFramebuffers(1, &gl->fbo_feedback); + if (gl->fbo_feedback_texture) + glDeleteTextures(1, &gl->fbo_feedback_texture); + + gl->fbo_feedback_enable = false; + gl->fbo_feedback_pass = -1; + gl->fbo_feedback_texture = 0; + gl->fbo_feedback = 0; } /* Set up render to texture. */ @@ -642,6 +689,20 @@ static void gl_init_fbo(gl_t *gl, unsigned fbo_width, unsigned fbo_height) gl->fbo_rect[i].width, gl->fbo_rect[i].height); } + gl->fbo_feedback_enable = gl->shader->get_feedback_pass(&gl->fbo_feedback_pass); + + if (gl->fbo_feedback_enable && gl->fbo_feedback_pass < (unsigned)gl->fbo_pass) + { + RARCH_LOG("[GL]: Creating feedback FBO %d @ %ux%u\n", i, + gl->fbo_rect[gl->fbo_feedback_pass].width, gl->fbo_rect[gl->fbo_feedback_pass].height); + } + else if (gl->fbo_feedback_enable) + { + RARCH_WARN("[GL]: Tried to create feedback FBO of pass #%u, but there are only %d FBO passes. Will use input texture as feedback texture.\n", + gl->fbo_feedback_pass, gl->fbo_pass); + gl->fbo_feedback_enable = false; + } + gl_create_fbo_textures(gl); if (!gl_create_fbo_targets(gl)) { @@ -918,42 +979,35 @@ static INLINE void gl_start_frame_fbo(gl_t *gl) #endif } -/* On resize, we might have to recreate our FBOs - * due to "Viewport" scale, and set a new viewport. */ - -static void gl_check_fbo_dimensions(gl_t *gl) +static void gl_check_fbo_dimension(gl_t *gl, unsigned i, GLuint fbo, GLuint texture, bool update_feedback) { - int i; + GLenum status; + unsigned img_width, img_height, max, pow2_size; + bool check_dimensions = false; + struct gfx_fbo_rect *fbo_rect = &gl->fbo_rect[i]; + + if (!fbo_rect) + return; + + check_dimensions = + (fbo_rect->max_img_width > fbo_rect->width) || + (fbo_rect->max_img_height > fbo_rect->height); + + if (!check_dimensions) + return; + + /* Check proactively since we might suddently + * get sizes of tex_w width or tex_h height. */ + img_width = fbo_rect->max_img_width; + img_height = fbo_rect->max_img_height; + max = img_width > img_height ? img_width : img_height; + pow2_size = next_pow2(max); + + fbo_rect->width = fbo_rect->height = pow2_size; - /* Check if we have to recreate our FBO textures. */ - for (i = 0; i < gl->fbo_pass; i++) { - GLenum status; - unsigned img_width, img_height, max, pow2_size; - bool check_dimensions = false; - struct gfx_fbo_rect *fbo_rect = &gl->fbo_rect[i]; - - if (!fbo_rect) - continue; - - check_dimensions = - (fbo_rect->max_img_width > fbo_rect->width) || - (fbo_rect->max_img_height > fbo_rect->height); - - if (!check_dimensions) - continue; - - /* Check proactively since we might suddently - * get sizes of tex_w width or tex_h height. */ - img_width = fbo_rect->max_img_width; - img_height = fbo_rect->max_img_height; - max = img_width > img_height ? img_width : img_height; - pow2_size = next_pow2(max); - - fbo_rect->width = fbo_rect->height = pow2_size; - - glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo[i]); - glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]); + glBindFramebuffer(RARCH_GL_FRAMEBUFFER, fbo); + glBindTexture(GL_TEXTURE_2D, texture); glTexImage2D(GL_TEXTURE_2D, 0, RARCH_GL_INTERNAL_FORMAT32, @@ -964,19 +1018,62 @@ static void gl_check_fbo_dimensions(gl_t *gl) glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, - gl->fbo_texture[i], 0); + texture, 0); status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) RARCH_WARN("Failed to reinitialize FBO texture.\n"); + } - RARCH_LOG("[GL]: Recreating FBO texture #%d: %ux%u\n", - i, fbo_rect->width, fbo_rect->height); + /* Update feedback texture in-place so we avoid having to juggle two different fbo_rect structs since they get updated here. */ + if (update_feedback) + { + glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo_feedback); + glBindTexture(GL_TEXTURE_2D, gl->fbo_feedback_texture); + + glTexImage2D(GL_TEXTURE_2D, + 0, RARCH_GL_INTERNAL_FORMAT32, + fbo_rect->width, + fbo_rect->height, + 0, RARCH_GL_TEXTURE_TYPE32, + RARCH_GL_FORMAT32, NULL); + + glFramebufferTexture2D(RARCH_GL_FRAMEBUFFER, + RARCH_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, + gl->fbo_feedback_texture, 0); + + status = glCheckFramebufferStatus(RARCH_GL_FRAMEBUFFER); + if (status != RARCH_GL_FRAMEBUFFER_COMPLETE) + RARCH_WARN("Failed to reinitialize FBO texture.\n"); + else + { + /* Make sure the feedback textures are cleared so we don't feedback noise. */ + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + } + } + + RARCH_LOG("[GL]: Recreating FBO texture #%d: %ux%u\n", + i, fbo_rect->width, fbo_rect->height); +} + +/* On resize, we might have to recreate our FBOs + * due to "Viewport" scale, and set a new viewport. */ + +static void gl_check_fbo_dimensions(gl_t *gl) +{ + int i; + + /* Check if we have to recreate our FBO textures. */ + for (i = 0; i < gl->fbo_pass; i++) + { + bool update_feedback = gl->fbo_feedback_enable && (unsigned)i == gl->fbo_feedback_pass; + gl_check_fbo_dimension(gl, i, gl->fbo[i], gl->fbo_texture[i], update_feedback); } } static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, - const struct gfx_tex_info *tex_info) + const struct gfx_tex_info *tex_info, const struct gfx_tex_info *feedback_info) { unsigned width, height; const struct gfx_fbo_rect *prev_rect; @@ -1029,7 +1126,7 @@ static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, gl->shader->set_params(gl, prev_rect->img_width, prev_rect->img_height, prev_rect->width, prev_rect->height, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - tex_info, gl->prev_info, fbo_tex_info, fbo_tex_info_cnt); + tex_info, gl->prev_info, feedback_info, fbo_tex_info, fbo_tex_info_cnt); gl->coords.vertices = 4; gl->shader->set_coords(&gl->coords); @@ -1076,7 +1173,7 @@ static void gl_frame_fbo(gl_t *gl, uint64_t frame_count, prev_rect->img_width, prev_rect->img_height, prev_rect->width, prev_rect->height, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - tex_info, gl->prev_info, fbo_tex_info, fbo_tex_info_cnt); + tex_info, gl->prev_info, feedback_info, fbo_tex_info, fbo_tex_info_cnt); gl->coords.vertex = gl->vertex_ptr; @@ -1417,6 +1514,17 @@ static INLINE void gl_set_prev_texture(gl_t *gl, sizeof(*tex_info) * (gl->textures - 1)); memcpy(&gl->prev_info[0], tex_info, sizeof(*tex_info)); + + /* Implement feedback by swapping out FBO/textures for FBO pass #N and feedbacks. */ + if (gl->fbo_feedback_enable) + { + GLuint tmp_fbo = gl->fbo_feedback; + GLuint tmp_tex = gl->fbo_feedback_texture; + gl->fbo_feedback = gl->fbo[gl->fbo_feedback_pass]; + gl->fbo_feedback_texture = gl->fbo_texture[gl->fbo_feedback_pass]; + gl->fbo[gl->fbo_feedback_pass] = tmp_fbo; + gl->fbo_texture[gl->fbo_feedback_pass] = tmp_tex; + } } static INLINE void gl_set_shader_viewport(gl_t *gl, unsigned shader) @@ -1633,6 +1741,22 @@ static bool gl_frame(void *data, const void *frame, gl->tex_info.tex_size[0] = gl->tex_w; gl->tex_info.tex_size[1] = gl->tex_h; + struct gfx_tex_info feedback_info = gl->tex_info; + if (gl->fbo_feedback_enable) + { + const struct gfx_fbo_rect *rect = &gl->fbo_rect[gl->fbo_feedback_pass]; + GLfloat xamt = (GLfloat)rect->img_width / rect->width; + GLfloat yamt = (GLfloat)rect->img_height / rect->height; + + feedback_info.tex = gl->fbo_feedback_texture; + feedback_info.input_size[0] = rect->img_width; + feedback_info.input_size[1] = rect->img_height; + feedback_info.tex_size[0] = rect->width; + feedback_info.tex_size[1] = rect->height; + + set_texture_coords(feedback_info.coord, xamt, yamt); + } + glClear(GL_COLOR_BUFFER_BIT); gl->shader->set_params(gl, @@ -1640,7 +1764,8 @@ static bool gl_frame(void *data, const void *frame, gl->tex_w, gl->tex_h, gl->vp.width, gl->vp.height, (unsigned int)frame_count, - &gl->tex_info, gl->prev_info, NULL, 0); + &gl->tex_info, gl->prev_info, &feedback_info, + NULL, 0); gl->coords.vertices = 4; gl->shader->set_coords(&gl->coords); @@ -1649,7 +1774,7 @@ static bool gl_frame(void *data, const void *frame, #ifdef HAVE_FBO if (gl->fbo_inited) - gl_frame_fbo(gl, frame_count, &gl->tex_info); + gl_frame_fbo(gl, frame_count, &gl->tex_info, &feedback_info); #endif gl_set_prev_texture(gl, &gl->tex_info); diff --git a/gfx/drivers/gl_common.h b/gfx/drivers/gl_common.h index 161aff5f8c..c4c21a89c6 100644 --- a/gfx/drivers/gl_common.h +++ b/gfx/drivers/gl_common.h @@ -209,6 +209,11 @@ typedef struct gl int fbo_pass; bool fbo_inited; + bool fbo_feedback_enable; + unsigned fbo_feedback_pass; + GLuint fbo_feedback; + GLuint fbo_feedback_texture; + GLuint hw_render_fbo[GFX_MAX_TEXTURES]; GLuint hw_render_depth[GFX_MAX_TEXTURES]; bool hw_render_fbo_init; diff --git a/gfx/drivers_shader/shader_gl_cg.c b/gfx/drivers_shader/shader_gl_cg.c index 556bdedc13..71d398ff6c 100644 --- a/gfx/drivers_shader/shader_gl_cg.c +++ b/gfx/drivers_shader/shader_gl_cg.c @@ -139,6 +139,7 @@ struct cg_program struct cg_fbo_params fbo[GFX_MAX_SHADERS]; struct cg_fbo_params orig; + struct cg_fbo_params feedback; struct cg_fbo_params prev[PREV_TEXTURES]; }; @@ -152,7 +153,7 @@ typedef struct cg_shader_data struct video_shader *shader; state_tracker_t *state_tracker; GLuint lut_textures[GFX_MAX_TEXTURES]; - CGparameter cg_attribs[PREV_TEXTURES + 1 + 4 + GFX_MAX_SHADERS]; + CGparameter cg_attribs[PREV_TEXTURES + 2 + 4 + GFX_MAX_SHADERS]; char cg_alias_define[GFX_MAX_SHADERS][128]; CGcontext cgCtx; } cg_shader_data_t; @@ -222,12 +223,40 @@ fallback: #define set_param_1f(param, x) \ if (param) cgGLSetParameter1f(param, x) +static void gl_cg_set_texture_info(cg_shader_data_t *cg, const struct cg_fbo_params *params, const struct gfx_tex_info *info) +{ + CGparameter param = params->tex; + if (param) + { + cgGLSetTextureParameter(param, info->tex); + cgGLEnableTextureParameter(param); + } + + set_param_2f(params->vid_size_v, + info->input_size[0], info->input_size[1]); + set_param_2f(params->vid_size_f, + info->input_size[0], info->input_size[1]); + set_param_2f(params->tex_size_v, + info->tex_size[0], info->tex_size[1]); + set_param_2f(params->tex_size_f, + info->tex_size[0], info->tex_size[1]); + + if (params->coord) + { + cgGLSetParameterPointer(params->coord, 2, + GL_FLOAT, 0, info->coord); + cgGLEnableClientState(params->coord); + cg->cg_attribs[cg->cg_attrib_idx++] = params->coord; + } +} + static void gl_cg_set_params(void *data, unsigned width, unsigned height, unsigned tex_width, unsigned tex_height, unsigned out_width, unsigned out_height, unsigned frame_count, const void *_info, const void *_prev_info, + const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { @@ -235,6 +264,7 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, CGparameter param; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; + const struct gfx_tex_info *feedback_info = (const struct gfx_tex_info*)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); @@ -269,57 +299,14 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, } /* Set orig texture. */ - param = cg->prg[cg->active_idx].orig.tex; - if (param) - { - cgGLSetTextureParameter(param, info->tex); - cgGLEnableTextureParameter(param); - } + gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].orig, info); - set_param_2f(cg->prg[cg->active_idx].orig.vid_size_v, - info->input_size[0], info->input_size[1]); - set_param_2f(cg->prg[cg->active_idx].orig.vid_size_f, - info->input_size[0], info->input_size[1]); - set_param_2f(cg->prg[cg->active_idx].orig.tex_size_v, - info->tex_size[0], info->tex_size[1]); - set_param_2f(cg->prg[cg->active_idx].orig.tex_size_f, - info->tex_size[0], info->tex_size[1]); - - if (cg->prg[cg->active_idx].orig.coord) - { - cgGLSetParameterPointer(cg->prg[cg->active_idx].orig.coord, 2, - GL_FLOAT, 0, info->coord); - cgGLEnableClientState(cg->prg[cg->active_idx].orig.coord); - cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].orig.coord; - } + /* Set feedback texture. */ + gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].feedback, feedback_info); /* Set prev textures. */ for (i = 0; i < PREV_TEXTURES; i++) - { - param = cg->prg[cg->active_idx].prev[i].tex; - if (param) - { - cgGLSetTextureParameter(param, prev_info[i].tex); - cgGLEnableTextureParameter(param); - } - - set_param_2f(cg->prg[cg->active_idx].prev[i].vid_size_v, - prev_info[i].input_size[0], prev_info[i].input_size[1]); - set_param_2f(cg->prg[cg->active_idx].prev[i].vid_size_f, - prev_info[i].input_size[0], prev_info[i].input_size[1]); - set_param_2f(cg->prg[cg->active_idx].prev[i].tex_size_v, - prev_info[i].tex_size[0], prev_info[i].tex_size[1]); - set_param_2f(cg->prg[cg->active_idx].prev[i].tex_size_f, - prev_info[i].tex_size[0], prev_info[i].tex_size[1]); - - if (cg->prg[cg->active_idx].prev[i].coord) - { - cgGLSetParameterPointer(cg->prg[cg->active_idx].prev[i].coord, - 2, GL_FLOAT, 0, prev_info[i].coord); - cgGLEnableClientState(cg->prg[cg->active_idx].prev[i].coord); - cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].prev[i].coord; - } - } + gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].prev[i], &prev_info[i]); /* Set lookup textures. */ for (i = 0; i < cg->shader->luts; i++) @@ -348,32 +335,7 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, if (cg->active_idx) { for (i = 0; i < fbo_info_cnt; i++) - { - if (cg->prg[cg->active_idx].fbo[i].tex) - { - cgGLSetTextureParameter( - cg->prg[cg->active_idx].fbo[i].tex, fbo_info[i].tex); - cgGLEnableTextureParameter(cg->prg[cg->active_idx].fbo[i].tex); - } - - set_param_2f(cg->prg[cg->active_idx].fbo[i].vid_size_v, - fbo_info[i].input_size[0], fbo_info[i].input_size[1]); - set_param_2f(cg->prg[cg->active_idx].fbo[i].vid_size_f, - fbo_info[i].input_size[0], fbo_info[i].input_size[1]); - - set_param_2f(cg->prg[cg->active_idx].fbo[i].tex_size_v, - fbo_info[i].tex_size[0], fbo_info[i].tex_size[1]); - set_param_2f(cg->prg[cg->active_idx].fbo[i].tex_size_f, - fbo_info[i].tex_size[0], fbo_info[i].tex_size[1]); - - if (cg->prg[cg->active_idx].fbo[i].coord) - { - cgGLSetParameterPointer(cg->prg[cg->active_idx].fbo[i].coord, - 2, GL_FLOAT, 0, fbo_info[i].coord); - cgGLEnableClientState(cg->prg[cg->active_idx].fbo[i].coord); - cg->cg_attribs[cg->cg_attrib_idx++] = cg->prg[cg->active_idx].fbo[i].coord; - } - } + gl_cg_set_texture_info(cg, &cg->prg[cg->active_idx].fbo[i], &fbo_info[i]); } /* #pragma parameters. */ @@ -850,6 +812,13 @@ static void set_program_attributes(cg_shader_data_t *cg, unsigned i) cg->prg[i].orig.tex_size_f = cgGetNamedParameter(cg->prg[i].fprg, "ORIG.texture_size"); cg->prg[i].orig.coord = cgGetNamedParameter(cg->prg[i].vprg, "ORIG.tex_coord"); + cg->prg[i].feedback.tex = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.texture"); + cg->prg[i].feedback.vid_size_v = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.video_size"); + cg->prg[i].feedback.vid_size_f = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.video_size"); + cg->prg[i].feedback.tex_size_v = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.texture_size"); + cg->prg[i].feedback.tex_size_f = cgGetNamedParameter(cg->prg[i].fprg, "FEEDBACK.texture_size"); + cg->prg[i].feedback.coord = cgGetNamedParameter(cg->prg[i].vprg, "FEEDBACK.tex_coord"); + if (i > 1) { char pass_str[64] = {0}; @@ -1081,6 +1050,18 @@ static unsigned gl_cg_get_prev_textures(void) return max_prev; } +static bool gl_cg_get_feedback_pass(unsigned *pass) +{ + driver_t *driver = driver_get_ptr(); + cg_shader_data_t *cg = (cg_shader_data_t*)driver->video_shader_data; + + if (!cg || cg->shader->feedback_pass < 0) + return false; + + *pass = cg->shader->feedback_pass; + return true; +} + static bool gl_cg_mipmap_input(unsigned idx) { driver_t *driver = driver_get_ptr(); @@ -1111,6 +1092,7 @@ const shader_backend_t gl_cg_backend = { gl_cg_set_coords, gl_cg_set_mvp, gl_cg_get_prev_textures, + gl_cg_get_feedback_pass, gl_cg_mipmap_input, gl_cg_get_current_shader, diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index f7242376b6..4df43ebceb 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -89,6 +89,7 @@ struct shader_uniforms int lut_texture[GFX_MAX_TEXTURES]; struct shader_uniforms_frame orig; + struct shader_uniforms_frame feedback; struct shader_uniforms_frame pass[GFX_MAX_SHADERS]; struct shader_uniforms_frame prev[PREV_TEXTURES]; }; @@ -212,7 +213,7 @@ typedef struct glsl_shader_data unsigned gl_attrib_index; GLuint gl_program[GFX_MAX_SHADERS]; GLuint gl_teximage[GFX_MAX_TEXTURES]; - GLint gl_attribs[PREV_TEXTURES + 1 + 4 + GFX_MAX_SHADERS]; + GLint gl_attribs[PREV_TEXTURES + 2 + 4 + GFX_MAX_SHADERS]; state_tracker_t *gl_state_tracker; } glsl_shader_data_t; @@ -606,6 +607,9 @@ static void find_uniforms(glsl_shader_data_t *glsl, clear_uniforms_frame(&uni->orig); find_uniforms_frame(glsl, prog, &uni->orig, "Orig"); + clear_uniforms_frame(&uni->feedback); + find_uniforms_frame(glsl, prog, &uni->feedback, "Feedback"); + if (pass > 1) { snprintf(frame_base, sizeof(frame_base), "PassPrev%u", pass); @@ -944,6 +948,7 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, unsigned frame_count, const void *_info, const void *_prev_info, + const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { GLfloat buffer[512]; @@ -954,6 +959,7 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, size_t size = 0, attribs_size = 0; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; + const struct gfx_tex_info *feedback_info = (const struct gfx_tex_info*)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; struct glsl_attrib *attr = (struct glsl_attrib*)attribs; driver_t *driver = driver_get_ptr(); @@ -1011,9 +1017,9 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, texunit++; } - /* Set original texture. */ if (glsl->glsl_active_index) { + /* Set original texture. */ if (uni->orig.texture >= 0) { /* Bind original texture. */ @@ -1042,6 +1048,35 @@ static void gl_glsl_set_params(void *data, unsigned width, unsigned height, size += 8; } + /* Set feedback texture. */ + if (uni->feedback.texture >= 0) + { + /* Bind original texture. */ + glActiveTexture(GL_TEXTURE0 + texunit); + glUniform1i(uni->feedback.texture, texunit); + glBindTexture(GL_TEXTURE_2D, feedback_info->tex); + texunit++; + } + + if (uni->feedback.texture_size >= 0) + glUniform2fv(uni->feedback.texture_size, 1, feedback_info->tex_size); + + if (uni->feedback.input_size >= 0) + glUniform2fv(uni->feedback.input_size, 1, feedback_info->input_size); + + /* Pass texture coordinates. */ + if (uni->feedback.tex_coord >= 0) + { + attr->loc = uni->feedback.tex_coord; + attr->size = 2; + attr->offset = size * sizeof(GLfloat); + attribs_size++; + attr++; + + memcpy(buffer + size, feedback_info->coord, 8 * sizeof(GLfloat)); + size += 8; + } + /* Bind FBO textures. */ for (i = 0; i < fbo_info_cnt; i++) { @@ -1350,6 +1385,17 @@ static bool gl_glsl_mipmap_input(unsigned idx) return false; } +static bool gl_glsl_get_feedback_pass(unsigned *index) +{ + driver_t *driver = driver_get_ptr(); + glsl_shader_data_t *glsl = (glsl_shader_data_t*)driver->video_shader_data; + if (!glsl || glsl->shader->feedback_pass < 0) + return false; + + *index = glsl->shader->feedback_pass; + return true; +} + static struct video_shader *gl_glsl_get_current_shader(void) { driver_t *driver = driver_get_ptr(); @@ -1384,6 +1430,7 @@ const shader_backend_t gl_glsl_backend = { gl_glsl_set_coords, gl_glsl_set_mvp, gl_glsl_get_prev_textures, + gl_glsl_get_feedback_pass, gl_glsl_mipmap_input, gl_glsl_get_current_shader, diff --git a/gfx/drivers_shader/shader_hlsl.c b/gfx/drivers_shader/shader_hlsl.c index 369d190241..ddc2bc46a6 100644 --- a/gfx/drivers_shader/shader_hlsl.c +++ b/gfx/drivers_shader/shader_hlsl.c @@ -107,12 +107,14 @@ static void hlsl_set_params(void *data, unsigned width, unsigned height, unsigned frame_counter, const void *_info, const void *_prev_info, + const void *_feedback_info, const void *_fbo_info, unsigned fbo_info_cnt) { d3d_video_t *d3d = (d3d_video_t*)data; LPDIRECT3DDEVICE d3d_device_ptr = (LPDIRECT3DDEVICE)d3d->dev; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; + (void)_feedback_info; const struct gfx_tex_info *fbo_info = (const struct gfx_tex_info*)_fbo_info; driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); @@ -477,6 +479,12 @@ static bool hlsl_mipmap_input(unsigned idx) return false; } +static bool hlsl_get_feedback_pass(unsigned *idx) +{ + (void)idx; + return false; +} + static struct video_shader *hlsl_get_current_shader(void) { return NULL; @@ -494,6 +502,7 @@ const shader_backend_t hlsl_backend = { NULL, /* hlsl_set_coords */ hlsl_set_mvp, NULL, /* hlsl_get_prev_textures */ + hlsl_get_feedback_pass, hlsl_mipmap_input, hlsl_get_current_shader, diff --git a/gfx/drivers_shader/shader_null.c b/gfx/drivers_shader/shader_null.c index 6f0125e3cb..1297b4573e 100644 --- a/gfx/drivers_shader/shader_null.c +++ b/gfx/drivers_shader/shader_null.c @@ -43,6 +43,7 @@ static void shader_null_set_params(void *data, unsigned width, unsigned height, unsigned frame_count, const void *info, const void *prev_info, + const void *feedback_info, const void *fbo_info, unsigned fbo_info_cnt) { } @@ -118,6 +119,12 @@ static bool shader_null_mipmap_input(unsigned idx) return false; } +static bool shader_null_get_feedback_pass(unsigned *idx) +{ + (void)idx; + return false; +} + static struct video_shader *shader_null_get_current_shader(void) { return NULL; @@ -135,6 +142,7 @@ const shader_backend_t shader_null_backend = { shader_null_set_coords, shader_null_set_mvp, shader_null_get_prev_textures, + shader_null_get_feedback_pass, shader_null_mipmap_input, shader_null_get_current_shader, diff --git a/gfx/video_shader_driver.h b/gfx/video_shader_driver.h index b502f09479..48ffcc13c1 100644 --- a/gfx/video_shader_driver.h +++ b/gfx/video_shader_driver.h @@ -35,6 +35,7 @@ typedef struct shader_backend unsigned frame_counter, const void *info, const void *prev_info, + const void *feedback_info, const void *fbo_info, unsigned fbo_info_cnt); void (*use)(void *data, unsigned index); @@ -45,6 +46,7 @@ typedef struct shader_backend bool (*set_coords)(const void *data); bool (*set_mvp)(void *data, const math_matrix_4x4 *mat); unsigned (*get_prev_textures)(void); + bool (*get_feedback_pass)(unsigned *pass); bool (*mipmap_input)(unsigned index); struct video_shader *(*get_current_shader)(void); diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index 670d77795e..61a3dc8fbd 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -616,6 +616,9 @@ bool video_shader_read_conf_cgp(config_file_t *conf, struct video_shader *shader return false; } + if (!config_get_int(conf, "feedback_pass", &shader->feedback_pass)) + shader->feedback_pass = -1; + shader->passes = min(shaders, GFX_MAX_SHADERS); for (i = 0; i < shader->passes; i++) { @@ -771,6 +774,8 @@ void video_shader_write_conf_cgp(config_file_t *conf, unsigned i; config_set_int(conf, "shaders", shader->passes); + if (shader->feedback_pass >= 0) + config_set_int(conf, "feedback_pass", shader->feedback_pass); for (i = 0; i < shader->passes; i++) { diff --git a/gfx/video_shader_parse.h b/gfx/video_shader_parse.h index a3502badec..8b8c0ebd3e 100644 --- a/gfx/video_shader_parse.h +++ b/gfx/video_shader_parse.h @@ -150,6 +150,10 @@ struct video_shader char script_path[PATH_MAX_LENGTH]; char *script; /* Dynamically allocated. Must be free'd. Only used by XML. */ char script_class[512]; + + /* If < 0, no feedback pass is used. Otherwise, + * the FBO after pass #N is passed a texture to next frame. */ + int feedback_pass; }; /** diff --git a/tools/cg2glsl.py b/tools/cg2glsl.py index a412673879..63bea006fb 100755 --- a/tools/cg2glsl.py +++ b/tools/cg2glsl.py @@ -246,6 +246,7 @@ def translate_varying(cg): 'IN.vertex_coord': 'VertexCoord', 'IN.lut_tex_coord': 'LUTTexCoord', 'ORIG.tex_coord': 'OrigTexCoord', + 'FEEDBACK.tex_coord': 'FeedbackTexCoord', 'PREV.tex_coord': 'PrevTexCoord', 'PREV1.tex_coord': 'Prev1TexCoord', 'PREV2.tex_coord': 'Prev2TexCoord', @@ -276,6 +277,7 @@ def translate_varying(cg): def translate_texture_size(cg): translations = { 'ORIG.texture_size': 'OrigTextureSize', + 'FEEDBACK.texture_size': 'FeedbackTextureSize', 'PREV.texture_size': 'PrevTextureSize', 'PREV1.texture_size': 'Prev1TextureSize', 'PREV2.texture_size': 'Prev2TextureSize', @@ -299,6 +301,7 @@ def translate_texture_size(cg): 'PASSPREV7.texture_size': 'PassPrev7TextureSize', 'PASSPREV8.texture_size': 'PassPrev8TextureSize', 'ORIG.video_size': 'OrigInputSize', + 'FEEDBACK.video_size': 'FeedbackInputSize', 'PREV.video_size': 'PrevInputSize', 'PREV1.video_size': 'Prev1InputSize', 'PREV2.video_size': 'Prev2InputSize', @@ -451,6 +454,7 @@ def replace_global_fragment(source): def translate_texture(cg): translations = { 'ORIG.texture': 'OrigTexture', + 'FEEDBACK.texture': 'FeedbackTexture', 'PREV.texture': 'PrevTexture', 'PREV1.texture': 'Prev1Texture', 'PREV2.texture': 'Prev2Texture', From d5f72ca9c1b1871561c5b476637ca5fb42703e0e Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 30 Aug 2015 18:45:02 +0200 Subject: [PATCH 436/822] remove unused variables --- gfx/drivers/gl.c | 5 ----- gfx/drivers_shader/shader_gl_cg.c | 1 - 2 files changed, 6 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 41938da36a..fd36f0bdbd 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -494,11 +494,6 @@ static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture) #endif { #ifndef HAVE_OPENGLES - settings_t *settings = config_get_ptr(); - GLuint base_filt = settings->video.smooth ? GL_LINEAR : GL_NEAREST; - GLuint base_mip_filt = settings->video.smooth ? - GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST; - if (srgb_fbo && gl->has_srgb_fbo) { RARCH_LOG("[GL]: FBO pass #%d is sRGB.\n", i); diff --git a/gfx/drivers_shader/shader_gl_cg.c b/gfx/drivers_shader/shader_gl_cg.c index 71d398ff6c..52fe36b90e 100644 --- a/gfx/drivers_shader/shader_gl_cg.c +++ b/gfx/drivers_shader/shader_gl_cg.c @@ -261,7 +261,6 @@ static void gl_cg_set_params(void *data, unsigned width, unsigned height, unsigned fbo_info_cnt) { unsigned i; - CGparameter param; const struct gfx_tex_info *info = (const struct gfx_tex_info*)_info; const struct gfx_tex_info *prev_info = (const struct gfx_tex_info*)_prev_info; const struct gfx_tex_info *feedback_info = (const struct gfx_tex_info*)_feedback_info; From e45f42a388c4a3a5c1da2cc79886fafb309a03b1 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 18:46:49 +0200 Subject: [PATCH 437/822] (Vita) Update Makefile.griffin,file_path.c,performance.c --- Makefile.griffin | 8 ++++++- libretro-common/file/file_path.c | 40 +++++++++++++++++--------------- performance.c | 2 ++ 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index f3a3756198..47bfd3a2f0 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -150,6 +150,9 @@ else ifeq ($(platform), vita) -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ -lSceRtc_stub -lz -lm -lc + PLATOBJS += audio/audio_utils_neon.o audio/drivers_resampler/sinc_neon.o \ + audio/drivers_resampler/cc_resampler_neon.o + HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_RPNG := 1 HAVE_ZLIB := 1 @@ -163,7 +166,7 @@ OBJ = griffin/griffin.o $(PLATOBJS) INCLUDE += -I./libretro-common/include ifeq ($(HAVE_LOGGER), 1) -CFLAGS += -DHAVE_LOGGER +CFLAGS += -DHAVE_LOGGER CFLAGS += -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) INCLUDE += -Ilogger/netlogger endif @@ -281,6 +284,9 @@ $(EXT_INTER_TARGET): $(OBJ) %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< +%.o: %.S + $(CC) $(CFLAGS) -c -o $@ $< + %.bmpobj: %.bmp $(LD) -r -b binary -o $@ $< diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index 7fd3760f7c..c49fa315c1 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -77,7 +77,7 @@ * path_get_extension: * @path : path * - * Gets extension of file. Only '.'s + * Gets extension of file. Only '.'s * after the last slash are considered. * * Returns: extension part from the path. @@ -207,7 +207,7 @@ bool path_file_exists(const char *path) * fill_pathname: * @out_path : output path * @in_path : input path - * @replace : what to replace + * @replace : what to replace * @size : buffer size of output path * * FIXME: Verify @@ -219,10 +219,10 @@ bool path_file_exists(const char *path) * Only '.'s after the last slash are considered as extensions. * If no '.' is present, in_path and replace will simply be concatenated. * 'size' is buffer size of 'out_path'. - * E.g.: in_path = "/foo/bar/baz/boo.c", replace = ".asm" => - * out_path = "/foo/bar/baz/boo.asm" + * E.g.: in_path = "/foo/bar/baz/boo.c", replace = ".asm" => + * out_path = "/foo/bar/baz/boo.asm" * E.g.: in_path = "/foo/bar/baz/boo.c", replace = "" => - * out_path = "/foo/bar/baz/boo" + * out_path = "/foo/bar/baz/boo" */ void fill_pathname(char *out_path, const char *in_path, const char *replace, size_t size) @@ -243,7 +243,7 @@ void fill_pathname(char *out_path, const char *in_path, * fill_pathname_noext: * @out_path : output path * @in_path : input path - * @replace : what to replace + * @replace : what to replace * @size : buffer size of output path * * Appends a filename extension 'replace' to 'in_path', and outputs @@ -273,7 +273,7 @@ static char *find_last_slash(const char *str) return (char*)slash; } -/** +/** * fill_pathname_slash: * @path : path * @size : size of path @@ -327,7 +327,7 @@ void fill_pathname_dir(char *in_dir, const char *in_basename, /** * fill_pathname_base: - * @out : output path + * @out : output path * @in_path : input path * @size : size of output path * @@ -365,7 +365,7 @@ void fill_pathname_base(char *out, const char *in_path, size_t size) /** * fill_pathname_basedir: - * @out_dir : output directory + * @out_dir : output directory * @in_path : input path * @size : size of output directory * @@ -382,7 +382,7 @@ void fill_pathname_basedir(char *out_dir, /** * fill_pathname_parent_dir: - * @out_dir : output directory + * @out_dir : output directory * @in_dir : input directory * @size : size of output directory * @@ -402,10 +402,10 @@ void fill_pathname_parent_dir(char *out_dir, * @ext : extension of output filename * @size : buffer size of output filename * - * Creates a 'dated' filename prefixed by 'RetroArch', and + * Creates a 'dated' filename prefixed by 'RetroArch', and * concatenates extension (@ext) to it. * - * E.g.: + * E.g.: * out_filename = "RetroArch-{month}{day}-{Hours}{Minutes}.{@ext}" **/ void fill_dated_filename(char *out_filename, @@ -421,7 +421,7 @@ void fill_dated_filename(char *out_filename, /** * path_basedir: - * @path : path + * @path : path * * Extracts base directory by mutating path. * Keeps trailing '/'. @@ -559,6 +559,8 @@ static bool path_mkdir_norecurse(const char *dir) ret = _mkdir(dir); #elif defined(IOS) ret = mkdir(dir, 0755); +#elif defined(VITA) + ret = sceIoMkdir(dir, 0755); #else ret = mkdir(dir, 0750); #endif @@ -646,12 +648,12 @@ void fill_pathname_resolve_relative(char *out_path, /** * fill_pathname_join: * @out_path : output path - * @dir : directory + * @dir : directory * @path : path * @size : size of output path * * Joins a directory (@dir) and path (@path) together. - * Makes sure not to get two consecutive slashes + * Makes sure not to get two consecutive slashes * between directory and path. **/ void fill_pathname_join(char *out_path, @@ -668,12 +670,12 @@ void fill_pathname_join(char *out_path, /** * fill_pathname_join_delim: * @out_path : output path - * @dir : directory + * @dir : directory * @path : path - * @delim : delimiter + * @delim : delimiter * @size : size of output path * - * Joins a directory (@dir) and path (@path) together + * Joins a directory (@dir) and path (@path) together * using the given delimiter (@delim). **/ void fill_pathname_join_delim(char *out_path, const char *dir, @@ -719,7 +721,7 @@ void fill_short_pathname_representation(char* out_rep, */ if(last_hash != NULL) { - /* We check whether something is actually + /* We check whether something is actually * after the hash to avoid going over the buffer. */ rarch_assert(strlen(last_hash) > 1); diff --git a/performance.c b/performance.c index 33240b65e2..688a67bf9f 100644 --- a/performance.c +++ b/performance.c @@ -369,6 +369,8 @@ unsigned rarch_get_cpu_cores(void) return 1; #elif defined(PSP) return 1; +#elif defined(VITA) + return 4; #elif defined(_3DS) return 1; #elif defined(_SC_NPROCESSORS_ONLN) From b03a0f47815ec95f068aa46fa123e96e8d36e38b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 18:51:35 +0200 Subject: [PATCH 438/822] (Vita) Buildfix --- libretro-common/file/dir_list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index bcadc321de..161d34cc11 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -281,7 +281,7 @@ error: is_dir = PSP2_S_ISDIR(entry.d_stat.st_mode); ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, include_compressed, list, ext_list, file_ext); + include_dirs, list, ext_list, file_ext); if (ret == -1) { From 1533d451e9132ba56e6072fe9aaa6cb04b6caa81 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 18:53:41 +0200 Subject: [PATCH 439/822] Use sceIoMkdir for PSP too --- libretro-common/file/file_path.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index c49fa315c1..71b4e189cc 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -73,6 +73,10 @@ #include #endif +#if defined(PSP) +#include +#endif + /** * path_get_extension: * @path : path @@ -559,7 +563,7 @@ static bool path_mkdir_norecurse(const char *dir) ret = _mkdir(dir); #elif defined(IOS) ret = mkdir(dir, 0755); -#elif defined(VITA) +#elif defined(VITA) || defined(PSP) ret = sceIoMkdir(dir, 0755); #else ret = mkdir(dir, 0750); From e0949b3bb7fdf69e9961b3439cb85a4131b260b1 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 19:15:06 +0200 Subject: [PATCH 440/822] (Vita) Update Makefile.griffin (Vita) Add Vita support to libretro-test --- Makefile.griffin | 11 +++++++---- cores/libretro-test/Makefile | 12 ++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index 47bfd3a2f0..7f97689810 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -141,25 +141,28 @@ else ifeq ($(platform), vita) CC = arm-vita-eabi-gcc$(EXE_EXT) CXX = arm-vita-eabi-g++$(EXE_EXT) LD = arm-vita-eabi-ld$(EXE_EXT) - INCLUDE += EXT_TARGET := $(TARGET_NAME).velf EXT_INTER_TARGET := $(TARGET_NAME).elf MACHDEP := -DVITA - PLATCFLAGS := -Wl,-q -Wall -O3 - LIBS += -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub \ + PLATCFLAGS := -O3 + LIBS += -lretro_vita \ + -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub \ -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ -lSceRtc_stub -lz -lm -lc PLATOBJS += audio/audio_utils_neon.o audio/drivers_resampler/sinc_neon.o \ audio/drivers_resampler/cc_resampler_neon.o + LIBDIRS += -L. + LDFLAGS += -Wl,-q + HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_RPNG := 1 HAVE_ZLIB := 1 HAVE_VITA2D := 1 endif -CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(INCLUDE) +CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(PLATCFLAGS) $(INCLUDE) OBJ = griffin/griffin.o $(PLATOBJS) diff --git a/cores/libretro-test/Makefile b/cores/libretro-test/Makefile index 7d7142f5b8..9e947d5b3d 100644 --- a/cores/libretro-test/Makefile +++ b/cores/libretro-test/Makefile @@ -56,6 +56,11 @@ else ifeq ($(platform), emscripten) TARGET := $(TARGET_NAME)_libretro_emscripten.bc fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined +else ifeq ($(platform), vita) + TARGET := $(TARGET_NAME).a + CC = arm-vita-eabi-gcc + AR = arm-vita-eabi-ar + CFLAGS += -Wl,-q -Wall -O3 else CC = gcc TARGET := $(TARGET_NAME)_libretro.dll @@ -81,8 +86,15 @@ endif all: $(TARGET) +ifeq ($(platform), vita) + +$(TARGET): $(OBJECTS) + $(AR) -rc $@ $^ +else + $(TARGET): $(OBJECTS) $(CC) $(fpic) $(SHARED) $(INCLUDES) -o $@ $(OBJECTS) $(LDFLAGS) +endif %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< From c8feaf33e9179af2d6fda6e6092c14ffd3e55797 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 19:23:15 +0200 Subject: [PATCH 441/822] (Vita) Add -lSceNet_stub --- Makefile.griffin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.griffin b/Makefile.griffin index 7f97689810..3937080e4f 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -146,7 +146,7 @@ else ifeq ($(platform), vita) MACHDEP := -DVITA PLATCFLAGS := -O3 LIBS += -lretro_vita \ - -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub \ + -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub \ -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ -lSceRtc_stub -lz -lm -lc From d29c24265591080ebe49fb0434fe400495079faa Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 19:46:19 +0200 Subject: [PATCH 442/822] (Vita) Add vita frontend driver (PSP) Remove vita frontend from PSP frontend --- Makefile.griffin | 2 +- frontend/drivers/platform_psp.c | 31 +--- frontend/drivers/platform_vita.c | 247 +++++++++++++++++++++++++++++++ frontend/frontend_driver.c | 5 +- frontend/frontend_driver.h | 5 +- griffin/griffin.c | 2 + 6 files changed, 262 insertions(+), 30 deletions(-) create mode 100644 frontend/drivers/platform_vita.c diff --git a/Makefile.griffin b/Makefile.griffin index 3937080e4f..a51b4f20cd 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -148,7 +148,7 @@ else ifeq ($(platform), vita) LIBS += -lretro_vita \ -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub \ -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ - -lSceRtc_stub -lz -lm -lc + -lScePower_stub -lSceRtc_stub -lz -lm -lc PLATOBJS += audio/audio_utils_neon.o audio/drivers_resampler/sinc_neon.o \ audio/drivers_resampler/cc_resampler_neon.o diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 09de71f359..51efd2fce1 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -14,16 +14,11 @@ * If not, see . */ -#ifdef VITA -#include -#include -#else #include #include #include #include #include -#endif #include #include @@ -38,15 +33,12 @@ #include "../../defines/psp_defines.h" #include "../../general.h" -#if defined(HAVE_KERNEL_PRX) || (defined(IS_SALAMANDER) && !defined(VITA)) +#if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) #include "../../psp1/kernel_functions.h" #endif -#ifdef VITA -PSP2_MODULE_INFO(0, 0, "RetroArch"); -#else + PSP_MODULE_INFO("RetroArch", 0, 1, 1); -#endif PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER|THREAD_ATTR_VFPU); #ifdef BIG_STACK PSP_MAIN_THREAD_STACK_SIZE_KB(4*1024); @@ -187,23 +179,19 @@ static void frontend_psp_init(void *data) #ifndef IS_SALAMANDER (void)data; -#ifndef VITA /* TODO/FIXME - Err on the safe side for now and * assume these aren't there with the PSP2/Vita SDKs. */ /* initialize debug screen */ - pspDebugScreenInit(); + pspDebugScreenInit(); pspDebugScreenClear(); -#endif - + setup_callback(); - -#ifndef VITA + pspFpuSetEnable(0); /* disable FPU exceptions */ scePowerSetClockFrequency(333,333,166); #endif -#endif #if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) pspSdkLoadStartModule("kernel_functions.prx", PSP_MEMORY_PARTITION_KERNEL); @@ -264,16 +252,13 @@ static int frontend_psp_get_rating(void) static enum frontend_powerstate frontend_psp_get_powerstate(int *seconds, int *percent) { enum frontend_powerstate ret = FRONTEND_POWERSTATE_NONE; -#ifndef VITA int battery = scePowerIsBatteryExist(); /* this function does not exist on Vita? */ -#endif int plugged = scePowerIsPowerOnline(); int charging = scePowerIsBatteryCharging(); *percent = scePowerGetBatteryLifePercent(); *seconds = scePowerGetBatteryLifeTime() * 60; -#ifndef VITA if (!battery) { ret = FRONTEND_POWERSTATE_NO_SOURCE; @@ -281,7 +266,6 @@ static enum frontend_powerstate frontend_psp_get_powerstate(int *seconds, int *p *percent = -1; } else -#endif if (charging) ret = FRONTEND_POWERSTATE_CHARGING; else if (plugged) @@ -302,17 +286,12 @@ static int frontend_psp_parse_drive_list(void *data) #ifndef IS_SALAMANDER file_list_t *list = (file_list_t*)data; -#ifdef VITA - menu_list_push(list, - "cache0:/", "", MENU_FILE_DIRECTORY, 0, 0); -#else menu_list_push(list, "ms0:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "ef0:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "host0:/", "", MENU_FILE_DIRECTORY, 0, 0); -#endif #endif return 0; diff --git a/frontend/drivers/platform_vita.c b/frontend/drivers/platform_vita.c new file mode 100644 index 0000000000..424e159e27 --- /dev/null +++ b/frontend/drivers/platform_vita.c @@ -0,0 +1,247 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2015 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include + +#include +#include +#include +#include + +#include +#ifndef IS_SALAMANDER +#include +#endif + +#include "../../defines/psp_defines.h" +#include "../../general.h" + +PSP2_MODULE_INFO(0, 0, "RetroArch"); + +char eboot_path[512]; + +static bool exit_spawn = false; +static bool exitspawn_start_game = false; + +#ifdef IS_SALAMANDER +#include "../../file_ext.h" +#endif + +static void frontend_vita_get_environment_settings(int *argc, char *argv[], + void *args, void *params_data) +{ + (void)args; +#ifndef IS_SALAMANDER +#if defined(HAVE_LOGGER) + logger_init(); +#elif defined(HAVE_FILE_LOGGER) + global_t *global = global_get_ptr(); + global->log_file = fopen("cache0:/retroarch-log.txt", "w"); +#endif +#endif + + strlcpy(eboot_path, argv[0], sizeof(eboot_path)); + + fill_pathname_basedir(g_defaults.dir.port, argv[0], sizeof(g_defaults.dir.port)); + RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); + + fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, + "media", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core, + "playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.cheats, g_defaults.dir.cheats, + "cheats", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.remap, g_defaults.dir.remap, + "remaps", sizeof(g_defaults.dir.remap)); + +#ifndef IS_SALAMANDER + if (argv[1] && (argv[1][0] != '\0')) + { + static char path[PATH_MAX_LENGTH]; + struct rarch_main_wrap *args = NULL; + + *path = '\0'; + args = (struct rarch_main_wrap*)params_data; + + if (args) + { + strlcpy(path, argv[1], sizeof(path)); + + args->touched = true; + args->no_content = false; + args->verbose = false; + args->config_path = NULL; + args->sram_path = NULL; + args->state_path = NULL; + args->content_path = path; + args->libretro_path = NULL; + + RARCH_LOG("argv[0]: %s\n", argv[0]); + RARCH_LOG("argv[1]: %s\n", argv[1]); + RARCH_LOG("argv[2]: %s\n", argv[2]); + + RARCH_LOG("Auto-start game %s.\n", argv[1]); + } + } +#endif +} + +static void frontend_vita_deinit(void *data) +{ + (void)data; +#ifndef IS_SALAMANDER + global_t *global = global_get_ptr(); + global->verbosity = false; + +#ifdef HAVE_FILE_LOGGER + if (global->log_file) + fclose(global->log_file); + global->log_file = NULL; +#endif + +#endif +} + +static void frontend_vita_shutdown(bool unused) +{ + (void)unused; + sceKernelExitProcess(0); +} + +static void frontend_vita_init(void *data) +{ + (void)data; +} + +static void frontend_vita_exec(const char *path, bool should_load_game) +{ +#if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) + char argp[512] = {0}; + SceSize args = 0; + + argp[0] = '\0'; + strlcpy(argp, eboot_path, sizeof(argp)); + args = strlen(argp) + 1; + +#ifndef IS_SALAMANDER + global_t *global = global_get_ptr(); + + if (should_load_game && global->path.fullpath[0] != '\0') + { + argp[args] = '\0'; + strlcat(argp + args, global->path.fullpath, sizeof(argp) - args); + args += strlen(argp + args) + 1; + } +#endif + + RARCH_LOG("Attempt to load executable: [%s].\n", path); + + exitspawn_kernel(path, args, argp); + +#endif +} + +static void frontend_vita_set_fork(bool exit, bool start_game) +{ + exit_spawn = true; + exitspawn_start_game = start_game; +} + +static void frontend_vita_exitspawn(char *s, size_t len) +{ + bool should_load_game = false; +#ifndef IS_SALAMANDER + should_load_game = exitspawn_start_game; + + if (!exit_spawn) + return; +#endif + frontend_vita_exec(s, should_load_game); +} + +static int frontend_vita_get_rating(void) +{ + return 4; +} + +static enum frontend_powerstate frontend_vita_get_powerstate(int *seconds, int *percent) +{ + enum frontend_powerstate ret = FRONTEND_POWERSTATE_NONE; + int battery = 1; + int plugged = scePowerIsPowerOnline(); + int charging = scePowerIsBatteryCharging(); + + *percent = scePowerGetBatteryLifePercent(); + *seconds = scePowerGetBatteryLifeTime() * 60; + + if (charging) + ret = FRONTEND_POWERSTATE_CHARGING; + else if (plugged) + ret = FRONTEND_POWERSTATE_CHARGED; + else + ret = FRONTEND_POWERSTATE_ON_POWER_SOURCE; + + return ret; +} + +enum frontend_architecture frontend_vita_get_architecture(void) +{ + return FRONTEND_ARCH_MIPS; +} + +static int frontend_vita_parse_drive_list(void *data) +{ +#ifndef IS_SALAMANDER + file_list_t *list = (file_list_t*)data; + + menu_list_push(list, + "cache0:/", "", MENU_FILE_DIRECTORY, 0, 0); +#endif + + return 0; +} + +frontend_ctx_driver_t frontend_ctx_vita = { + frontend_vita_get_environment_settings, + frontend_vita_init, + frontend_vita_deinit, + frontend_vita_exitspawn, + NULL, /* process_args */ + frontend_vita_exec, + frontend_vita_set_fork, + frontend_vita_shutdown, + NULL, /* get_name */ + NULL, /* get_os */ + frontend_vita_get_rating, + NULL, /* load_content */ + frontend_vita_get_architecture, + frontend_vita_get_powerstate, + frontend_vita_parse_drive_list, + "vita", +}; diff --git a/frontend/frontend_driver.c b/frontend/frontend_driver.c index 6157f9cae7..bc7829f251 100644 --- a/frontend/frontend_driver.c +++ b/frontend/frontend_driver.c @@ -47,6 +47,9 @@ static frontend_ctx_driver_t *frontend_ctx_drivers[] = { #if defined(PSP) &frontend_ctx_psp, #endif +#if defined(VITA) + &frontend_ctx_vita, +#endif #if defined(_3DS) &frontend_ctx_ctr, #endif @@ -83,7 +86,7 @@ frontend_ctx_driver_t *frontend_ctx_find_driver(const char *ident) * * Finds first suitable driver and initialize. * - * Returns: pointer to first suitable driver, otherwise NULL. + * Returns: pointer to first suitable driver, otherwise NULL. **/ frontend_ctx_driver_t *frontend_ctx_init_first(void) { diff --git a/frontend/frontend_driver.h b/frontend/frontend_driver.h index f082a138a6..26814368eb 100644 --- a/frontend/frontend_driver.h +++ b/frontend/frontend_driver.h @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -84,6 +84,7 @@ extern frontend_ctx_driver_t frontend_ctx_darwin; extern frontend_ctx_driver_t frontend_ctx_android; extern frontend_ctx_driver_t frontend_ctx_linux; extern frontend_ctx_driver_t frontend_ctx_psp; +extern frontend_ctx_driver_t frontend_ctx_vita; extern frontend_ctx_driver_t frontend_ctx_ctr; extern frontend_ctx_driver_t frontend_ctx_win32; extern frontend_ctx_driver_t frontend_ctx_null; @@ -105,7 +106,7 @@ frontend_ctx_driver_t *frontend_get_ptr(void); * * Finds first suitable driver and initialize. * - * Returns: pointer to first suitable driver, otherwise NULL. + * Returns: pointer to first suitable driver, otherwise NULL. **/ frontend_ctx_driver_t *frontend_ctx_init_first(void); diff --git a/griffin/griffin.c b/griffin/griffin.c index b98808fa23..952f706120 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -628,6 +628,8 @@ FRONTEND #include "../frontend/drivers/platform_xdk.c" #elif defined(PSP) #include "../frontend/drivers/platform_psp.c" +#elif defined(VITA) +#include "../frontend/drivers/platform_vita.c" #elif defined(_3DS) #include "../frontend/drivers/platform_ctr.c" #elif defined(__QNX__) From 8f4b4c55b26ffb66463cb3bad29b87d510930098 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 20:06:51 +0200 Subject: [PATCH 443/822] (Vita) Add naive implementation for pthread_mutex_trylock --- libretro-common/rthreads/psp_pthread.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libretro-common/rthreads/psp_pthread.h b/libretro-common/rthreads/psp_pthread.h index 7f44cf5cb5..9d3032f806 100644 --- a/libretro-common/rthreads/psp_pthread.h +++ b/libretro-common/rthreads/psp_pthread.h @@ -121,17 +121,23 @@ static INLINE int pthread_mutex_unlock(pthread_mutex_t *mutex) static INLINE int pthread_join(pthread_t thread, void **retval) { + int exit_status; SceUInt timeout = (SceUInt)-1; + sceKernelWaitThreadEnd(thread, &timeout); - int exit_status = sceKernelGetThreadExitStatus(thread); + exit_status = sceKernelGetThreadExitStatus(thread); sceKernelDeleteThread(thread); return exit_status; } static INLINE int pthread_mutex_trylock(pthread_mutex_t *mutex) { - //FIXME: stub +#ifdef VITA + return sceKernelTryLockMutex(*mutex, 1 /* not sure about this last param */); +#else + /* FIXME: stub */ return 1; +#endif } static INLINE int pthread_cond_wait(pthread_cond_t *cond, From 3b54e81d009b301da921f2a268c4b389a92039cf Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 20:04:52 +0200 Subject: [PATCH 444/822] (Vita) Start vita2d_gfx video driver --- frontend/drivers/platform_vita.c | 5 ++ gfx/drivers/vita2d_gfx.c | 145 +++++++++++++++++++++++++++++++ gfx/video_driver.c | 30 +++---- gfx/video_driver.h | 12 +-- griffin/griffin.c | 2 + 5 files changed, 173 insertions(+), 21 deletions(-) create mode 100644 gfx/drivers/vita2d_gfx.c diff --git a/frontend/drivers/platform_vita.c b/frontend/drivers/platform_vita.c index 424e159e27..74422bab27 100644 --- a/frontend/drivers/platform_vita.c +++ b/frontend/drivers/platform_vita.c @@ -80,6 +80,11 @@ static void frontend_vita_get_environment_settings(int *argc, char *argv[], fill_pathname_join(g_defaults.dir.remap, g_defaults.dir.remap, "remaps", sizeof(g_defaults.dir.remap)); + struct rarch_main_wrap *params = NULL; + params = (struct rarch_main_wrap*)params_data; + + params->verbose = true; + #ifndef IS_SALAMANDER if (argv[1] && (argv[1][0] != '\0')) { diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c new file mode 100644 index 0000000000..2aa4bcbb14 --- /dev/null +++ b/gfx/drivers/vita2d_gfx.c @@ -0,0 +1,145 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2015 - Sergi Granell (xerpi) + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include "../../general.h" +#include "../../driver.h" +#include "../video_viewport.h" + +static void *vita2d_gfx_init(const video_info_t *video, + const input_driver_t **input, void **input_data) +{ + *input = NULL; + *input_data = NULL; + (void)video; + + vita2d_init(); + vita2d_set_clear_color(RGBA8(0x40, 0x40, 0x40, 0xFF)); + + return (void*)-1; +} + +static bool vita2d_gfx_frame(void *data, const void *frame, + unsigned width, unsigned height, uint64_t frame_count, + unsigned pitch, const char *msg) +{ + (void)data; + (void)frame; + (void)width; + (void)height; + (void)pitch; + (void)msg; + + return true; +} + +static void vita2d_gfx_set_nonblock_state(void *data, bool toggle) +{ + (void)data; + (void)toggle; +} + +static bool vita2d_gfx_alive(void *data) +{ + (void)data; + return true; +} + +static bool vita2d_gfx_focus(void *data) +{ + (void)data; + return true; +} + +static bool vita2d_gfx_suppress_screensaver(void *data, bool enable) +{ + (void)data; + (void)enable; + return false; +} + +static bool vita2d_gfx_has_windowed(void *data) +{ + (void)data; + return true; +} + +static void vita2d_gfx_free(void *data) +{ + (void)data; + + vita2d_fini(); +} + +static bool vita2d_gfx_set_shader(void *data, + enum rarch_shader_type type, const char *path) +{ + (void)data; + (void)type; + (void)path; + + return false; +} + +static void vita2d_gfx_set_rotation(void *data, + unsigned rotation) +{ + (void)data; + (void)rotation; +} + +static void vita2d_gfx_viewport_info(void *data, + struct video_viewport *vp) +{ + (void)data; + (void)vp; +} + +static bool vita2d_gfx_read_viewport(void *data, uint8_t *buffer) +{ + (void)data; + (void)buffer; + + return true; +} + +static void vita2d_gfx_get_poke_interface(void *data, + const video_poke_interface_t **iface) +{ + (void)data; + (void)iface; +} + +video_driver_t video_vita2d = { + vita2d_gfx_init, + vita2d_gfx_frame, + vita2d_gfx_set_nonblock_state, + vita2d_gfx_alive, + vita2d_gfx_focus, + vita2d_gfx_suppress_screensaver, + vita2d_gfx_has_windowed, + vita2d_gfx_set_shader, + vita2d_gfx_free, + "vita2d", + NULL, /* set_viewport */ + vita2d_gfx_set_rotation, + vita2d_gfx_viewport_info, + vita2d_gfx_read_viewport, + NULL, /* read_frame_raw */ + +#ifdef HAVE_OVERLAY + NULL, /* overlay_interface */ +#endif + vita2d_gfx_get_poke_interface, +}; diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 0522f3da11..4c57252df0 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -70,8 +70,8 @@ static const video_driver_t *video_drivers[] = { #if defined(HAVE_D3D) &video_d3d, #endif -#ifdef SN_TARGET_PSP2 - &video_vita, +#ifdef HAVE_VITA2D + &video_vita2d, #endif #ifdef PSP &video_psp1, @@ -233,7 +233,7 @@ void find_video_driver(void) * video_driver_get_ptr: * @drv : real video driver will be set to this. * - * Use this if you need the real video driver + * Use this if you need the real video driver * and driver data pointers. * * Returns: video driver's userdata. @@ -323,7 +323,7 @@ static void init_video_filter(enum retro_pixel_format colfmt) unsigned width, height, pow2_x, pow2_y, maxsize; struct retro_game_geometry *geom = NULL; settings_t *settings = config_get_ptr(); - struct retro_system_av_info *av_info = + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); deinit_video_filter(); @@ -360,7 +360,7 @@ static void init_video_filter(enum retro_pixel_format colfmt) pow2_x = next_pow2(width); pow2_y = next_pow2(height); - maxsize = max(pow2_x, pow2_y); + maxsize = max(pow2_x, pow2_y); video_state.filter.scale = maxsize / RARCH_SCALE_BASE; video_state.filter.out_rgb32 = rarch_softfilter_get_output_format( video_state.filter.filter) == RETRO_PIXEL_FORMAT_XRGB8888; @@ -398,8 +398,8 @@ static void init_video_input(const input_driver_t *tmp) if (!driver->input) { - /* This should never really happen as tmp (driver.input) is always - * found before this in find_driver_input(), or we have aborted + /* This should never really happen as tmp (driver.input) is always + * found before this in find_driver_input(), or we have aborted * in a similar fashion anyways. */ rarch_fail(1, "init_video_input()"); } @@ -452,7 +452,7 @@ void init_video(void) driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); - struct retro_system_av_info *av_info = + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); init_video_filter(video_state.pix_fmt); @@ -478,7 +478,7 @@ void init_video(void) if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM) { float default_aspect = aspectratio_lut[ASPECT_RATIO_CORE].value; - aspectratio_lut[ASPECT_RATIO_CUSTOM].value = + aspectratio_lut[ASPECT_RATIO_CUSTOM].value = (custom_vp->width && custom_vp->height) ? (float)custom_vp->width / custom_vp->height : default_aspect; } @@ -496,7 +496,7 @@ void init_video(void) if (settings->video.force_aspect) { /* Do rounding here to simplify integer scale correctness. */ - unsigned base_width = + unsigned base_width = roundf(geom->base_height * video_driver_get_aspect_ratio()); width = roundf(base_width * settings->video.scale); } @@ -531,8 +531,8 @@ void init_video(void) #endif video.smooth = settings->video.smooth; video.input_scale = scale; - video.rgb32 = video_state.filter.filter ? - video_state.filter.out_rgb32 : + video.rgb32 = video_state.filter.filter ? + video_state.filter.out_rgb32 : (video_state.pix_fmt == RETRO_PIXEL_FORMAT_XRGB8888); tmp = (const input_driver_t*)driver->input; @@ -911,7 +911,7 @@ void video_monitor_adjust_system_rates(void) { float timing_skew; const struct retro_system_timing *info = NULL; - struct retro_system_av_info *av_info = + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); settings_t *settings = config_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); @@ -1016,7 +1016,7 @@ bool video_monitor_fps_statistics(double *refresh_rate, retro_time_t accum = 0, avg, accum_var = 0; unsigned samples = 0; settings_t *settings = config_get_ptr(); - + samples = min(MEASURE_FRAME_TIME_SAMPLES_COUNT, video_state.frame_time_samples_count); diff --git a/gfx/video_driver.h b/gfx/video_driver.h index 7eef275889..e2843a22ee 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -129,11 +129,11 @@ typedef struct video_poke_interface typedef struct video_driver { /* Should the video driver act as an input driver as well? - * The video initialization might preinitialize an input driver - * to override the settings in case the video driver relies on + * The video initialization might preinitialize an input driver + * to override the settings in case the video driver relies on * input driver for event handling. */ void *(*init)(const video_info_t *video, const input_driver_t **input, - void **input_data); + void **input_data); /* msg is for showing a message on the screen along with the video frame. */ bool (*frame)(void *data, const void *frame, unsigned width, @@ -190,7 +190,7 @@ typedef struct video_driver extern video_driver_t video_gl; extern video_driver_t video_psp1; -extern video_driver_t video_vita; +extern video_driver_t video_vita2d; extern video_driver_t video_ctr; extern video_driver_t video_d3d; extern video_driver_t video_gx; @@ -250,7 +250,7 @@ void find_video_driver(void); * video_driver_get_ptr: * @drv : real video driver will be set to this. * - * Use this if you need the real video driver + * Use this if you need the real video driver * and driver data pointers. * * Returns: video driver's userdata. diff --git a/griffin/griffin.c b/griffin/griffin.c index 952f706120..73bcd24204 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -236,6 +236,8 @@ VIDEO DRIVER #include "../gfx/drivers/gx_gfx.c" #elif defined(PSP) #include "../gfx/drivers/psp1_gfx.c" +#elif defined(HAVE_VITA2D) +#include "../gfx/drivers/vita2d_gfx.c" #elif defined(_3DS) #include "../gfx/drivers/ctr_gfx.c" #elif defined(XENON) From 3b04de6a5fe9f3089e8f5fc80b7df3fb9bafc9b2 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 20:11:57 +0200 Subject: [PATCH 445/822] (Vita) Update vita2d video driver --- Makefile.griffin | 2 +- gfx/drivers/vita2d_gfx.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile.griffin b/Makefile.griffin index a51b4f20cd..669e11291a 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -257,7 +257,7 @@ endif endif ifeq ($(HAVE_VITA2D), 1) -LIBS += -lvita2d +LIBS := -lvita2d $(LIBS) endif ifeq ($(HAVE_RSOUND), 1) diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 2aa4bcbb14..80aed61ea1 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -17,6 +17,8 @@ #include "../../driver.h" #include "../video_viewport.h" +#include + static void *vita2d_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) { @@ -41,6 +43,12 @@ static bool vita2d_gfx_frame(void *data, const void *frame, (void)pitch; (void)msg; + vita2d_start_drawing(); + vita2d_clear_screen(); + + vita2d_end_drawing(); + vita2d_swap_buffers(); + return true; } From 173dcd3e4cb659b08c554055ad3381455f4d3ee0 Mon Sep 17 00:00:00 2001 From: CautiousAlbino Date: Sun, 30 Aug 2015 20:04:40 +0200 Subject: [PATCH 446/822] Retry implementation of include_compressed to dir_list_new. Problem was that if ext_list wasn't used, an empty list would be created. --- audio/audio_dsp_filter.c | 2 +- dir_list_special.c | 4 +-- frontend/frontend_salamander.c | 2 +- gfx/drivers_context/drm_egl_ctx.c | 2 +- gfx/video_filter.c | 2 +- input/input_autodetect.c | 4 +-- libretro-common/file/dir_list.c | 39 +++++++++++++------------ libretro-common/file/dir_list_obj.m | 32 +++++++++++--------- libretro-common/include/file/dir_list.h | 9 +++--- menu/menu_displaylist.c | 2 +- 10 files changed, 53 insertions(+), 45 deletions(-) diff --git a/audio/audio_dsp_filter.c b/audio/audio_dsp_filter.c index ef4da4c9ec..c0b9d77d02 100644 --- a/audio/audio_dsp_filter.c +++ b/audio/audio_dsp_filter.c @@ -242,7 +242,7 @@ rarch_dsp_filter_t *rarch_dsp_filter_new( #if !defined(HAVE_FILTERS_BUILTIN) && defined(HAVE_DYLIB) fill_pathname_basedir(basedir, filter_config, sizeof(basedir)); - plugs = dir_list_new(basedir, EXT_EXECUTABLES, false); + plugs = dir_list_new(basedir, EXT_EXECUTABLES, false, false); if (!plugs) goto error; #endif diff --git a/dir_list_special.c b/dir_list_special.c index 0a8913ec76..463359c43b 100644 --- a/dir_list_special.c +++ b/dir_list_special.c @@ -25,7 +25,7 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty const char *exts = NULL; bool include_dirs = false; - global_t *global = global_get_ptr(); + global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); (void)input_dir; @@ -58,5 +58,5 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty return NULL; } - return dir_list_new(dir, exts, include_dirs); + return dir_list_new(dir, exts, include_dirs, false); } diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index 78d6174efa..b6611dc229 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -42,7 +42,7 @@ static void find_first_libretro_core(char *first_file, RARCH_LOG("Searching for valid libretro implementation in: \"%s\".\n", dir); - list = dir_list_new(dir, ext, false); + list = dir_list_new(dir, ext, false, false); if (!list) { RARCH_ERR("Couldn't read directory. Cannot infer default libretro core.\n"); diff --git a/gfx/drivers_context/drm_egl_ctx.c b/gfx/drivers_context/drm_egl_ctx.c index ca64e8ba79..1d75843bf0 100644 --- a/gfx/drivers_context/drm_egl_ctx.c +++ b/gfx/drivers_context/drm_egl_ctx.c @@ -444,7 +444,7 @@ static bool gfx_ctx_drm_egl_init(void *data) return false; drm->g_drm_fd = -1; - gpu_descriptors = dir_list_new("/dev/dri", NULL, false); + gpu_descriptors = dir_list_new("/dev/dri", NULL, false, false); nextgpu: free_drm_resources(drm); diff --git a/gfx/video_filter.c b/gfx/video_filter.c index 5df658891f..c9c3f5d774 100644 --- a/gfx/video_filter.c +++ b/gfx/video_filter.c @@ -396,7 +396,7 @@ rarch_softfilter_t *rarch_softfilter_new(const char *filter_config, #if defined(HAVE_DYLIB) fill_pathname_basedir(basedir, filter_config, sizeof(basedir)); - plugs = dir_list_new(basedir, EXT_EXECUTABLES, false); + plugs = dir_list_new(basedir, EXT_EXECUTABLES, false, false); if (!plugs) { RARCH_ERR("[SoftFilter]: Could not build up string list...\n"); diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 2dd8d710e5..aa25b32354 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -199,10 +199,10 @@ static bool input_autoconfigure_joypad_from_conf_dir( sizeof(path)); if (settings) - list = dir_list_new(path, "cfg", false); + list = dir_list_new(path, "cfg", false, false); if (!list || !list->size) - list = dir_list_new(settings->input.autoconfig_dir, "cfg", false); + list = dir_list_new(settings->input.autoconfig_dir, "cfg", false, false); if(!list) return false; diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 161d34cc11..e846c2b368 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -132,13 +132,14 @@ static bool dirent_is_directory(const char *path, /** * parse_dir_entry: - * @name : name of the directory listing entry. - * @file_path : file path of the directory listing entry. - * @is_dir : is the directory listing a directory? - * @include_dirs : include directories as part of the finished directory listing? - * @list : pointer to directory listing. - * @ext_list : pointer to allowed file extensions listing. - * @file_ext : file extension of the directory listing entry. + * @name : name of the directory listing entry. + * @file_path : file path of the directory listing entry. + * @is_dir : is the directory listing a directory? + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : Include compressed files, even if not part of ext_list. + * @list : pointer to directory listing. + * @ext_list : pointer to allowed file extensions listing. + * @file_ext : file extension of the directory listing entry. * * Parses a directory listing. * @@ -146,7 +147,7 @@ static bool dirent_is_directory(const char *path, * continue to the next entry in the directory listing. **/ static int parse_dir_entry(const char *name, char *file_path, - bool is_dir, bool include_dirs, + bool is_dir, bool include_dirs, bool include_compressed, struct string_list *list, struct string_list *ext_list, const char *file_ext) { @@ -169,7 +170,9 @@ static int parse_dir_entry(const char *name, char *file_path, if (!strcmp(name, ".") || !strcmp(name, "..")) return 1; - if (!is_compressed_file && !is_dir && ext_list && !supported_by_core) + if (!is_dir && ext_list && + ((!is_compressed_file && !supported_by_core) || + (!supported_by_core && !include_compressed))) return 1; if (is_dir) @@ -195,9 +198,10 @@ static int parse_dir_entry(const char *name, char *file_path, /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : Only include files which match ext. Do not try to match compressed files, etc. * * Create a directory listing. * @@ -205,7 +209,7 @@ static int parse_dir_entry(const char *name, char *file_path, * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, - const char *ext, bool include_dirs) + const char *ext, bool include_dirs, bool include_compressed) { #if defined(_WIN32) WIN32_FIND_DATA ffd; @@ -247,14 +251,14 @@ struct string_list *dir_list_new(const char *dir, fill_pathname_join(file_path, dir, name, sizeof(file_path)); ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, list, ext_list, file_ext); + include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) goto error; if (ret == 1) continue; - }while (FindNextFile(hFind, &ffd) != 0); + } while (FindNextFile(hFind, &ffd) != 0); FindClose(hFind); string_list_free(ext_list); @@ -281,7 +285,7 @@ error: is_dir = PSP2_S_ISDIR(entry.d_stat.st_mode); ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, list, ext_list, file_ext); + include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) { @@ -318,7 +322,7 @@ error: is_dir = dirent_is_directory(file_path, entry); ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, list, ext_list, file_ext); + include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) goto error; @@ -333,7 +337,6 @@ error: return list; error: - if (directory) closedir(directory); #endif diff --git a/libretro-common/file/dir_list_obj.m b/libretro-common/file/dir_list_obj.m index b1325acee1..1eddbb52ee 100644 --- a/libretro-common/file/dir_list_obj.m +++ b/libretro-common/file/dir_list_obj.m @@ -105,13 +105,14 @@ static bool dirent_is_directory(const char *path) /** * parse_dir_entry: - * @name : name of the directory listing entry. - * @file_path : file path of the directory listing entry. - * @is_dir : is the directory listing a directory? - * @include_dirs : include directories as part of the finished directory listing? - * @list : pointer to directory listing. - * @ext_list : pointer to allowed file extensions listing. - * @file_ext : file extension of the directory listing entry. + * @name : name of the directory listing entry. + * @file_path : file path of the directory listing entry. + * @is_dir : is the directory listing a directory? + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : include compressed files, even when not part of ext_list. + * @list : pointer to directory listing. + * @ext_list : pointer to allowed file extensions listing. + * @file_ext : file extension of the directory listing entry. * * Parses a directory listing. * @@ -119,7 +120,7 @@ static bool dirent_is_directory(const char *path) * continue to the next entry in the directory listing. **/ static int parse_dir_entry(const char *name, char *file_path, - bool is_dir, bool include_dirs, + bool is_dir, bool include_dirs, bool include_compressed, struct string_list *list, struct string_list *ext_list, const char *file_ext) { @@ -142,7 +143,9 @@ static int parse_dir_entry(const char *name, char *file_path, if (!strcmp(name, ".") || !strcmp(name, "..")) return 1; - if (!is_compressed_file && !is_dir && ext_list && !supported_by_core) + if (!is_dir && ext_list && + ((!is_compressed_file && !supported_by_core) || + (!supported_by_core && !include_compressed))) return 1; if (is_dir) @@ -168,9 +171,10 @@ static int parse_dir_entry(const char *name, char *file_path, /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : Include compressed files, even if not part of ext. * * Create a directory listing. * @@ -178,7 +182,7 @@ static int parse_dir_entry(const char *name, char *file_path, * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, - const char *ext, bool include_dirs) + const char *ext, bool include_dirs, bool include_compressed) { NSArray *entries = NULL; char path_buf[PATH_MAX_LENGTH] = {0}; @@ -207,7 +211,7 @@ struct string_list *dir_list_new(const char *dir, is_dir = dirent_is_directory(file_path); ret = parse_dir_entry([name UTF8String], file_path, is_dir, - include_dirs, list, ext_list, file_ext); + include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) goto error; diff --git a/libretro-common/include/file/dir_list.h b/libretro-common/include/file/dir_list.h index 724fa3f119..6fc3e0f6b1 100644 --- a/libretro-common/include/file/dir_list.h +++ b/libretro-common/include/file/dir_list.h @@ -31,9 +31,10 @@ extern "C" { /** * dir_list_new: - * @dir : directory path. - * @ext : allowed extensions of file directory entries to include. - * @include_dirs : include directories as part of the finished directory listing? + * @dir : directory path. + * @ext : allowed extensions of file directory entries to include. + * @include_dirs : include directories as part of the finished directory listing? + * @include_compressed : include compressed files, even when not part of ext. * * Create a directory listing. * @@ -41,7 +42,7 @@ extern "C" { * NULL in case of error. Has to be freed manually. **/ struct string_list *dir_list_new(const char *dir, const char *ext, - bool include_dirs); + bool include_dirs, bool include_compressed); /** * dir_list_sort: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 8f27db7e0d..0f8d7c085f 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2118,7 +2118,7 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n else str_list = dir_list_new(info->path, filter_ext ? info->exts : NULL, - true); + true, true); if (hash_label == MENU_LABEL_SCAN_DIRECTORY) menu_list_push(info->list, From e9c4c74a7d2b6a2ab75fc90768617bf82f4dc27f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 20:47:17 +0200 Subject: [PATCH 447/822] Set default video driver to "vita2d" if HAVE_VITA2D is defined --- config.def.h | 4 ++-- configuration.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config.def.h b/config.def.h index 4f576d8b5c..9a07dba79f 100644 --- a/config.def.h +++ b/config.def.h @@ -37,7 +37,7 @@ enum VIDEO_XENON360, VIDEO_XDK_D3D, VIDEO_PSP1, - VIDEO_VITA, + VIDEO_VITA2D, VIDEO_CTR, VIDEO_D3D9, VIDEO_VG, @@ -143,7 +143,7 @@ enum #define VIDEO_DEFAULT_DRIVER VIDEO_D3D9 #elif defined(HAVE_VG) #define VIDEO_DEFAULT_DRIVER VIDEO_VG -#elif defined(SN_TARGET_PSP2) +#elif defined(HAVE_VITA2D) #define VIDEO_DEFAULT_DRIVER VIDEO_VITA #elif defined(PSP) #define VIDEO_DEFAULT_DRIVER VIDEO_PSP1 diff --git a/configuration.c b/configuration.c index d3a91b57c6..0a64d335d8 100644 --- a/configuration.c +++ b/configuration.c @@ -186,8 +186,8 @@ const char *config_get_default_video(void) return "d3d"; case VIDEO_PSP1: return "psp1"; - case VIDEO_VITA: - return "vita"; + case VIDEO_VITA2D: + return "vita2d"; case VIDEO_CTR: return "ctr"; case VIDEO_XVIDEO: From 3d80697cff3944e97f4f01778ab06c860c88e232 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 21:25:07 +0200 Subject: [PATCH 448/822] Buildfix --- config.def.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.def.h b/config.def.h index 9a07dba79f..321c8a2b6d 100644 --- a/config.def.h +++ b/config.def.h @@ -144,7 +144,7 @@ enum #elif defined(HAVE_VG) #define VIDEO_DEFAULT_DRIVER VIDEO_VG #elif defined(HAVE_VITA2D) -#define VIDEO_DEFAULT_DRIVER VIDEO_VITA +#define VIDEO_DEFAULT_DRIVER VIDEO_VITA2D #elif defined(PSP) #define VIDEO_DEFAULT_DRIVER VIDEO_PSP1 #elif defined(_3DS) From 5a5097a0d095ea9cffeec0f3618177aaebbbe50e Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 22:47:50 +0200 Subject: [PATCH 449/822] Fix netlogger --- logger/netlogger/logger.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index 046991ade3..208a6cb703 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -37,9 +37,12 @@ #endif static int g_sid; -static int sock; static struct sockaddr_in target; static char sendbuf[4096]; +#ifdef VITA +static void *net_memory = NULL; +#define NET_INIT_SIZE 512*1024 +#endif static int network_interface_up(struct sockaddr_in *target, int index, const char *ip_address, unsigned udp_port, int *s) @@ -47,10 +50,20 @@ static int network_interface_up(struct sockaddr_in *target, int index, (void)index; #if defined(VITA) + if (sceNetShowNetstat() == PSP2_NET_ERROR_ENOTINIT) + { + SceNetInitParam initparam; + net_memory = malloc(NET_INIT_SIZE); + + initparam.memory = net_memory; + initparam.size = NET_INIT_SIZE; + initparam.flags = 0; + + sceNetInit(&initparam); + } *s = sceNetSocket("RA_netlogger", PSP2_NET_AF_INET, PSP2_NET_SOCK_DGRAM, 0); target->sin_family = PSP2_NET_AF_INET; target->sin_port = sceNetHtons(udp_port); - target->sin_len = 8; sceNetInetPton(PSP2_NET_AF_INET, ip_address, &target->sin_addr); #else @@ -106,6 +119,12 @@ static int network_interface_down(struct sockaddr_in *target, int *s) ret = closesocket(*s); #elif defined(__CELLOS_LV2__) ret = socketclose(*s); +#elif defined(VITA) + if (net_memory) + { + free(net_memory); + } + sceNetSocketClose(*s); #else ret = close(*s); #endif @@ -148,5 +167,5 @@ void logger_send_v(const char *__format, va_list args) int len; vsnprintf(sendbuf,4000,__format, args); len = strlen(sendbuf); - sendto(sock,sendbuf,len,MSG_DONTWAIT,(struct sockaddr*)&target,sizeof(target)); + sendto(g_sid,sendbuf,len,MSG_DONTWAIT,(struct sockaddr*)&target,sizeof(target)); } From 5deceb35bad09705603bba29243abdabc232b8a5 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Sun, 30 Aug 2015 22:48:19 +0200 Subject: [PATCH 450/822] (Vita) Update Vita frontend --- frontend/drivers/platform_vita.c | 8 ++--- gfx/drivers/vita2d_gfx.c | 61 +++++++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/frontend/drivers/platform_vita.c b/frontend/drivers/platform_vita.c index 74422bab27..46a3b3e3e7 100644 --- a/frontend/drivers/platform_vita.c +++ b/frontend/drivers/platform_vita.c @@ -32,7 +32,7 @@ PSP2_MODULE_INFO(0, 0, "RetroArch"); -char eboot_path[512]; +char retroarch_path[512]; static bool exit_spawn = false; static bool exitspawn_start_game = false; @@ -54,9 +54,9 @@ static void frontend_vita_get_environment_settings(int *argc, char *argv[], #endif #endif - strlcpy(eboot_path, argv[0], sizeof(eboot_path)); + strlcpy(retroarch_path, "cache0:/retroarch/", sizeof(retroarch_path)); - fill_pathname_basedir(g_defaults.dir.port, argv[0], sizeof(g_defaults.dir.port)); + fill_pathname_basedir(g_defaults.dir.port, retroarch_path, sizeof(g_defaults.dir.port)); RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, @@ -151,7 +151,7 @@ static void frontend_vita_exec(const char *path, bool should_load_game) SceSize args = 0; argp[0] = '\0'; - strlcpy(argp, eboot_path, sizeof(argp)); + strlcpy(argp, retroarch_path, sizeof(argp)); args = strlen(argp) + 1; #ifndef IS_SALAMANDER diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 80aed61ea1..793c24d460 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -19,6 +19,24 @@ #include +#define SCREEN_W 960 +#define SCREEN_H 544 + +typedef struct vita_video +{ + vita2d_texture *texture; + + bool vsync; + bool rgb32; + + video_viewport_t vp; + + unsigned rotation; + bool vblank_not_reached; + bool keep_aspect; + bool should_resize; +} vita_video_t; + static void *vita2d_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) { @@ -26,26 +44,52 @@ static void *vita2d_gfx_init(const video_info_t *video, *input_data = NULL; (void)video; + vita_video_t *vita = (vita_video_t *)calloc(1, sizeof(vita_video_t)); + + if (!vita) + return NULL; + vita2d_init(); vita2d_set_clear_color(RGBA8(0x40, 0x40, 0x40, 0xFF)); + vita2d_set_vblank_wait(video->vsync); - return (void*)-1; + vita->texture = vita2d_create_empty_texture(SCREEN_W, SCREEN_H); + + vita->vsync = video->vsync; + vita->rgb32 = video->rgb32; + + return vita; } static bool vita2d_gfx_frame(void *data, const void *frame, unsigned width, unsigned height, uint64_t frame_count, unsigned pitch, const char *msg) { - (void)data; + vita_video_t *vita = (vita_video_t *)data; (void)frame; (void)width; (void)height; (void)pitch; (void)msg; + unsigned int *tex_p = vita2d_texture_get_datap(vita->texture); + unsigned int tex_stride = vita2d_texture_get_stride(vita->texture); + const unsigned int *frame_p = frame; + vita2d_start_drawing(); vita2d_clear_screen(); + int i, j; + for (i = 0; i < height; i++) + { + for (j = 0; j < width; j++) + { + tex_p[i + j * tex_stride] = frame_p[i + j * pitch]; + } + } + + vita2d_draw_texture(vita->texture, 0, 0); + vita2d_end_drawing(); vita2d_swap_buffers(); @@ -54,8 +98,13 @@ static bool vita2d_gfx_frame(void *data, const void *frame, static void vita2d_gfx_set_nonblock_state(void *data, bool toggle) { - (void)data; - (void)toggle; + vita_video_t *vita = (vita_video_t *)data; + + if (vita) + { + vita->vsync = !toggle; + vita2d_set_vblank_wait(vita->vsync); + } } static bool vita2d_gfx_alive(void *data) @@ -85,7 +134,9 @@ static bool vita2d_gfx_has_windowed(void *data) static void vita2d_gfx_free(void *data) { - (void)data; + vita_video_t *vita = (vita_video_t *)data; + + vita2d_free_texture(vita->texture); vita2d_fini(); } From dc4ee32620d709384a06de6eae9294550ce95a14 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 23:07:04 +0200 Subject: [PATCH 451/822] Cleanups --- logger/netlogger/logger.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/logger/netlogger/logger.c b/logger/netlogger/logger.c index 208a6cb703..e373760ef9 100644 --- a/logger/netlogger/logger.c +++ b/logger/netlogger/logger.c @@ -121,9 +121,7 @@ static int network_interface_down(struct sockaddr_in *target, int *s) ret = socketclose(*s); #elif defined(VITA) if (net_memory) - { free(net_memory); - } sceNetSocketClose(*s); #else ret = close(*s); @@ -140,17 +138,13 @@ void logger_init (void) { if (network_interface_up(&target, 1, PC_DEVELOPMENT_IP_ADDRESS,PC_DEVELOPMENT_UDP_PORT, &g_sid) < 0) - { printf("Could not initialize network logger interface.\n"); - } } void logger_shutdown (void) { if (network_interface_down(&target, &g_sid) < 0) - { printf("Could not deinitialize network logger interface.\n"); - } } void logger_send(const char *__format,...) From 3c6d0dd77c5414244e0c2559fd47aadfc0a76fe5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 23:19:45 +0200 Subject: [PATCH 452/822] Some PSP1 build fixes and start adding PSP1 support to Makefile.griffin --- Makefile.griffin | 21 +++++++++++++++++++-- gfx/drivers/psp1_gfx.c | 3 --- gfx/video_driver.c | 3 ++- gfx/video_filter.c | 2 ++ libretro_version_1.c | 2 ++ menu/menu_setting.c | 2 ++ 6 files changed, 27 insertions(+), 6 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index 669e11291a..f0053255cf 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -133,10 +133,18 @@ else ifeq ($(platform), psp1) INCLUDE += -I$(PSPSDK)/psp/sdk/include EXT_TARGET := $(TARGET_NAME)_psp1.elf EXT_INTER_TARGET := $(TARGET_NAME)_psp1.elf - PLATCFLAGS := -DPSP -D_PSP_FW_VERSION=150 -G0 + PLATCFLAGS := -DPSP -D_PSP_FW_VERSION=150 -G0 \ + -D_MIPS_ARCH_ALLEGREX + LIBS += $(WHOLE_START) -lretro_psp1 $(WHOLE_END) \ + -lpspgu -lpspgum -lm -lpspaudio -lpspfpu \ + -lpsppower -lpsprtc + + LIBDIRS += -L. + LDFLAGS += -Wl,-q HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_RPNG := 1 + HAVE_KERNEL_PRX := 1 else ifeq ($(platform), vita) CC = arm-vita-eabi-gcc$(EXE_EXT) CXX = arm-vita-eabi-g++$(EXE_EXT) @@ -145,7 +153,7 @@ else ifeq ($(platform), vita) EXT_INTER_TARGET := $(TARGET_NAME).elf MACHDEP := -DVITA PLATCFLAGS := -O3 - LIBS += -lretro_vita \ + LIBS += $(WHOLE_START) -lretro_vita $(WHOLE_END) \ -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub \ -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ -lScePower_stub -lSceRtc_stub -lz -lm -lc @@ -162,6 +170,7 @@ else ifeq ($(platform), vita) HAVE_VITA2D := 1 endif + CFLAGS += -Wall -std=gnu99 $(MACHDEP) $(PLATCFLAGS) $(INCLUDE) OBJ = griffin/griffin.o $(PLATOBJS) @@ -186,6 +195,10 @@ ifeq ($(HAVE_LIBRETRO_MANAGEMENT), 1) CFLAGS += -DHAVE_LIBRETRO_MANAGEMENT endif +ifeq ($(HAVE_KERNEL_PRX), 1) +CFLAGS += -DHAVE_KERNEL_PRX +endif + ifeq ($(HAVE_LIBSICKSAXIS), 1) CFLAGS += -DHAVE_LIBSICKSAXIS endif @@ -202,6 +215,10 @@ ifeq ($(HAVE_LIBRETRODB), 1) CFLAGS += -DHAVE_LIBRETRODB endif +ifeq ($(BIG_STACK),1) +CFLAGS += -DBIG_STACK +endif + ifeq ($(HAVE_RPNG), 1) CFLAGS += -DWANT_RPNG endif diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c index f38bf8d80a..80ba494c93 100644 --- a/gfx/drivers/psp1_gfx.c +++ b/gfx/drivers/psp1_gfx.c @@ -455,9 +455,6 @@ static void *psp_init(const video_info_t *video, psp->hw_render = false; return psp; -error: - RARCH_ERR("PSP1 video could not be initialized.\n"); - return (void*)-1; } //#define DISPLAY_FPS diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 4c57252df0..8f0499958c 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -241,9 +241,10 @@ void find_video_driver(void) void *video_driver_get_ptr(const video_driver_t **drv) { driver_t *driver = driver_get_ptr(); - settings_t *settings = config_get_ptr(); #ifdef HAVE_THREADS + settings_t *settings = config_get_ptr(); + if (settings->video.threaded && !video_state.hw_render_callback.context_type) return rarch_threaded_video_get_ptr(drv); diff --git a/gfx/video_filter.c b/gfx/video_filter.c index c9c3f5d774..a7229291be 100644 --- a/gfx/video_filter.c +++ b/gfx/video_filter.c @@ -129,6 +129,8 @@ static bool create_softfilter_graph(rarch_softfilter_t *filt, char key[64] = {0}; char name[64] = {0}; + (void)i; + snprintf(key, sizeof(key), "filter"); if (!config_get_array(filt->conf, key, name, sizeof(name))) diff --git a/libretro_version_1.c b/libretro_version_1.c index 813c8a02fb..bc8723c7db 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -209,6 +209,8 @@ static void input_poll(void) const input_driver_t *input = driver ? (const input_driver_t*)driver->input : NULL; + (void)settings; + input->poll(driver->input_data); #ifdef HAVE_OVERLAY diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 987c732c73..2b264400eb 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2284,6 +2284,7 @@ static void settings_data_list_current_add_flags( setting_add_special_callbacks(list, list_info, values); } +#ifdef HAVE_OVERLAY static void overlay_enable_toggle_change_handler(void *data) { settings_t *settings = config_get_ptr(); @@ -2303,6 +2304,7 @@ static void overlay_enable_toggle_change_handler(void *data) else event_command(EVENT_CMD_OVERLAY_DEINIT); } +#endif static bool setting_append_list_main_menu_options( rarch_setting_t **list, From a1f4c80648744ee0310b7040abca35e411a1d459 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 30 Aug 2015 23:51:10 +0200 Subject: [PATCH 453/822] (PS3) Some build warning fixes --- gfx/video_filter.c | 2 +- menu/cbs/menu_cbs_ok.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/gfx/video_filter.c b/gfx/video_filter.c index a7229291be..58487a2cc1 100644 --- a/gfx/video_filter.c +++ b/gfx/video_filter.c @@ -124,7 +124,7 @@ static bool create_softfilter_graph(rarch_softfilter_t *filt, softfilter_simd_mask_t cpu_features, unsigned threads) { - unsigned input_fmts, input_fmt, output_fmts, i; + unsigned input_fmts, input_fmt, output_fmts, i = 0; struct config_file_userdata userdata; char key[64] = {0}; char name[64] = {0}; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index f29c256f61..285e324f38 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1045,6 +1045,7 @@ static int action_ok_core_load(const char *path, sizeof(settings->libretro)); event_command(EVENT_CMD_LOAD_CORE); menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS); + #if defined(HAVE_DYNAMIC) /* No content needed for this core, load core immediately. */ @@ -1058,12 +1059,13 @@ static int action_ok_core_load(const char *path, /* Core selection on non-console just updates directory listing. * Will take effect on new content load. */ + return 0; #elif defined(RARCH_CONSOLE) event_command(EVENT_CMD_RESTART_RETROARCH); return -1; -#endif - +#else return 0; +#endif } static int action_ok_core_download(const char *path, From e5c6618c20e46385cf22f70f12ddbe13e9d2782b Mon Sep 17 00:00:00 2001 From: Monroe88 Date: Sun, 30 Aug 2015 17:52:42 -0500 Subject: [PATCH 454/822] (menu_displaylist.c) Fix Preview Shader Parameters --- menu/menu_displaylist.c | 1 + 1 file changed, 1 insertion(+) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 0f8d7c085f..6995a0eb38 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2342,6 +2342,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) case DISPLAYLIST_OPTIONS: case DISPLAYLIST_OPTIONS_CHEATS: case DISPLAYLIST_OPTIONS_REMAPPINGS: + case DISPLAYLIST_SHADER_PARAMETERS: case DISPLAYLIST_SHADER_PARAMETERS_PRESET: case DISPLAYLIST_PERFCOUNTERS_CORE: case DISPLAYLIST_PERFCOUNTERS_FRONTEND: From 94e893634dffb66a8baf87e39dbc69c09264a36e Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Mon, 31 Aug 2015 00:55:34 +0200 Subject: [PATCH 455/822] (Vita) Update gfx driver --- config.def.h | 48 +++++------ gfx/drivers/vita2d_gfx.c | 181 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 197 insertions(+), 32 deletions(-) diff --git a/config.def.h b/config.def.h index 321c8a2b6d..74572dce40 100644 --- a/config.def.h +++ b/config.def.h @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -26,7 +26,7 @@ #include "config.h" #endif -enum +enum { VIDEO_GL = 0, VIDEO_XVIDEO, @@ -231,7 +231,7 @@ enum #define INPUT_DEFAULT_DRIVER INPUT_DINPUT #elif defined(__CELLOS_LV2__) #define INPUT_DEFAULT_DRIVER INPUT_PS3 -#elif (defined(SN_TARGET_PSP2) || defined(PSP)) +#elif defined(PSP) || defined(VITA) #define INPUT_DEFAULT_DRIVER INPUT_PSP #elif defined(_3DS) #define INPUT_DEFAULT_DRIVER INPUT_CTR @@ -265,7 +265,7 @@ enum #define JOYPAD_DEFAULT_DRIVER JOYPAD_GX #elif defined(_XBOX) #define JOYPAD_DEFAULT_DRIVER JOYPAD_XDK -#elif defined(PSP) +#elif defined(PSP) || defined(VITA) #define JOYPAD_DEFAULT_DRIVER JOYPAD_PSP #elif defined(_3DS) #define JOYPAD_DEFAULT_DRIVER JOYPAD_CTR @@ -373,7 +373,7 @@ static const float scale = 3.0; static const bool fullscreen = false; /* To use windowed mode or not when going fullscreen. */ -static const bool windowed_fullscreen = true; +static const bool windowed_fullscreen = true; /* Which monitor to prefer. 0 is any monitor, 1 and up selects * specific monitors, 1 being the first monitor. */ @@ -414,8 +414,8 @@ static const unsigned hard_sync_frames = 0; static const unsigned 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 + * 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; @@ -425,7 +425,7 @@ static bool black_frame_insertion = false; */ static unsigned swap_interval = 1; -/* Threaded video. Will possibly increase performance significantly +/* Threaded video. Will possibly increase performance significantly * at the cost of worse synchronization and latency. */ static const bool video_threaded = false; @@ -454,7 +454,7 @@ static const bool video_vfilter = true; static const bool video_smooth = true; /* On resize and fullscreen, rendering area will stay 4:3 */ -static const bool force_aspect = true; +static const bool force_aspect = true; /* Enable use of shaders. */ #ifdef RARCH_CONSOLE @@ -546,7 +546,7 @@ static const float font_size = 1.0f; static const float font_size = 32; #endif -/* Offset for where messages will be placed on-screen. +/* Offset for where messages will be placed on-screen. * Values are in range [0.0, 1.0]. */ static const float message_pos_offset_x = 0.05; #if defined(_XBOX1) @@ -574,21 +574,21 @@ static const bool font_enable = true; /* The accurate refresh rate of your monitor (Hz). * This is used to calculate audio input rate with the formula: - * audio_input_rate = game_input_rate * display_refresh_rate / + * audio_input_rate = game_input_rate * display_refresh_rate / * game_refresh_rate. * * If the implementation does not report any values, * NTSC defaults will be assumed for compatibility. * This value should stay close to 60Hz to avoid large pitch changes. - * If your monitor does not run at 60Hz, or something close to it, + * If your monitor does not run at 60Hz, or something close to it, * disable VSync, and leave this at its default. */ #if defined(RARCH_CONSOLE) -static const float refresh_rate = 60/1.001; +static const float refresh_rate = 60/1.001; #else -static const float refresh_rate = 59.95; +static const float refresh_rate = 59.95; #endif -/* Allow games to set rotation. If false, rotation requests are +/* Allow games to set rotation. If false, rotation requests are * honored, but ignored. * Used for setups where one manually rotates the monitor. */ static const bool allow_rotate = true; @@ -604,7 +604,7 @@ static const unsigned out_rate = 48000; /* Audio device (e.g. hw:0,0 or /dev/audio). If NULL, will use defaults. */ static const char *audio_device = NULL; -/* Desired audio latency in milliseconds. Might not be honored +/* Desired audio latency in milliseconds. Might not be honored * if driver can't provide given latency. */ static const int out_latency = 64; @@ -618,7 +618,7 @@ static const bool rate_control = true; static const bool rate_control = false; #endif -/* Rate control delta. Defines how much rate_control +/* Rate control delta. Defines how much rate_control * is allowed to adjust input rate. */ static const float rate_control_delta = 0.005; @@ -634,11 +634,11 @@ static const float audio_volume = 0.0; /* Enables displaying the current frames per second. */ static const bool fps_show = false; -/* Enables use of rewind. This will incur some memory footprint +/* Enables use of rewind. This will incur some memory footprint * depending on the save state buffer. */ static const bool rewind_enable = false; -/* The buffer size for the rewind buffer. This needs to be about +/* 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 */ @@ -652,7 +652,7 @@ static const bool pause_nonactive = false; * It is measured in seconds. A value of 0 disables autosave. */ static const unsigned autosave_interval = 0; -/* When being client over netplay, use keybinds for +/* When being client over netplay, use keybinds for * user 1 rather than user 2. */ static const bool netplay_client_swap_input = true; @@ -660,15 +660,15 @@ static const bool netplay_client_swap_input = true; * This could potentially lead to buggy games. */ static const bool block_sram_overwrite = false; -/* When saving savestates, state index is automatically +/* When saving savestates, state index is automatically * incremented before saving. - * When the content is loaded, state index will be set + * When the content is loaded, state index will be set * to the highest existing value. */ static const bool savestate_auto_index = false; /* Automatically saves a savestate at the end of RetroArch's lifetime. * The path is $SRAM_PATH.auto. - * RetroArch will automatically load any savestate with this path on + * RetroArch will automatically load any savestate with this path on * startup if savestate_auto_load is set. */ static const bool savestate_auto_save = false; static const bool savestate_auto_load = false; @@ -723,7 +723,7 @@ static const unsigned turbo_duty_cycle = 3; * gamepads, plug-and-play style. */ static const bool input_autodetect_enable = true; -/* Show the input descriptors set by the core instead +/* Show the input descriptors set by the core instead * of the default ones. */ static const bool input_descriptor_label_show = true; diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 793c24d460..3f721bbaca 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -13,18 +13,29 @@ * If not, see . */ +#include +#include "../../defines/psp_defines.h" #include "../../general.h" #include "../../driver.h" #include "../video_viewport.h" +#include "../video_monitor.h" #include #define SCREEN_W 960 #define SCREEN_H 544 +typedef struct vita_menu_frame +{ + bool active; + int width; + int height; + vita2d_texture *frame; +} vita_menu_frame_t; + typedef struct vita_video { - vita2d_texture *texture; + vita2d_texture *texture; bool vsync; bool rgb32; @@ -35,11 +46,14 @@ typedef struct vita_video bool vblank_not_reached; bool keep_aspect; bool should_resize; + + vita_menu_frame_t menu; } vita_video_t; static void *vita2d_gfx_init(const video_info_t *video, const input_driver_t **input, void **input_data) { + void *pspinput = NULL; *input = NULL; *input_data = NULL; (void)video; @@ -53,11 +67,32 @@ static void *vita2d_gfx_init(const video_info_t *video, vita2d_set_clear_color(RGBA8(0x40, 0x40, 0x40, 0xFF)); vita2d_set_vblank_wait(video->vsync); - vita->texture = vita2d_create_empty_texture(SCREEN_W, SCREEN_H); + if (vita->rgb32) + { + vita->texture = vita2d_create_empty_texture(video->width, video->height); + RARCH_LOG("Creating RGBA8 texture: w: %i h: %i\n", video->width, video->height); + } + else + { + vita->texture = vita2d_create_empty_texture_format(video->width, video->height, SCE_GXM_TEXTURE_FORMAT_R5G6B5); + RARCH_LOG("Creating R5G6B5 texture: w: %i h: %i\n", video->width, video->height); + } + + vita->menu.frame = NULL; + vita->menu.active = 0; + vita->menu.width = 0; + vita->menu.height = 0; vita->vsync = video->vsync; vita->rgb32 = video->rgb32; + if (input && input_data) + { + pspinput = input_psp.init(); + *input = pspinput ? &input_psp : NULL; + *input_data = pspinput; + } + return vita; } @@ -72,23 +107,32 @@ static bool vita2d_gfx_frame(void *data, const void *frame, (void)pitch; (void)msg; - unsigned int *tex_p = vita2d_texture_get_datap(vita->texture); + void *tex_p = vita2d_texture_get_datap(vita->texture); unsigned int tex_stride = vita2d_texture_get_stride(vita->texture); const unsigned int *frame_p = frame; + // RARCH_LOG("w: %i h: %i pitch: %i\n", width, height, pitch); + // RARCH_LOG("msg: %s\n", msg); + vita2d_start_drawing(); vita2d_clear_screen(); - int i, j; + /* int i, j; for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { - tex_p[i + j * tex_stride] = frame_p[i + j * pitch]; + *(unsigned int *)(tex_p + i*4 + j * tex_stride) = frame_p[i + j * width]; } - } + } */ + // memcpy(tex_p, frame, height*pitch); - vita2d_draw_texture(vita->texture, 0, 0); + // vita2d_draw_texture(vita->texture, 0, 0); + + if (vita->menu.active && vita->menu.frame) + vita2d_draw_texture(vita->menu.frame, + SCREEN_W/2 - vita->menu.width/2, + SCREEN_H/2 - vita->menu.height/2); vita2d_end_drawing(); vita2d_swap_buffers(); @@ -136,6 +180,9 @@ static void vita2d_gfx_free(void *data) { vita_video_t *vita = (vita_video_t *)data; + if (vita->menu.frame) + vita2d_free_texture(vita->menu.frame); + vita2d_free_texture(vita->texture); vita2d_fini(); @@ -173,11 +220,129 @@ static bool vita2d_gfx_read_viewport(void *data, uint8_t *buffer) return true; } +static void vita_set_filtering(void *data, unsigned index, bool smooth) +{ + vita_video_t *psp = (vita_video_t*)data; +} + +static void vita_set_aspect_ratio(void *data, unsigned aspectratio_index) +{ + vita_video_t *vid = (vita_video_t*)data; + struct retro_system_av_info *av_info = + video_viewport_get_system_av_info(); + + switch (aspectratio_index) + { + case ASPECT_RATIO_SQUARE: + video_viewport_set_square_pixel( + av_info->geometry.base_width, + av_info->geometry.base_height); + break; + + case ASPECT_RATIO_CORE: + video_viewport_set_core(); + break; + + case ASPECT_RATIO_CONFIG: + video_viewport_set_config(); + break; + + default: + break; + } + + video_driver_set_aspect_ratio_value(aspectratio_lut[aspectratio_index].value); +} + +static void vita_apply_state_changes(void *data) +{ + (void)data; +} + +static void vita_set_texture_frame(void *data, const void *frame, bool rgb32, + unsigned width, unsigned height, float alpha) +{ + int i, j; + void *tex_p; + unsigned int stride; + vita_video_t *vita = (vita_video_t*)data; + + (void)alpha; + + if (width != vita->menu.width && height != vita->menu.height && vita->menu.frame) + { + vita2d_free_texture(vita->menu.frame); + vita->menu.frame = NULL; + } + + + if (!vita->menu.frame) + { + if (rgb32) + { + vita->menu.frame = vita2d_create_empty_texture(width, height); + RARCH_LOG("Creating Frame RGBA8 texture: w: %i h: %i\n", width, height); + } + else + { + vita->menu.frame = vita2d_create_empty_texture_format(width, height, SCE_GXM_TEXTURE_FORMAT_R5G6B5); + RARCH_LOG("Creating Frame R5G6B5 texture: w: %i h: %i\n", width, height); + } + vita->menu.width = width; + vita->menu.height = height; + } + + tex_p = vita2d_texture_get_datap(vita->menu.frame); + stride = vita2d_texture_get_stride(vita->menu.frame); + + if (rgb32) + { + for (i = 0; i < height; i++) + for (j = 0; j < width; j++) + *(unsigned int *)(tex_p + (j + i*height) * 4) = *(unsigned int *)(frame + (j + i*height) * 4); + } + else + { + /*for (i = 0; i < height; i++) + for (j = 0; j < width; j++) + *(unsigned short *)(tex_p + (j + i*height) * 2) = *(unsigned short *)(frame + (j + i*height) * 2);*/ + memcpy(tex_p, frame, width*height*2); + } +} + +static void vita_set_texture_enable(void *data, bool state, bool full_screen) +{ + vita_video_t *vid = (vita_video_t*)data; + + (void)full_screen; + + vid->menu.active = state; +} + +static const video_poke_interface_t vita_poke_interface = { + NULL, + vita_set_filtering, + NULL, /* get_video_output_size */ + NULL, /* get_video_output_prev */ + NULL, /* get_video_output_next */ + NULL, /* get_current_framebuffer */ + NULL, /* get_proc_address */ + vita_set_aspect_ratio, + vita_apply_state_changes, +#ifdef HAVE_MENU + vita_set_texture_frame, + vita_set_texture_enable, +#endif + NULL, + NULL, + NULL +}; + static void vita2d_gfx_get_poke_interface(void *data, const video_poke_interface_t **iface) { (void)data; - (void)iface; + *iface = &vita_poke_interface; } video_driver_t video_vita2d = { From 85bc67d7044cd41a22e379e9840c440cc471020f Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Mon, 31 Aug 2015 01:22:36 +0200 Subject: [PATCH 456/822] (Vita) Add enable HAVE_BUILTIN_AUTOCONFIG --- Makefile.griffin | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.griffin b/Makefile.griffin index f0053255cf..55219db458 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -165,6 +165,7 @@ else ifeq ($(platform), vita) LDFLAGS += -Wl,-q HAVE_LIBRETRO_MANAGEMENT := 1 + HAVE_BUILTIN_AUTOCONFIG := 1 HAVE_RPNG := 1 HAVE_ZLIB := 1 HAVE_VITA2D := 1 From d5109af2cbd5f09128a304e11f5b66639d32dd8e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 10:36:46 +0200 Subject: [PATCH 457/822] (Vita/Win32) Refactor dirent_is_directory --- libretro-common/file/dir_list.c | 34 +++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index e846c2b368..0ba1d7a3bc 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -99,7 +99,7 @@ void dir_list_free(struct string_list *list) string_list_free(list); } -#if !defined(_WIN32) && !defined(VITA) +#if !defined(_WIN32) /** * * dirent_is_directory: @@ -112,12 +112,19 @@ void dir_list_free(struct string_list *list) * a directory, false if not. */ -static bool dirent_is_directory(const char *path, - const struct dirent *entry) +static bool dirent_is_directory(const char *path, const void *data) { -#if defined(PSP) +#if defined(_WIN32) + WIN32_FIND_DATA *ffd = (WIN32_FIND_DATA*)entry; + return entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; +#elif defined(PSP) + const struct dirent *entry = (const struct dirent*)data; return (entry->d_stat.st_attr & FIO_SO_IFDIR) == FIO_SO_IFDIR; +#elif defined(VITA) + const struct dirent *entry = (const struct dirent*)data; + return (PSP2_S_ISDIR(entry->d_stat.st_mode); #elif defined(DT_DIR) + const struct dirent *entry = (const struct dirent*)data; if (entry->d_type == DT_DIR) return true; else if (entry->d_type == DT_UNKNOWN /* This can happen on certain file systems. */ @@ -125,6 +132,7 @@ static bool dirent_is_directory(const char *path, return path_is_directory(path); return false; #else /* dirent struct doesn't have d_type, do it the slow way ... */ + const struct dirent *entry = (const struct dirent*)data; return path_is_directory(path); #endif } @@ -240,17 +248,19 @@ struct string_list *dir_list_new(const char *dir, if (hFind == INVALID_HANDLE_VALUE) goto error; - do + while (FindNextFile(hFind, &ffd) != 0) { char file_path[PATH_MAX_LENGTH]; int ret = 0; const char *name = ffd.cFileName; const char *file_ext = path_get_extension(name); - bool is_dir = ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; - + bool is_dir = false; + fill_pathname_join(file_path, dir, name, sizeof(file_path)); - ret = parse_dir_entry(name, file_path, is_dir, + is_dir = dirent_is_directory(file_path, &ffd); + + ret = parse_dir_entry(name, file_path, is_dir, include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) @@ -258,7 +268,7 @@ struct string_list *dir_list_new(const char *dir, if (ret == 1) continue; - } while (FindNextFile(hFind, &ffd) != 0); + } FindClose(hFind); string_list_free(ext_list); @@ -282,9 +292,9 @@ error: fill_pathname_join(file_path, dir, name, sizeof(file_path)); - is_dir = PSP2_S_ISDIR(entry.d_stat.st_mode); + is_dir = dirent_is_directory(file_path, entry); - ret = parse_dir_entry(name, file_path, is_dir, + ret = parse_dir_entry(name, file_path, is_dir, include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) @@ -321,7 +331,7 @@ error: is_dir = dirent_is_directory(file_path, entry); - ret = parse_dir_entry(name, file_path, is_dir, + ret = parse_dir_entry(name, file_path, is_dir, include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) From f6991c95a4b6cf5eac5204837483718cb37b59d6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 10:39:10 +0200 Subject: [PATCH 458/822] Cleanups --- libretro-common/file/dir_list.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 0ba1d7a3bc..d45e0a5f67 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -298,10 +298,7 @@ error: include_dirs, include_compressed, list, ext_list, file_ext); if (ret == -1) - { - sceIoDclose(directory); goto error; - } if (ret == 1) continue; @@ -313,6 +310,7 @@ error: return list; error: + sceIoDclose(directory); #else directory = opendir(dir); From 920ee70fbdf65d6becc551b9e4d9a39282896ae9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 10:40:35 +0200 Subject: [PATCH 459/822] dir_list_new - don't do implicit memset --- libretro-common/file/dir_list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index d45e0a5f67..69cac2d2cf 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -229,7 +229,7 @@ struct string_list *dir_list_new(const char *dir, DIR *directory = NULL; const struct dirent *entry = NULL; #endif - char path_buf[PATH_MAX_LENGTH] = {0}; + char path_buf[PATH_MAX_LENGTH]; struct string_list *ext_list = NULL; struct string_list *list = NULL; From f324afc12ab6ad2d211be69bf042fb318c841334 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 10:41:30 +0200 Subject: [PATCH 460/822] Cleanup --- libretro-common/file/dir_list.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 69cac2d2cf..aad1651980 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -220,6 +220,7 @@ struct string_list *dir_list_new(const char *dir, const char *ext, bool include_dirs, bool include_compressed) { #if defined(_WIN32) + char path_buf[PATH_MAX_LENGTH]; WIN32_FIND_DATA ffd; HANDLE hFind = INVALID_HANDLE_VALUE; #elif defined(VITA) @@ -229,12 +230,9 @@ struct string_list *dir_list_new(const char *dir, DIR *directory = NULL; const struct dirent *entry = NULL; #endif - char path_buf[PATH_MAX_LENGTH]; struct string_list *ext_list = NULL; struct string_list *list = NULL; - (void)path_buf; - if (!(list = string_list_new())) return NULL; From 9ba9098cb056ba52e154f9afe8a141a1a3b3e706 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 10:45:10 +0200 Subject: [PATCH 461/822] Cleanups --- libretro-common/file/dir_list.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index aad1651980..b0f82b908f 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -115,7 +115,7 @@ void dir_list_free(struct string_list *list) static bool dirent_is_directory(const char *path, const void *data) { #if defined(_WIN32) - WIN32_FIND_DATA *ffd = (WIN32_FIND_DATA*)entry; + const WIN32_FIND_DATA *entry = (const WIN32_FIND_DATA*)data; return entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; #elif defined(PSP) const struct dirent *entry = (const struct dirent*)data; @@ -221,7 +221,7 @@ struct string_list *dir_list_new(const char *dir, { #if defined(_WIN32) char path_buf[PATH_MAX_LENGTH]; - WIN32_FIND_DATA ffd; + WIN32_FIND_DATA entry; HANDLE hFind = INVALID_HANDLE_VALUE; #elif defined(VITA) SceUID directory; @@ -242,21 +242,21 @@ struct string_list *dir_list_new(const char *dir, #ifdef _WIN32 snprintf(path_buf, sizeof(path_buf), "%s\\*", dir); - hFind = FindFirstFile(path_buf, &ffd); + hFind = FindFirstFile(path_buf, &entry); if (hFind == INVALID_HANDLE_VALUE) goto error; - while (FindNextFile(hFind, &ffd) != 0) + while (FindNextFile(hFind, &entry) != 0) { char file_path[PATH_MAX_LENGTH]; int ret = 0; - const char *name = ffd.cFileName; + const char *name = entry.cFileName; const char *file_ext = path_get_extension(name); bool is_dir = false; fill_pathname_join(file_path, dir, name, sizeof(file_path)); - is_dir = dirent_is_directory(file_path, &ffd); + is_dir = dirent_is_directory(file_path, &entry); ret = parse_dir_entry(name, file_path, is_dir, include_dirs, include_compressed, list, ext_list, file_ext); From 5a28266abf2a60e3e60b0a56df62c0167ca29ece Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 10:58:15 +0200 Subject: [PATCH 462/822] Cleanups --- libretro-common/file/dir_list.c | 90 ++++++++++----------------------- 1 file changed, 27 insertions(+), 63 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index b0f82b908f..f3995a1c1c 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -227,8 +227,8 @@ struct string_list *dir_list_new(const char *dir, SceUID directory; SceIoDirent entry; #else - DIR *directory = NULL; - const struct dirent *entry = NULL; + DIR *directory = NULL; + const struct dirent *entry = NULL; #endif struct string_list *ext_list = NULL; struct string_list *list = NULL; @@ -247,86 +247,36 @@ struct string_list *dir_list_new(const char *dir, goto error; while (FindNextFile(hFind, &entry) != 0) - { - char file_path[PATH_MAX_LENGTH]; - int ret = 0; - const char *name = entry.cFileName; - const char *file_ext = path_get_extension(name); - bool is_dir = false; - - fill_pathname_join(file_path, dir, name, sizeof(file_path)); - - is_dir = dirent_is_directory(file_path, &entry); - - ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, include_compressed, list, ext_list, file_ext); - - if (ret == -1) - goto error; - - if (ret == 1) - continue; - } - - FindClose(hFind); - string_list_free(ext_list); - return list; - -error: - if (hFind != INVALID_HANDLE_VALUE) - FindClose(hFind); #elif defined(VITA) directory = sceIoDopen(dir); if (directory < 0) goto error; while (sceIoDread(directory, &entry) > 0) - { - char file_path[PATH_MAX_LENGTH]; - int ret = 0; - const char *name = entry.d_name; - const char *file_ext = path_get_extension(name); - bool is_dir = false; - - fill_pathname_join(file_path, dir, name, sizeof(file_path)); - - is_dir = dirent_is_directory(file_path, entry); - - ret = parse_dir_entry(name, file_path, is_dir, - include_dirs, include_compressed, list, ext_list, file_ext); - - if (ret == -1) - goto error; - - if (ret == 1) - continue; - } - - sceIoDclose(directory); - - string_list_free(ext_list); - return list; - -error: - sceIoDclose(directory); - #else directory = opendir(dir); if (!directory) goto error; while ((entry = readdir(directory))) +#endif { char file_path[PATH_MAX_LENGTH]; int ret = 0; +#ifdef _WIN32 + const char *name = entry.cFileName; + bool is_dir = dirent_is_directory(file_path, &entry); +#elif defined(VITA) + const char *name = entry.d_name; + bool is_dir = dirent_is_directory(file_path, entry); +#else const char *name = entry->d_name; + bool is_dir = dirent_is_directory(file_path, entry); +#endif const char *file_ext = path_get_extension(name); - bool is_dir = false; fill_pathname_join(file_path, dir, name, sizeof(file_path)); - is_dir = dirent_is_directory(file_path, entry); - ret = parse_dir_entry(name, file_path, is_dir, include_dirs, include_compressed, list, ext_list, file_ext); @@ -337,15 +287,29 @@ error: continue; } - closedir(directory); +#ifdef _WIN32 + FindClose(hFind); +#elif defined(VITA) + sceIoDclose(directory); +#else + if (directory) + closedir(directory); +#endif string_list_free(ext_list); return list; error: +#if defined(_WIN32) + if (hFind != INVALID_HANDLE_VALUE) + FindClose(hFind); +#elif defined(VITA) + sceIoDclose(directory); +#else if (directory) closedir(directory); #endif + string_list_free(list); string_list_free(ext_list); return NULL; From 9895cd6b21b59ab7eb6ce761e5b187fc028546d9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 10:58:54 +0200 Subject: [PATCH 463/822] Cleanups --- libretro-common/file/dir_list.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index f3995a1c1c..694c0c4a40 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -99,7 +99,6 @@ void dir_list_free(struct string_list *list) string_list_free(list); } -#if !defined(_WIN32) /** * * dirent_is_directory: @@ -136,7 +135,6 @@ static bool dirent_is_directory(const char *path, const void *data) return path_is_directory(path); #endif } -#endif /** * parse_dir_entry: From 27a8022af1693a114a24e3115b97629983a1b2d7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 11:03:00 +0200 Subject: [PATCH 464/822] Cleanups --- libretro-common/file/dir_list.c | 40 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 694c0c4a40..5d43203796 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -202,6 +202,19 @@ static int parse_dir_entry(const char *name, char *file_path, return 0; } +#if defined(_WIN32) +#define dirent_closedir(directory) \ + if (directory != INVALID_HANDLE_VALUE) \ + FindClose(directory) +#elif defined(VITA) +#define dirent_closedir(directory) sceIoDclose(directory) +#else +#define dirent_closedir(directory) \ + if (directory) \ + closedir(directory) +#endif + + /** * dir_list_new: * @dir : directory path. @@ -220,7 +233,7 @@ struct string_list *dir_list_new(const char *dir, #if defined(_WIN32) char path_buf[PATH_MAX_LENGTH]; WIN32_FIND_DATA entry; - HANDLE hFind = INVALID_HANDLE_VALUE; + HANDLE directory = INVALID_HANDLE_VALUE; #elif defined(VITA) SceUID directory; SceIoDirent entry; @@ -240,11 +253,11 @@ struct string_list *dir_list_new(const char *dir, #ifdef _WIN32 snprintf(path_buf, sizeof(path_buf), "%s\\*", dir); - hFind = FindFirstFile(path_buf, &entry); - if (hFind == INVALID_HANDLE_VALUE) + directory = FindFirstFile(path_buf, &entry); + if (directory == INVALID_HANDLE_VALUE) goto error; - while (FindNextFile(hFind, &entry) != 0) + while (FindNextFile(directory, &entry) != 0) #elif defined(VITA) directory = sceIoDopen(dir); if (directory < 0) @@ -285,28 +298,13 @@ struct string_list *dir_list_new(const char *dir, continue; } -#ifdef _WIN32 - FindClose(hFind); -#elif defined(VITA) - sceIoDclose(directory); -#else - if (directory) - closedir(directory); -#endif + dirent_closedir(directory); string_list_free(ext_list); return list; error: -#if defined(_WIN32) - if (hFind != INVALID_HANDLE_VALUE) - FindClose(hFind); -#elif defined(VITA) - sceIoDclose(directory); -#else - if (directory) - closedir(directory); -#endif + dirent_closedir(directory); string_list_free(list); string_list_free(ext_list); From 7f5399071e9809ff35adb78a2d19a2ee639f2cf0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 11:10:48 +0200 Subject: [PATCH 465/822] Cleanups --- libretro-common/file/dir_list.c | 52 ++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 5d43203796..be6e4e0d80 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -202,6 +202,35 @@ static int parse_dir_entry(const char *name, char *file_path, return 0; } +#if defined(_WIN32) +#define dirent_opendir(directory, dir) \ +{ \ + char path_buf[PATH_MAX_LENGTH]; \ + snprintf(path_buf, sizeof(path_buf), "%s\\*", dir); \ + directory = FindFirstFile(path_buf, &entry); \ + if (directory == INVALID_HANDLE_VALUE) \ + goto error; \ +} +#elif defined(VITA) +#define dirent_opendir(directory, dir) \ + directory = sceIoDopen(dir); \ + if (directory < 0) \ + goto error +#else +#define dirent_opendir(directory, dir) \ + directory = opendir(dir); \ + if (!directory) \ + goto error +#endif + +#if defined(_WIN32) +#define dirent_readdir(directory, entry) (FindNextFile((directory), &(entry)) != 0) +#elif defined(VITA) +#define dirent_readdir(directory, entry) (sceIoDread((directory), &(entry)) > 0) +#else +#define dirent_readdir(directory, entry) (entry = readdir(directory)) +#endif + #if defined(_WIN32) #define dirent_closedir(directory) \ if (directory != INVALID_HANDLE_VALUE) \ @@ -231,7 +260,6 @@ struct string_list *dir_list_new(const char *dir, const char *ext, bool include_dirs, bool include_compressed) { #if defined(_WIN32) - char path_buf[PATH_MAX_LENGTH]; WIN32_FIND_DATA entry; HANDLE directory = INVALID_HANDLE_VALUE; #elif defined(VITA) @@ -250,27 +278,9 @@ struct string_list *dir_list_new(const char *dir, if (ext) ext_list = string_split(ext, "|"); -#ifdef _WIN32 - snprintf(path_buf, sizeof(path_buf), "%s\\*", dir); + dirent_opendir(directory, dir); - directory = FindFirstFile(path_buf, &entry); - if (directory == INVALID_HANDLE_VALUE) - goto error; - - while (FindNextFile(directory, &entry) != 0) -#elif defined(VITA) - directory = sceIoDopen(dir); - if (directory < 0) - goto error; - - while (sceIoDread(directory, &entry) > 0) -#else - directory = opendir(dir); - if (!directory) - goto error; - - while ((entry = readdir(directory))) -#endif + while (dirent_readdir(directory, entry)) { char file_path[PATH_MAX_LENGTH]; int ret = 0; From b0f9e1ac9c3f6504140954bfcb2540d9955c7ca1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 12:52:42 +0200 Subject: [PATCH 466/822] Cleanups --- libretro-common/file/dir_list.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index be6e4e0d80..b9fdb0294e 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -208,19 +208,19 @@ static int parse_dir_entry(const char *name, char *file_path, char path_buf[PATH_MAX_LENGTH]; \ snprintf(path_buf, sizeof(path_buf), "%s\\*", dir); \ directory = FindFirstFile(path_buf, &entry); \ - if (directory == INVALID_HANDLE_VALUE) \ - goto error; \ } #elif defined(VITA) -#define dirent_opendir(directory, dir) \ - directory = sceIoDopen(dir); \ - if (directory < 0) \ - goto error +#define dirent_opendir(directory, dir) directory = sceIoDopen(dir) #else -#define dirent_opendir(directory, dir) \ - directory = opendir(dir); \ - if (!directory) \ - goto error +#define dirent_opendir(directory, dir) directory = opendir(dir) +#endif + +#if defined(_WIN32) +#define dirent_error(directory) ((directory) == INVALID_HANDLE_VALUE) +#elif defined(VITA) +#define dirent_error(directory) ((directory) < 0) +#else +#define dirent_error(directory) (!(directory)) #endif #if defined(_WIN32) @@ -232,15 +232,11 @@ static int parse_dir_entry(const char *name, char *file_path, #endif #if defined(_WIN32) -#define dirent_closedir(directory) \ - if (directory != INVALID_HANDLE_VALUE) \ - FindClose(directory) +#define dirent_closedir(directory) if (directory != INVALID_HANDLE_VALUE) FindClose(directory) #elif defined(VITA) #define dirent_closedir(directory) sceIoDclose(directory) #else -#define dirent_closedir(directory) \ - if (directory) \ - closedir(directory) +#define dirent_closedir(directory) if (directory) closedir(directory) #endif @@ -280,6 +276,9 @@ struct string_list *dir_list_new(const char *dir, dirent_opendir(directory, dir); + if (dirent_error(directory)) + goto error; + while (dirent_readdir(directory, entry)) { char file_path[PATH_MAX_LENGTH]; From d8ef051f576efa225061f4eafa0b88b9078a4cc3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 13:01:39 +0200 Subject: [PATCH 467/822] (dir_list.c) Use Vita codepaths for PSP too --- libretro-common/file/dir_list.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index b9fdb0294e..f873d00473 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -42,6 +42,9 @@ #include #include #else +#if defined(PSP) +#include +#endif #include #include #include @@ -209,7 +212,7 @@ static int parse_dir_entry(const char *name, char *file_path, snprintf(path_buf, sizeof(path_buf), "%s\\*", dir); \ directory = FindFirstFile(path_buf, &entry); \ } -#elif defined(VITA) +#elif defined(VITA) || defined(PSP) #define dirent_opendir(directory, dir) directory = sceIoDopen(dir) #else #define dirent_opendir(directory, dir) directory = opendir(dir) @@ -217,7 +220,7 @@ static int parse_dir_entry(const char *name, char *file_path, #if defined(_WIN32) #define dirent_error(directory) ((directory) == INVALID_HANDLE_VALUE) -#elif defined(VITA) +#elif defined(VITA) || defined(PSP) #define dirent_error(directory) ((directory) < 0) #else #define dirent_error(directory) (!(directory)) @@ -225,7 +228,7 @@ static int parse_dir_entry(const char *name, char *file_path, #if defined(_WIN32) #define dirent_readdir(directory, entry) (FindNextFile((directory), &(entry)) != 0) -#elif defined(VITA) +#elif defined(VITA) || defined(PSP) #define dirent_readdir(directory, entry) (sceIoDread((directory), &(entry)) > 0) #else #define dirent_readdir(directory, entry) (entry = readdir(directory)) @@ -233,7 +236,7 @@ static int parse_dir_entry(const char *name, char *file_path, #if defined(_WIN32) #define dirent_closedir(directory) if (directory != INVALID_HANDLE_VALUE) FindClose(directory) -#elif defined(VITA) +#elif defined(VITA) || defined(PSP) #define dirent_closedir(directory) sceIoDclose(directory) #else #define dirent_closedir(directory) if (directory) closedir(directory) @@ -258,7 +261,7 @@ struct string_list *dir_list_new(const char *dir, #if defined(_WIN32) WIN32_FIND_DATA entry; HANDLE directory = INVALID_HANDLE_VALUE; -#elif defined(VITA) +#elif defined(VITA) || defined(PSP) SceUID directory; SceIoDirent entry; #else @@ -286,9 +289,9 @@ struct string_list *dir_list_new(const char *dir, #ifdef _WIN32 const char *name = entry.cFileName; bool is_dir = dirent_is_directory(file_path, &entry); -#elif defined(VITA) +#elif defined(VITA) || defined(PSP) const char *name = entry.d_name; - bool is_dir = dirent_is_directory(file_path, entry); + bool is_dir = dirent_is_directory(file_path, &entry); #else const char *name = entry->d_name; bool is_dir = dirent_is_directory(file_path, entry); From 0b4ba8443fba6bae99ed9b37cdf5bef466eee771 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 14:08:22 +0200 Subject: [PATCH 468/822] Create convert_argb888_rgba4444 --- libretro-common/gfx/scaler/pixconv.c | 28 ++++++++++++++++++++ libretro-common/gfx/scaler/scaler.c | 6 +++++ libretro-common/include/gfx/scaler/pixconv.h | 4 +++ 3 files changed, 38 insertions(+) diff --git a/libretro-common/gfx/scaler/pixconv.c b/libretro-common/gfx/scaler/pixconv.c index c57d0f21c3..bce176b326 100644 --- a/libretro-common/gfx/scaler/pixconv.c +++ b/libretro-common/gfx/scaler/pixconv.c @@ -253,6 +253,34 @@ void conv_rgb565_argb8888(void *output_, const void *input_, } } +void conv_argb8888_rgba4444(void *output_, const void *input_, + int width, int height, + int out_stride, int in_stride) +{ + int h, w; + const uint32_t *input = (const uint32_t*)input_; + uint16_t *output = (uint16_t*)output_; + + for (h = 0; h < height; + h++, output += out_stride >> 2, input += in_stride >> 1) + { + for (w = 0; w < width; w++) + { + uint32_t col = input[w]; + uint32_t r = (col >> 16) & 0xf; + uint32_t g = (col >> 8) & 0xf; + uint32_t b = (col) & 0xf; + uint32_t a = (col >> 24) & 0xf; + r = (r >> 4) | r; + g = (g >> 4) | g; + b = (b >> 4) | b; + a = (a >> 4) | a; + + output[w] = (r << 12) | (g << 8) | (b << 4) | a; + } + } +} + void conv_rgba4444_argb8888(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) diff --git a/libretro-common/gfx/scaler/scaler.c b/libretro-common/gfx/scaler/scaler.c index ef928456e4..1fb6f5fa98 100644 --- a/libretro-common/gfx/scaler/scaler.c +++ b/libretro-common/gfx/scaler/scaler.c @@ -142,6 +142,8 @@ static bool set_direct_pix_conv(struct scaler_ctx *ctx) ctx->direct_pixconv = conv_argb8888_bgr24; else if (ctx->out_fmt == SCALER_FMT_ABGR8888) ctx->direct_pixconv = conv_argb8888_abgr8888; + else if (ctx->out_fmt == SCALER_FMT_RGBA4444) + ctx->direct_pixconv = conv_argb8888_rgba4444; break; case SCALER_FMT_YUYV: if (ctx->out_fmt == SCALER_FMT_ARGB8888) @@ -198,6 +200,10 @@ static bool set_pix_conv(struct scaler_ctx *ctx) /* No need to convert :D */ break; + case SCALER_FMT_RGBA4444: + ctx->out_pixconv = conv_argb8888_rgba4444; + break; + case SCALER_FMT_0RGB1555: ctx->out_pixconv = conv_argb8888_0rgb1555; break; diff --git a/libretro-common/include/gfx/scaler/pixconv.h b/libretro-common/include/gfx/scaler/pixconv.h index 430d0e7c97..c3524986ff 100644 --- a/libretro-common/include/gfx/scaler/pixconv.h +++ b/libretro-common/include/gfx/scaler/pixconv.h @@ -57,6 +57,10 @@ void conv_argb8888_0rgb1555(void *output, const void *input, int width, int height, int out_stride, int in_stride); +void conv_argb8888_rgba4444(void *output_, const void *input_, + int width, int height, + int out_stride, int in_stride); + void conv_argb8888_rgb565(void *output, const void *input, int width, int height, int out_stride, int in_stride); From 081d5b5074a5fd8386bb596df428ad7c317b94a3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 14:15:28 +0200 Subject: [PATCH 469/822] set_direct_pix_conv - turn conditionals into switches --- libretro-common/gfx/scaler/scaler.c | 100 ++++++++++++++++++++-------- 1 file changed, 72 insertions(+), 28 deletions(-) diff --git a/libretro-common/gfx/scaler/scaler.c b/libretro-common/gfx/scaler/scaler.c index 1fb6f5fa98..0fcdeadeca 100644 --- a/libretro-common/gfx/scaler/scaler.c +++ b/libretro-common/gfx/scaler/scaler.c @@ -116,44 +116,88 @@ static bool set_direct_pix_conv(struct scaler_ctx *ctx) switch (ctx->in_fmt) { case SCALER_FMT_0RGB1555: - if (ctx->out_fmt == SCALER_FMT_ARGB8888) - ctx->direct_pixconv = conv_0rgb1555_argb8888; - else if (ctx->out_fmt == SCALER_FMT_RGB565) - ctx->direct_pixconv = conv_0rgb1555_rgb565; - else if (ctx->out_fmt == SCALER_FMT_BGR24) - ctx->direct_pixconv = conv_0rgb1555_bgr24; + switch (ctx->out_fmt) + { + case SCALER_FMT_ARGB8888: + ctx->direct_pixconv = conv_0rgb1555_argb8888; + break; + case SCALER_FMT_RGB565: + ctx->direct_pixconv = conv_0rgb1555_rgb565; + break; + case SCALER_FMT_BGR24: + ctx->direct_pixconv = conv_0rgb1555_bgr24; + break; + default: + break; + } break; case SCALER_FMT_RGB565: - if (ctx->out_fmt == SCALER_FMT_ARGB8888) - ctx->direct_pixconv = conv_rgb565_argb8888; - else if (ctx->out_fmt == SCALER_FMT_BGR24) - ctx->direct_pixconv = conv_rgb565_bgr24; - else if (ctx->out_fmt == SCALER_FMT_0RGB1555) - ctx->direct_pixconv = conv_rgb565_0rgb1555; + switch (ctx->out_fmt) + { + case SCALER_FMT_ARGB8888: + ctx->direct_pixconv = conv_rgb565_argb8888; + break; + case SCALER_FMT_BGR24: + ctx->direct_pixconv = conv_rgb565_bgr24; + break; + case SCALER_FMT_0RGB1555: + ctx->direct_pixconv = conv_rgb565_0rgb1555; + break; + default: + break; + } break; case SCALER_FMT_BGR24: - if (ctx->out_fmt == SCALER_FMT_ARGB8888) - ctx->direct_pixconv = conv_bgr24_argb8888; + switch (ctx->out_fmt) + { + case SCALER_FMT_ARGB8888: + ctx->direct_pixconv = conv_bgr24_argb8888; + break; + default: + break; + } break; case SCALER_FMT_ARGB8888: - if (ctx->out_fmt == SCALER_FMT_0RGB1555) - ctx->direct_pixconv = conv_argb8888_0rgb1555; - else if (ctx->out_fmt == SCALER_FMT_BGR24) - ctx->direct_pixconv = conv_argb8888_bgr24; - else if (ctx->out_fmt == SCALER_FMT_ABGR8888) - ctx->direct_pixconv = conv_argb8888_abgr8888; - else if (ctx->out_fmt == SCALER_FMT_RGBA4444) - ctx->direct_pixconv = conv_argb8888_rgba4444; + switch (ctx->out_fmt) + { + case SCALER_FMT_0RGB1555: + ctx->direct_pixconv = conv_argb8888_0rgb1555; + break; + case SCALER_FMT_BGR24: + ctx->direct_pixconv = conv_argb8888_bgr24; + break; + case SCALER_FMT_ABGR8888: + ctx->direct_pixconv = conv_argb8888_abgr8888; + break; + case SCALER_FMT_RGBA4444: + ctx->direct_pixconv = conv_argb8888_rgba4444; + break; + default: + break; + } break; case SCALER_FMT_YUYV: - if (ctx->out_fmt == SCALER_FMT_ARGB8888) - ctx->direct_pixconv = conv_yuyv_argb8888; + switch (ctx->out_fmt) + { + case SCALER_FMT_ARGB8888: + ctx->direct_pixconv = conv_yuyv_argb8888; + break; + default: + break; + } break; case SCALER_FMT_RGBA4444: - if (ctx->out_fmt == SCALER_FMT_ARGB8888) - ctx->direct_pixconv = conv_rgba4444_argb8888; - else if (ctx->out_fmt == SCALER_FMT_RGB565) - ctx->direct_pixconv = conv_rgba4444_rgb565; + switch (ctx->out_fmt) + { + case SCALER_FMT_ARGB8888: + ctx->direct_pixconv = conv_rgba4444_argb8888; + break; + case SCALER_FMT_RGB565: + ctx->direct_pixconv = conv_rgba4444_rgb565; + break; + default: + break; + } break; case SCALER_FMT_ABGR8888: /* FIXME/TODO */ From a2d6992e24d2a0337e3e26074e1cd4244efea929 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 14:26:27 +0200 Subject: [PATCH 470/822] (Vita) Buildfix --- libretro-common/file/dir_list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index f873d00473..8b202a89cd 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -124,7 +124,7 @@ static bool dirent_is_directory(const char *path, const void *data) return (entry->d_stat.st_attr & FIO_SO_IFDIR) == FIO_SO_IFDIR; #elif defined(VITA) const struct dirent *entry = (const struct dirent*)data; - return (PSP2_S_ISDIR(entry->d_stat.st_mode); + return PSP2_S_ISDIR(entry->d_stat.st_mode); #elif defined(DT_DIR) const struct dirent *entry = (const struct dirent*)data; if (entry->d_type == DT_DIR) From de8dfb627c5b11f0aead79b50975d7c18a07c330 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 14:30:52 +0200 Subject: [PATCH 471/822] (PSP/Vita) dirent_is_directory - buildfix --- libretro-common/file/dir_list.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 8b202a89cd..744a36d0fa 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -119,12 +119,15 @@ static bool dirent_is_directory(const char *path, const void *data) #if defined(_WIN32) const WIN32_FIND_DATA *entry = (const WIN32_FIND_DATA*)data; return entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; -#elif defined(PSP) - const struct dirent *entry = (const struct dirent*)data; +#elif defined(PSP) || defined(VITA) + + const SceIoDirent *entry = (const SceIoDirent*)data; +#if defined(PSP) return (entry->d_stat.st_attr & FIO_SO_IFDIR) == FIO_SO_IFDIR; #elif defined(VITA) - const struct dirent *entry = (const struct dirent*)data; return PSP2_S_ISDIR(entry->d_stat.st_mode); +#endif + #elif defined(DT_DIR) const struct dirent *entry = (const struct dirent*)data; if (entry->d_type == DT_DIR) From 96146e5313f799d9595f1d6e0e6ba20052c13edf Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Mon, 31 Aug 2015 15:26:37 +0200 Subject: [PATCH 472/822] (Vita) Update vita2d driver (Vita/PSP) Name some stuff to vita --- audio/drivers/psp_audio.c | 4 ++ configuration.c | 20 +++++-- frontend/drivers/platform_vita.c | 1 - gfx/drivers/vita2d_gfx.c | 88 ++++++++++++++++++++----------- input/autoconf/builtin_psp.c | 6 ++- input/drivers/psp_input.c | 8 ++- input/drivers_joypad/psp_joypad.c | 12 ++++- input/input_autodetect.c | 6 +-- 8 files changed, 100 insertions(+), 45 deletions(-) diff --git a/audio/drivers/psp_audio.c b/audio/drivers/psp_audio.c index 5876114bc0..98d786e5b7 100644 --- a/audio/drivers/psp_audio.c +++ b/audio/drivers/psp_audio.c @@ -302,7 +302,11 @@ audio_driver_t audio_psp = { psp_audio_set_nonblock_state, psp_audio_free, psp_audio_use_float, +#ifdef VITA + "vita", +#else "psp", +#endif psp_write_avail, psp_buffer_size, }; diff --git a/configuration.c b/configuration.c index 0a64d335d8..5233e951a6 100644 --- a/configuration.c +++ b/configuration.c @@ -115,7 +115,11 @@ const char *config_get_default_audio(void) case AUDIO_WII: return "gx"; case AUDIO_PSP: +#ifdef VITA + return "vita"; +#else return "psp"; +#endif case AUDIO_CTR: return "ctr"; case AUDIO_RWEBAUDIO: @@ -231,7 +235,11 @@ const char *config_get_default_input(void) case INPUT_PS3: return "ps3"; case INPUT_PSP: +#ifdef VITA + return "vita"; +#else return "psp"; +#endif case INPUT_CTR: return "ctr"; case INPUT_SDL: @@ -287,7 +295,11 @@ const char *config_get_default_joypad(void) case JOYPAD_XDK: return "xdk"; case JOYPAD_PSP: +#ifdef VITA + return "vita"; +#else return "psp"; +#endif case JOYPAD_CTR: return "ctr"; case JOYPAD_DINPUT: @@ -455,7 +467,7 @@ static void config_set_defaults(void) #endif settings->multimedia.builtin_imageviewer_enable = true; settings->video.scale = scale; - settings->video.fullscreen = global->force_fullscreen + settings->video.fullscreen = global->force_fullscreen ? true : fullscreen; settings->video.windowed_fullscreen = windowed_fullscreen; settings->video.monitor_index = monitor_index; @@ -1177,7 +1189,7 @@ static bool config_load_file(const char *path, bool set_defaults) const char *extra_path = NULL; char tmp_str[PATH_MAX_LENGTH] = {0}; char tmp_append_path[PATH_MAX_LENGTH] = {0}; /* Don't destroy append_config_path. */ - int vp_width = 0, vp_height = 0, vp_x = 0, vp_y = 0; + int vp_width = 0, vp_height = 0, vp_x = 0, vp_y = 0; unsigned msg_color = 0; config_file_t *conf = NULL; settings_t *settings = config_get_ptr(); @@ -1847,7 +1859,7 @@ bool config_load_override(void) } /* Config directory: config_directory. - * Try config directory setting first, + * Try config directory setting first, * fallback to the location of the current configuration file. */ if (settings->menu_config_directory[0] != '\0') strlcpy(config_directory, settings->menu_config_directory, PATH_MAX_LENGTH); @@ -1939,7 +1951,7 @@ bool config_load_override(void) if (config_load_file(global->path.config, false)) { - /* Restore the libretro_path we're using + /* Restore the libretro_path we're using * since it will be overwritten by the override when reloading. */ strlcpy(settings->libretro,buf,sizeof(settings->libretro)); rarch_main_msg_queue_push("Configuration override loaded", 1, 100, true); diff --git a/frontend/drivers/platform_vita.c b/frontend/drivers/platform_vita.c index 46a3b3e3e7..064a9d3437 100644 --- a/frontend/drivers/platform_vita.c +++ b/frontend/drivers/platform_vita.c @@ -198,7 +198,6 @@ static int frontend_vita_get_rating(void) static enum frontend_powerstate frontend_vita_get_powerstate(int *seconds, int *percent) { enum frontend_powerstate ret = FRONTEND_POWERSTATE_NONE; - int battery = 1; int plugged = scePowerIsPowerOnline(); int charging = scePowerIsBatteryCharging(); diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 3f721bbaca..549334ddd3 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -36,6 +36,9 @@ typedef struct vita_menu_frame typedef struct vita_video { vita2d_texture *texture; + SceGxmTextureFormat format; + int width; + int height; bool vsync; bool rgb32; @@ -63,20 +66,18 @@ static void *vita2d_gfx_init(const video_info_t *video, if (!vita) return NULL; + RARCH_LOG("vita2d_gfx_init: w: %i h: %i\n", video->width, video->height); + vita2d_init(); vita2d_set_clear_color(RGBA8(0x40, 0x40, 0x40, 0xFF)); vita2d_set_vblank_wait(video->vsync); if (vita->rgb32) - { - vita->texture = vita2d_create_empty_texture(video->width, video->height); - RARCH_LOG("Creating RGBA8 texture: w: %i h: %i\n", video->width, video->height); - } + vita->format = SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB; else - { - vita->texture = vita2d_create_empty_texture_format(video->width, video->height, SCE_GXM_TEXTURE_FORMAT_R5G6B5); - RARCH_LOG("Creating R5G6B5 texture: w: %i h: %i\n", video->width, video->height); - } + vita->format = SCE_GXM_TEXTURE_FORMAT_R5G6B5; + + vita->texture = NULL; vita->menu.frame = NULL; vita->menu.active = 0; @@ -100,6 +101,8 @@ static bool vita2d_gfx_frame(void *data, const void *frame, unsigned width, unsigned height, uint64_t frame_count, unsigned pitch, const char *msg) { + int i, j; + void *tex_p; vita_video_t *vita = (vita_video_t *)data; (void)frame; (void)width; @@ -107,9 +110,37 @@ static bool vita2d_gfx_frame(void *data, const void *frame, (void)pitch; (void)msg; - void *tex_p = vita2d_texture_get_datap(vita->texture); - unsigned int tex_stride = vita2d_texture_get_stride(vita->texture); - const unsigned int *frame_p = frame; + if (frame) + { + if (width != vita->width && height != vita->height && vita->texture) + { + vita2d_free_texture(vita->texture); + vita->texture = NULL; + } + + if (!vita->texture) + { + vita->width = width; + vita->height = height; + vita->texture = vita2d_create_empty_texture_format(width, height, vita->format); + } + + tex_p = vita2d_texture_get_datap(vita->texture); + + if (vita->format == SCE_GXM_TEXTURE_FORMAT_A8B8G8R8) + { + for (i = 0; i < height; i++) + for (j = 0; j < width; j++) + *(unsigned int *)(tex_p + (j + i*height) * 4) = *(unsigned int *)(frame + (j + i*height) * 4); + } + else + { + /*for (i = 0; i < height; i++) + for (j = 0; j < width; j++) + *(unsigned short *)(tex_p + (j + i*height) * 2) = *(unsigned short *)(frame + (j + i*height) * 2);*/ + memcpy(tex_p, frame, width*height*2); + } + } // RARCH_LOG("w: %i h: %i pitch: %i\n", width, height, pitch); // RARCH_LOG("msg: %s\n", msg); @@ -117,22 +148,17 @@ static bool vita2d_gfx_frame(void *data, const void *frame, vita2d_start_drawing(); vita2d_clear_screen(); - /* int i, j; - for (i = 0; i < height; i++) - { - for (j = 0; j < width; j++) - { - *(unsigned int *)(tex_p + i*4 + j * tex_stride) = frame_p[i + j * width]; - } - } */ - // memcpy(tex_p, frame, height*pitch); - - // vita2d_draw_texture(vita->texture, 0, 0); + if (frame && vita->texture) + vita2d_draw_texture_scale(vita->texture, + SCREEN_W/2 - (vita->width/2)*2, + SCREEN_H/2 - (vita->height/2)*2, + 2.0f, 2.0f); if (vita->menu.active && vita->menu.frame) - vita2d_draw_texture(vita->menu.frame, - SCREEN_W/2 - vita->menu.width/2, - SCREEN_H/2 - vita->menu.height/2); + vita2d_draw_texture_scale(vita->menu.frame, + SCREEN_W/2 - (vita->menu.width/2)*2, + SCREEN_H/2 - (vita->menu.height/2)*2, + 2.0f, 2.0f); vita2d_end_drawing(); vita2d_swap_buffers(); @@ -222,12 +248,13 @@ static bool vita2d_gfx_read_viewport(void *data, uint8_t *buffer) static void vita_set_filtering(void *data, unsigned index, bool smooth) { - vita_video_t *psp = (vita_video_t*)data; + (void)data; + (void)index; + (void)smooth; } static void vita_set_aspect_ratio(void *data, unsigned aspectratio_index) { - vita_video_t *vid = (vita_video_t*)data; struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); @@ -264,7 +291,6 @@ static void vita_set_texture_frame(void *data, const void *frame, bool rgb32, { int i, j; void *tex_p; - unsigned int stride; vita_video_t *vita = (vita_video_t*)data; (void)alpha; @@ -275,7 +301,6 @@ static void vita_set_texture_frame(void *data, const void *frame, bool rgb32, vita->menu.frame = NULL; } - if (!vita->menu.frame) { if (rgb32) @@ -285,7 +310,7 @@ static void vita_set_texture_frame(void *data, const void *frame, bool rgb32, } else { - vita->menu.frame = vita2d_create_empty_texture_format(width, height, SCE_GXM_TEXTURE_FORMAT_R5G6B5); + vita->menu.frame = vita2d_create_empty_texture_format(width, height, SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_RGBA); RARCH_LOG("Creating Frame R5G6B5 texture: w: %i h: %i\n", width, height); } vita->menu.width = width; @@ -293,7 +318,6 @@ static void vita_set_texture_frame(void *data, const void *frame, bool rgb32, } tex_p = vita2d_texture_get_datap(vita->menu.frame); - stride = vita2d_texture_get_stride(vita->menu.frame); if (rgb32) { @@ -365,5 +389,5 @@ video_driver_t video_vita2d = { #ifdef HAVE_OVERLAY NULL, /* overlay_interface */ #endif - vita2d_gfx_get_poke_interface, + vita2d_gfx_get_poke_interface, }; diff --git a/input/autoconf/builtin_psp.c b/input/autoconf/builtin_psp.c index 564b530688..93198a1d2d 100644 --- a/input/autoconf/builtin_psp.c +++ b/input/autoconf/builtin_psp.c @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -42,7 +42,11 @@ DECL_AXIS(r_y_minus, +3) const char* const input_builtin_autoconfs[] = { +#ifdef VITA + DECL_AUTOCONF_DEVICE("Vita Controller", "vita", PSPINPUT_DEFAULT_BINDS), +#else DECL_AUTOCONF_DEVICE("PSP Controller", "psp", PSPINPUT_DEFAULT_BINDS), +#endif NULL }; diff --git a/input/drivers/psp_input.c b/input/drivers/psp_input.c index d5f3767d50..62b043253f 100644 --- a/input/drivers/psp_input.c +++ b/input/drivers/psp_input.c @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -93,7 +93,7 @@ static void* psp_input_initialize(void) psp_input_t *psp = (psp_input_t*)calloc(1, sizeof(*psp)); if (!psp) return NULL; - + psp->joypad = input_joypad_init_driver( settings->input.joypad_driver, psp); @@ -171,7 +171,11 @@ input_driver_t input_psp = { NULL, NULL, psp_input_get_capabilities, +#ifdef VITA + "vita", +#else "psp", +#endif psp_input_grab_mouse, NULL, diff --git a/input/drivers_joypad/psp_joypad.c b/input/drivers_joypad/psp_joypad.c index b1584bfc98..7ff9559896 100644 --- a/input/drivers_joypad/psp_joypad.c +++ b/input/drivers_joypad/psp_joypad.c @@ -1,7 +1,7 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis - * + * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. @@ -23,7 +23,11 @@ extern uint64_t lifecycle_state; static const char *psp_joypad_name(unsigned pad) { +#ifdef VITA + return "Vita Controller"; +#else return "PSP Controller"; +#endif } static void psp_joypad_autodetect_add(unsigned autoconf_pad) @@ -125,7 +129,7 @@ static void psp_joypad_poll(void) #endif (void)ret; - analog_state[0][0][0] = analog_state[0][0][1] = + analog_state[0][0][0] = analog_state[0][0][1] = analog_state[0][1][0] = analog_state[0][1][1] = 0; pad_state = 0; pad_state |= (STATE_BUTTON(state_tmp) & PSP_CTRL_LEFT) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_LEFT) : 0; @@ -188,5 +192,9 @@ input_device_driver_t psp_joypad = { psp_joypad_poll, NULL, psp_joypad_name, +#ifdef VITA + "vita", +#else "psp", +#endif }; diff --git a/input/input_autodetect.c b/input/input_autodetect.c index aa25b32354..529ac8cfa6 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -140,7 +140,7 @@ static void input_autoconfigure_joypad_add( else snprintf(msg, sizeof(msg), "%s configured", params->name); - + if(!remote_is_bound) rarch_main_msg_queue_push(msg, 0, 60, false); remote_is_bound = true; @@ -222,7 +222,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( } if(index >= 0 && current_best > 0) - { + { conf = config_file_new(list->elems[index].data); RARCH_LOG("Autodetect: selected configuration: %s\n", conf->path); input_autoconfigure_joypad_add(conf, params); @@ -232,7 +232,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( else { RARCH_LOG("Autodetect: no profiles found for %s (%d/%d)", params->name, params->vid, params->pid); - snprintf(msg, sizeof(msg), "%s (%d/%d) not configured", params->name, params->vid, params->pid); + snprintf(msg, sizeof(msg), "%s (%ld/%ld) not configured", params->name, params->vid, params->pid); rarch_main_msg_queue_push(msg, 0, 60, false); ret = 0; } From 15c00bc9970d0c350f3b6c19131b219db2b162f6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 18:07:38 +0200 Subject: [PATCH 473/822] Move zconf.h to libretro-common/include/compat --- {deps/zlib => libretro-common/include/compat}/zconf.h | 10 ++++++++++ libretro-common/include/compat/zlib.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) rename {deps/zlib => libretro-common/include/compat}/zconf.h (99%) diff --git a/deps/zlib/zconf.h b/libretro-common/include/compat/zconf.h similarity index 99% rename from deps/zlib/zconf.h rename to libretro-common/include/compat/zconf.h index 9987a77553..8aaa8157e4 100644 --- a/deps/zlib/zconf.h +++ b/libretro-common/include/compat/zconf.h @@ -1,3 +1,7 @@ +#ifndef _COMPAT_ZLIB_H +#define _COMPAT_ZLIB_H + +#ifdef WANT_ZLIB /* zconf.h -- configuration of the zlib compression library * Copyright (C) 1995-2013 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h @@ -509,3 +513,9 @@ typedef uLong FAR uLongf; #endif #endif /* ZCONF_H */ + +#else +#include +#endif + +#endif diff --git a/libretro-common/include/compat/zlib.h b/libretro-common/include/compat/zlib.h index bf3d53db40..d210c8af71 100644 --- a/libretro-common/include/compat/zlib.h +++ b/libretro-common/include/compat/zlib.h @@ -36,7 +36,7 @@ #ifndef ZLIB_H #define ZLIB_H -#include "zconf.h" +#include #ifdef __cplusplus extern "C" { From 2b80e89f13bc01bfbc795e53486c438a11f76d37 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 19:40:07 +0200 Subject: [PATCH 474/822] Revert "Move zconf.h to libretro-common/include/compat" This reverts commit 15c00bc9970d0c350f3b6c19131b219db2b162f6. --- {libretro-common/include/compat => deps/zlib}/zconf.h | 10 ---------- libretro-common/include/compat/zlib.h | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) rename {libretro-common/include/compat => deps/zlib}/zconf.h (99%) diff --git a/libretro-common/include/compat/zconf.h b/deps/zlib/zconf.h similarity index 99% rename from libretro-common/include/compat/zconf.h rename to deps/zlib/zconf.h index 8aaa8157e4..9987a77553 100644 --- a/libretro-common/include/compat/zconf.h +++ b/deps/zlib/zconf.h @@ -1,7 +1,3 @@ -#ifndef _COMPAT_ZLIB_H -#define _COMPAT_ZLIB_H - -#ifdef WANT_ZLIB /* zconf.h -- configuration of the zlib compression library * Copyright (C) 1995-2013 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h @@ -513,9 +509,3 @@ typedef uLong FAR uLongf; #endif #endif /* ZCONF_H */ - -#else -#include -#endif - -#endif diff --git a/libretro-common/include/compat/zlib.h b/libretro-common/include/compat/zlib.h index d210c8af71..bf3d53db40 100644 --- a/libretro-common/include/compat/zlib.h +++ b/libretro-common/include/compat/zlib.h @@ -36,7 +36,7 @@ #ifndef ZLIB_H #define ZLIB_H -#include +#include "zconf.h" #ifdef __cplusplus extern "C" { From c9a0a79b1596709ace71f8284af0909fb277beb0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 20:52:25 +0200 Subject: [PATCH 475/822] Update libretro-test Makefiles --- cores/libretro-test/Makefile | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cores/libretro-test/Makefile b/cores/libretro-test/Makefile index 9e947d5b3d..8fee362f91 100644 --- a/cores/libretro-test/Makefile +++ b/cores/libretro-test/Makefile @@ -57,10 +57,11 @@ else ifeq ($(platform), emscripten) fpic := -fPIC SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined else ifeq ($(platform), vita) - TARGET := $(TARGET_NAME).a + TARGET := $(TARGET_NAME)_vita.a CC = arm-vita-eabi-gcc AR = arm-vita-eabi-ar CFLAGS += -Wl,-q -Wall -O3 + STATIC_LINKING = 1 else CC = gcc TARGET := $(TARGET_NAME)_libretro.dll @@ -86,13 +87,10 @@ endif all: $(TARGET) -ifeq ($(platform), vita) - $(TARGET): $(OBJECTS) - $(AR) -rc $@ $^ +ifeq ($(STATIC_LINKING), 1) + $(AR) rcs $@ $(OBJECTS) else - -$(TARGET): $(OBJECTS) $(CC) $(fpic) $(SHARED) $(INCLUDES) -o $@ $(OBJECTS) $(LDFLAGS) endif From a1e80026c0062cdc7b265fd1bafbcba97f6f4d23 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 21:04:00 +0200 Subject: [PATCH 476/822] Start creating global 'pkg' dir and create vita-cores.sh --- Makefile.wii.salamander | 2 +- dist-scripts/ngc-cores.sh | 16 +++++++++------- dist-scripts/psp1-cores.sh | 32 +++++++++++++++++--------------- dist-scripts/vita-cores.sh | 27 +++++++++++++++++++++++++++ {ngc/pkg => pkg/psp1}/.empty | 0 pkg/vita/.empty | 0 pkg/wii/.empty | 0 {wii/pkg => pkg/wii}/icon.png | Bin {wii/pkg => pkg/wii}/meta.xml | 0 9 files changed, 54 insertions(+), 23 deletions(-) create mode 100755 dist-scripts/vita-cores.sh rename {ngc/pkg => pkg/psp1}/.empty (100%) create mode 100644 pkg/vita/.empty create mode 100644 pkg/wii/.empty rename {wii/pkg => pkg/wii}/icon.png (100%) rename {wii/pkg => pkg/wii}/meta.xml (100%) diff --git a/Makefile.wii.salamander b/Makefile.wii.salamander index 02eb182b56..c5cf4c4ee6 100644 --- a/Makefile.wii.salamander +++ b/Makefile.wii.salamander @@ -79,7 +79,7 @@ $(APP_BOOTER_DIR)/app_booter.bin: $(MAKE) -C $(APP_BOOTER_DIR) pkg: all - cp -r $(DOL_TARGET) wii/pkg/boot.dol + cp -r $(DOL_TARGET) pkg/wii/boot.dol clean: rm -f $(DOL_TARGET) diff --git a/dist-scripts/ngc-cores.sh b/dist-scripts/ngc-cores.sh index c9dc2d7686..966a0f36b9 100755 --- a/dist-scripts/ngc-cores.sh +++ b/dist-scripts/ngc-cores.sh @@ -1,9 +1,11 @@ #!/bin/sh -make -C ../ -f Makefile.griffin platform=ngc clean || exit 1 +PLATFORM=ngc -for f in *_ngc.a ; do - name=`echo "$f" | sed 's/\(_libretro_ngc\|\).a$//'` +make -C ../ -f Makefile.griffin platform=${PLATFORM} clean || exit 1 + +for f in *_${PLATFORM}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` whole_archive= big_stack= if [ $name = "nxengine" ] ; then @@ -14,8 +16,8 @@ for f in *_ngc.a ; do echo "Tyrquake found, applying big stack..." big_stack="BIG_STACK=1" fi - cp -f "$f" ../libretro_ngc.a - make -C ../ -f Makefile.griffin platform=ngc $whole_archive $big_stack -j3 || exit 1 - mv -f ../retroarch_ngc.dol ../ngc/pkg/${name}_libretro_ngc.dol - rm -f ../retroarch_ngc.dol ../retroarch_ngc.elf ../retroarch_ngc.elf.map + cp -f "$f" ../libretro_${PLATFORM}.a + make -C ../ -f Makefile.griffin platform=${PLATFORM} $whole_archive $big_stack -j3 || exit 1 + mv -f ../retroarch_${PLATFORM}.dol ../pkg/${PLATFORM}/${name}_libretro_${PLATFORM}.dol + rm -f ../retroarch_${PLATFORM}.dol ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.elf.map done diff --git a/dist-scripts/psp1-cores.sh b/dist-scripts/psp1-cores.sh index 5d31400b2a..da2da95ad7 100755 --- a/dist-scripts/psp1-cores.sh +++ b/dist-scripts/psp1-cores.sh @@ -1,19 +1,21 @@ #!/bin/sh -mkdir -p ../psp1/pkg/cores/ +PLATFORM=psp1 -make -C ../psp1/kernelFunctionsPrx/ clean || exit 1 -make -C ../psp1/kernelFunctionsPrx/ || exit 1 -cp -f ../kernel_functions.prx ../psp1/pkg/kernel_functions.prx +mkdir -p ../${PLATFORM}/pkg/cores/ -make -C ../ -f Makefile.psp1.salamander clean || exit 1 -make -C ../ -f Makefile.psp1.salamander || exit 1 -mv -f ../EBOOT.PBP ../psp1/pkg/EBOOT.PBP +make -C ../${PLATFORM}/kernelFunctionsPrx/ clean || exit 1 +make -C ../${PLATFORM}/kernelFunctionsPrx/ || exit 1 +cp -f ../kernel_functions.prx ../pkg/${PLATFORM}/kernel_functions.prx -make -C ../ -f Makefile.psp1 clean || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 +mv -f ../EBOOT.PBP ../pkg/${PLATFORM}/EBOOT.PBP -for f in *_psp1.a ; do - name=`echo "$f" | sed 's/\(_libretro_psp1\|\).a$//'` +make -C ../ -f Makefile.${PLATFORM} clean || exit 1 + +for f in *_${PLATFORM}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` whole_archive= big_stack= @@ -28,15 +30,15 @@ for f in *_psp1.a ; do fi if [ $big_stack="BIG_STACK=1" ] ; then - make -C ../ -f Makefile.psp1 clean || exit 1 + make -C ../ -f Makefile.${PLATFORM} clean || exit 1 fi - cp -f "$f" ../libretro_psp1.a - make -C ../ -f Makefile.psp1 $whole_archive $big_stack -j3 || exit 1 - mv -f ../EBOOT.PBP ../psp1/pkg/cores/${name}_libretro.PBP + cp -f "$f" ../libretro_${PLATFORM}.a + make -C ../ -f Makefile.${PLATFORM} $whole_archive $big_stack -j3 || exit 1 + mv -f ../EBOOT.PBP ../pkg/${PLATFORM}/cores/${name}_libretro.PBP rm -f ../retroarchpsp.elf if [ $big_stack="BIG_STACK=1" ] ; then - make -C ../ -f Makefile.psp1 clean || exit 1 + make -C ../ -f Makefile.${PLATFORM} clean || exit 1 fi done diff --git a/dist-scripts/vita-cores.sh b/dist-scripts/vita-cores.sh new file mode 100755 index 0000000000..7e53f0c823 --- /dev/null +++ b/dist-scripts/vita-cores.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +PLATFORM=vita + +#make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 +make -C ../ -f Makefile.griffin platform=${PLATFORM} clean || exit 1 + +#make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 +#make -C ../ -f Makefile.${PLATFORM}.salamander pkg || exit 1 + +for f in *_vita.a ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` + whole_archive= + big_stack= + if [ $name = "nxengine" ] ; then + echo "NXEngine found, applying whole archive linking..." + whole_archive="WHOLE_ARCHIVE_LINK=1" + fi + if [ $name = "tyrquake" ] ; then + echo "Tyrquake found, applying big stack..." + big_stack="BIG_STACK=1" + fi + cp -f "$f" ../libretro_${PLATFORM}.a + make -C ../ -f Makefile.griffin platform=${PLATFORM} $whole_archive $big_stack -j3 || exit 1 + mv -f ../retroarch_${PLATFORM}.velf ../pkg/${PLATFORM}/${name}_libretro_${PLATFORM}.velf + rm -f ../retroarch_${PLATFORM}.velf ../retroarch_${PLATFORM}.elf +done diff --git a/ngc/pkg/.empty b/pkg/psp1/.empty similarity index 100% rename from ngc/pkg/.empty rename to pkg/psp1/.empty diff --git a/pkg/vita/.empty b/pkg/vita/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pkg/wii/.empty b/pkg/wii/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/wii/pkg/icon.png b/pkg/wii/icon.png similarity index 100% rename from wii/pkg/icon.png rename to pkg/wii/icon.png diff --git a/wii/pkg/meta.xml b/pkg/wii/meta.xml similarity index 100% rename from wii/pkg/meta.xml rename to pkg/wii/meta.xml From f54878689694857579ad5a9487848d60c1906746 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 21:09:18 +0200 Subject: [PATCH 477/822] Move ps3/pkg to pkg/ps3 --- Makefile.ps3 | 16 ++++++++-------- Makefile.ps3.cobra | 16 ++++++++-------- Makefile.psl1ght | 8 ++++---- {ps3/pkg => pkg/ps3}/ICON0.PNG | Bin {ps3/pkg => pkg/ps3}/PARAM.SFO | Bin {ps3/pkg => pkg/ps3}/USRDIR/.empty | 0 {ps3/pkg => pkg/ps3}/USRDIR/cores/.empty | 0 .../ps3/USRDIR/cores/presets}/.empty | 0 .../ps3/USRDIR/cores/savestates}/.empty | 0 .../ps3/USRDIR/cores/sram}/.empty | 0 .../sram => pkg/ps3/USRDIR/cores/system}/.empty | 0 {ps3/pkg => pkg/ps3}/package.conf | 0 .../USRDIR/cores/borders/Menu/captain-cpsx.png | Bin 17979 -> 0 bytes ps3/pkg/USRDIR/cores/system/.empty | 0 14 files changed, 20 insertions(+), 20 deletions(-) rename {ps3/pkg => pkg/ps3}/ICON0.PNG (100%) rename {ps3/pkg => pkg/ps3}/PARAM.SFO (100%) rename {ps3/pkg => pkg/ps3}/USRDIR/.empty (100%) rename {ps3/pkg => pkg/ps3}/USRDIR/cores/.empty (100%) rename {ps3/pkg/USRDIR/cores/borders/Menu => pkg/ps3/USRDIR/cores/presets}/.empty (100%) rename {ps3/pkg/USRDIR/cores/presets => pkg/ps3/USRDIR/cores/savestates}/.empty (100%) rename {ps3/pkg/USRDIR/cores/savestates => pkg/ps3/USRDIR/cores/sram}/.empty (100%) rename {ps3/pkg/USRDIR/cores/sram => pkg/ps3/USRDIR/cores/system}/.empty (100%) rename {ps3/pkg => pkg/ps3}/package.conf (100%) delete mode 100644 ps3/pkg/USRDIR/cores/borders/Menu/captain-cpsx.png delete mode 100644 ps3/pkg/USRDIR/cores/system/.empty diff --git a/Makefile.ps3 b/Makefile.ps3 index 46ec3fb007..1e4c5e6e47 100644 --- a/Makefile.ps3 +++ b/Makefile.ps3 @@ -30,8 +30,8 @@ include $(CELL_MK_DIR)/sdk.makedef.mk PPU_TARGET = retroarch_ps3.elf SALAMANDER_TARGET = retroarch-salamander_ps3.elf -EBOOT_PATH = ps3/pkg/USRDIR/EBOOT.BIN -CORE_PATH = ps3/pkg/USRDIR/cores/CORE.SELF +EBOOT_PATH = pkg/ps3/USRDIR/EBOOT.BIN +CORE_PATH = pkg/ps3/USRDIR/cores/CORE.SELF LDDIRS = -L. -L$(CELL_SDK)/target/ppu/lib/PSGL/RSX/ultra-opt INCDIRS = -I. -Ips3 -Icommon -Ideps/zlib -Ilibretro-common/include @@ -157,28 +157,28 @@ create-salamander: $(MAKE_SELF) $(SALAMANDER_TARGET) $(EBOOT_PATH) $(CONTENT_ID_FULL) copy-media-files: - @cp -r $(RMENU_IMG_DIR)/*.png ps3/pkg/USRDIR/cores/borders/Menu/ + @cp -r $(RMENU_IMG_DIR)/*.png pkg/ps3/USRDIR/cores/borders/Menu/ create-shaders: make -f Makefile.shaders deploy-ps3 pkg: $(PPU_TARGET) create-shaders copy-media-files create-npdrm-salamander create-npdrm-core - $(MAKE_PACKAGE_NPDRM) ps3/pkg/package.conf ps3/pkg + $(MAKE_PACKAGE_NPDRM) pkg/ps3/package.conf pkg/ps3 pkg-signed: $(PPU_TARGET) create-shaders copy-media-files create-salamander create-core - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION).pkg pkg-signed-standalone: $(PPU_TARGET) create-shaders copy-media-files create-core $(MAKE_SELF) $(PPU_TARGET) $(EBOOT_PATH) $(CONTENT_ID) - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION).pkg pkg-signed-cfw: $(PPU_TARGET) create-shaders copy-media-files create-salamander create-core - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg $(PKG_FINALIZE) retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg pkg-signed-cfw-standalone: $(PPU_TARGET) create-shaders copy-media-files create-core $(MAKE_SELF) $(PPU_TARGET) $(EBOOT_PATH) $(CONTENT_ID) - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION).pkg $(PKG_FINALIZE) retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg clean-selfs: diff --git a/Makefile.ps3.cobra b/Makefile.ps3.cobra index c542425989..753b171666 100644 --- a/Makefile.ps3.cobra +++ b/Makefile.ps3.cobra @@ -30,8 +30,8 @@ include $(CELL_MK_DIR)/sdk.makedef.mk PPU_TARGET = retroarch_ps3.elf SALAMANDER_TARGET = retroarch-salamander_ps3.elf -EBOOT_PATH = ps3/pkg/USRDIR/EBOOT.BIN -CORE_PATH = ps3/pkg/USRDIR/cores/CORE.SELF +EBOOT_PATH = pkg/ps3/USRDIR/EBOOT.BIN +CORE_PATH = pkg/ps3/USRDIR/cores/CORE.SELF LDDIRS = -L. -L$(CELL_SDK)/target/ppu/lib/PSGL/RSX/ultra-opt INCDIRS = -I. -Ips3 -Icommon @@ -157,28 +157,28 @@ create-salamander: $(MAKE_SELF) $(SALAMANDER_TARGET) $(EBOOT_PATH) $(CONTENT_ID_FULL) copy-media-files: - @cp -r $(RMENU_IMG_DIR)/*.png ps3/pkg/USRDIR/cores/borders/Menu/ + @cp -r $(RMENU_IMG_DIR)/*.png pkg/ps3/USRDIR/cores/borders/Menu/ create-shaders: make -f Makefile.shaders deploy-ps3 pkg: $(PPU_TARGET) create-shaders copy-media-files create-npdrm-salamander create-npdrm-core - $(MAKE_PACKAGE_NPDRM) ps3/pkg/package.conf ps3/pkg + $(MAKE_PACKAGE_NPDRM) pkg/ps3/package.conf pkg/ps3 pkg-signed: $(PPU_TARGET) create-shaders copy-media-files create-salamander create-core - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION).pkg pkg-signed-standalone: $(PPU_TARGET) create-shaders copy-media-files create-core $(MAKE_SELF) $(PPU_TARGET) $(EBOOT_PATH) $(CONTENT_ID) - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION).pkg pkg-signed-cfw: $(PPU_TARGET) create-shaders copy-media-files create-salamander create-core - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg $(PKG_FINALIZE) retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg pkg-signed-cfw-standalone: $(PPU_TARGET) create-shaders copy-media-files create-core $(MAKE_SELF) $(PPU_TARGET) $(EBOOT_PATH) $(CONTENT_ID) - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION).pkg $(PKG_FINALIZE) retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg clean-selfs: diff --git a/Makefile.psl1ght b/Makefile.psl1ght index 85ddec7938..2d36fb4638 100644 --- a/Makefile.psl1ght +++ b/Makefile.psl1ght @@ -14,8 +14,8 @@ LD = $(PS3DEV)/ppu/bin/ppu-ld CONTENT_ID_FULL = UP0001-SSNE10000_00-0000000000000001 ELF_TARGET := retroarch_psl1ght.elf -EBOOT_PATH = ps3/pkg/USRDIR/EBOOT.BIN -CORE_PATH = ps3/pkg/USRDIR/cores/CORE.SELF +EBOOT_PATH = pkg/ps3/USRDIR/EBOOT.BIN +CORE_PATH = pkg/ps3/USRDIR/cores/CORE.SELF INCLUDE := -I. -I$(PS3DEV)/ppu/include -Ideps/zlib -Ips3/gcmgl/include/export -Ips3/include LIBDIRS := -L$(PS3DEV)/ppu/lib -L$(PS3DEV)/portlibs/ppu/lib -L. @@ -119,10 +119,10 @@ create-core: $(MAKE_SELF_WC) $(ELF_TARGET) $(CORE_PATH) pkg: $(ELF_TARGET) create-npdrm-core - $(MAKE_PACKAGE_NPDRM) ps3/pkg/package.conf ps3/pkg + $(MAKE_PACKAGE_NPDRM) pkg/ps3/package.conf ps3/pkg pkg-signed: $(ELF_TARGET) create-core - $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg + $(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) pkg/ps3 retroarch-ps3-cfw-$(RARCH_VERSION).pkg clean: rm -f $(ELF_TARGET) diff --git a/ps3/pkg/ICON0.PNG b/pkg/ps3/ICON0.PNG similarity index 100% rename from ps3/pkg/ICON0.PNG rename to pkg/ps3/ICON0.PNG diff --git a/ps3/pkg/PARAM.SFO b/pkg/ps3/PARAM.SFO similarity index 100% rename from ps3/pkg/PARAM.SFO rename to pkg/ps3/PARAM.SFO diff --git a/ps3/pkg/USRDIR/.empty b/pkg/ps3/USRDIR/.empty similarity index 100% rename from ps3/pkg/USRDIR/.empty rename to pkg/ps3/USRDIR/.empty diff --git a/ps3/pkg/USRDIR/cores/.empty b/pkg/ps3/USRDIR/cores/.empty similarity index 100% rename from ps3/pkg/USRDIR/cores/.empty rename to pkg/ps3/USRDIR/cores/.empty diff --git a/ps3/pkg/USRDIR/cores/borders/Menu/.empty b/pkg/ps3/USRDIR/cores/presets/.empty similarity index 100% rename from ps3/pkg/USRDIR/cores/borders/Menu/.empty rename to pkg/ps3/USRDIR/cores/presets/.empty diff --git a/ps3/pkg/USRDIR/cores/presets/.empty b/pkg/ps3/USRDIR/cores/savestates/.empty similarity index 100% rename from ps3/pkg/USRDIR/cores/presets/.empty rename to pkg/ps3/USRDIR/cores/savestates/.empty diff --git a/ps3/pkg/USRDIR/cores/savestates/.empty b/pkg/ps3/USRDIR/cores/sram/.empty similarity index 100% rename from ps3/pkg/USRDIR/cores/savestates/.empty rename to pkg/ps3/USRDIR/cores/sram/.empty diff --git a/ps3/pkg/USRDIR/cores/sram/.empty b/pkg/ps3/USRDIR/cores/system/.empty similarity index 100% rename from ps3/pkg/USRDIR/cores/sram/.empty rename to pkg/ps3/USRDIR/cores/system/.empty diff --git a/ps3/pkg/package.conf b/pkg/ps3/package.conf similarity index 100% rename from ps3/pkg/package.conf rename to pkg/ps3/package.conf diff --git a/ps3/pkg/USRDIR/cores/borders/Menu/captain-cpsx.png b/ps3/pkg/USRDIR/cores/borders/Menu/captain-cpsx.png deleted file mode 100644 index f9f6e34946dd7a77f31b910569115aef00c0c818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17979 zcmeHu2QXdT+wayRM2}w52+>J&heS(4ln}iOM=#O)NheW~h~5%jL3Ef-uuq?pSj@pdiHNU<@Y>$ZGUA&xeMoM&jSE(;oe>8hX8;F z0|0EHbGYD{$<`_<05~sfAtj}(Y;Nad=V)$cf9al-)Ft~Tc4ijVrT}mk9vkMWrq)UM zx~bgN<8vbq=EGM5rQd-+o+0`&MiDfItXM?+H*+p0V3Nv6M_swATn%eczNRjnLqegJ zjd$%FD=)Q-8i$>1$J@;GvW?|s)JVGBT;4`8YPP&dn+o`l%pD$%E06K+H~Hdov6v~+ z_bN`a01SiC5XJ^5sLPfZWP6??sjF{%8F%>!rU5p_qK9S~rhRKOKTHvCKmISRDX*uK z5ddj)o-hpuDV3iPv-~@*f~GeSwBa0P)XZiTthY(){e_L*Ux1)EauXxEQ^gAWYJ`*X zRJ)DmFD?}*T$Zc$%km@OFOK0L9VE+4%({s z=V5DP89hL`u%pF??D-=jQ*blC;M>ic{CvA#mG_-j?C$sV%6QOh7DGug_TSEB?fjty z3>*9{^H$z+W}b&3IDudNDC1Tk0QOgk9Ybej3Go9lZhy?%C4o5(>gr*n;XnDvs8)%0 zm0nkV&Z>Z3gUkmnH|q&6DHy$hab?o6b22~pl??rhUyHtEIR5n}6W*RPBkt`OH=_8T z3)6#7Aus|J?hlrkK+I&nBs|NdT@XaoS_sey7`fPC|mOjzxJFI~7KpE6Lb}ef~CY7ydfTQW=l-HorLz{PuMr z9K>_^A=)Ag+vg}l3I!O{kg^PyfCSs z{9hOrG9~XJqbz)H8ZOzXP*dQ@$k8NNtHh-!QxN3i<}*He_EnZa*7=i%ilB-~idLK4 zO_~h94!Pb><;|p%*iMusBzjM6?-V9-C)g!kZ_eVSCcKasnDfKU_zLg6i2Mk$28aUP zIK3GOe^BI4Pt=ZjeBiNk}_zB5$C zR$UloaUgJGD`OeJT?mGbI4&k_%6bXziTGevO1@(;C!alc`Ng##EO(echuXhige`u! zd+jS}hW}G(E{Cf*AKU`mB86nVlQN+#=ly#FqJS_lNv5&Yar`vI$bgcag={^dGAJx%VXhapvQfqxf|*ANU`-v2n6d zv3+UtNTp2;d3g1q;~xqORSVxKwJEZxtA8~9N`9Qpr_E=}XB~+d`J9jHaV^_9nONi< zBNYKvTCgLz8sVepX_*HJl&Y19M9NT8)5qa;uj4)fV{Bx^?CZ`Bz~L^_-!OA4h&&tjn+K5A(dP6z&?L6gJ2_$hNPHk@P8aGR z(#`aeb=Q8GV4U^i5u1i^+VV#(dDn#GX7;J_Rjo%dkCYyLwk)59O+Sk&&`!~=(2nkr za(*TvC9YqtTQ29VE+z9*>8etq%t#!Ie#qy@lwyrMB}aXE9d=!-H1*_;j|DLW;Vzjj zZ`ZLHa)X{DXk&3>bxNr9UfJf(L;C4Fvg2OrC+G(bID2ajK8#PRRPt>GYz%F_^PBTf z^IoG7p)sQ^pbnyG3GfPB4ipKDqqCxxqgmja=if6oHu_-v$Nb5lT5VhJ&B1TItFHXw z{9#&w-JFiO#id)gD_kp7^{e3yVRHs9@Mp%u(46)JIP!T?DDz-$`;(sgKW}t=?XY}t z+Z3DUK6Q9TO9!HZE?r5hGC$`VX%~IrR%1uAK=-=eT-%emv6!*IdiY%1Y=q02OX9i{ zN)v^(o=EhSNZ~c^Yk1IfkTskIe($Yrc5T5 zEuZaY+jiUFzV<%yKAk?OIEPq=N6d<}=eFDYGX2uSWn=eSo{b(l?pZ7IYnQjMQEDi$ z_4bu9lnbiLXTYa)modFrw@RmFig>4d#}y?(*i58JzG!lZh38T>%i_Iv7Rvg{20Y9{ zESq;1XGkXA{dtG_Eb{qBa~w}y_GI>W_LhC;V(wzgxe-5S(#|UvuN1%6Q|U^{PWh5j z9BRwHksjk$;KvofsGn4R!?QiK{d}6LdVJ9P0HfL%KNY+h z;z}=1hg!?I2zy4Ez}ZF=YI|$KYm}I~m}eCu6rJv--;EhAu}>@J{vZ}I{b4+0H-wnk z_ddRog?vp??U%UGy2TIfnAPI1-xwA&m841IE5TN4X;Q0H zmMfAG3bTmU3fW>|=a`W$a1!7ym5}3xdLkZYdd?SGsaR=Qc`mE12#f`0IBIKDGHNpw zRzRO`zj}6ooK9STaX`B3W7$-)SIAE8jz;uPL02l)i`E>}gUFnuB;|y6212>*E>`^l zZ36QJPv^#a(+Ye!jH&cE1=uoKeGGowDBcd75)2*m>LIN(`P7!{w6EBpIDi<|BPt~d zzZX6h7Pzq9+pnU?&3(f+|GHUI=o{0E&Yt+5FFobhz1d5@-u&vKUY@0xUZFRl+p3;vD;aK7(cP<9+ z9?3u}PVZDy*!{J5%Mbbf4`q=|7oYdd?a9Ce-O3ruTheyx}q_f?qFvt*TU zSfMIX3F_E{h?SQRbc77=xG5<#?Glhu*{9;!E`$(VlE~z{!t#My)QG3@`Yu#dZp#a^&$Jo z#n|_g?^{G?MO9r@=PQcB-R*|=YVjuVWQda()x{oqwJqk&H`yeHB__jl;oD4j5)~2% zTHkf~TJDAG=i}bRt0{a{5KxMI5F6zZU$Nvg*6I(PYN9kd?;E<8zg~=3Ve)a@$?z30 zc0uCo*CY?h>;JA4Tea*?iz|i|%Vnt=a5qquzxQ?AYz4U_uCctFG_Zg0_o+NN1U!Rpe^<*900_tr{xN{47;5k& zp3}VtGI;%%7&z42!T9Ty0B{MoCw*JZt!K91#xKd4VR32DJ*vAq*4ec&mo?Apd|DD! zYV#Wk>BqzcYHgHc=7#q^l5NV8U$(huoT$$8?jptDM`|24%lG}C3are(6|l1<8ExI^ zd*rI&>f&OCaPH?WYwF7rg~l}rJB|y+6HAv)40~)EKzoD+xAwDszn0h;<^#n#_-QVE zeRb3VF5zJu2n+r$`Fm(-W6+`xu=rsZN6il;|Jq6kH?^QRx)UJd!8#rc|76(zyafsp zCX1f^62?CXl8t@yXi7;kGXU$TdF}E^%Lw26=p5`?18_k9!Qb6GC#@f3%}3{edl49f zN6mLHfRh&Ur{hQe$LEokJf6`Am*=RrBpK#OD-3o#;}1f^qsy>s*#Fv^Hr1lVIk*)D zahxxns9o^cC}pkZV_{)Qc$g}!6{bQVLr6$iUC&)fKe#*ZI#Rj6Yd07#pY+gQbiU{+ zWUEf8wyUda)I>%FyqQ-_jK0&r*L!EZu+n)L!_a^FXsti(tEIJT7TWd)G!YXM%jK8w zQMy~-q;>esmR#MFZ)GyqlW$|d-&>3c5Nz&~{H>39#*k*%*l7IQ1V2B&rKP1hiL4in z7L7YLu}yWpnQAwdy}Dy40b9M*JFMvQMc`(;bDbS>5bP_Ko$g_(llbwNHpva46Gwj!93bDKI8FA0c% z*iFH$0DeUFm&5gujMvIDdtg0KCVV6GH@?HSi?HZMvl#dBNQWMa{+E=QtvM(wX(cf~gP99zw96^41+-lSdnLBL&I^&C&n z4bZ%T*4pjn$w_muwKmnfit*{Rte__Ec}IT8{*1xC$l=H)yIpVyCAeI>0ZmN8Pp)xQ zY$AocHnRx`06q1EF|tdC&*~(b*y5Kc7p&-6b}Ov_oI2XBLU?P#R>WntE4`_5dpeDm zhlivh7#B9re`JA%FGbw%jdhsJF&ZeYd6X{%;RCsR=u0?JbEW+q-p_RMd`ox57j=6V z+8qFZ^bwdKgTHrgy9^Sq?hpV>KVyc z@L~_We>1w#Tp(IcBJ4mvyp=ALXH*JCHwwATMu3X(3GYM&+br|DvW=u}(gs=#f8(f6 zQBQMNooumKh^93HN3rht#zq?`+ZmL{QQuYMFfuCcqZBu#6J{C^91LGvv~ivE9;{kCK>(NH(uKpsK2>Xs)0a`4o@Q{=mY}PG(XnQ1&W9Vt)sx($12H zk(Tz&3PLpNI=q*QTB&?vL3kpDe+H!_vFk*|0EkE)xuZ$dmB^R92;+e~HU2rr3jV;i z3HDVOpRmvl`jZ5w+%FtJUEsu>`g_dilN_$iYH+vNenCZN?9{Cc(@?6?7pq>eW$`X3 z_WCEwOD^y~9@f+4Z!ussXqEUxd@H)q;`X<-jgWoMuN~!1pgkwBmM}ijL75lErv?{# zKF|safr~;Q^9fjzcxcbq{90B{E|K+3O1ou9aK2d`IA4Z(a?_H9c*k25p2m$(3%J|z zO2&x!%Yl%KGNkR6w?MFLLBHrE*^d^pubmO5U}CQ!EM5o%!Wk3LM8;#`rKn79;Pxx-AvATo-D4dkVi z&FC#Gvp+h7PW+oi>zA&4D-GQzb3lwV~TZ}(g25Fg3Yt@k+xt8xJKFEfJg_Q@XbeZcZxLxYZrP^e{(rCsX z)%b;&2xzDhKMJ}Y=^XVm3;v?<8wJm%bO#sKk&y2zIUh$NL`2=DcY`rt>u5!}6uyOv z)Ytm$aION#<~fQ+-}%g6Hon9~q-NO(<`p@U33KMLOdOz4j8JmfPn+g|mIOS`{ zI{TXgLpJERHJM|}W!k6BSDYVg>w_oeY>=mAT@*{3>*)Xi-aR!4$2N9L#OWvfM_~5PF{(jALGIfFTju_d983s7J@F ziKtTOO}pmFs8oZNO-M`(Z*Fe>HW3V(8l8ak3F>LF+4PS2+JR>oVfNnWCmtvq}gaLjP(nur=N}*Q17pNjgHEB4SRZwste+TKw9YWjUa`<9w7qi6Xuzu z59Wj+zP4N98bxj*=wR)LBPIePBEO6Q8#6wlEt0_uLiU#!y%wv4oFlKwVqvMvBv?j;B4k7*RV@K@-0ha2`y~b8vxxEC+sd|N&U7vEd~KVK?ypi(QZ^$FEZ}%SRc#W5s;O$mhK7a%y;!jJ-)I{Vv9|nX zLuEff&X(3b9dlXur%-+^6e6z&4H^cT*^W#>k}Cgg`ATG}c9`ilYG3hIykjF{HO41$ z4vY&2U^N@5N{uP-!zSK*Pa7-k?bvj(+#0tH=q&~5R%Q$;#{`aC9R4ZZ50$P41K+`d z^9l)3M+?|YPp{d`SqZ~)O@F?+z7+zF`zSejz^3@LDTx(8V-UQsQOBtJE0o-OT?G!zuKNVkOvS+Q{{Kn`1t{z;W#_t z=)Jc!AzIOhnlI(HEt&e_=U3p6PKOHc>nitj)%DpLBPDeJ!xzcq|O=~uS9qb$V6 zO;GD|4mB4wVivnzLsl>EpUa&+4sY3891FS>H8K3K`dr;x8|ASJxn1%MD4!hA5&QYo z3As!*f3Bcg(BBnv^5pPce9q)_bC0WYZD!Sd6}jCs(c{Fo2Z}X%mB}CEFYZ;HX1pW3 zt)AZm!=h=vA3n9XdaBwuVJUyjV5-sQa8f&7ZMa5;`gN#Gyq6+@e_yxpW}8sQ3=q?3 zZPGopSxVoTMMv73|FjG(peC+kP4E4rKLSAo&!#~lHgdqYz`(!@atecZXt{oHuU(}$ zSJBWjnP9o=wcnUPxj7F2jbn1<-snv8=7ejm8^?F*IzG_2V^QFsJq;0cx9*{zeZS&?r#W{N#VVz18kmzqoN$ZIo5%?CzpxB_pTtR=SD|{qaVxX1Tq%@}~ z=^%*81u@rax@?!|dd}tN)ebW4PRivtP9QRO6f$eATBpWF@=uqTLEu&og3N?KdSE+E1lD3`j79r9gBZL}IY3d)`@&o8!7L5Qo5=AFUYg=?LT02`dYhV|2f^KHuM) zV?aMSw&iM~v+J=l*XPvwfMHNhB3PB%H;4+Amv34h)>Y=dlFKCV%>*4dUiUw#=Tym1 z@0EqAZ(8FFNA7^Rkw3Thlzhnh)lr+anYE(vC@UmbaxelD1K|Z4v9&EQXHrkA0ka{m z3DH4+iQOqB{)&az1utly@BXgCfcwM)ogNR%U$G@~sc@CFcH{lM-K9V~ud6=GA@L1D zERKP4T44@N;v3cF8v~*(bG0P1d7$f)$Gk6ptJ9#*}vS?PFoxnOy808o#^4yJO z0?Y%71tV_>_^_78*3c=~M?GNFM^VLNzzqi+BOm?@|2t1k| zY3N$CF|Y@3)$8CPW{fEHO`%Soh>%&mexIutOf`Z{mh)%Q6bPFa^4!{8sEv&jUM|{ zp3{e>afYVT&W|+}cJwk$^zLn&s^{fY=Rc)C_HR!`Zpqtb&N&%NWS~~IAs!{5h|EOv zLOfYH#b9t40p-*;@W$1c2CZ>Z0|_k+hnK~4nn5U0d296sd%1H@I`;~L#>N?s+-+Ky zSJ->~-wlK3cptN5l`Y@bb!w4u*x6hXHYhcL2W@sY`It3}@Pri!_!Rt7JVI9Ub5!H_ zheF=?qTcgG1m$@4Gi&7JY5pv=mt)wTb5z#(em>t}q?Wn7vcv zj6R#gLT-zOgcmN<{QC8)Y@?jsM5q-a>cGKn!%-?snP+1K4&eaOEiOw>ew?A=AonD_ zXeHn6R)-cDs@TP@OubTMpx}UJOFW(?Av&8^{{${_(O8%cGDvhDOr9w70~1)0O#7Sg z^eka;GOsx+gSWDYyjf!j$zRoOfEF^cxiqpg9&Pu928DK2HB1y#+RJ z4~+1@NwdDW0%lqoV-sDPh$e7y-DqK5kEx`kIXhp^Zuo`mr$mYLwhW0=>8jCZ)G_~uSg{mAxR4#~~H;jP3UY@J?8durk z9VW|8-0e7Y&BpNQ@7$OTzO0QwUtej3V3XvSC-?gto5UT4Us558GdOh$oJNa+>4nKQ z20ZP+9INQ6Np@82llm~u9QT#+%pe)=TF=WS7227NcMy4tgJ?>#=v;Zsx7QjdXx4-F?iLYq=bOhrtQ}Br#9xV5eov z)7CKBLV^EHh4Qpk>3Lf8{HJ2%KS>n2oXL6tUBdkS8+zI;)NeD~=rDMJCE_i#)A=uz z)6*L2S?li=vjJoMCXL2M@l9L;wJt>%m@tqo{Lc z7iV_y|A}4f7_84nu>PPvpJ>iVj&%tjzgso%y9x(~^H!sJsf5Ur33~jj@)c$f4e4{= zkE{bAJxO9t_!Y@Xs&sbSAxdX}9Ks-ZrXhzooSDoa3}?>a%sHHek3$_ei>F60oCV55 z9L@sekvg0O%0nE^0_7nLXU^e&);Z)zNOYv}A6Xs{W0%=m5`!+U4|$gojwiK;G>78J=t!5?quKW$txPalkXX>oZWT+*cl*) zYIEsKLk@6&otey`I-EI&Lm2+M&LLu^fD3xq0|12LagP0Sb-L;C7goyI(AtaWJ21tL z_T2)&KZe}BqrFC;Ysx-poqFxlzDCDm|7{evllQkjFsYBG`|nz|aZ|wIMBq6|@M0Q%kdo1B+z3@6TOr+-x zk6N&ECy2f{eX5hEH#$Ly=R|DkFCDHpQq)&C_|IF1>#lSlDA}>xB9O=?|Vxs>v@oDE% it?FwKYeFmWqA%0y=oJV?rCRsFnR_yd(wTP*pZzcTYPOL8 diff --git a/ps3/pkg/USRDIR/cores/system/.empty b/ps3/pkg/USRDIR/cores/system/.empty deleted file mode 100644 index e69de29bb2..0000000000 From ecfe676302eaf3f1b95283c95f03467b719729a7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 21:10:00 +0200 Subject: [PATCH 478/822] ps3/iso - remove png --- .../PS3_GAME/USRDIR/cores/borders/Menu/.empty | 0 .../USRDIR/cores/borders/Menu/captain-cpsx.png | Bin 17979 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/.empty delete mode 100644 ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/captain-cpsx.png diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/.empty b/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/.empty deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/captain-cpsx.png b/ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/captain-cpsx.png deleted file mode 100644 index f9f6e34946dd7a77f31b910569115aef00c0c818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17979 zcmeHu2QXdT+wayRM2}w52+>J&heS(4ln}iOM=#O)NheW~h~5%jL3Ef-uuq?pSj@pdiHNU<@Y>$ZGUA&xeMoM&jSE(;oe>8hX8;F z0|0EHbGYD{$<`_<05~sfAtj}(Y;Nad=V)$cf9al-)Ft~Tc4ijVrT}mk9vkMWrq)UM zx~bgN<8vbq=EGM5rQd-+o+0`&MiDfItXM?+H*+p0V3Nv6M_swATn%eczNRjnLqegJ zjd$%FD=)Q-8i$>1$J@;GvW?|s)JVGBT;4`8YPP&dn+o`l%pD$%E06K+H~Hdov6v~+ z_bN`a01SiC5XJ^5sLPfZWP6??sjF{%8F%>!rU5p_qK9S~rhRKOKTHvCKmISRDX*uK z5ddj)o-hpuDV3iPv-~@*f~GeSwBa0P)XZiTthY(){e_L*Ux1)EauXxEQ^gAWYJ`*X zRJ)DmFD?}*T$Zc$%km@OFOK0L9VE+4%({s z=V5DP89hL`u%pF??D-=jQ*blC;M>ic{CvA#mG_-j?C$sV%6QOh7DGug_TSEB?fjty z3>*9{^H$z+W}b&3IDudNDC1Tk0QOgk9Ybej3Go9lZhy?%C4o5(>gr*n;XnDvs8)%0 zm0nkV&Z>Z3gUkmnH|q&6DHy$hab?o6b22~pl??rhUyHtEIR5n}6W*RPBkt`OH=_8T z3)6#7Aus|J?hlrkK+I&nBs|NdT@XaoS_sey7`fPC|mOjzxJFI~7KpE6Lb}ef~CY7ydfTQW=l-HorLz{PuMr z9K>_^A=)Ag+vg}l3I!O{kg^PyfCSs z{9hOrG9~XJqbz)H8ZOzXP*dQ@$k8NNtHh-!QxN3i<}*He_EnZa*7=i%ilB-~idLK4 zO_~h94!Pb><;|p%*iMusBzjM6?-V9-C)g!kZ_eVSCcKasnDfKU_zLg6i2Mk$28aUP zIK3GOe^BI4Pt=ZjeBiNk}_zB5$C zR$UloaUgJGD`OeJT?mGbI4&k_%6bXziTGevO1@(;C!alc`Ng##EO(echuXhige`u! zd+jS}hW}G(E{Cf*AKU`mB86nVlQN+#=ly#FqJS_lNv5&Yar`vI$bgcag={^dGAJx%VXhapvQfqxf|*ANU`-v2n6d zv3+UtNTp2;d3g1q;~xqORSVxKwJEZxtA8~9N`9Qpr_E=}XB~+d`J9jHaV^_9nONi< zBNYKvTCgLz8sVepX_*HJl&Y19M9NT8)5qa;uj4)fV{Bx^?CZ`Bz~L^_-!OA4h&&tjn+K5A(dP6z&?L6gJ2_$hNPHk@P8aGR z(#`aeb=Q8GV4U^i5u1i^+VV#(dDn#GX7;J_Rjo%dkCYyLwk)59O+Sk&&`!~=(2nkr za(*TvC9YqtTQ29VE+z9*>8etq%t#!Ie#qy@lwyrMB}aXE9d=!-H1*_;j|DLW;Vzjj zZ`ZLHa)X{DXk&3>bxNr9UfJf(L;C4Fvg2OrC+G(bID2ajK8#PRRPt>GYz%F_^PBTf z^IoG7p)sQ^pbnyG3GfPB4ipKDqqCxxqgmja=if6oHu_-v$Nb5lT5VhJ&B1TItFHXw z{9#&w-JFiO#id)gD_kp7^{e3yVRHs9@Mp%u(46)JIP!T?DDz-$`;(sgKW}t=?XY}t z+Z3DUK6Q9TO9!HZE?r5hGC$`VX%~IrR%1uAK=-=eT-%emv6!*IdiY%1Y=q02OX9i{ zN)v^(o=EhSNZ~c^Yk1IfkTskIe($Yrc5T5 zEuZaY+jiUFzV<%yKAk?OIEPq=N6d<}=eFDYGX2uSWn=eSo{b(l?pZ7IYnQjMQEDi$ z_4bu9lnbiLXTYa)modFrw@RmFig>4d#}y?(*i58JzG!lZh38T>%i_Iv7Rvg{20Y9{ zESq;1XGkXA{dtG_Eb{qBa~w}y_GI>W_LhC;V(wzgxe-5S(#|UvuN1%6Q|U^{PWh5j z9BRwHksjk$;KvofsGn4R!?QiK{d}6LdVJ9P0HfL%KNY+h z;z}=1hg!?I2zy4Ez}ZF=YI|$KYm}I~m}eCu6rJv--;EhAu}>@J{vZ}I{b4+0H-wnk z_ddRog?vp??U%UGy2TIfnAPI1-xwA&m841IE5TN4X;Q0H zmMfAG3bTmU3fW>|=a`W$a1!7ym5}3xdLkZYdd?SGsaR=Qc`mE12#f`0IBIKDGHNpw zRzRO`zj}6ooK9STaX`B3W7$-)SIAE8jz;uPL02l)i`E>}gUFnuB;|y6212>*E>`^l zZ36QJPv^#a(+Ye!jH&cE1=uoKeGGowDBcd75)2*m>LIN(`P7!{w6EBpIDi<|BPt~d zzZX6h7Pzq9+pnU?&3(f+|GHUI=o{0E&Yt+5FFobhz1d5@-u&vKUY@0xUZFRl+p3;vD;aK7(cP<9+ z9?3u}PVZDy*!{J5%Mbbf4`q=|7oYdd?a9Ce-O3ruTheyx}q_f?qFvt*TU zSfMIX3F_E{h?SQRbc77=xG5<#?Glhu*{9;!E`$(VlE~z{!t#My)QG3@`Yu#dZp#a^&$Jo z#n|_g?^{G?MO9r@=PQcB-R*|=YVjuVWQda()x{oqwJqk&H`yeHB__jl;oD4j5)~2% zTHkf~TJDAG=i}bRt0{a{5KxMI5F6zZU$Nvg*6I(PYN9kd?;E<8zg~=3Ve)a@$?z30 zc0uCo*CY?h>;JA4Tea*?iz|i|%Vnt=a5qquzxQ?AYz4U_uCctFG_Zg0_o+NN1U!Rpe^<*900_tr{xN{47;5k& zp3}VtGI;%%7&z42!T9Ty0B{MoCw*JZt!K91#xKd4VR32DJ*vAq*4ec&mo?Apd|DD! zYV#Wk>BqzcYHgHc=7#q^l5NV8U$(huoT$$8?jptDM`|24%lG}C3are(6|l1<8ExI^ zd*rI&>f&OCaPH?WYwF7rg~l}rJB|y+6HAv)40~)EKzoD+xAwDszn0h;<^#n#_-QVE zeRb3VF5zJu2n+r$`Fm(-W6+`xu=rsZN6il;|Jq6kH?^QRx)UJd!8#rc|76(zyafsp zCX1f^62?CXl8t@yXi7;kGXU$TdF}E^%Lw26=p5`?18_k9!Qb6GC#@f3%}3{edl49f zN6mLHfRh&Ur{hQe$LEokJf6`Am*=RrBpK#OD-3o#;}1f^qsy>s*#Fv^Hr1lVIk*)D zahxxns9o^cC}pkZV_{)Qc$g}!6{bQVLr6$iUC&)fKe#*ZI#Rj6Yd07#pY+gQbiU{+ zWUEf8wyUda)I>%FyqQ-_jK0&r*L!EZu+n)L!_a^FXsti(tEIJT7TWd)G!YXM%jK8w zQMy~-q;>esmR#MFZ)GyqlW$|d-&>3c5Nz&~{H>39#*k*%*l7IQ1V2B&rKP1hiL4in z7L7YLu}yWpnQAwdy}Dy40b9M*JFMvQMc`(;bDbS>5bP_Ko$g_(llbwNHpva46Gwj!93bDKI8FA0c% z*iFH$0DeUFm&5gujMvIDdtg0KCVV6GH@?HSi?HZMvl#dBNQWMa{+E=QtvM(wX(cf~gP99zw96^41+-lSdnLBL&I^&C&n z4bZ%T*4pjn$w_muwKmnfit*{Rte__Ec}IT8{*1xC$l=H)yIpVyCAeI>0ZmN8Pp)xQ zY$AocHnRx`06q1EF|tdC&*~(b*y5Kc7p&-6b}Ov_oI2XBLU?P#R>WntE4`_5dpeDm zhlivh7#B9re`JA%FGbw%jdhsJF&ZeYd6X{%;RCsR=u0?JbEW+q-p_RMd`ox57j=6V z+8qFZ^bwdKgTHrgy9^Sq?hpV>KVyc z@L~_We>1w#Tp(IcBJ4mvyp=ALXH*JCHwwATMu3X(3GYM&+br|DvW=u}(gs=#f8(f6 zQBQMNooumKh^93HN3rht#zq?`+ZmL{QQuYMFfuCcqZBu#6J{C^91LGvv~ivE9;{kCK>(NH(uKpsK2>Xs)0a`4o@Q{=mY}PG(XnQ1&W9Vt)sx($12H zk(Tz&3PLpNI=q*QTB&?vL3kpDe+H!_vFk*|0EkE)xuZ$dmB^R92;+e~HU2rr3jV;i z3HDVOpRmvl`jZ5w+%FtJUEsu>`g_dilN_$iYH+vNenCZN?9{Cc(@?6?7pq>eW$`X3 z_WCEwOD^y~9@f+4Z!ussXqEUxd@H)q;`X<-jgWoMuN~!1pgkwBmM}ijL75lErv?{# zKF|safr~;Q^9fjzcxcbq{90B{E|K+3O1ou9aK2d`IA4Z(a?_H9c*k25p2m$(3%J|z zO2&x!%Yl%KGNkR6w?MFLLBHrE*^d^pubmO5U}CQ!EM5o%!Wk3LM8;#`rKn79;Pxx-AvATo-D4dkVi z&FC#Gvp+h7PW+oi>zA&4D-GQzb3lwV~TZ}(g25Fg3Yt@k+xt8xJKFEfJg_Q@XbeZcZxLxYZrP^e{(rCsX z)%b;&2xzDhKMJ}Y=^XVm3;v?<8wJm%bO#sKk&y2zIUh$NL`2=DcY`rt>u5!}6uyOv z)Ytm$aION#<~fQ+-}%g6Hon9~q-NO(<`p@U33KMLOdOz4j8JmfPn+g|mIOS`{ zI{TXgLpJERHJM|}W!k6BSDYVg>w_oeY>=mAT@*{3>*)Xi-aR!4$2N9L#OWvfM_~5PF{(jALGIfFTju_d983s7J@F ziKtTOO}pmFs8oZNO-M`(Z*Fe>HW3V(8l8ak3F>LF+4PS2+JR>oVfNnWCmtvq}gaLjP(nur=N}*Q17pNjgHEB4SRZwste+TKw9YWjUa`<9w7qi6Xuzu z59Wj+zP4N98bxj*=wR)LBPIePBEO6Q8#6wlEt0_uLiU#!y%wv4oFlKwVqvMvBv?j;B4k7*RV@K@-0ha2`y~b8vxxEC+sd|N&U7vEd~KVK?ypi(QZ^$FEZ}%SRc#W5s;O$mhK7a%y;!jJ-)I{Vv9|nX zLuEff&X(3b9dlXur%-+^6e6z&4H^cT*^W#>k}Cgg`ATG}c9`ilYG3hIykjF{HO41$ z4vY&2U^N@5N{uP-!zSK*Pa7-k?bvj(+#0tH=q&~5R%Q$;#{`aC9R4ZZ50$P41K+`d z^9l)3M+?|YPp{d`SqZ~)O@F?+z7+zF`zSejz^3@LDTx(8V-UQsQOBtJE0o-OT?G!zuKNVkOvS+Q{{Kn`1t{z;W#_t z=)Jc!AzIOhnlI(HEt&e_=U3p6PKOHc>nitj)%DpLBPDeJ!xzcq|O=~uS9qb$V6 zO;GD|4mB4wVivnzLsl>EpUa&+4sY3891FS>H8K3K`dr;x8|ASJxn1%MD4!hA5&QYo z3As!*f3Bcg(BBnv^5pPce9q)_bC0WYZD!Sd6}jCs(c{Fo2Z}X%mB}CEFYZ;HX1pW3 zt)AZm!=h=vA3n9XdaBwuVJUyjV5-sQa8f&7ZMa5;`gN#Gyq6+@e_yxpW}8sQ3=q?3 zZPGopSxVoTMMv73|FjG(peC+kP4E4rKLSAo&!#~lHgdqYz`(!@atecZXt{oHuU(}$ zSJBWjnP9o=wcnUPxj7F2jbn1<-snv8=7ejm8^?F*IzG_2V^QFsJq;0cx9*{zeZS&?r#W{N#VVz18kmzqoN$ZIo5%?CzpxB_pTtR=SD|{qaVxX1Tq%@}~ z=^%*81u@rax@?!|dd}tN)ebW4PRivtP9QRO6f$eATBpWF@=uqTLEu&og3N?KdSE+E1lD3`j79r9gBZL}IY3d)`@&o8!7L5Qo5=AFUYg=?LT02`dYhV|2f^KHuM) zV?aMSw&iM~v+J=l*XPvwfMHNhB3PB%H;4+Amv34h)>Y=dlFKCV%>*4dUiUw#=Tym1 z@0EqAZ(8FFNA7^Rkw3Thlzhnh)lr+anYE(vC@UmbaxelD1K|Z4v9&EQXHrkA0ka{m z3DH4+iQOqB{)&az1utly@BXgCfcwM)ogNR%U$G@~sc@CFcH{lM-K9V~ud6=GA@L1D zERKP4T44@N;v3cF8v~*(bG0P1d7$f)$Gk6ptJ9#*}vS?PFoxnOy808o#^4yJO z0?Y%71tV_>_^_78*3c=~M?GNFM^VLNzzqi+BOm?@|2t1k| zY3N$CF|Y@3)$8CPW{fEHO`%Soh>%&mexIutOf`Z{mh)%Q6bPFa^4!{8sEv&jUM|{ zp3{e>afYVT&W|+}cJwk$^zLn&s^{fY=Rc)C_HR!`Zpqtb&N&%NWS~~IAs!{5h|EOv zLOfYH#b9t40p-*;@W$1c2CZ>Z0|_k+hnK~4nn5U0d296sd%1H@I`;~L#>N?s+-+Ky zSJ->~-wlK3cptN5l`Y@bb!w4u*x6hXHYhcL2W@sY`It3}@Pri!_!Rt7JVI9Ub5!H_ zheF=?qTcgG1m$@4Gi&7JY5pv=mt)wTb5z#(em>t}q?Wn7vcv zj6R#gLT-zOgcmN<{QC8)Y@?jsM5q-a>cGKn!%-?snP+1K4&eaOEiOw>ew?A=AonD_ zXeHn6R)-cDs@TP@OubTMpx}UJOFW(?Av&8^{{${_(O8%cGDvhDOr9w70~1)0O#7Sg z^eka;GOsx+gSWDYyjf!j$zRoOfEF^cxiqpg9&Pu928DK2HB1y#+RJ z4~+1@NwdDW0%lqoV-sDPh$e7y-DqK5kEx`kIXhp^Zuo`mr$mYLwhW0=>8jCZ)G_~uSg{mAxR4#~~H;jP3UY@J?8durk z9VW|8-0e7Y&BpNQ@7$OTzO0QwUtej3V3XvSC-?gto5UT4Us558GdOh$oJNa+>4nKQ z20ZP+9INQ6Np@82llm~u9QT#+%pe)=TF=WS7227NcMy4tgJ?>#=v;Zsx7QjdXx4-F?iLYq=bOhrtQ}Br#9xV5eov z)7CKBLV^EHh4Qpk>3Lf8{HJ2%KS>n2oXL6tUBdkS8+zI;)NeD~=rDMJCE_i#)A=uz z)6*L2S?li=vjJoMCXL2M@l9L;wJt>%m@tqo{Lc z7iV_y|A}4f7_84nu>PPvpJ>iVj&%tjzgso%y9x(~^H!sJsf5Ur33~jj@)c$f4e4{= zkE{bAJxO9t_!Y@Xs&sbSAxdX}9Ks-ZrXhzooSDoa3}?>a%sHHek3$_ei>F60oCV55 z9L@sekvg0O%0nE^0_7nLXU^e&);Z)zNOYv}A6Xs{W0%=m5`!+U4|$gojwiK;G>78J=t!5?quKW$txPalkXX>oZWT+*cl*) zYIEsKLk@6&otey`I-EI&Lm2+M&LLu^fD3xq0|12LagP0Sb-L;C7goyI(AtaWJ21tL z_T2)&KZe}BqrFC;Ysx-poqFxlzDCDm|7{evllQkjFsYBG`|nz|aZ|wIMBq6|@M0Q%kdo1B+z3@6TOr+-x zk6N&ECy2f{eX5hEH#$Ly=R|DkFCDHpQq)&C_|IF1>#lSlDA}>xB9O=?|Vxs>v@oDE% it?FwKYeFmWqA%0y=oJV?rCRsFnR_yd(wTP*pZzcTYPOL8 From d69deba25bfdbdd557035341fd5657ff69dbb3d6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 21:10:31 +0200 Subject: [PATCH 479/822] Add pkg/ngc --- pkg/ngc/.empty | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pkg/ngc/.empty diff --git a/pkg/ngc/.empty b/pkg/ngc/.empty new file mode 100644 index 0000000000..e69de29bb2 From 30bcbed9f433d3e103694002f1c5b44b72777f62 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 21:17:15 +0200 Subject: [PATCH 480/822] xdk_resources.cpp - Cleanups --- xdk/xdk_resources.cpp | 126 +++++++++++++++++------------------------- xdk/xdk_resources.h | 12 ++-- 2 files changed, 56 insertions(+), 82 deletions(-) diff --git a/xdk/xdk_resources.cpp b/xdk/xdk_resources.cpp index 1e775d6343..e9697faab7 100644 --- a/xdk/xdk_resources.cpp +++ b/xdk/xdk_resources.cpp @@ -53,12 +53,12 @@ void *PackedResource::GetData(const char *strName) const return NULL; #if defined(_XBOX1) - for (DWORD i=0; m_pResourceTags[i].strName; i++ ) + for (DWORD i=0; m_pResourceTags[i].strName; i++) #elif defined(_XBOX360) - for (DWORD i = 0; i < m_dwNumResourceTags; i++ ) + for (DWORD i = 0; i < m_dwNumResourceTags; i++) #endif { - if (!strcasecmp( strName, m_pResourceTags[i].strName)) + if (!strcasecmp(strName, m_pResourceTags[i].strName)) return &m_pSysMemData[m_pResourceTags[i].dwOffset]; } @@ -70,8 +70,8 @@ static INLINE void* AllocateContiguousMemory(DWORD Size, DWORD Alignment) #if defined(_XBOX1) return D3D_AllocContiguousMemory(Size, Alignment); #elif defined(_XBOX360) - return XMemAlloc( Size, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_GameMax, - Alignment, XALLOC_MEMPROTECT_WRITECOMBINE, 0, XALLOC_MEMTYPE_PHYSICAL ) ); + return XMemAlloc(Size, MAKE_XALLOC_ATTRIBUTES(0, 0, 0, 0, eXALLOCAllocatorId_GameMax, + Alignment, XALLOC_MEMPROTECT_WRITECOMBINE, 0, XALLOC_MEMTYPE_PHYSICAL)); #endif } @@ -80,8 +80,8 @@ static INLINE void FreeContiguousMemory(void* pData) #if defined(_XBOX1) return D3D_FreeContiguousMemory(pData); #elif defined(_XBOX360) - return XMemFree( pData, MAKE_XALLOC_ATTRIBUTES( 0, 0, 0, 0, eXALLOCAllocatorId_GameMax, - 0, 0, 0, XALLOC_MEMTYPE_PHYSICAL ) ); + return XMemFree(pData, MAKE_XALLOC_ATTRIBUTES(0, 0, 0, 0, eXALLOCAllocatorId_GameMax, + 0, 0, 0, XALLOC_MEMTYPE_PHYSICAL)); #endif } @@ -90,33 +90,21 @@ char g_strMediaPath[512] = "D:\\Media\\"; static HRESULT FindMediaFile(char *strPath, const char *strFilename, size_t strPathsize) { - // Check for valid arguments - if( strFilename == NULL || strPath == NULL ) - { - RARCH_ERR("Util_FindMediaFile(): Invalid arguments\n" ); + if(strFilename == NULL || strPath == NULL) return E_INVALIDARG; - } - // Default path is the filename itself as a fully qualified path - strlcpy( strPath, strFilename, strPathsize); + strlcpy(strPath, strFilename, strPathsize); - // Check for the ':' character to see if the filename is a fully - // qualified path. If not, pre-pend the media directory if(strFilename[1] != ':') snprintf(strPath, strPathsize, "%s%s", g_strMediaPath, strFilename); - // Try to open the file - HANDLE hFile = CreateFile( strPath, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, 0, NULL ); + HANDLE hFile = CreateFile(strPath, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, 0, NULL); - if( hFile == INVALID_HANDLE_VALUE ) - { - RARCH_ERR("FindMediaFile(): Could not find file.\n"); + if (hFile == INVALID_HANDLE_VALUE) return 0x82000004; - } - // Found the file. Close the file and return - CloseHandle( hFile ); + CloseHandle(hFile); return S_OK; } @@ -130,51 +118,43 @@ HRESULT PackedResource::Create(const char *strFilename, HRESULT PackedResource::Create(const char *strFilename) #endif { -#ifdef _XBOX1 - BOOL bHasResourceOffsetsTable = FALSE; - - // Find the media file - CHAR strResourcePath[512]; - if( FAILED(FindMediaFile(strResourcePath, strFilename, sizeof(strResourcePath)))) - return E_FAIL; - else - strFilename = strResourcePath; -#endif - - // Open the file HANDLE hFile; DWORD dwNumBytesRead; - hFile = CreateFile( strFilename, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL ); - if( hFile == INVALID_HANDLE_VALUE ) - { - RARCH_ERR( "PackedResource::Create(): File <%s> not found.\n", strFilename ); - return E_FAIL; - } - - // Read in and verify the XPR magic header XPR_HEADER xprh; - bool retval = ReadFile( hFile, &xprh, sizeof( XPR_HEADER ), &dwNumBytesRead, NULL ); + bool retval; +#ifdef _XBOX1 + BOOL bHasResourceOffsetsTable = FALSE; + char strResourcePath[512]; + + if (FAILED(FindMediaFile(strResourcePath, strFilename, sizeof(strResourcePath)))) + return E_FAIL; + strFilename = strResourcePath; +#endif + + hFile = CreateFile(strFilename, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL); + if (hFile == INVALID_HANDLE_VALUE) + return E_FAIL; + + retval = ReadFile(hFile, &xprh, sizeof(XPR_HEADER), &dwNumBytesRead, NULL); #if defined(_XBOX1) - if( xprh.dwMagic == XPR0_MAGIC_VALUE ) + if(xprh.dwMagic == XPR0_MAGIC_VALUE) bHasResourceOffsetsTable = FALSE; - else if( xprh.dwMagic == XPR1_MAGIC_VALUE ) + else if(xprh.dwMagic == XPR1_MAGIC_VALUE) bHasResourceOffsetsTable = TRUE; else #elif defined(_XBOX360) if(!retval) { - RARCH_ERR("Error reading XPR header in file %s.\n", strFilename ); - CloseHandle( hFile ); + CloseHandle(hFile); return E_FAIL; } - if( xprh.dwMagic != XPR2_MAGIC_VALUE ) + if (xprh.dwMagic != XPR2_MAGIC_VALUE) #endif { - RARCH_ERR( "Invalid Xbox Packed Resource (.xpr) file: Magic = 0x%08lx\n", xprh.dwMagic ); - CloseHandle( hFile ); + CloseHandle(hFile); return E_FAIL; } @@ -191,22 +171,20 @@ HRESULT PackedResource::Create(const char *strFilename) m_pSysMemData = (BYTE*)malloc(m_dwSysMemDataSize); if (m_pSysMemData == NULL) { - RARCH_ERR( "Could not allocate system memory.\n" ); m_dwSysMemDataSize = 0; return E_FAIL; } - m_pVidMemData = ( BYTE* )AllocateContiguousMemory( m_dwVidMemDataSize, + m_pVidMemData = (BYTE*)AllocateContiguousMemory(m_dwVidMemDataSize, #if defined(_XBOX1) D3DTEXTURE_ALIGNMENT #elif defined(_XBOX360) XALLOC_PHYSICAL_ALIGNMENT_4K #endif - ); + ); - if( m_pVidMemData == NULL ) + if(m_pVidMemData == NULL) { - RARCH_ERR( "Could not allocate physical memory.\n" ); m_dwSysMemDataSize = 0; m_dwVidMemDataSize = 0; free(m_pSysMemData); @@ -215,16 +193,15 @@ HRESULT PackedResource::Create(const char *strFilename) } // Read in the data from the file - if( !ReadFile( hFile, m_pSysMemData, m_dwSysMemDataSize, &dwNumBytesRead, NULL ) || - !ReadFile( hFile, m_pVidMemData, m_dwVidMemDataSize, &dwNumBytesRead, NULL ) ) + if( !ReadFile( hFile, m_pSysMemData, m_dwSysMemDataSize, &dwNumBytesRead, NULL) || + !ReadFile( hFile, m_pVidMemData, m_dwVidMemDataSize, &dwNumBytesRead, NULL)) { - RARCH_ERR( "Unable to read Xbox Packed Resource (.xpr) file\n" ); - CloseHandle( hFile ); + CloseHandle( hFile); return E_FAIL; } // Done with the file - CloseHandle( hFile ); + CloseHandle( hFile); #ifdef _XBOX1 if (bHasResourceOffsetsTable) @@ -232,21 +209,18 @@ HRESULT PackedResource::Create(const char *strFilename) #endif // Extract resource table from the header data - m_dwNumResourceTags = *( DWORD* )( m_pSysMemData + 0 ); - m_pResourceTags = ( XBRESOURCE* )( m_pSysMemData + 4 ); + m_dwNumResourceTags = *(DWORD*)(m_pSysMemData + 0); + m_pResourceTags = (XBRESOURCE*)(m_pSysMemData + 4); // Patch up the resources - for( DWORD i = 0; i < m_dwNumResourceTags; i++ ) + for(DWORD i = 0; i < m_dwNumResourceTags; i++) { - m_pResourceTags[i].strName = ( CHAR* )( m_pSysMemData + ( DWORD )m_pResourceTags[i].strName ); + m_pResourceTags[i].strName = (char*)(m_pSysMemData + (DWORD)m_pResourceTags[i].strName); #ifdef _XBOX360 - // Fixup the texture memory - if( ( m_pResourceTags[i].dwType & 0xffff0000 ) == ( RESOURCETYPE_TEXTURE & 0xffff0000 ) ) + if((m_pResourceTags[i].dwType & 0xffff0000) == (RESOURCETYPE_TEXTURE & 0xffff0000)) { - D3DTexture* pTexture = ( D3DTexture* )&m_pSysMemData[m_pResourceTags[i].dwOffset]; - - // Adjust Base address according to where memory was allocated - XGOffsetBaseTextureAddress( pTexture, m_pVidMemData, m_pVidMemData ); + D3DTexture *pTexture = (D3DTexture*)&m_pSysMemData[m_pResourceTags[i].dwOffset]; + XGOffsetBaseTextureAddress(pTexture, m_pVidMemData, m_pVidMemData); } #endif } @@ -257,7 +231,7 @@ HRESULT PackedResource::Create(const char *strFilename) #ifdef _XBOX1 // Use user-supplied number of resources and the resource tags - if( dwNumResourceTags != 0 || pResourceTags != NULL ) + if(dwNumResourceTags != 0 || pResourceTags != NULL) { m_pResourceTags = pResourceTags; m_dwNumResourceTags = dwNumResourceTags; @@ -276,7 +250,7 @@ void PackedResource::GetResourceTags(DWORD* pdwNumResourceTags, if (pdwNumResourceTags) (*pdwNumResourceTags) = m_dwNumResourceTags; - if (ppResourceTags ) + if (ppResourceTags) (*ppResourceTags) = m_pResourceTags; } #endif diff --git a/xdk/xdk_resources.h b/xdk/xdk_resources.h index ae5e731970..d40268b4a5 100644 --- a/xdk/xdk_resources.h +++ b/xdk/xdk_resources.h @@ -22,13 +22,13 @@ DWORD XBResource_SizeOf( LPDIRECT3DRESOURCE pResource ); struct XBRESOURCE { #if defined(_XBOX1) - CHAR* strName; + char *strName; DWORD dwOffset; #elif defined(_XBOX360) DWORD dwType; DWORD dwOffset; DWORD dwSize; - CHAR* strName; + char *strName; #endif }; @@ -107,15 +107,15 @@ class PackedResource { return (LPDIRECT3DVERTEXBUFFER)GetResource( dwOffset ); } // Functions to retrieve resources by their name - void *GetData( const CHAR* strName ) const; + void *GetData( const char* strName ) const; - LPDIRECT3DRESOURCE GetResource( const CHAR* strName ) const + LPDIRECT3DRESOURCE GetResource( const char* strName ) const { return RegisterResource( (LPDIRECT3DRESOURCE)GetData( strName ) ); } - LPDIRECT3DTEXTURE GetTexture( const CHAR* strName ) const + LPDIRECT3DTEXTURE GetTexture( const char* strName ) const { return (LPDIRECT3DTEXTURE)GetResource( strName ); } - LPDIRECT3DVERTEXBUFFER GetVertexBuffer( const CHAR* strName ) const + LPDIRECT3DVERTEXBUFFER GetVertexBuffer( const char* strName ) const { return (LPDIRECT3DVERTEXBUFFER)GetResource( strName ); } // Constructor/destructor From 6c5d250ff1b50c3ba9eeae249883a08bba712faa Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Mon, 31 Aug 2015 19:37:02 +0200 Subject: [PATCH 481/822] (Vita) Prepare code for fullscreen --- gfx/drivers/vita2d_gfx.c | 65 ++++++++++++++++++++++++++++++++-------- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 549334ddd3..bcbe00488e 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -40,6 +40,7 @@ typedef struct vita_video int width; int height; + bool fullscreen; bool vsync; bool rgb32; @@ -77,8 +78,9 @@ static void *vita2d_gfx_init(const video_info_t *video, else vita->format = SCE_GXM_TEXTURE_FORMAT_R5G6B5; - vita->texture = NULL; + vita->fullscreen = video->fullscreen; + vita->texture = NULL; vita->menu.frame = NULL; vita->menu.active = 0; vita->menu.width = 0; @@ -149,16 +151,56 @@ static bool vita2d_gfx_frame(void *data, const void *frame, vita2d_clear_screen(); if (frame && vita->texture) - vita2d_draw_texture_scale(vita->texture, - SCREEN_W/2 - (vita->width/2)*2, - SCREEN_H/2 - (vita->height/2)*2, - 2.0f, 2.0f); + { + if (vita->fullscreen) + vita2d_draw_texture_scale(vita->texture, + 0, 0, + SCREEN_W/(float)vita->width, + SCREEN_H/(float)vita->height); + else + if (vita->width > vita->height) + { + float scale = SCREEN_H/(float)vita->height; + float w = vita->width * scale; + vita2d_draw_texture_scale(vita->texture, + SCREEN_W/2.0f - w/2.0f, 0.0f, + scale, scale); + } + else + { + float scale = SCREEN_W/(float)vita->width; + float h = vita->height * scale; + vita2d_draw_texture_scale(vita->texture, + 0.0f, SCREEN_H/2.0f - h/2.0f, + scale, scale); + } + } if (vita->menu.active && vita->menu.frame) - vita2d_draw_texture_scale(vita->menu.frame, - SCREEN_W/2 - (vita->menu.width/2)*2, - SCREEN_H/2 - (vita->menu.height/2)*2, - 2.0f, 2.0f); + { + if (vita->fullscreen) + vita2d_draw_texture_scale(vita->menu.frame, + 0, 0, + SCREEN_W/(float)vita->menu.width, + SCREEN_H/(float)vita->menu.height); + else + if (vita->menu.width > vita->menu.height) + { + float scale = SCREEN_H/(float)vita->menu.height; + float w = vita->menu.width * scale; + vita2d_draw_texture_scale(vita->menu.frame, + SCREEN_W/2.0f - w/2.0f, 0.0f, + scale, scale); + } + else + { + float scale = SCREEN_W/(float)vita->menu.width; + float h = vita->menu.height * scale; + vita2d_draw_texture_scale(vita->menu.frame, + 0.0f, SCREEN_H/2.0f - h/2.0f, + scale, scale); + } + } vita2d_end_drawing(); vita2d_swap_buffers(); @@ -336,11 +378,10 @@ static void vita_set_texture_frame(void *data, const void *frame, bool rgb32, static void vita_set_texture_enable(void *data, bool state, bool full_screen) { - vita_video_t *vid = (vita_video_t*)data; - + vita_video_t *vita = (vita_video_t*)data; (void)full_screen; - vid->menu.active = state; + vita->menu.active = state; } static const video_poke_interface_t vita_poke_interface = { From 56af52a268ed0de78c969273a328bac1f738dc32 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Mon, 31 Aug 2015 21:37:50 +0200 Subject: [PATCH 482/822] (Vita) Fix spaces --- gfx/drivers/vita2d_gfx.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index bcbe00488e..b4ad4b6952 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -160,16 +160,16 @@ static bool vita2d_gfx_frame(void *data, const void *frame, else if (vita->width > vita->height) { - float scale = SCREEN_H/(float)vita->height; - float w = vita->width * scale; + float scale = SCREEN_H/(float)vita->height; + float w = vita->width * scale; vita2d_draw_texture_scale(vita->texture, SCREEN_W/2.0f - w/2.0f, 0.0f, scale, scale); } else { - float scale = SCREEN_W/(float)vita->width; - float h = vita->height * scale; + float scale = SCREEN_W/(float)vita->width; + float h = vita->height * scale; vita2d_draw_texture_scale(vita->texture, 0.0f, SCREEN_H/2.0f - h/2.0f, scale, scale); @@ -186,16 +186,16 @@ static bool vita2d_gfx_frame(void *data, const void *frame, else if (vita->menu.width > vita->menu.height) { - float scale = SCREEN_H/(float)vita->menu.height; - float w = vita->menu.width * scale; + float scale = SCREEN_H/(float)vita->menu.height; + float w = vita->menu.width * scale; vita2d_draw_texture_scale(vita->menu.frame, SCREEN_W/2.0f - w/2.0f, 0.0f, scale, scale); } else { - float scale = SCREEN_W/(float)vita->menu.width; - float h = vita->menu.height * scale; + float scale = SCREEN_W/(float)vita->menu.width; + float h = vita->menu.height * scale; vita2d_draw_texture_scale(vita->menu.frame, 0.0f, SCREEN_H/2.0f - h/2.0f, scale, scale); From dbb91c85e6a7bdedfe0120d9284347e8bf591914 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Mon, 31 Aug 2015 21:41:45 +0200 Subject: [PATCH 483/822] (Vita) Check vita->texture before freeing it --- gfx/drivers/vita2d_gfx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index b4ad4b6952..c6f358a254 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -251,7 +251,8 @@ static void vita2d_gfx_free(void *data) if (vita->menu.frame) vita2d_free_texture(vita->menu.frame); - vita2d_free_texture(vita->texture); + if (vita->texture) + vita2d_free_texture(vita->texture); vita2d_fini(); } From d7aebbd40eb3ada036c4cb6f541cd2baff8d1af1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 31 Aug 2015 22:04:21 +0200 Subject: [PATCH 484/822] Update --- libretro-common/file/file_path.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index 71b4e189cc..74eab7b322 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -40,7 +40,9 @@ #include #include +#ifdef HAVE_COMPRESSION #include +#endif #if defined(__CELLOS_LV2__) From 5d920aa0457b0a8e50c49105c993081cfc1d31a2 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Tue, 1 Sep 2015 01:35:29 +0200 Subject: [PATCH 485/822] (Vita) vita2d_gfx_free: Set textures to NULL --- frontend/drivers/platform_vita.c | 2 +- gfx/drivers/vita2d_gfx.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/frontend/drivers/platform_vita.c b/frontend/drivers/platform_vita.c index 064a9d3437..7aeeab94e0 100644 --- a/frontend/drivers/platform_vita.c +++ b/frontend/drivers/platform_vita.c @@ -56,7 +56,7 @@ static void frontend_vita_get_environment_settings(int *argc, char *argv[], strlcpy(retroarch_path, "cache0:/retroarch/", sizeof(retroarch_path)); - fill_pathname_basedir(g_defaults.dir.port, retroarch_path, sizeof(g_defaults.dir.port)); + strlcpy(g_defaults.dir.port, retroarch_path, sizeof(g_defaults.dir.port)); RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index c6f358a254..1818fb1410 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -67,7 +67,10 @@ static void *vita2d_gfx_init(const video_info_t *video, if (!vita) return NULL; - RARCH_LOG("vita2d_gfx_init: w: %i h: %i\n", video->width, video->height); + RARCH_LOG("vita2d_gfx_init: w: %i h: %i\n", video->width, video->height); + RARCH_LOG("RARCH_SCALE_BASE: %i input_scale: %i = %i\n", + RARCH_SCALE_BASE, video->input_scale, RARCH_SCALE_BASE * video->input_scale); + vita2d_init(); vita2d_set_clear_color(RGBA8(0x40, 0x40, 0x40, 0xFF)); @@ -150,7 +153,7 @@ static bool vita2d_gfx_frame(void *data, const void *frame, vita2d_start_drawing(); vita2d_clear_screen(); - if (frame && vita->texture) + if (vita->texture) { if (vita->fullscreen) vita2d_draw_texture_scale(vita->texture, @@ -248,11 +251,19 @@ static void vita2d_gfx_free(void *data) { vita_video_t *vita = (vita_video_t *)data; + RARCH_LOG("vita2d_gfx_free()\n"); + if (vita->menu.frame) + { vita2d_free_texture(vita->menu.frame); + vita->menu.frame = NULL; + } if (vita->texture) + { vita2d_free_texture(vita->texture); + vita->texture = NULL; + } vita2d_fini(); } From 2b9777e6c23fb9169c4420fb71f0d9b6bd66b928 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 01:53:25 +0200 Subject: [PATCH 486/822] (memmap.c) Cleanup --- libretro-common/memmap/memmap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index 4b413c1449..74ee917e20 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -60,7 +60,7 @@ # define DWORD_LO(x) (x) #endif -void *mmap(void *start, size_t length, int prot, int flags, int fd, size_t offset) +void* mmap(void *addr, size_t len, int prot, int flags, int fildes, size_t offset) { uint32_t flProtect, dwDesiredAccess; off_t end; @@ -139,14 +139,14 @@ int mprotect(void *addr, size_t len, int prot) } #elif !defined(HAVE_MMAN) -void* mmap(void *desired_addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off) +void* mmap(void *addr, size_t len, int prot, int flags, int fildes, size_t offset) { return malloc(len); } -void munmap(void *base_addr, size_t len) +void munmap(void *addr, size_t len) { - free(base_addr); + free(addr); } int mprotect(void *addr, size_t len, int prot) From 948286e8e09ae6b7758bcda8f5f31010ecb08cb9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 01:54:44 +0200 Subject: [PATCH 487/822] Fix warnings --- input/input_autodetect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 529ac8cfa6..d5435fd3e3 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -232,7 +232,7 @@ static bool input_autoconfigure_joypad_from_conf_dir( else { RARCH_LOG("Autodetect: no profiles found for %s (%d/%d)", params->name, params->vid, params->pid); - snprintf(msg, sizeof(msg), "%s (%ld/%ld) not configured", params->name, params->vid, params->pid); + snprintf(msg, sizeof(msg), "%s (%ld/%ld) not configured", params->name, (long)params->vid, (long)params->pid); rarch_main_msg_queue_push(msg, 0, 60, false); ret = 0; } From 4e5bf899c1074c34e825eb38157116ad997dcef5 Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 31 Aug 2015 19:28:14 -0500 Subject: [PATCH 488/822] add test project for QT --- ui/drivers/qt/wimp-test/.gitignore | 73 ++++ ui/drivers/qt/wimp-test/main.cpp | 18 + ui/drivers/qt/wimp-test/wimp-test.pro | 20 ++ ui/drivers/qt/wimp/build/Makefile | 349 ++++++++++++++++++ ui/drivers/qt/wimp/build/Makefile.Debug | 254 ++++++++++++++ ui/drivers/qt/wimp/build/Makefile.Release | 254 ++++++++++++++ ui/drivers/qt/wimp/wimp.cpp | 12 +- ui/drivers/qt/wimp/wimp.h | 1 - ui/drivers/qt/wimp/wimp.pro | 4 + ui/drivers/qt/wrapper/build/Makefile | 351 +++++++++++++++++++ ui/drivers/qt/wrapper/build/Makefile.Debug | 135 +++++++ ui/drivers/qt/wrapper/build/Makefile.Release | 135 +++++++ ui/drivers/qt/wrapper/wrapper.pro | 8 +- 13 files changed, 1609 insertions(+), 5 deletions(-) create mode 100644 ui/drivers/qt/wimp-test/.gitignore create mode 100644 ui/drivers/qt/wimp-test/main.cpp create mode 100644 ui/drivers/qt/wimp-test/wimp-test.pro create mode 100644 ui/drivers/qt/wimp/build/Makefile create mode 100644 ui/drivers/qt/wimp/build/Makefile.Debug create mode 100644 ui/drivers/qt/wimp/build/Makefile.Release create mode 100644 ui/drivers/qt/wrapper/build/Makefile create mode 100644 ui/drivers/qt/wrapper/build/Makefile.Debug create mode 100644 ui/drivers/qt/wrapper/build/Makefile.Release diff --git a/ui/drivers/qt/wimp-test/.gitignore b/ui/drivers/qt/wimp-test/.gitignore new file mode 100644 index 0000000000..eaa888734b --- /dev/null +++ b/ui/drivers/qt/wimp-test/.gitignore @@ -0,0 +1,73 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + + diff --git a/ui/drivers/qt/wimp-test/main.cpp b/ui/drivers/qt/wimp-test/main.cpp new file mode 100644 index 0000000000..af4d77bd28 --- /dev/null +++ b/ui/drivers/qt/wimp-test/main.cpp @@ -0,0 +1,18 @@ +#include +#include "../wrapper/wrapper.h" +#include "../wimp/wimp.h" + +int main(int argc, char *argv[]) +{ + struct Wimp* wimp; + char* args[] = {""}; + + qDebug() << "C++ Style Debug Message"; + + wimp = ctrWimp(0, argv); + if(wimp) + CreateMainWindow(wimp); + + return 1; +} + diff --git a/ui/drivers/qt/wimp-test/wimp-test.pro b/ui/drivers/qt/wimp-test/wimp-test.pro new file mode 100644 index 0000000000..ee2e70b720 --- /dev/null +++ b/ui/drivers/qt/wimp-test/wimp-test.pro @@ -0,0 +1,20 @@ +TARGET = wimp-test +CONFIG += console + + +SOURCES += main.cpp + +win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../wimp/build/release/ -lwimp.dll +else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../wimp/build/debug/ -lwimp.dll +else:unix: LIBS += -L$$PWD/../wimp/build/ -lwimp.dll + +INCLUDEPATH += $$PWD/../wimp/build/release +DEPENDPATH += $$PWD/../wimp/build/release + + +win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../wrapper/build/release/ -lwrapper.dll +else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../wrapper/build/debug/ -lwrapper.dll +else:unix: LIBS += -L$$PWD/../wrapper/build/ -lwrapper.dll + +INCLUDEPATH += $$PWD/../wrapper/build/release +DEPENDPATH += $$PWD/../wrapper/build/release diff --git a/ui/drivers/qt/wimp/build/Makefile b/ui/drivers/qt/wimp/build/Makefile new file mode 100644 index 0000000000..d6d934d25e --- /dev/null +++ b/ui/drivers/qt/wimp/build/Makefile @@ -0,0 +1,349 @@ +############################################################################# +# Makefile for building: wimp +# Generated by qmake (3.0) (Qt 5.5.0) +# Project: ../wimp.pro +# Template: lib +# Command: E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -spec win32-g++ CONFIG+=release -o Makefile ../wimp.pro +############################################################################# + +MAKEFILE = Makefile + +first: release +install: release-install +uninstall: release-uninstall +QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = cp -f +COPY_DIR = cp -f -R +INSTALL_FILE = cp -f +INSTALL_PROGRAM = cp -f +INSTALL_DIR = cp -f -R +DEL_FILE = rm -f +SYMLINK = $(QMAKE) -install ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +SUBTARGETS = \ + release \ + debug + + +release: FORCE + $(MAKE) -f $(MAKEFILE).Release +release-make_first: FORCE + $(MAKE) -f $(MAKEFILE).Release +release-all: FORCE + $(MAKE) -f $(MAKEFILE).Release all +release-clean: FORCE + $(MAKE) -f $(MAKEFILE).Release clean +release-distclean: FORCE + $(MAKE) -f $(MAKEFILE).Release distclean +release-install: FORCE + $(MAKE) -f $(MAKEFILE).Release install +release-uninstall: FORCE + $(MAKE) -f $(MAKEFILE).Release uninstall +debug: FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-make_first: FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-all: FORCE + $(MAKE) -f $(MAKEFILE).Debug all +debug-clean: FORCE + $(MAKE) -f $(MAKEFILE).Debug clean +debug-distclean: FORCE + $(MAKE) -f $(MAKEFILE).Debug distclean +debug-install: FORCE + $(MAKE) -f $(MAKEFILE).Debug install +debug-uninstall: FORCE + $(MAKE) -f $(MAKEFILE).Debug uninstall + +Makefile: ../wimp.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/windows.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf \ + ../wimp.pro + $(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile ../wimp.pro +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/windows.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf: +../wimp.pro: +qmake: FORCE + @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile ../wimp.pro + +qmake_all: FORCE + +make_first: release-make_first debug-make_first FORCE +all: release-all debug-all FORCE +clean: release-clean debug-clean FORCE + -$(DEL_FILE) libwimp.dll.a +distclean: release-distclean debug-distclean FORCE + -$(DEL_FILE) Makefile + +release-mocclean: + $(MAKE) -f $(MAKEFILE).Release mocclean +debug-mocclean: + $(MAKE) -f $(MAKEFILE).Debug mocclean +mocclean: release-mocclean debug-mocclean + +release-mocables: + $(MAKE) -f $(MAKEFILE).Release mocables +debug-mocables: + $(MAKE) -f $(MAKEFILE).Debug mocables +mocables: release-mocables debug-mocables + +check: first +FORCE: + +$(MAKEFILE).Release: Makefile +$(MAKEFILE).Debug: Makefile diff --git a/ui/drivers/qt/wimp/build/Makefile.Debug b/ui/drivers/qt/wimp/build/Makefile.Debug new file mode 100644 index 0000000000..56ab164669 --- /dev/null +++ b/ui/drivers/qt/wimp/build/Makefile.Debug @@ -0,0 +1,254 @@ +############################################################################# +# Makefile for building: wimp +# Generated by qmake (3.0) (Qt 5.5.0) +# Project: ../wimp.pro +# Template: lib +############################################################################# + +MAKEFILE = Makefile.Debug + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DUNICODE -DWIMP_LIBRARY -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB +CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -Wall -Wextra $(DEFINES) +CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) +INCPATH = -I../../wimp -I. -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Idebug -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ +LINKER = g++ +LFLAGS = -shared -Wl,-subsystem,windows -mthreads -Wl,--out-implib,debug/libwimp.dll.a +LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -lQt5Quickd -lQt5Widgetsd -lQt5Guid -lQt5Qmld -lQt5Networkd -lQt5Cored +QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe +IDC = idc +IDL = midl +ZIP = +DEF_FILE = +RES_FILE = +COPY = cp -f +SED = sed +COPY_FILE = cp -f +COPY_DIR = cp -f -R +DEL_FILE = rm -f +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +INSTALL_FILE = cp -f +INSTALL_PROGRAM = cp -f +INSTALL_DIR = cp -f -R + +####### Output directory + +OBJECTS_DIR = debug/ + +####### Files + +SOURCES = ../wimp.cpp debug/qrc_qml.cpp \ + debug/moc_wimp.cpp +OBJECTS = debug/wimp.o \ + debug/qrc_qml.o \ + debug/moc_wimp.o + +DIST = ../wimp.h \ + ../wimp_global.h ../wimp.cpp +QMAKE_TARGET = wimp +DESTDIR = debug/ #avoid trailing-slash linebreak +TARGET = wimp.dll +DESTDIR_TARGET = debug/wimp.dll + +####### Implicit rules + +.SUFFIXES: .cpp .cc .cxx .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +first: all +all: Makefile.Debug $(DESTDIR_TARGET) + +$(DESTDIR_TARGET): $(OBJECTS) + $(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS) + +qmake: FORCE + @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile.Debug ../wimp.pro + +qmake_all: FORCE + +dist: + $(ZIP) wimp.zip $(SOURCES) $(DIST) ../../wimp.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/windows.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wimp.pro ../qml.qrc NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES + +clean: compiler_clean + -$(DEL_FILE) debug/wimp.o debug/qrc_qml.o debug/moc_wimp.o + -$(DEL_FILE) debug/libwimp.dll.a + +distclean: clean + -$(DEL_FILE) $(DESTDIR_TARGET) + -$(DEL_FILE) Makefile.Debug + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compiler_no_pch_compiler_make_all: +compiler_no_pch_compiler_clean: +compiler_rcc_make_all: debug/qrc_qml.cpp +compiler_rcc_clean: + -$(DEL_FILE) debug/qrc_qml.cpp +debug/qrc_qml.cpp: ../qml.qrc \ + ../main.qml + /E/Working/Development/Tools/msys/mingw64/bin/rcc.exe -name qml ../qml.qrc -o debug/qrc_qml.cpp + +compiler_moc_header_make_all: debug/moc_wimp.cpp +compiler_moc_header_clean: + -$(DEL_FILE) debug/moc_wimp.cpp +debug/moc_wimp.cpp: ../wimp_global.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ + ../../../../ui_companion_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h \ + ../wimp.h + /E/Working/Development/Tools/msys/mingw64/bin/moc.exe $(DEFINES) -D__GNUC__ -DWIN32 -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wimp -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -I. -IE:/Working/Development/Tools/msys/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include -IE:/Working/Development/Tools/msys/mingw64/include -IE:/Working/Development/Tools/msys/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed -IE:/Working/Development/Tools/msys/mingw64/x86_64-w64-mingw32/include -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0 -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0/x86_64-w64-mingw32 -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0/backward -IC:/building/msys64/mingw64/include -IC:/building/msys64/mingw64/x86_64-w64-mingw32/include ../wimp.h -o debug/moc_wimp.cpp + +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_rcc_clean compiler_moc_header_clean + + + +####### Compile + +debug/wimp.o: ../wimp.cpp ../wimp.h \ + ../wimp_global.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ + ../../../../ui_companion_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/wimp.o ../wimp.cpp + +debug/qrc_qml.o: debug/qrc_qml.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/qrc_qml.o debug/qrc_qml.cpp + +debug/moc_wimp.o: debug/moc_wimp.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/moc_wimp.o debug/moc_wimp.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/ui/drivers/qt/wimp/build/Makefile.Release b/ui/drivers/qt/wimp/build/Makefile.Release new file mode 100644 index 0000000000..b054737c93 --- /dev/null +++ b/ui/drivers/qt/wimp/build/Makefile.Release @@ -0,0 +1,254 @@ +############################################################################# +# Makefile for building: wimp +# Generated by qmake (3.0) (Qt 5.5.0) +# Project: ../wimp.pro +# Template: lib +############################################################################# + +MAKEFILE = Makefile.Release + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DUNICODE -DWIMP_LIBRARY -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB +CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -Wall -Wextra $(DEFINES) +CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) +INCPATH = -I../../wimp -I. -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Irelease -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ +LINKER = g++ +LFLAGS = -Wl,-s -shared -Wl,-subsystem,windows -mthreads -Wl,--out-implib,release/libwimp.dll.a +LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core +QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe +IDC = idc +IDL = midl +ZIP = +DEF_FILE = +RES_FILE = +COPY = cp -f +SED = sed +COPY_FILE = cp -f +COPY_DIR = cp -f -R +DEL_FILE = rm -f +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +INSTALL_FILE = cp -f +INSTALL_PROGRAM = cp -f +INSTALL_DIR = cp -f -R + +####### Output directory + +OBJECTS_DIR = release/ + +####### Files + +SOURCES = ../wimp.cpp release/qrc_qml.cpp \ + release/moc_wimp.cpp +OBJECTS = release/wimp.o \ + release/qrc_qml.o \ + release/moc_wimp.o + +DIST = ../wimp.h \ + ../wimp_global.h ../wimp.cpp +QMAKE_TARGET = wimp +DESTDIR = release/ #avoid trailing-slash linebreak +TARGET = wimp.dll +DESTDIR_TARGET = release/wimp.dll + +####### Implicit rules + +.SUFFIXES: .cpp .cc .cxx .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +first: all +all: Makefile.Release $(DESTDIR_TARGET) + +$(DESTDIR_TARGET): $(OBJECTS) + $(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS) + +qmake: FORCE + @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile.Release ../wimp.pro + +qmake_all: FORCE + +dist: + $(ZIP) wimp.zip $(SOURCES) $(DIST) ../../wimp.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/windows.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wimp.pro ../qml.qrc NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES + +clean: compiler_clean + -$(DEL_FILE) release/wimp.o release/qrc_qml.o release/moc_wimp.o + -$(DEL_FILE) release/libwimp.dll.a + +distclean: clean + -$(DEL_FILE) $(DESTDIR_TARGET) + -$(DEL_FILE) Makefile.Release + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compiler_no_pch_compiler_make_all: +compiler_no_pch_compiler_clean: +compiler_rcc_make_all: release/qrc_qml.cpp +compiler_rcc_clean: + -$(DEL_FILE) release/qrc_qml.cpp +release/qrc_qml.cpp: ../qml.qrc \ + ../main.qml + /E/Working/Development/Tools/msys/mingw64/bin/rcc.exe -name qml ../qml.qrc -o release/qrc_qml.cpp + +compiler_moc_header_make_all: release/moc_wimp.cpp +compiler_moc_header_clean: + -$(DEL_FILE) release/moc_wimp.cpp +release/moc_wimp.cpp: ../wimp_global.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ + ../../../../ui_companion_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h \ + ../wimp.h + /E/Working/Development/Tools/msys/mingw64/bin/moc.exe $(DEFINES) -D__GNUC__ -DWIN32 -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wimp -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -I. -IE:/Working/Development/Tools/msys/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include -IE:/Working/Development/Tools/msys/mingw64/include -IE:/Working/Development/Tools/msys/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed -IE:/Working/Development/Tools/msys/mingw64/x86_64-w64-mingw32/include -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0 -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0/x86_64-w64-mingw32 -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0/backward -IC:/building/msys64/mingw64/include -IC:/building/msys64/mingw64/x86_64-w64-mingw32/include ../wimp.h -o release/moc_wimp.cpp + +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_rcc_clean compiler_moc_header_clean + + + +####### Compile + +release/wimp.o: ../wimp.cpp ../wimp.h \ + ../wimp_global.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ + ../../../../ui_companion_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/wimp.o ../wimp.cpp + +release/qrc_qml.o: release/qrc_qml.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/qrc_qml.o release/qrc_qml.cpp + +release/moc_wimp.o: release/moc_wimp.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/moc_wimp.o release/moc_wimp.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/ui/drivers/qt/wimp/wimp.cpp b/ui/drivers/qt/wimp/wimp.cpp index 9e7f918fe7..e927bb71f5 100644 --- a/ui/drivers/qt/wimp/wimp.cpp +++ b/ui/drivers/qt/wimp/wimp.cpp @@ -20,8 +20,11 @@ #include #include +#include "configuration.h" + QObject *topLevel; QQuickWindow *window; +static settings_t *g_config; int Wimp::CreateMainWindow() { @@ -30,11 +33,18 @@ int Wimp::CreateMainWindow() topLevel = engine.rootObjects().value(0); window = qobject_cast(topLevel); - SetTitle("Hello QT"); + SetTitle("RetroArch"); + return this->exec(); } + void Wimp::SetTitle(char* title) { window->setTitle(title); } + +settings_t *config_get_ptr(void) +{ + return g_config; +} diff --git a/ui/drivers/qt/wimp/wimp.h b/ui/drivers/qt/wimp/wimp.h index aa30b0b7f9..9f86e8b509 100644 --- a/ui/drivers/qt/wimp/wimp.h +++ b/ui/drivers/qt/wimp/wimp.h @@ -21,7 +21,6 @@ #include #include - class WIMPSHARED_EXPORT Wimp : public QGuiApplication { Q_OBJECT diff --git a/ui/drivers/qt/wimp/wimp.pro b/ui/drivers/qt/wimp/wimp.pro index fa24d3e448..5dbf8f3b93 100644 --- a/ui/drivers/qt/wimp/wimp.pro +++ b/ui/drivers/qt/wimp/wimp.pro @@ -20,3 +20,7 @@ HEADERS +=\ RESOURCES += \ qml.qrc + + +INCLUDEPATH += $$PWD/../../../../ +INCLUDEPATH += $$PWD/../../../../libretro-common/include/ diff --git a/ui/drivers/qt/wrapper/build/Makefile b/ui/drivers/qt/wrapper/build/Makefile new file mode 100644 index 0000000000..fe1aeb44d3 --- /dev/null +++ b/ui/drivers/qt/wrapper/build/Makefile @@ -0,0 +1,351 @@ +############################################################################# +# Makefile for building: wrapper +# Generated by qmake (3.0) (Qt 5.5.0) +# Project: ../wrapper.pro +# Template: lib +# Command: E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -spec win32-g++ CONFIG+=release -o Makefile ../wrapper.pro +############################################################################# + +MAKEFILE = Makefile + +first: release +install: release-install +uninstall: release-uninstall +QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = cp -f +COPY_DIR = cp -f -R +INSTALL_FILE = cp -f +INSTALL_PROGRAM = cp -f +INSTALL_DIR = cp -f -R +DEL_FILE = rm -f +SYMLINK = $(QMAKE) -install ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +SUBTARGETS = \ + release \ + debug + + +release: FORCE + $(MAKE) -f $(MAKEFILE).Release +release-make_first: FORCE + $(MAKE) -f $(MAKEFILE).Release +release-all: FORCE + $(MAKE) -f $(MAKEFILE).Release all +release-clean: FORCE + $(MAKE) -f $(MAKEFILE).Release clean +release-distclean: FORCE + $(MAKE) -f $(MAKEFILE).Release distclean +release-install: FORCE + $(MAKE) -f $(MAKEFILE).Release install +release-uninstall: FORCE + $(MAKE) -f $(MAKEFILE).Release uninstall +debug: FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-make_first: FORCE + $(MAKE) -f $(MAKEFILE).Debug +debug-all: FORCE + $(MAKE) -f $(MAKEFILE).Debug all +debug-clean: FORCE + $(MAKE) -f $(MAKEFILE).Debug clean +debug-distclean: FORCE + $(MAKE) -f $(MAKEFILE).Debug distclean +debug-install: FORCE + $(MAKE) -f $(MAKEFILE).Debug install +debug-uninstall: FORCE + $(MAKE) -f $(MAKEFILE).Debug uninstall + +Makefile: ../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf \ + ../deployment.pri \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf \ + E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf \ + ../wrapper.pro + $(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile ../wrapper.pro +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf: +../deployment.pri: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf: +E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf: +../wrapper.pro: +qmake: FORCE + @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile ../wrapper.pro + +qmake_all: FORCE + +make_first: release-make_first debug-make_first FORCE +all: release-all debug-all FORCE +clean: release-clean debug-clean FORCE + -$(DEL_FILE) libwrapper.dll.a +distclean: release-distclean debug-distclean FORCE + -$(DEL_FILE) Makefile + +release-mocclean: + $(MAKE) -f $(MAKEFILE).Release mocclean +debug-mocclean: + $(MAKE) -f $(MAKEFILE).Debug mocclean +mocclean: release-mocclean debug-mocclean + +release-mocables: + $(MAKE) -f $(MAKEFILE).Release mocables +debug-mocables: + $(MAKE) -f $(MAKEFILE).Debug mocables +mocables: release-mocables debug-mocables + +check: first +FORCE: + +$(MAKEFILE).Release: Makefile +$(MAKEFILE).Debug: Makefile diff --git a/ui/drivers/qt/wrapper/build/Makefile.Debug b/ui/drivers/qt/wrapper/build/Makefile.Debug new file mode 100644 index 0000000000..6e8a286825 --- /dev/null +++ b/ui/drivers/qt/wrapper/build/Makefile.Debug @@ -0,0 +1,135 @@ +############################################################################# +# Makefile for building: wrapper +# Generated by qmake (3.0) (Qt 5.5.0) +# Project: ../wrapper.pro +# Template: lib +############################################################################# + +MAKEFILE = Makefile.Debug + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DUNICODE -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB +CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -Wall -Wextra $(DEFINES) +CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) +INCPATH = -I../../wrapper -I. -I../../wimp/build/release -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Idebug -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ +LINKER = g++ +LFLAGS = -shared -Wl,-subsystem,console -mthreads -Wl,--out-implib,debug/libwrapper.dll.a +LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -LD:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wrapper/../wimp/build/debug/ -lwimp.dll -lQt5Quickd -lQt5Widgetsd -lQt5Guid -lQt5Qmld -lQt5Networkd -lQt5Cored +QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe +IDC = idc +IDL = midl +ZIP = +DEF_FILE = +RES_FILE = +COPY = cp -f +SED = sed +COPY_FILE = cp -f +COPY_DIR = cp -f -R +DEL_FILE = rm -f +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +INSTALL_FILE = cp -f +INSTALL_PROGRAM = cp -f +INSTALL_DIR = cp -f -R + +####### Output directory + +OBJECTS_DIR = debug/ + +####### Files + +SOURCES = ../wrapper.cpp +OBJECTS = debug/wrapper.o + +DIST = ../wrapper.h ../wrapper.cpp +QMAKE_TARGET = wrapper +DESTDIR = debug/ #avoid trailing-slash linebreak +TARGET = wrapper.dll +DESTDIR_TARGET = debug/wrapper.dll + +####### Implicit rules + +.SUFFIXES: .cpp .cc .cxx .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +first: all +all: Makefile.Debug $(DESTDIR_TARGET) + +$(DESTDIR_TARGET): $(OBJECTS) + $(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS) + +qmake: FORCE + @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile.Debug ../wrapper.pro + +qmake_all: FORCE + +dist: + $(ZIP) wrapper.zip $(SOURCES) $(DIST) ../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf ../deployment.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wrapper.pro NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES + +clean: compiler_clean + -$(DEL_FILE) debug/wrapper.o + -$(DEL_FILE) debug/libwrapper.dll.a + +distclean: clean + -$(DEL_FILE) $(DESTDIR_TARGET) + -$(DEL_FILE) Makefile.Debug + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compiler_no_pch_compiler_make_all: +compiler_no_pch_compiler_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: +compiler_moc_header_clean: +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + + + +####### Compile + +debug/wrapper.o: ../wrapper.cpp ../../wimp/wimp.h \ + ../../wimp/wimp_global.h \ + ../wrapper.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/wrapper.o ../wrapper.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/ui/drivers/qt/wrapper/build/Makefile.Release b/ui/drivers/qt/wrapper/build/Makefile.Release new file mode 100644 index 0000000000..0a93739ee0 --- /dev/null +++ b/ui/drivers/qt/wrapper/build/Makefile.Release @@ -0,0 +1,135 @@ +############################################################################# +# Makefile for building: wrapper +# Generated by qmake (3.0) (Qt 5.5.0) +# Project: ../wrapper.pro +# Template: lib +############################################################################# + +MAKEFILE = Makefile.Release + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DUNICODE -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB +CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -Wall -Wextra $(DEFINES) +CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) +INCPATH = -I../../wrapper -I. -I../../wimp/build/release -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Irelease -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ +LINKER = g++ +LFLAGS = -Wl,-s -shared -Wl,-subsystem,console -mthreads -Wl,--out-implib,release/libwrapper.dll.a +LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -LD:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wrapper/../wimp/build/release/ -lwimp.dll -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core +QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe +IDC = idc +IDL = midl +ZIP = +DEF_FILE = +RES_FILE = +COPY = cp -f +SED = sed +COPY_FILE = cp -f +COPY_DIR = cp -f -R +DEL_FILE = rm -f +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +INSTALL_FILE = cp -f +INSTALL_PROGRAM = cp -f +INSTALL_DIR = cp -f -R + +####### Output directory + +OBJECTS_DIR = release/ + +####### Files + +SOURCES = ../wrapper.cpp +OBJECTS = release/wrapper.o + +DIST = ../wrapper.h ../wrapper.cpp +QMAKE_TARGET = wrapper +DESTDIR = release/ #avoid trailing-slash linebreak +TARGET = wrapper.dll +DESTDIR_TARGET = release/wrapper.dll + +####### Implicit rules + +.SUFFIXES: .cpp .cc .cxx .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +first: all +all: Makefile.Release $(DESTDIR_TARGET) + +$(DESTDIR_TARGET): $(OBJECTS) + $(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS) + +qmake: FORCE + @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile.Release ../wrapper.pro + +qmake_all: FORCE + +dist: + $(ZIP) wrapper.zip $(SOURCES) $(DIST) ../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf ../deployment.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wrapper.pro NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES + +clean: compiler_clean + -$(DEL_FILE) release/wrapper.o + -$(DEL_FILE) release/libwrapper.dll.a + +distclean: clean + -$(DEL_FILE) $(DESTDIR_TARGET) + -$(DEL_FILE) Makefile.Release + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compiler_no_pch_compiler_make_all: +compiler_no_pch_compiler_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: +compiler_moc_header_clean: +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + + + +####### Compile + +release/wrapper.o: ../wrapper.cpp ../../wimp/wimp.h \ + ../../wimp/wimp_global.h \ + ../wrapper.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/wrapper.o ../wrapper.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/ui/drivers/qt/wrapper/wrapper.pro b/ui/drivers/qt/wrapper/wrapper.pro index d8b8b8c210..3a298ef180 100644 --- a/ui/drivers/qt/wrapper/wrapper.pro +++ b/ui/drivers/qt/wrapper/wrapper.pro @@ -14,7 +14,9 @@ HEADERS += \ wrapper.h -win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../release -lwimp +win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../wimp/build/release/ -lwimp.dll +else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../wimp/build/debug/ -lwimp.dll +else:unix: LIBS += -L$$PWD/../wimp/build/ -lwimp.dll -win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../release/libwimp.dll.a -else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../release/wimp.lib +INCLUDEPATH += $$PWD/../wimp/build/release +DEPENDPATH += $$PWD/../wimp/build/release From 9480bfbd9edba3c7f0db40c158c70557db25836b Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 31 Aug 2015 19:52:45 -0500 Subject: [PATCH 489/822] Add QT to the configure script --- qb/config.libs.sh | 2 +- qb/config.params.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 510c30276b..8f6205469b 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -404,6 +404,6 @@ add_define_make OS "$OS" # Creates config.mk and config.h. add_define_make GLOBAL_CONFIG_DIR "$GLOBAL_CONFIG_DIR" -VARS="RGUI LAKKA GLUI XMB ALSA OSS OSS_BSD OSS_LIB AL RSOUND ROAR JACK COREAUDIO CORETEXT PULSE SDL SDL2 D3D9 DINPUT LIBUSB XINPUT DSOUND XAUDIO OPENGL EXYNOS DISPMANX SUNXI OMAP GLES GLES3 VG EGL KMS GBM DRM DYLIB GETOPT_LONG THREADS CG LIBXML2 ZLIB DYNAMIC FFMPEG AVCODEC AVFORMAT AVUTIL SWSCALE FREETYPE STB_FONT XKBCOMMON XVIDEO X11 XEXT XF86VM XINERAMA WAYLAND MALI_FBDEV VIVANTE_FBDEV NETWORKING NETPLAY NETWORK_CMD STDIN_CMD COMMAND SOCKET_LEGACY FBO STRL STRCASESTR MMAP PYTHON FFMPEG_ALLOC_CONTEXT3 FFMPEG_AVCODEC_OPEN2 FFMPEG_AVIO_OPEN FFMPEG_AVFORMAT_WRITE_HEADER FFMPEG_AVFORMAT_NEW_STREAM FFMPEG_AVCODEC_ENCODE_AUDIO2 SWRESAMPLE FFMPEG_AVCODEC_ENCODE_VIDEO2 BSV_MOVIE VIDEOCORE NEON FLOATHARD FLOATSOFTFP UDEV V4L2 AV_CHANNEL_LAYOUT 7ZIP PARPORT IMAGEVIEWER COCOA AVFOUNDATION CORELOCATION IOHIDMANAGER LIBRETRODB" +VARS="RGUI LAKKA GLUI XMB ALSA OSS OSS_BSD OSS_LIB AL RSOUND ROAR JACK COREAUDIO CORETEXT PULSE SDL SDL2 D3D9 DINPUT LIBUSB XINPUT DSOUND XAUDIO OPENGL EXYNOS DISPMANX SUNXI OMAP GLES GLES3 VG EGL KMS GBM DRM DYLIB GETOPT_LONG THREADS CG LIBXML2 ZLIB DYNAMIC FFMPEG AVCODEC AVFORMAT AVUTIL SWSCALE FREETYPE STB_FONT XKBCOMMON XVIDEO X11 XEXT XF86VM XINERAMA WAYLAND MALI_FBDEV VIVANTE_FBDEV NETWORKING NETPLAY NETWORK_CMD STDIN_CMD COMMAND SOCKET_LEGACY FBO STRL STRCASESTR MMAP PYTHON FFMPEG_ALLOC_CONTEXT3 FFMPEG_AVCODEC_OPEN2 FFMPEG_AVIO_OPEN FFMPEG_AVFORMAT_WRITE_HEADER FFMPEG_AVFORMAT_NEW_STREAM FFMPEG_AVCODEC_ENCODE_AUDIO2 SWRESAMPLE FFMPEG_AVCODEC_ENCODE_VIDEO2 BSV_MOVIE VIDEOCORE NEON FLOATHARD FLOATSOFTFP UDEV V4L2 AV_CHANNEL_LAYOUT 7ZIP PARPORT IMAGEVIEWER COCOA AVFOUNDATION CORELOCATION IOHIDMANAGER LIBRETRODB COCOA" create_config_make config.mk $VARS create_config_header config.h $VARS diff --git a/qb/config.params.sh b/qb/config.params.sh index 67d1b96a09..9f9e12603f 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -57,3 +57,4 @@ HAVE_PRESERVE_DYLIB=no # Disable dlclose() for Valgrind support HAVE_PARPORT=auto # Parallel port joypad support HAVE_IMAGEVIEWER=yes # Built-in image viewer support. HAVE_MMAP=auto # MMAP support +HAVE_QT=yes # QT companion support From 7a7f778341dff82c40435ca51630e48fa6688b17 Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 31 Aug 2015 21:00:46 -0500 Subject: [PATCH 490/822] Try to pass settings to the QT ui driver --- ui/drivers/qt/wimp-test/main.cpp | 51 ++++++++++++++---- ui/drivers/qt/wimp/wimp.cpp | 15 +++--- ui/drivers/qt/wimp/wimp.h | 6 +++ ui/drivers/qt/wrapper/build/Makefile.Debug | 54 +++++++++++++++++++- ui/drivers/qt/wrapper/build/Makefile.Release | 54 +++++++++++++++++++- ui/drivers/qt/wrapper/wrapper.cpp | 5 ++ ui/drivers/qt/wrapper/wrapper.h | 2 + ui/drivers/qt/wrapper/wrapper.pro | 3 ++ ui/drivers/ui_qt.c | 9 ++-- 9 files changed, 170 insertions(+), 29 deletions(-) diff --git a/ui/drivers/qt/wimp-test/main.cpp b/ui/drivers/qt/wimp-test/main.cpp index af4d77bd28..868dab39bc 100644 --- a/ui/drivers/qt/wimp-test/main.cpp +++ b/ui/drivers/qt/wimp-test/main.cpp @@ -2,17 +2,46 @@ #include "../wrapper/wrapper.h" #include "../wimp/wimp.h" -int main(int argc, char *argv[]) +#include +#include +#include + +struct Wimp* t; + + +int i=0; + +void *initGui(void *arg) { - struct Wimp* wimp; - char* args[] = {""}; - - qDebug() << "C++ Style Debug Message"; - - wimp = ctrWimp(0, argv); - if(wimp) - CreateMainWindow(wimp); - - return 1; + char **arguments = (char**)arg; + t = ctrWimp(i,arguments); + CreateMainWindow(t); //-->uncomment this to open the QT gui + return 0; +} + +int main(int argc, char *argv[]) +{ + i = argc; + + pthread_t gui; + int rc; + rc=pthread_create(&gui, NULL, initGui, (void *)argv); + if(rc!=0) + { + printf("failed"); + exit(1); + } + + for(int j=0;j<100;j++) + { + Sleep(1000); + printf("test = %d\n",i); + i++; + if(j < 2) + t->SetTitle("test"); + } + + pthread_join(gui,NULL); + return 0; } diff --git a/ui/drivers/qt/wimp/wimp.cpp b/ui/drivers/qt/wimp/wimp.cpp index e927bb71f5..2ec3bbc811 100644 --- a/ui/drivers/qt/wimp/wimp.cpp +++ b/ui/drivers/qt/wimp/wimp.cpp @@ -20,11 +20,7 @@ #include #include -#include "configuration.h" - QObject *topLevel; -QQuickWindow *window; -static settings_t *g_config; int Wimp::CreateMainWindow() { @@ -33,18 +29,19 @@ int Wimp::CreateMainWindow() topLevel = engine.rootObjects().value(0); window = qobject_cast(topLevel); - SetTitle("RetroArch"); - return this->exec(); } void Wimp::SetTitle(char* title) { - window->setTitle(title); + window->setTitle(title); } -settings_t *config_get_ptr(void) +void Wimp::ConfigGetPtr(settings_t *settings) { - return g_config; + this->settings = settings; + /* Test, print the video driver name to check if we got the settings data succesfully */ + printf("Video Driver: %s\n",settings->video.driver); + fflush(stdout); } diff --git a/ui/drivers/qt/wimp/wimp.h b/ui/drivers/qt/wimp/wimp.h index 9f86e8b509..c10eb1e6f4 100644 --- a/ui/drivers/qt/wimp/wimp.h +++ b/ui/drivers/qt/wimp/wimp.h @@ -20,14 +20,20 @@ #include #include #include +#include +#include "configuration.h" class WIMPSHARED_EXPORT Wimp : public QGuiApplication { + QQuickWindow *window; + settings_t *settings; + Q_OBJECT public: Wimp(int argc, char *argv[]): QGuiApplication(argc, argv) {} int CreateMainWindow(); void SetTitle(char* title); + void ConfigGetPtr(settings_t* settings); }; diff --git a/ui/drivers/qt/wrapper/build/Makefile.Debug b/ui/drivers/qt/wrapper/build/Makefile.Debug index 6e8a286825..4b2027dfea 100644 --- a/ui/drivers/qt/wrapper/build/Makefile.Debug +++ b/ui/drivers/qt/wrapper/build/Makefile.Debug @@ -14,7 +14,7 @@ CXX = g++ DEFINES = -DUNICODE -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -Wall -Wextra $(DEFINES) CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) -INCPATH = -I../../wrapper -I. -I../../wimp/build/release -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Idebug -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ +INCPATH = -I../../wrapper -I. -I../../wimp/build/release -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Idebug -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ LINKER = g++ LFLAGS = -shared -Wl,-subsystem,console -mthreads -Wl,--out-implib,debug/libwrapper.dll.a LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -LD:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wrapper/../wimp/build/debug/ -lwimp.dll -lQt5Quickd -lQt5Widgetsd -lQt5Guid -lQt5Qmld -lQt5Networkd -lQt5Cored @@ -82,7 +82,7 @@ qmake: FORCE qmake_all: FORCE dist: - $(ZIP) wrapper.zip $(SOURCES) $(DIST) ../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf ../deployment.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wrapper.pro NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES + $(ZIP) wrapper.zip $(SOURCES) $(DIST) ../../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf ../deployment.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wrapper.pro NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES clean: compiler_clean -$(DEL_FILE) debug/wrapper.o @@ -122,6 +122,56 @@ compiler_clean: debug/wrapper.o: ../wrapper.cpp ../../wimp/wimp.h \ ../../wimp/wimp_global.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ + ../../../../ui_companion_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h \ ../wrapper.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/wrapper.o ../wrapper.cpp diff --git a/ui/drivers/qt/wrapper/build/Makefile.Release b/ui/drivers/qt/wrapper/build/Makefile.Release index 0a93739ee0..063aff3fdd 100644 --- a/ui/drivers/qt/wrapper/build/Makefile.Release +++ b/ui/drivers/qt/wrapper/build/Makefile.Release @@ -14,7 +14,7 @@ CXX = g++ DEFINES = -DUNICODE -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -Wall -Wextra $(DEFINES) CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) -INCPATH = -I../../wrapper -I. -I../../wimp/build/release -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Irelease -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ +INCPATH = -I../../wrapper -I. -I../../wimp/build/release -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Irelease -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ LINKER = g++ LFLAGS = -Wl,-s -shared -Wl,-subsystem,console -mthreads -Wl,--out-implib,release/libwrapper.dll.a LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -LD:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wrapper/../wimp/build/release/ -lwimp.dll -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core @@ -82,7 +82,7 @@ qmake: FORCE qmake_all: FORCE dist: - $(ZIP) wrapper.zip $(SOURCES) $(DIST) ../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf ../deployment.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wrapper.pro NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES + $(ZIP) wrapper.zip $(SOURCES) $(DIST) ../../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf ../deployment.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wrapper.pro NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES clean: compiler_clean -$(DEL_FILE) release/wrapper.o @@ -122,6 +122,56 @@ compiler_clean: release/wrapper.o: ../wrapper.cpp ../../wimp/wimp.h \ ../../wimp/wimp_global.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ + ../../../../ui_companion_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ + D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h \ ../wrapper.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/wrapper.o ../wrapper.cpp diff --git a/ui/drivers/qt/wrapper/wrapper.cpp b/ui/drivers/qt/wrapper/wrapper.cpp index 38fa6a17dc..e67d6aa027 100644 --- a/ui/drivers/qt/wrapper/wrapper.cpp +++ b/ui/drivers/qt/wrapper/wrapper.cpp @@ -39,6 +39,11 @@ void SetTitle(Wimp*p, char* title) return p->SetTitle(title); } +void ConfigGetPtr(Wimp*p, settings_t *settings) +{ + return p->ConfigGetPtr(settings); +} + #ifdef __cplusplus } #endif diff --git a/ui/drivers/qt/wrapper/wrapper.h b/ui/drivers/qt/wrapper/wrapper.h index 603434790d..67502d4afc 100644 --- a/ui/drivers/qt/wrapper/wrapper.h +++ b/ui/drivers/qt/wrapper/wrapper.h @@ -13,6 +13,7 @@ * If not, see . */ +#include "configuration.h" #ifndef WRAPPER_H #define WRAPPER_H @@ -27,6 +28,7 @@ Wimp* ctrWimp(int argc, char *argv[]); int CreateMainWindow(Wimp* p); void SetTitle(Wimp* p, char* title); +void ConfigGetPtr(Wimp*p, settings_t *settings); #ifdef __cplusplus } diff --git a/ui/drivers/qt/wrapper/wrapper.pro b/ui/drivers/qt/wrapper/wrapper.pro index 3a298ef180..f03fbb4dbd 100644 --- a/ui/drivers/qt/wrapper/wrapper.pro +++ b/ui/drivers/qt/wrapper/wrapper.pro @@ -20,3 +20,6 @@ else:unix: LIBS += -L$$PWD/../wimp/build/ -lwimp.dll INCLUDEPATH += $$PWD/../wimp/build/release DEPENDPATH += $$PWD/../wimp/build/release + +INCLUDEPATH += $$PWD/../../../../ +INCLUDEPATH += $$PWD/../../../../libretro-common/include/ diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c index acefd4e660..b22491c526 100644 --- a/ui/drivers/ui_qt.c +++ b/ui/drivers/ui_qt.c @@ -39,12 +39,12 @@ typedef struct ui_companion_qt static void qt_thread(void *data) { ui_companion_qt_t *handle = (ui_companion_qt_t*)data; - wimp = ctrWimp(0, NULL); + ConfigGetPtr(wimp,config_get_ptr()); if(wimp) CreateMainWindow(wimp); - return; + return; } static void ui_companion_qt_deinit(void *data) @@ -63,7 +63,6 @@ static void ui_companion_qt_deinit(void *data) static void *ui_companion_qt_init(void) { ui_companion_qt_t *handle = (ui_companion_qt_t*)calloc(1, sizeof(*handle)); - fflush(stdout); @@ -72,7 +71,7 @@ static void *ui_companion_qt_init(void) handle->lock = slock_new(); handle->thread = sthread_create(qt_thread, handle); - + if (!handle->thread) { slock_free(handle->lock); @@ -87,8 +86,8 @@ static int ui_companion_qt_iterate(void *data, unsigned action) { (void)data; (void)action; - printf("Test"); fflush(stdout); + return 0; } From a59dde6cdb5879821e6ea3aadcfd89d0d81d7b36 Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 31 Aug 2015 21:02:25 -0500 Subject: [PATCH 491/822] Disable QT for now --- Makefile.common | 2 +- qb/config.libs.sh | 2 +- qb/config.params.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.common b/Makefile.common index a6fcc81d02..26ab4b42d5 100644 --- a/Makefile.common +++ b/Makefile.common @@ -221,7 +221,7 @@ endif ifeq ($(HAVE_QT), 1) OBJ += ui/drivers/ui_qt.o # TODO/FIXME - figure out which libraries we need to link against -LIBS += -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lglu32 -lopengl32 -L./ui/drivers/qt/release -lwrapper +LIBS += -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lglu32 -lopengl32 -L./ui/drivers/qt/wrapper/build/release -lwrapper endif # LibretroDB diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 8f6205469b..978f6373f8 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -404,6 +404,6 @@ add_define_make OS "$OS" # Creates config.mk and config.h. add_define_make GLOBAL_CONFIG_DIR "$GLOBAL_CONFIG_DIR" -VARS="RGUI LAKKA GLUI XMB ALSA OSS OSS_BSD OSS_LIB AL RSOUND ROAR JACK COREAUDIO CORETEXT PULSE SDL SDL2 D3D9 DINPUT LIBUSB XINPUT DSOUND XAUDIO OPENGL EXYNOS DISPMANX SUNXI OMAP GLES GLES3 VG EGL KMS GBM DRM DYLIB GETOPT_LONG THREADS CG LIBXML2 ZLIB DYNAMIC FFMPEG AVCODEC AVFORMAT AVUTIL SWSCALE FREETYPE STB_FONT XKBCOMMON XVIDEO X11 XEXT XF86VM XINERAMA WAYLAND MALI_FBDEV VIVANTE_FBDEV NETWORKING NETPLAY NETWORK_CMD STDIN_CMD COMMAND SOCKET_LEGACY FBO STRL STRCASESTR MMAP PYTHON FFMPEG_ALLOC_CONTEXT3 FFMPEG_AVCODEC_OPEN2 FFMPEG_AVIO_OPEN FFMPEG_AVFORMAT_WRITE_HEADER FFMPEG_AVFORMAT_NEW_STREAM FFMPEG_AVCODEC_ENCODE_AUDIO2 SWRESAMPLE FFMPEG_AVCODEC_ENCODE_VIDEO2 BSV_MOVIE VIDEOCORE NEON FLOATHARD FLOATSOFTFP UDEV V4L2 AV_CHANNEL_LAYOUT 7ZIP PARPORT IMAGEVIEWER COCOA AVFOUNDATION CORELOCATION IOHIDMANAGER LIBRETRODB COCOA" +VARS="RGUI LAKKA GLUI XMB ALSA OSS OSS_BSD OSS_LIB AL RSOUND ROAR JACK COREAUDIO CORETEXT PULSE SDL SDL2 D3D9 DINPUT LIBUSB XINPUT DSOUND XAUDIO OPENGL EXYNOS DISPMANX SUNXI OMAP GLES GLES3 VG EGL KMS GBM DRM DYLIB GETOPT_LONG THREADS CG LIBXML2 ZLIB DYNAMIC FFMPEG AVCODEC AVFORMAT AVUTIL SWSCALE FREETYPE STB_FONT XKBCOMMON XVIDEO X11 XEXT XF86VM XINERAMA WAYLAND MALI_FBDEV VIVANTE_FBDEV NETWORKING NETPLAY NETWORK_CMD STDIN_CMD COMMAND SOCKET_LEGACY FBO STRL STRCASESTR MMAP PYTHON FFMPEG_ALLOC_CONTEXT3 FFMPEG_AVCODEC_OPEN2 FFMPEG_AVIO_OPEN FFMPEG_AVFORMAT_WRITE_HEADER FFMPEG_AVFORMAT_NEW_STREAM FFMPEG_AVCODEC_ENCODE_AUDIO2 SWRESAMPLE FFMPEG_AVCODEC_ENCODE_VIDEO2 BSV_MOVIE VIDEOCORE NEON FLOATHARD FLOATSOFTFP UDEV V4L2 AV_CHANNEL_LAYOUT 7ZIP PARPORT IMAGEVIEWER COCOA AVFOUNDATION CORELOCATION IOHIDMANAGER LIBRETRODB QT" create_config_make config.mk $VARS create_config_header config.h $VARS diff --git a/qb/config.params.sh b/qb/config.params.sh index 9f9e12603f..6ab90745ed 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -57,4 +57,4 @@ HAVE_PRESERVE_DYLIB=no # Disable dlclose() for Valgrind support HAVE_PARPORT=auto # Parallel port joypad support HAVE_IMAGEVIEWER=yes # Built-in image viewer support. HAVE_MMAP=auto # MMAP support -HAVE_QT=yes # QT companion support +HAVE_QT=no # QT companion support From 2f9f6d1ad5c789acc5e59b7c9b186f029b5fe299 Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 31 Aug 2015 21:18:55 -0500 Subject: [PATCH 492/822] remove unneeded files --- ui/drivers/qt/wimp/build/Makefile | 349 ------------------ ui/drivers/qt/wimp/build/Makefile.Debug | 254 -------------- ui/drivers/qt/wimp/build/Makefile.Release | 254 -------------- ui/drivers/qt/wrapper/build/Makefile | 351 ------------------- ui/drivers/qt/wrapper/build/Makefile.Debug | 185 ---------- ui/drivers/qt/wrapper/build/Makefile.Release | 185 ---------- 6 files changed, 1578 deletions(-) delete mode 100644 ui/drivers/qt/wimp/build/Makefile delete mode 100644 ui/drivers/qt/wimp/build/Makefile.Debug delete mode 100644 ui/drivers/qt/wimp/build/Makefile.Release delete mode 100644 ui/drivers/qt/wrapper/build/Makefile delete mode 100644 ui/drivers/qt/wrapper/build/Makefile.Debug delete mode 100644 ui/drivers/qt/wrapper/build/Makefile.Release diff --git a/ui/drivers/qt/wimp/build/Makefile b/ui/drivers/qt/wimp/build/Makefile deleted file mode 100644 index d6d934d25e..0000000000 --- a/ui/drivers/qt/wimp/build/Makefile +++ /dev/null @@ -1,349 +0,0 @@ -############################################################################# -# Makefile for building: wimp -# Generated by qmake (3.0) (Qt 5.5.0) -# Project: ../wimp.pro -# Template: lib -# Command: E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -spec win32-g++ CONFIG+=release -o Makefile ../wimp.pro -############################################################################# - -MAKEFILE = Makefile - -first: release -install: release-install -uninstall: release-uninstall -QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -DEL_FILE = rm -f -CHK_DIR_EXISTS= test -d -MKDIR = mkdir -p -COPY = cp -f -COPY_FILE = cp -f -COPY_DIR = cp -f -R -INSTALL_FILE = cp -f -INSTALL_PROGRAM = cp -f -INSTALL_DIR = cp -f -R -DEL_FILE = rm -f -SYMLINK = $(QMAKE) -install ln -f -s -DEL_DIR = rmdir -MOVE = mv -f -SUBTARGETS = \ - release \ - debug - - -release: FORCE - $(MAKE) -f $(MAKEFILE).Release -release-make_first: FORCE - $(MAKE) -f $(MAKEFILE).Release -release-all: FORCE - $(MAKE) -f $(MAKEFILE).Release all -release-clean: FORCE - $(MAKE) -f $(MAKEFILE).Release clean -release-distclean: FORCE - $(MAKE) -f $(MAKEFILE).Release distclean -release-install: FORCE - $(MAKE) -f $(MAKEFILE).Release install -release-uninstall: FORCE - $(MAKE) -f $(MAKEFILE).Release uninstall -debug: FORCE - $(MAKE) -f $(MAKEFILE).Debug -debug-make_first: FORCE - $(MAKE) -f $(MAKEFILE).Debug -debug-all: FORCE - $(MAKE) -f $(MAKEFILE).Debug all -debug-clean: FORCE - $(MAKE) -f $(MAKEFILE).Debug clean -debug-distclean: FORCE - $(MAKE) -f $(MAKEFILE).Debug distclean -debug-install: FORCE - $(MAKE) -f $(MAKEFILE).Debug install -debug-uninstall: FORCE - $(MAKE) -f $(MAKEFILE).Debug uninstall - -Makefile: ../wimp.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/windows.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf \ - ../wimp.pro - $(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile ../wimp.pro -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/windows.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf: -../wimp.pro: -qmake: FORCE - @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile ../wimp.pro - -qmake_all: FORCE - -make_first: release-make_first debug-make_first FORCE -all: release-all debug-all FORCE -clean: release-clean debug-clean FORCE - -$(DEL_FILE) libwimp.dll.a -distclean: release-distclean debug-distclean FORCE - -$(DEL_FILE) Makefile - -release-mocclean: - $(MAKE) -f $(MAKEFILE).Release mocclean -debug-mocclean: - $(MAKE) -f $(MAKEFILE).Debug mocclean -mocclean: release-mocclean debug-mocclean - -release-mocables: - $(MAKE) -f $(MAKEFILE).Release mocables -debug-mocables: - $(MAKE) -f $(MAKEFILE).Debug mocables -mocables: release-mocables debug-mocables - -check: first -FORCE: - -$(MAKEFILE).Release: Makefile -$(MAKEFILE).Debug: Makefile diff --git a/ui/drivers/qt/wimp/build/Makefile.Debug b/ui/drivers/qt/wimp/build/Makefile.Debug deleted file mode 100644 index 56ab164669..0000000000 --- a/ui/drivers/qt/wimp/build/Makefile.Debug +++ /dev/null @@ -1,254 +0,0 @@ -############################################################################# -# Makefile for building: wimp -# Generated by qmake (3.0) (Qt 5.5.0) -# Project: ../wimp.pro -# Template: lib -############################################################################# - -MAKEFILE = Makefile.Debug - -####### Compiler, tools and options - -CC = gcc -CXX = g++ -DEFINES = -DUNICODE -DWIMP_LIBRARY -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -Wall -Wextra $(DEFINES) -CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) -INCPATH = -I../../wimp -I. -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Idebug -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ -LINKER = g++ -LFLAGS = -shared -Wl,-subsystem,windows -mthreads -Wl,--out-implib,debug/libwimp.dll.a -LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -lQt5Quickd -lQt5Widgetsd -lQt5Guid -lQt5Qmld -lQt5Networkd -lQt5Cored -QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -IDC = idc -IDL = midl -ZIP = -DEF_FILE = -RES_FILE = -COPY = cp -f -SED = sed -COPY_FILE = cp -f -COPY_DIR = cp -f -R -DEL_FILE = rm -f -DEL_DIR = rmdir -MOVE = mv -f -CHK_DIR_EXISTS= test -d -MKDIR = mkdir -p -INSTALL_FILE = cp -f -INSTALL_PROGRAM = cp -f -INSTALL_DIR = cp -f -R - -####### Output directory - -OBJECTS_DIR = debug/ - -####### Files - -SOURCES = ../wimp.cpp debug/qrc_qml.cpp \ - debug/moc_wimp.cpp -OBJECTS = debug/wimp.o \ - debug/qrc_qml.o \ - debug/moc_wimp.o - -DIST = ../wimp.h \ - ../wimp_global.h ../wimp.cpp -QMAKE_TARGET = wimp -DESTDIR = debug/ #avoid trailing-slash linebreak -TARGET = wimp.dll -DESTDIR_TARGET = debug/wimp.dll - -####### Implicit rules - -.SUFFIXES: .cpp .cc .cxx .c - -.cpp.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.cc.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.cxx.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.c.o: - $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< - -####### Build rules - -first: all -all: Makefile.Debug $(DESTDIR_TARGET) - -$(DESTDIR_TARGET): $(OBJECTS) - $(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS) - -qmake: FORCE - @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile.Debug ../wimp.pro - -qmake_all: FORCE - -dist: - $(ZIP) wimp.zip $(SOURCES) $(DIST) ../../wimp.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/windows.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wimp.pro ../qml.qrc NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES - -clean: compiler_clean - -$(DEL_FILE) debug/wimp.o debug/qrc_qml.o debug/moc_wimp.o - -$(DEL_FILE) debug/libwimp.dll.a - -distclean: clean - -$(DEL_FILE) $(DESTDIR_TARGET) - -$(DEL_FILE) Makefile.Debug - -mocclean: compiler_moc_header_clean compiler_moc_source_clean - -mocables: compiler_moc_header_make_all compiler_moc_source_make_all - -check: first - -compiler_no_pch_compiler_make_all: -compiler_no_pch_compiler_clean: -compiler_rcc_make_all: debug/qrc_qml.cpp -compiler_rcc_clean: - -$(DEL_FILE) debug/qrc_qml.cpp -debug/qrc_qml.cpp: ../qml.qrc \ - ../main.qml - /E/Working/Development/Tools/msys/mingw64/bin/rcc.exe -name qml ../qml.qrc -o debug/qrc_qml.cpp - -compiler_moc_header_make_all: debug/moc_wimp.cpp -compiler_moc_header_clean: - -$(DEL_FILE) debug/moc_wimp.cpp -debug/moc_wimp.cpp: ../wimp_global.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ - ../../../../ui_companion_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h \ - ../wimp.h - /E/Working/Development/Tools/msys/mingw64/bin/moc.exe $(DEFINES) -D__GNUC__ -DWIN32 -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wimp -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -I. -IE:/Working/Development/Tools/msys/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include -IE:/Working/Development/Tools/msys/mingw64/include -IE:/Working/Development/Tools/msys/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed -IE:/Working/Development/Tools/msys/mingw64/x86_64-w64-mingw32/include -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0 -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0/x86_64-w64-mingw32 -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0/backward -IC:/building/msys64/mingw64/include -IC:/building/msys64/mingw64/x86_64-w64-mingw32/include ../wimp.h -o debug/moc_wimp.cpp - -compiler_moc_source_make_all: -compiler_moc_source_clean: -compiler_uic_make_all: -compiler_uic_clean: -compiler_yacc_decl_make_all: -compiler_yacc_decl_clean: -compiler_yacc_impl_make_all: -compiler_yacc_impl_clean: -compiler_lex_make_all: -compiler_lex_clean: -compiler_clean: compiler_rcc_clean compiler_moc_header_clean - - - -####### Compile - -debug/wimp.o: ../wimp.cpp ../wimp.h \ - ../wimp_global.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ - ../../../../ui_companion_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/wimp.o ../wimp.cpp - -debug/qrc_qml.o: debug/qrc_qml.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/qrc_qml.o debug/qrc_qml.cpp - -debug/moc_wimp.o: debug/moc_wimp.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/moc_wimp.o debug/moc_wimp.cpp - -####### Install - -install: FORCE - -uninstall: FORCE - -FORCE: - diff --git a/ui/drivers/qt/wimp/build/Makefile.Release b/ui/drivers/qt/wimp/build/Makefile.Release deleted file mode 100644 index b054737c93..0000000000 --- a/ui/drivers/qt/wimp/build/Makefile.Release +++ /dev/null @@ -1,254 +0,0 @@ -############################################################################# -# Makefile for building: wimp -# Generated by qmake (3.0) (Qt 5.5.0) -# Project: ../wimp.pro -# Template: lib -############################################################################# - -MAKEFILE = Makefile.Release - -####### Compiler, tools and options - -CC = gcc -CXX = g++ -DEFINES = -DUNICODE -DWIMP_LIBRARY -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -Wall -Wextra $(DEFINES) -CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) -INCPATH = -I../../wimp -I. -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Irelease -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ -LINKER = g++ -LFLAGS = -Wl,-s -shared -Wl,-subsystem,windows -mthreads -Wl,--out-implib,release/libwimp.dll.a -LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -IDC = idc -IDL = midl -ZIP = -DEF_FILE = -RES_FILE = -COPY = cp -f -SED = sed -COPY_FILE = cp -f -COPY_DIR = cp -f -R -DEL_FILE = rm -f -DEL_DIR = rmdir -MOVE = mv -f -CHK_DIR_EXISTS= test -d -MKDIR = mkdir -p -INSTALL_FILE = cp -f -INSTALL_PROGRAM = cp -f -INSTALL_DIR = cp -f -R - -####### Output directory - -OBJECTS_DIR = release/ - -####### Files - -SOURCES = ../wimp.cpp release/qrc_qml.cpp \ - release/moc_wimp.cpp -OBJECTS = release/wimp.o \ - release/qrc_qml.o \ - release/moc_wimp.o - -DIST = ../wimp.h \ - ../wimp_global.h ../wimp.cpp -QMAKE_TARGET = wimp -DESTDIR = release/ #avoid trailing-slash linebreak -TARGET = wimp.dll -DESTDIR_TARGET = release/wimp.dll - -####### Implicit rules - -.SUFFIXES: .cpp .cc .cxx .c - -.cpp.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.cc.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.cxx.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.c.o: - $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< - -####### Build rules - -first: all -all: Makefile.Release $(DESTDIR_TARGET) - -$(DESTDIR_TARGET): $(OBJECTS) - $(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS) - -qmake: FORCE - @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile.Release ../wimp.pro - -qmake_all: FORCE - -dist: - $(ZIP) wimp.zip $(SOURCES) $(DIST) ../../wimp.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/windows.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wimp.pro ../qml.qrc NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES - -clean: compiler_clean - -$(DEL_FILE) release/wimp.o release/qrc_qml.o release/moc_wimp.o - -$(DEL_FILE) release/libwimp.dll.a - -distclean: clean - -$(DEL_FILE) $(DESTDIR_TARGET) - -$(DEL_FILE) Makefile.Release - -mocclean: compiler_moc_header_clean compiler_moc_source_clean - -mocables: compiler_moc_header_make_all compiler_moc_source_make_all - -check: first - -compiler_no_pch_compiler_make_all: -compiler_no_pch_compiler_clean: -compiler_rcc_make_all: release/qrc_qml.cpp -compiler_rcc_clean: - -$(DEL_FILE) release/qrc_qml.cpp -release/qrc_qml.cpp: ../qml.qrc \ - ../main.qml - /E/Working/Development/Tools/msys/mingw64/bin/rcc.exe -name qml ../qml.qrc -o release/qrc_qml.cpp - -compiler_moc_header_make_all: release/moc_wimp.cpp -compiler_moc_header_clean: - -$(DEL_FILE) release/moc_wimp.cpp -release/moc_wimp.cpp: ../wimp_global.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ - ../../../../ui_companion_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h \ - ../wimp.h - /E/Working/Development/Tools/msys/mingw64/bin/moc.exe $(DEFINES) -D__GNUC__ -DWIN32 -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wimp -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -I. -IE:/Working/Development/Tools/msys/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include -IE:/Working/Development/Tools/msys/mingw64/include -IE:/Working/Development/Tools/msys/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed -IE:/Working/Development/Tools/msys/mingw64/x86_64-w64-mingw32/include -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0 -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0/x86_64-w64-mingw32 -IE:/Working/Development/Tools/msys/mingw64/include/c++/5.1.0/backward -IC:/building/msys64/mingw64/include -IC:/building/msys64/mingw64/x86_64-w64-mingw32/include ../wimp.h -o release/moc_wimp.cpp - -compiler_moc_source_make_all: -compiler_moc_source_clean: -compiler_uic_make_all: -compiler_uic_clean: -compiler_yacc_decl_make_all: -compiler_yacc_decl_clean: -compiler_yacc_impl_make_all: -compiler_yacc_impl_clean: -compiler_lex_make_all: -compiler_lex_clean: -compiler_clean: compiler_rcc_clean compiler_moc_header_clean - - - -####### Compile - -release/wimp.o: ../wimp.cpp ../wimp.h \ - ../wimp_global.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ - ../../../../ui_companion_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/wimp.o ../wimp.cpp - -release/qrc_qml.o: release/qrc_qml.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/qrc_qml.o release/qrc_qml.cpp - -release/moc_wimp.o: release/moc_wimp.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/moc_wimp.o release/moc_wimp.cpp - -####### Install - -install: FORCE - -uninstall: FORCE - -FORCE: - diff --git a/ui/drivers/qt/wrapper/build/Makefile b/ui/drivers/qt/wrapper/build/Makefile deleted file mode 100644 index fe1aeb44d3..0000000000 --- a/ui/drivers/qt/wrapper/build/Makefile +++ /dev/null @@ -1,351 +0,0 @@ -############################################################################# -# Makefile for building: wrapper -# Generated by qmake (3.0) (Qt 5.5.0) -# Project: ../wrapper.pro -# Template: lib -# Command: E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -spec win32-g++ CONFIG+=release -o Makefile ../wrapper.pro -############################################################################# - -MAKEFILE = Makefile - -first: release -install: release-install -uninstall: release-uninstall -QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -DEL_FILE = rm -f -CHK_DIR_EXISTS= test -d -MKDIR = mkdir -p -COPY = cp -f -COPY_FILE = cp -f -COPY_DIR = cp -f -R -INSTALL_FILE = cp -f -INSTALL_PROGRAM = cp -f -INSTALL_DIR = cp -f -R -DEL_FILE = rm -f -SYMLINK = $(QMAKE) -install ln -f -s -DEL_DIR = rmdir -MOVE = mv -f -SUBTARGETS = \ - release \ - debug - - -release: FORCE - $(MAKE) -f $(MAKEFILE).Release -release-make_first: FORCE - $(MAKE) -f $(MAKEFILE).Release -release-all: FORCE - $(MAKE) -f $(MAKEFILE).Release all -release-clean: FORCE - $(MAKE) -f $(MAKEFILE).Release clean -release-distclean: FORCE - $(MAKE) -f $(MAKEFILE).Release distclean -release-install: FORCE - $(MAKE) -f $(MAKEFILE).Release install -release-uninstall: FORCE - $(MAKE) -f $(MAKEFILE).Release uninstall -debug: FORCE - $(MAKE) -f $(MAKEFILE).Debug -debug-make_first: FORCE - $(MAKE) -f $(MAKEFILE).Debug -debug-all: FORCE - $(MAKE) -f $(MAKEFILE).Debug all -debug-clean: FORCE - $(MAKE) -f $(MAKEFILE).Debug clean -debug-distclean: FORCE - $(MAKE) -f $(MAKEFILE).Debug distclean -debug-install: FORCE - $(MAKE) -f $(MAKEFILE).Debug install -debug-uninstall: FORCE - $(MAKE) -f $(MAKEFILE).Debug uninstall - -Makefile: ../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf \ - ../deployment.pri \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf \ - E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf \ - ../wrapper.pro - $(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile ../wrapper.pro -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf: -../deployment.pri: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf: -E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf: -../wrapper.pro: -qmake: FORCE - @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile ../wrapper.pro - -qmake_all: FORCE - -make_first: release-make_first debug-make_first FORCE -all: release-all debug-all FORCE -clean: release-clean debug-clean FORCE - -$(DEL_FILE) libwrapper.dll.a -distclean: release-distclean debug-distclean FORCE - -$(DEL_FILE) Makefile - -release-mocclean: - $(MAKE) -f $(MAKEFILE).Release mocclean -debug-mocclean: - $(MAKE) -f $(MAKEFILE).Debug mocclean -mocclean: release-mocclean debug-mocclean - -release-mocables: - $(MAKE) -f $(MAKEFILE).Release mocables -debug-mocables: - $(MAKE) -f $(MAKEFILE).Debug mocables -mocables: release-mocables debug-mocables - -check: first -FORCE: - -$(MAKEFILE).Release: Makefile -$(MAKEFILE).Debug: Makefile diff --git a/ui/drivers/qt/wrapper/build/Makefile.Debug b/ui/drivers/qt/wrapper/build/Makefile.Debug deleted file mode 100644 index 4b2027dfea..0000000000 --- a/ui/drivers/qt/wrapper/build/Makefile.Debug +++ /dev/null @@ -1,185 +0,0 @@ -############################################################################# -# Makefile for building: wrapper -# Generated by qmake (3.0) (Qt 5.5.0) -# Project: ../wrapper.pro -# Template: lib -############################################################################# - -MAKEFILE = Makefile.Debug - -####### Compiler, tools and options - -CC = gcc -CXX = g++ -DEFINES = -DUNICODE -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -Wall -Wextra $(DEFINES) -CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -g -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) -INCPATH = -I../../wrapper -I. -I../../wimp/build/release -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Idebug -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ -LINKER = g++ -LFLAGS = -shared -Wl,-subsystem,console -mthreads -Wl,--out-implib,debug/libwrapper.dll.a -LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -LD:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wrapper/../wimp/build/debug/ -lwimp.dll -lQt5Quickd -lQt5Widgetsd -lQt5Guid -lQt5Qmld -lQt5Networkd -lQt5Cored -QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -IDC = idc -IDL = midl -ZIP = -DEF_FILE = -RES_FILE = -COPY = cp -f -SED = sed -COPY_FILE = cp -f -COPY_DIR = cp -f -R -DEL_FILE = rm -f -DEL_DIR = rmdir -MOVE = mv -f -CHK_DIR_EXISTS= test -d -MKDIR = mkdir -p -INSTALL_FILE = cp -f -INSTALL_PROGRAM = cp -f -INSTALL_DIR = cp -f -R - -####### Output directory - -OBJECTS_DIR = debug/ - -####### Files - -SOURCES = ../wrapper.cpp -OBJECTS = debug/wrapper.o - -DIST = ../wrapper.h ../wrapper.cpp -QMAKE_TARGET = wrapper -DESTDIR = debug/ #avoid trailing-slash linebreak -TARGET = wrapper.dll -DESTDIR_TARGET = debug/wrapper.dll - -####### Implicit rules - -.SUFFIXES: .cpp .cc .cxx .c - -.cpp.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.cc.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.cxx.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.c.o: - $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< - -####### Build rules - -first: all -all: Makefile.Debug $(DESTDIR_TARGET) - -$(DESTDIR_TARGET): $(OBJECTS) - $(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS) - -qmake: FORCE - @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile.Debug ../wrapper.pro - -qmake_all: FORCE - -dist: - $(ZIP) wrapper.zip $(SOURCES) $(DIST) ../../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf ../deployment.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wrapper.pro NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES - -clean: compiler_clean - -$(DEL_FILE) debug/wrapper.o - -$(DEL_FILE) debug/libwrapper.dll.a - -distclean: clean - -$(DEL_FILE) $(DESTDIR_TARGET) - -$(DEL_FILE) Makefile.Debug - -mocclean: compiler_moc_header_clean compiler_moc_source_clean - -mocables: compiler_moc_header_make_all compiler_moc_source_make_all - -check: first - -compiler_no_pch_compiler_make_all: -compiler_no_pch_compiler_clean: -compiler_rcc_make_all: -compiler_rcc_clean: -compiler_moc_header_make_all: -compiler_moc_header_clean: -compiler_moc_source_make_all: -compiler_moc_source_clean: -compiler_uic_make_all: -compiler_uic_clean: -compiler_yacc_decl_make_all: -compiler_yacc_decl_clean: -compiler_yacc_impl_make_all: -compiler_yacc_impl_clean: -compiler_lex_make_all: -compiler_lex_clean: -compiler_clean: - - - -####### Compile - -debug/wrapper.o: ../wrapper.cpp ../../wimp/wimp.h \ - ../../wimp/wimp_global.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ - ../../../../ui_companion_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h \ - ../wrapper.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/wrapper.o ../wrapper.cpp - -####### Install - -install: FORCE - -uninstall: FORCE - -FORCE: - diff --git a/ui/drivers/qt/wrapper/build/Makefile.Release b/ui/drivers/qt/wrapper/build/Makefile.Release deleted file mode 100644 index 063aff3fdd..0000000000 --- a/ui/drivers/qt/wrapper/build/Makefile.Release +++ /dev/null @@ -1,185 +0,0 @@ -############################################################################# -# Makefile for building: wrapper -# Generated by qmake (3.0) (Qt 5.5.0) -# Project: ../wrapper.pro -# Template: lib -############################################################################# - -MAKEFILE = Makefile.Release - -####### Compiler, tools and options - -CC = gcc -CXX = g++ -DEFINES = -DUNICODE -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -CFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -Wall -Wextra $(DEFINES) -CXXFLAGS = -pipe -fno-keep-inline-dllexport -march=nocona -mtune=core2 -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES) -INCPATH = -I../../wrapper -I. -I../../wimp/build/release -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch -ID:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include -IE:/Working/Development/Tools/msys/mingw64/include/QtQuick -IE:/Working/Development/Tools/msys/mingw64/include/QtWidgets -IE:/Working/Development/Tools/msys/mingw64/include/QtGui -IE:/Working/Development/Tools/msys/mingw64/include/QtQml -IE:/Working/Development/Tools/msys/mingw64/include/QtNetwork -IE:/Working/Development/Tools/msys/mingw64/include/QtCore -Irelease -IE:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++ -LINKER = g++ -LFLAGS = -Wl,-s -shared -Wl,-subsystem,console -mthreads -Wl,--out-implib,release/libwrapper.dll.a -LIBS = -lglu32 -lopengl32 -lgdi32 -luser32 -LD:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/ui/drivers/qt/wrapper/../wimp/build/release/ -lwimp.dll -lQt5Quick -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -QMAKE = E:/Working/Development/Tools/msys/mingw64/bin/qmake.exe -IDC = idc -IDL = midl -ZIP = -DEF_FILE = -RES_FILE = -COPY = cp -f -SED = sed -COPY_FILE = cp -f -COPY_DIR = cp -f -R -DEL_FILE = rm -f -DEL_DIR = rmdir -MOVE = mv -f -CHK_DIR_EXISTS= test -d -MKDIR = mkdir -p -INSTALL_FILE = cp -f -INSTALL_PROGRAM = cp -f -INSTALL_DIR = cp -f -R - -####### Output directory - -OBJECTS_DIR = release/ - -####### Files - -SOURCES = ../wrapper.cpp -OBJECTS = release/wrapper.o - -DIST = ../wrapper.h ../wrapper.cpp -QMAKE_TARGET = wrapper -DESTDIR = release/ #avoid trailing-slash linebreak -TARGET = wrapper.dll -DESTDIR_TARGET = release/wrapper.dll - -####### Implicit rules - -.SUFFIXES: .cpp .cc .cxx .c - -.cpp.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.cc.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.cxx.o: - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< - -.c.o: - $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< - -####### Build rules - -first: all -all: Makefile.Release $(DESTDIR_TARGET) - -$(DESTDIR_TARGET): $(OBJECTS) - $(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS) - -qmake: FORCE - @$(QMAKE) -spec win32-g++ CONFIG+=release -o Makefile.Release ../wrapper.pro - -qmake_all: FORCE - -dist: - $(ZIP) wrapper.zip $(SOURCES) $(DIST) ../../wrapper.pro E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qdevice.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/device_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/qconfig.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dcore_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dinput_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3dquickrenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_3drenderer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axbase_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axcontainer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_axserver_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_clucene_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_declarative_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_enginio_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_location_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimedia_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_nfc_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_positioning_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qmltest_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quick_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_script_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_scripttools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sensors_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_serialport_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_svg_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webchannel_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkit_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_webkitwidgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_websockets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_winextras_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_functions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/qt_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/spec_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_pre.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf ../deployment.pri E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resolve_config.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/default_post.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/build_pass.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/console.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/rtti.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/precompile_header.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/warn_on.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/qt.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/resources.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/moc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/win32/opengl.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/uic.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/testcase_targets.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/exceptions.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/yacc.prf E:/Working/Development/Tools/msys/mingw64/share/qt5/mkspecs/features/lex.prf ../wrapper.pro NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES - -clean: compiler_clean - -$(DEL_FILE) release/wrapper.o - -$(DEL_FILE) release/libwrapper.dll.a - -distclean: clean - -$(DEL_FILE) $(DESTDIR_TARGET) - -$(DEL_FILE) Makefile.Release - -mocclean: compiler_moc_header_clean compiler_moc_source_clean - -mocables: compiler_moc_header_make_all compiler_moc_source_make_all - -check: first - -compiler_no_pch_compiler_make_all: -compiler_no_pch_compiler_clean: -compiler_rcc_make_all: -compiler_rcc_clean: -compiler_moc_header_make_all: -compiler_moc_header_clean: -compiler_moc_source_make_all: -compiler_moc_source_clean: -compiler_uic_make_all: -compiler_uic_clean: -compiler_yacc_decl_make_all: -compiler_yacc_decl_clean: -compiler_yacc_impl_make_all: -compiler_yacc_impl_clean: -compiler_lex_make_all: -compiler_lex_clean: -compiler_clean: - - - -####### Compile - -release/wrapper.o: ../wrapper.cpp ../../wimp/wimp.h \ - ../../wimp/wimp_global.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/configuration.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_miscellaneous.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/msvc.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_log.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_inline.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/boolean.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/posix_string.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/compat/strl.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/config.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/retro_endianness.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_private.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/frontend/frontend_driver.h \ - ../../../../ui_companion_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/file_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command_event.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/gfx/scaler/scaler.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/clamping.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_shader_parse.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/file/config_file.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_state_tracker.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/video_viewport.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_joypad_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/input_overlay.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/gfx/font_renderer_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_dsp_filter.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/camera/camera_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/location/location_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/audio/audio_resampler_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/record/record_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro_version_1.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_driver.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_animation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_display.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/libretro-common/include/queues/message_queue.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_displaylist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_setting.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entries.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_navigation.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_list.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_entry.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/menu/menu_input.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/input/keyboard_line.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/playlist.h \ - D:/PortableData/CloudServices/Data/Home/Andres/repositories/retroarch/command.h \ - ../wrapper.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/wrapper.o ../wrapper.cpp - -####### Install - -install: FORCE - -uninstall: FORCE - -FORCE: - From b42af6404fa2d9aab554476eb29279f39429be02 Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 31 Aug 2015 21:19:30 -0500 Subject: [PATCH 493/822] remove unneeded files --- ui/drivers/qt/wimp-test/.gitignore | 73 ------------------------------ 1 file changed, 73 deletions(-) delete mode 100644 ui/drivers/qt/wimp-test/.gitignore diff --git a/ui/drivers/qt/wimp-test/.gitignore b/ui/drivers/qt/wimp-test/.gitignore deleted file mode 100644 index eaa888734b..0000000000 --- a/ui/drivers/qt/wimp-test/.gitignore +++ /dev/null @@ -1,73 +0,0 @@ -# This file is used to ignore files which are generated -# ---------------------------------------------------------------------------- - -*~ -*.autosave -*.a -*.core -*.moc -*.o -*.obj -*.orig -*.rej -*.so -*.so.* -*_pch.h.cpp -*_resource.rc -*.qm -.#* -*.*# -core -!core/ -tags -.DS_Store -*.debug -Makefile* -*.prl -*.app -moc_*.cpp -ui_*.h -qrc_*.cpp -Thumbs.db -*.res -*.rc -/.qmake.cache -/.qmake.stash - -# qtcreator generated files -*.pro.user* - -# xemacs temporary files -*.flc - -# Vim temporary files -.*.swp - -# Visual Studio generated files -*.ib_pdb_index -*.idb -*.ilk -*.pdb -*.sln -*.suo -*.vcproj -*vcproj.*.*.user -*.ncb -*.sdf -*.opensdf -*.vcxproj -*vcxproj.* - -# MinGW generated files -*.Debug -*.Release - -# Python byte code -*.pyc - -# Binaries -# -------- -*.dll -*.exe - - From 9bb97e42e07934794ea7735bf432cbc782dc993d Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 31 Aug 2015 21:20:57 -0500 Subject: [PATCH 494/822] fix nits --- ui/drivers/ui_qt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c index b22491c526..8a1733145d 100644 --- a/ui/drivers/ui_qt.c +++ b/ui/drivers/ui_qt.c @@ -44,7 +44,7 @@ static void qt_thread(void *data) if(wimp) CreateMainWindow(wimp); - return; + return; } static void ui_companion_qt_deinit(void *data) @@ -71,7 +71,6 @@ static void *ui_companion_qt_init(void) handle->lock = slock_new(); handle->thread = sthread_create(qt_thread, handle); - if (!handle->thread) { slock_free(handle->lock); @@ -87,7 +86,6 @@ static int ui_companion_qt_iterate(void *data, unsigned action) (void)data; (void)action; fflush(stdout); - return 0; } From f3389bbd42c0cc29a58b73e5427e305f166c885b Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 31 Aug 2015 22:23:40 -0500 Subject: [PATCH 495/822] Test with max users instead, for some reason it's not getting the same value --- ui/drivers/qt/wimp/wimp.cpp | 13 ++++++++----- ui/drivers/qt/wimp/wimp.h | 5 ++--- ui/drivers/qt/wrapper/wrapper.cpp | 13 ++++--------- ui/drivers/qt/wrapper/wrapper.h | 5 ++--- ui/drivers/ui_qt.c | 17 +++++++++++------ 5 files changed, 27 insertions(+), 26 deletions(-) diff --git a/ui/drivers/qt/wimp/wimp.cpp b/ui/drivers/qt/wimp/wimp.cpp index 2ec3bbc811..cfab987dce 100644 --- a/ui/drivers/qt/wimp/wimp.cpp +++ b/ui/drivers/qt/wimp/wimp.cpp @@ -22,12 +22,15 @@ QObject *topLevel; -int Wimp::CreateMainWindow() +static settings_t *settings; + +int Wimp::CreateMainWindow(char* windowTitle) { QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); topLevel = engine.rootObjects().value(0); window = qobject_cast(topLevel); + SetTitle(windowTitle); return this->exec(); } @@ -38,10 +41,10 @@ void Wimp::SetTitle(char* title) window->setTitle(title); } -void Wimp::ConfigGetPtr(settings_t *settings) +void Wimp::ConfigGetPtr(settings_t *g_config) { - this->settings = settings; - /* Test, print the video driver name to check if we got the settings data succesfully */ - printf("Video Driver: %s\n",settings->video.driver); + settings = g_config; + /* test print the value of max users to compare with the value in RA */ + printf("Max Users: %d\n",g_config->input.max_users); fflush(stdout); } diff --git a/ui/drivers/qt/wimp/wimp.h b/ui/drivers/qt/wimp/wimp.h index c10eb1e6f4..4de50e63de 100644 --- a/ui/drivers/qt/wimp/wimp.h +++ b/ui/drivers/qt/wimp/wimp.h @@ -26,14 +26,13 @@ class WIMPSHARED_EXPORT Wimp : public QGuiApplication { QQuickWindow *window; - settings_t *settings; Q_OBJECT public: Wimp(int argc, char *argv[]): QGuiApplication(argc, argv) {} - int CreateMainWindow(); + int CreateMainWindow(char* windowTitle); void SetTitle(char* title); - void ConfigGetPtr(settings_t* settings); + void ConfigGetPtr(settings_t *g_config); }; diff --git a/ui/drivers/qt/wrapper/wrapper.cpp b/ui/drivers/qt/wrapper/wrapper.cpp index e67d6aa027..3e1877a626 100644 --- a/ui/drivers/qt/wrapper/wrapper.cpp +++ b/ui/drivers/qt/wrapper/wrapper.cpp @@ -29,19 +29,14 @@ Wimp* ctrWimp(int argc, char *argv[]){ return new Wimp(argc,argv); } -int CreateMainWindow(Wimp* p) +int CreateMainWindow(Wimp* p, char* windowTitle) { - return p->CreateMainWindow(); + return p->CreateMainWindow(windowTitle); } -void SetTitle(Wimp*p, char* title) +void ConfigGetPtr(Wimp*p, settings_t *g_config) { - return p->SetTitle(title); -} - -void ConfigGetPtr(Wimp*p, settings_t *settings) -{ - return p->ConfigGetPtr(settings); + return p->ConfigGetPtr(g_config); } #ifdef __cplusplus diff --git a/ui/drivers/qt/wrapper/wrapper.h b/ui/drivers/qt/wrapper/wrapper.h index 67502d4afc..98b392063c 100644 --- a/ui/drivers/qt/wrapper/wrapper.h +++ b/ui/drivers/qt/wrapper/wrapper.h @@ -26,9 +26,8 @@ typedef struct Wimp Wimp; Wimp* ctrWimp(int argc, char *argv[]); -int CreateMainWindow(Wimp* p); -void SetTitle(Wimp* p, char* title); -void ConfigGetPtr(Wimp*p, settings_t *settings); +int CreateMainWindow(Wimp* p, char* windowTitle); +void ConfigGetPtr(Wimp*p, settings_t *g_config); #ifdef __cplusplus } diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c index 8a1733145d..e8ca4008a7 100644 --- a/ui/drivers/ui_qt.c +++ b/ui/drivers/ui_qt.c @@ -18,6 +18,8 @@ #include #include #include +#include "general.h" +#include "system.h" #include #include @@ -38,11 +40,18 @@ typedef struct ui_companion_qt static void qt_thread(void *data) { + + settings_t *settings = config_get_ptr(); + /* test print the value of max users to compare with the value in QT */ + RARCH_LOG("Max Users: %d\n", settings->input.max_users); + ui_companion_qt_t *handle = (ui_companion_qt_t*)data; wimp = ctrWimp(0, NULL); - ConfigGetPtr(wimp,config_get_ptr()); if(wimp) - CreateMainWindow(wimp); + { + ConfigGetPtr(wimp, settings); + CreateMainWindow(wimp, "RetroArch QT"); + } return; } @@ -63,9 +72,6 @@ static void ui_companion_qt_deinit(void *data) static void *ui_companion_qt_init(void) { ui_companion_qt_t *handle = (ui_companion_qt_t*)calloc(1, sizeof(*handle)); - fflush(stdout); - - if (!handle) return NULL; @@ -85,7 +91,6 @@ static int ui_companion_qt_iterate(void *data, unsigned action) { (void)data; (void)action; - fflush(stdout); return 0; } From 309bd09cb00c181b32066694fafc8ccb4ab6d4ae Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 10:32:36 +0200 Subject: [PATCH 496/822] Start adding some more build rules to Makefile.griffin for PSP, move some otherwise unused functions to else block --- Makefile.griffin | 13 +++++- audio/drivers_resampler/cc_resampler.c | 55 +++++++++++++------------- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index 55219db458..201db6d6d6 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -137,14 +137,20 @@ else ifeq ($(platform), psp1) -D_MIPS_ARCH_ALLEGREX LIBS += $(WHOLE_START) -lretro_psp1 $(WHOLE_END) \ -lpspgu -lpspgum -lm -lpspaudio -lpspfpu \ - -lpsppower -lpsprtc + -lpsppower -lpsprtc -lpspkernel LIBDIRS += -L. LDFLAGS += -Wl,-q + BUILD_PRX = 1 HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_RPNG := 1 HAVE_KERNEL_PRX := 1 + +ifeq ($(BUILD_PRX), 1) + LDFLAGS += $(addprefix -L,$(PSPSDK)/lib) -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS) +endif + else ifeq ($(platform), vita) CC = arm-vita-eabi-gcc$(EXE_EXT) CXX = arm-vita-eabi-g++$(EXE_EXT) @@ -299,6 +305,11 @@ all: $(EXT_TARGET) arm-vita-eabi-strip -g $< vita-elf-create $< $@ $(VITASDK)/bin/db.json +%.prx: %.elf +ifeq ($(platform),psp1) + psp-prxgen $< $@ +endif + $(EXT_INTER_TARGET): $(OBJ) $(CXX) -o $@ $(LDFLAGS) $(LIBDIRS) $(OBJ) $(LIBS) diff --git a/audio/drivers_resampler/cc_resampler.c b/audio/drivers_resampler/cc_resampler.c index 7cdf7966a3..b27110510f 100644 --- a/audio/drivers_resampler/cc_resampler.c +++ b/audio/drivers_resampler/cc_resampler.c @@ -54,34 +54,6 @@ typedef struct rarch_CC_resampler void (*process)(void *re, struct resampler_data *data); } rarch_CC_resampler_t; -/* memalign() replacement functions - * copied from sinc.c and changed signature so no conflict - * happens when using griffin.c - * these functions should probably be moved to a common header - */ - -static void *memalign_alloc__(size_t boundary, size_t size) -{ - void **place; - uintptr_t addr = 0; - void *ptr = malloc(boundary + size + sizeof(uintptr_t)); - if (!ptr) - return NULL; - - addr = ((uintptr_t) - ptr + sizeof(uintptr_t) + boundary) - & ~(boundary - 1); - place = (void**)addr; - place[-1] = ptr; - - return (void*)addr; -} - -static void memalign_free__(void *ptr) -{ - void **p = (void**)ptr; - free(p[-1]); -} #ifdef _MIPS_ARCH_ALLEGREX static void resampler_CC_process(void *re_, struct resampler_data *data) @@ -205,7 +177,34 @@ static void *resampler_CC_init(const struct resampler_config *config, return (void*)-1; } #else +/* memalign() replacement functions + * copied from sinc.c and changed signature so no conflict + * happens when using griffin.c + * these functions should probably be moved to a common header + */ +static void *memalign_alloc__(size_t boundary, size_t size) +{ + void **place; + uintptr_t addr = 0; + void *ptr = malloc(boundary + size + sizeof(uintptr_t)); + if (!ptr) + return NULL; + + addr = ((uintptr_t) + ptr + sizeof(uintptr_t) + boundary) + & ~(boundary - 1); + place = (void**)addr; + place[-1] = ptr; + + return (void*)addr; +} + +static void memalign_free__(void *ptr) +{ + void **p = (void**)ptr; + free(p[-1]); +} #if defined(__SSE__) #define CC_RESAMPLER_IDENT "SSE" From b47cda1c2280b5729e20015c3ba1f55dcb5e8abc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 10:58:02 +0200 Subject: [PATCH 497/822] Makefile.griffin - Combine Wii and NGC targets --- Makefile.griffin | 174 ++++++++++++++++++++++++++++++----------------- 1 file changed, 111 insertions(+), 63 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index 201db6d6d6..9e6e26c509 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -53,91 +53,130 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1) WHOLE_END := -Wl,--no-whole-archive endif -ifeq ($(platform), ngc) - CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) - CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) - LD = $(DEVKITPPC)/bin/powerpc-eabi-ld$(EXE_EXT) - ELF2DOL = $(DEVKITPPC)/bin/elf2dol$(EXE_EXT) - EXT_TARGET := $(TARGET_NAME)_ngc.dol - EXT_INTER_TARGET := $(TARGET_NAME)_ngc.elf - INCLUDE += -I. -I$(DEVKITPRO)/libogc/include -Ideps/zlib - LIBDIRS += -L$(DEVKITPRO)/libogc/lib/cube -L. - MACHDEP := -DGEKKO -DHW_DOL -mogc -mcpu=750 -meabi -mhard-float -DMSB_FIRST - LDFLAGS += $(MACHDEP) -Wl,-Map,$(notdir $(EXT_INTER_TARGET)).map -ifeq ($(BIG_STACK), 1) - LDFLAGS += -T gx/ld/ogc.ld -endif - LIBS := -lfat $(WHOLE_START) -lretro_ngc $(WHOLE_END) -logc -ifeq ($(HAVE_LOGGER), 1) - LIBS += -lbba -endif - PLATCFLAGS := -DGEKKO +LIBS := $(WHOLE_START) -lretro_$(platform) $(WHOLE_END) - HAVE_FILTERS_BUILTIN := 1 - HAVE_THREADS := 1 - HAVE_ZLIB := 1 - HAVE_RPNG := 1 - HAVE_7ZIP := 1 - HAVE_RPNG := 1 - HAVE_OVERLAY := 1 - HAVE_BUILTIN_AUTOCONFIG := 1 -else ifeq ($(platform), ps3) +libogc_platform := + +ifeq ($(platform), ngc) +libogc_platform = 1 +else ifeq ($(platform), wii) +libogc_platform = 1 +endif + +# PS3 +ifeq ($(platform), ps3) #TODO - MEDIA_SHADER_DIR := ps3/pkg/USRDIR/cores/shaders + MEDIA_SHADER_DIR := pkg/ps3/USRDIR/cores/shaders + +# PS3 - Cobra else ifeq ($(platform), ps3-cobra) #TODO MEDIA_SHADER_DIR := ps3/iso/PS3_GAME/USRDIR/cores/shaders -else ifeq ($(platform), wii) - HAVE_WIIUSB_HID := 1 +# NGC/Wii - libogc +else ifeq ($(libogc_platform), 1) CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) LD = $(DEVKITPPC)/bin/powerpc-eabi-ld$(EXE_EXT) ELF2DOL = $(DEVKITPPC)/bin/elf2dol$(EXE_EXT) - EXT_TARGET := $(TARGET_NAME)_wii.dol - EXT_INTER_TARGET := $(TARGET_NAME)_wii.elf + EXT_TARGET := $(TARGET_NAME)_$(platform).dol + EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf + INCLUDE += -I. -I$(DEVKITPRO)/libogc/include -Ideps/zlib - LIBDIRS += -L$(DEVKITPRO)/libogc/lib/wii -L. - MACHDEP := -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -DMSB_FIRST - LDFLAGS += $(MACHDEP) -Wl,-Map,$(notdir $(EXT_INTER_TARGET)).map,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,strdup,-wrap,strndup,-wrap,malloc_usable_size + +ifeq ($(platform), ngc) + LIBDIRS += -L$(DEVKITPRO)/libogc/lib/cube + MACHDEP := -DHW_DOL -mogc +else ifeq ($(platform), wii) + LIBDIRS += -L$(DEVKITPRO)/libogc/lib/wii + MACHDEP := -DHW_RVL -mrvl +endif + LIBDIRS += -L. + MACHDEP += -DGEKKO -mcpu=750 -meabi -mhard-float -DMSB_FIRST + + LDFLAGS += $(MACHDEP) -Wl,-Map,$(notdir $(EXT_INTER_TARGET)).map + +ifeq ($(platform), wii) + LDFLAGS += ,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,strdup,-wrap,strndup,-wrap,malloc_usable_size +endif + ifeq ($(BIG_STACK), 1) +ifeq ($(platform), ngc) + LDFLAGS += -T gx/ld/ogc.ld +else ifeq ($(platform), wii) LDFLAGS += -T gx/ld/rvl.ld endif - LIBS := -lfat $(WHOLE_START) -lretro_wii $(WHOLE_END) -logc -lwiiuse -lbte +endif + LIBS += -lfat -logc + +ifeq ($(platform), wii) + LIBS += -lwiiuse -lbte ifeq ($(USBGECKO), 1) LIBS += -ldb endif +else ifeq ($(platform), ngc) +ifeq ($(HAVE_LOGGER), 1) + LIBS += -lbba +endif +endif + + CFLAGS += -DGEKKO + + HAVE_FILTERS_BUILTIN := 1 + HAVE_THREADS := 1 + HAVE_RPNG := 1 + HAVE_OVERLAY := 1 + HAVE_BUILTIN_AUTOCONFIG := 1 + HAVE_ZLIB := 1 + HAVE_7ZIP := 1 + +ifeq ($(platform), wii) + HAVE_WIIUSB_HID := 1 + HAVE_RARCH_EXEC := 1 + HAVE_RSOUND := 1 + HAVE_LIBRETRO_MANAGEMENT := 1 + HAVE_LIBSICKSAXIS := 1 + APP_BOOTER_DIR = wii/app_booter PLATOBJS := $(APP_BOOTER_DIR)/app_booter.binobj - CFLAGS += -DGEKKO ifeq ($(USBGECKO), 1) CFLAGS += -DUSBGECKO endif +endif - HAVE_FILTERS_BUILTIN := 1 - HAVE_RARCH_EXEC := 1 - HAVE_THREADS := 1 - HAVE_RSOUND := 1 -HAVE_7ZIP := 1 - HAVE_LIBRETRO_MANAGEMENT := 1 - HAVE_ZLIB := 1 - HAVE_RPNG := 1 - HAVE_RPNG := 1 - HAVE_OVERLAY := 1 - HAVE_LIBSICKSAXIS := 1 - HAVE_BUILTIN_AUTOCONFIG := 1 +# Libxenon (Xbox 360) +else ifeq ($(platform), xenon360) + CC = xenon-gcc$(EXE_EXT) + CXX = xenon-g++$(EXE_EXT) + OBJCOPY = xenon-objcopy$(EXE_EXT) + LD = xenon-ld$(EXE_EXT) + STRIP = xenon-strip$(EXE_EXT) + INCLUDE += -I$(DEVKITXENON)/usr/include + + EXT_TARGET := $(TARGET_NAME)_$(platform).elf32 + EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf + + LIBS += -lxenon -lm -lc + + LIBDIRS += -L. -L$(DEVKITXENON)/usr/lib -L$(DEVKITXENON)/xenon/lib/32 + LDFLAGS += -Wl,-q -m32 -n -T$(DEVKITXENON)/app.lds + PLATCFLAGS := -DHAVE_GETOPT_LONG=1 + PLATCFLAGS += -maltivec -mhard-float -m32 -mpowerpc64 -mcpu=cell -mtune=cell -fno-pic -g -Wall -DXENON $(INCDIRS) -Wno-char-subscripts + PLATCFLAGS += -u read -u _start -u exc_base + HAVE_THREADS = 1 + HAVE_GETOPT_LONG = 1 + +# PSP else ifeq ($(platform), psp1) CC = psp-gcc$(EXE_EXT) CXX = psp-g++$(EXE_EXT) LD = psp-ld$(EXE_EXT) INCLUDE += -I$(PSPSDK)/psp/sdk/include - EXT_TARGET := $(TARGET_NAME)_psp1.elf - EXT_INTER_TARGET := $(TARGET_NAME)_psp1.elf + EXT_TARGET := $(TARGET_NAME)_$(platform).elf + EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf PLATCFLAGS := -DPSP -D_PSP_FW_VERSION=150 -G0 \ -D_MIPS_ARCH_ALLEGREX - LIBS += $(WHOLE_START) -lretro_psp1 $(WHOLE_END) \ - -lpspgu -lpspgum -lm -lpspaudio -lpspfpu \ - -lpsppower -lpsprtc -lpspkernel + LIBS += -lpspgu -lpspgum -lm -lpspaudio -lpspfpu -lpsppower -lpsprtc -lpspkernel LIBDIRS += -L. LDFLAGS += -Wl,-q @@ -151,18 +190,18 @@ ifeq ($(BUILD_PRX), 1) LDFLAGS += $(addprefix -L,$(PSPSDK)/lib) -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS) endif +# Vita else ifeq ($(platform), vita) CC = arm-vita-eabi-gcc$(EXE_EXT) CXX = arm-vita-eabi-g++$(EXE_EXT) LD = arm-vita-eabi-ld$(EXE_EXT) - EXT_TARGET := $(TARGET_NAME).velf - EXT_INTER_TARGET := $(TARGET_NAME).elf + EXT_TARGET := $(TARGET_NAME)_$(platform).velf + EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf MACHDEP := -DVITA PLATCFLAGS := -O3 - LIBS += $(WHOLE_START) -lretro_vita $(WHOLE_END) \ - -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub \ - -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ - -lScePower_stub -lSceRtc_stub -lz -lm -lc + LIBS += -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub \ + -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ + -lScePower_stub -lSceRtc_stub -lz -lm -lc PLATOBJS += audio/audio_utils_neon.o audio/drivers_resampler/sinc_neon.o \ audio/drivers_resampler/cc_resampler_neon.o @@ -288,6 +327,10 @@ ifeq ($(HAVE_RSOUND), 1) CFLAGS += -DHAVE_RSOUND endif +ifeq ($(HAVE_GETOPT_LONG), 1) +CFLAGS += -DHAVE_GETOPT_LONG=1 +endif + ifeq ($(DEBUG), 1) CFLAGS += -O0 -g -DDEBUG else ifeq ($(platform), psp1) @@ -305,6 +348,11 @@ all: $(EXT_TARGET) arm-vita-eabi-strip -g $< vita-elf-create $< $@ $(VITASDK)/bin/db.json +%.elf32: %.elf +ifeq ($(platform), xenon360) + $(OBJCOPY) -O elf32-powerpc --adjust-vma 0x80000000 $< $@ +endif + %.prx: %.elf ifeq ($(platform),psp1) psp-prxgen $< $@ @@ -330,9 +378,9 @@ $(APP_BOOTER_DIR)/app_booter.bin: pkg: all ifeq ($(platform), wii) - cp -r $(EXT_TARGET) wii/pkg/CORE.dol + cp -r $(EXT_TARGET) pkg/wii/CORE.dol else ifeq ($(platform), ngc) - cp -r $(EXT_TARGET) ngc/pkg/CORE.dol + cp -r $(EXT_TARGET) pkg/ngc/CORE.dol else ifeq ($(platform), psp1) psp-fixup-imports$(EXT) $(EXT_TARGET) endif From 2daf5c076e2c93a92b2ec6b61a2ebe2f7402e315 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 10:59:04 +0200 Subject: [PATCH 498/822] This Makefile can go now - should be in Makefile.griffin --- Makefile.xenon | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 Makefile.xenon diff --git a/Makefile.xenon b/Makefile.xenon deleted file mode 100644 index 3de9ede7b0..0000000000 --- a/Makefile.xenon +++ /dev/null @@ -1,49 +0,0 @@ -RARCH_VERSION = "0.9.9.3" - -DEBUG = 0 - -CC = xenon-gcc -CXX = xenon-g++ -OBJCOPY = xenon-objcopy -STRIP = xenon-strip - -PPU_TARGET := retroarch-libxenon.elf -PPU_TARGET_ADJUSTED := retroarch-libxenon.elf32 - -LDDIRS = -L. -L$(DEVKITXENON)/usr/lib -L$(DEVKITXENON)/xenon/lib/32 -INCDIRS = -I. -I$(DEVKITXENON)/usr/include - -OBJ = griffin/griffin.o - -LIBS = -lretro_xenon360 -lxenon -lm -lc -DEFINES = -std=gnu99 -DRARCH_CONSOLE -DHAVE_THREADS -DHAVE_GETOPT_LONG=1 -DHAVE_GRIFFIN -DRARCH_INTERNAL -DEFINES += -maltivec -mhard-float -m32 -mpowerpc64 -mcpu=cell -mtune=cell -fno-pic -g -Wall -DXENON $(INCDIRS) -Wno-char-subscripts -DEFINES += -u read -u _start -u exc_base - -ifeq ($(DEBUG), 1) - OPTIMIZE_LV := -O0 -g -else - OPTIMIZE_LV := -O3 -endif - -all: $(PPU_TARGET_ADJUSTED) - -CFLAGS := $(OPTIMIZE_LV) $(DEFINES) - -LDFLAGS := -m32 -n -T $(DEVKITXENON)/app.lds - -$(PPU_TARGET_ADJUSTED): $(PPU_TARGET) - $(OBJCOPY) -O elf32-powerpc --adjust-vma 0x80000000 $< $@ - $(STRIP) $@ - -$(PPU_TARGET): $(OBJ) - $(CXX) -o $@ $(OBJ) $(LDFLAGS) $(LDDIRS) $(LIBS) - -%.o: %.c config.h - $(CC) $(CFLAGS) -c -o $@ $< - -clean: - rm -f $(PPU_TARGET) - rm -f $(OBJ) - -.PHONY: clean From d58771cbb151a80de014c9eca8987694a3219c20 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 11:03:55 +0200 Subject: [PATCH 499/822] Some cleanups --- Makefile.griffin | 62 +++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index 9e6e26c509..acc88a232c 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -34,44 +34,46 @@ else ifneq ($(findstring MINGW,$(shell uname -a)),) system_platform = win endif -TARGET_NAME := retroarch +TARGET_NAME := retroarch -INCLUDE := -LDFLAGS := -LIBDIRS := +INCLUDE := +LDFLAGS := +LIBDIRS := SHADER_CG_DIR := media/shaders_cg -OVERLAY_DIR := media/overlays -SHADER_GLSL_DIR := media/shaders_glsl +OVERLAY_DIR := media/overlays +SHADER_GLSL_DIR := media/shaders_glsl -PYTHON2 = python2$(EXE_EXT) -PYTHON3 = python3$(EXE_EXT) -GIT = git$(EXE_EXT) +PYTHON2 := python2$(EXE_EXT) +PYTHON3 := python3$(EXE_EXT) +GIT := git$(EXE_EXT) ifeq ($(WHOLE_ARCHIVE_LINK), 1) - WHOLE_START := -Wl,--whole-archive - WHOLE_END := -Wl,--no-whole-archive + WHOLE_START := -Wl,--whole-archive + WHOLE_END := -Wl,--no-whole-archive endif -LIBS := $(WHOLE_START) -lretro_$(platform) $(WHOLE_END) +LIBS := $(WHOLE_START) -lretro_$(platform) $(WHOLE_END) -libogc_platform := +libogc_platform := ifeq ($(platform), ngc) -libogc_platform = 1 +libogc_platform := 1 else ifeq ($(platform), wii) -libogc_platform = 1 +libogc_platform := 1 endif # PS3 ifeq ($(platform), ps3) #TODO MEDIA_SHADER_DIR := pkg/ps3/USRDIR/cores/shaders + RARCH_CONSOLE := 1 # PS3 - Cobra else ifeq ($(platform), ps3-cobra) #TODO MEDIA_SHADER_DIR := ps3/iso/PS3_GAME/USRDIR/cores/shaders + RARCH_CONSOLE := 1 # NGC/Wii - libogc else ifeq ($(libogc_platform), 1) @@ -129,6 +131,7 @@ endif HAVE_BUILTIN_AUTOCONFIG := 1 HAVE_ZLIB := 1 HAVE_7ZIP := 1 + RARCH_CONSOLE := 1 ifeq ($(platform), wii) HAVE_WIIUSB_HID := 1 @@ -156,15 +159,16 @@ else ifeq ($(platform), xenon360) EXT_TARGET := $(TARGET_NAME)_$(platform).elf32 EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf - LIBS += -lxenon -lm -lc + LIBS += -lxenon -lm -lc - LIBDIRS += -L. -L$(DEVKITXENON)/usr/lib -L$(DEVKITXENON)/xenon/lib/32 - LDFLAGS += -Wl,-q -m32 -n -T$(DEVKITXENON)/app.lds - PLATCFLAGS := -DHAVE_GETOPT_LONG=1 - PLATCFLAGS += -maltivec -mhard-float -m32 -mpowerpc64 -mcpu=cell -mtune=cell -fno-pic -g -Wall -DXENON $(INCDIRS) -Wno-char-subscripts - PLATCFLAGS += -u read -u _start -u exc_base - HAVE_THREADS = 1 - HAVE_GETOPT_LONG = 1 + LIBDIRS += -L. -L$(DEVKITXENON)/usr/lib -L$(DEVKITXENON)/xenon/lib/32 + LDFLAGS += -Wl,-q -m32 -n -T$(DEVKITXENON)/app.lds + PLATCFLAGS := -DHAVE_GETOPT_LONG=1 + PLATCFLAGS += -maltivec -mhard-float -m32 -mpowerpc64 -mcpu=cell -mtune=cell -fno-pic -g -Wall -DXENON $(INCDIRS) -Wno-char-subscripts + PLATCFLAGS += -u read -u _start -u exc_base + HAVE_THREADS := 1 + HAVE_GETOPT_LONG := 1 + RARCH_CONSOLE := 1 # PSP else ifeq ($(platform), psp1) @@ -185,6 +189,7 @@ else ifeq ($(platform), psp1) HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_RPNG := 1 HAVE_KERNEL_PRX := 1 + RARCH_CONSOLE := 1 # Maybe switch to RARCH_MOBILE ? ifeq ($(BUILD_PRX), 1) LDFLAGS += $(addprefix -L,$(PSPSDK)/lib) -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS) @@ -214,6 +219,7 @@ else ifeq ($(platform), vita) HAVE_RPNG := 1 HAVE_ZLIB := 1 HAVE_VITA2D := 1 + RARCH_CONSOLE := 1 # Maybe switch to RARCH_MOBILE ? endif @@ -306,7 +312,15 @@ ifeq ($(HAVE_NETPLAY), 1) CFLAGS += -DHAVE_NETPLAY endif -CFLAGS += -std=gnu99 -DSINC_LOWER_QUALITY -DHAVE_RGUI -DHAVE_MENU -DRARCH_CONSOLE -DHAVE_GRIFFIN=1 -Wno-char-subscripts -DRARCH_INTERNAL +ifeq ($(RARCH_CONSOLE), 1) +CFLAGS += -DRARCH_CONSOLE +endif + +ifeq ($(RARCH_MOBILE), 1) +CFLAGS += -DRARCH_MOBILE +endif + +CFLAGS += -std=gnu99 -DSINC_LOWER_QUALITY -DHAVE_RGUI -DHAVE_MENU -DHAVE_GRIFFIN=1 -Wno-char-subscripts -DRARCH_INTERNAL ifeq ($(HAVE_FILTERS_BUILTIN), 1) CFLAGS += -DHAVE_FILTERS_BUILTIN From aa282c5780c6d65a6e5134ec36f055413e03a370 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 11:29:50 +0200 Subject: [PATCH 500/822] Reimplement memmap.c for Windows --- libretro-common/include/memmap.h | 17 +--- libretro-common/memmap/memmap.c | 154 ++++++++++++------------------- 2 files changed, 61 insertions(+), 110 deletions(-) diff --git a/libretro-common/include/memmap.h b/libretro-common/include/memmap.h index 2dea42bb66..ac0f7bedd4 100644 --- a/libretro-common/include/memmap.h +++ b/libretro-common/include/memmap.h @@ -34,23 +34,10 @@ #include #endif -#if !defined(HAVE_MMAN) -#define PROT_EXEC 0x04 -#define MAP_FAILED 0 -#define PROT_READ 0 -#define PROT_WRITE 0 -#define MAP_PRIVATE 0 -#define MAP_ANONYMOUS 0 -#endif - -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS MAP_ANON -#endif - #if !defined(HAVE_MMAN) || defined(_WIN32) -void* mmap(void *desired_addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off); +void* mmap(void *addr, size_t len, int mmap_prot, int mmap_flags, int fildes, size_t off); -void munmap(void *base_addr, size_t len); +int munmap(void *addr, size_t len); int mprotect(void *addr, size_t len, int prot); #endif diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index 74ee917e20..cf8a631fb7 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -23,109 +23,72 @@ #include #include +#ifndef PROT_READ +#define PROT_READ 0x1 /* Page can be read */ +#endif + +#ifndef PROT_WRITE +#define PROT_WRITE 0x2 /* Page can be written. */ +#endif + +#ifndef PROT_EXEC +#define PROT_EXEC 0x4 /* Page can be executed. */ +#endif + +#ifndef PROT_NONE +#define PROT_NONE 0x0 /* Page can not be accessed. */ +#endif + #ifdef _WIN32 -#define MAP_SHARED 0x01 - -#ifndef MAP_PRIVATE -#define MAP_PRIVATE 0x02 -#endif - -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS 0x20 -#endif - -#define MAP_ANON MAP_ANONYMOUS -#define MAP_FAILED ((void *) -1) -#define PROT_READ 0x1 -#define PROT_WRITE 0x2 - -/* This flag is only available in WinXP+ */ -#ifdef FILE_MAP_EXECUTE -#ifndef PROT_EXEC -#define PROT_EXEC 0x4 -#endif -#else -#ifndef PROT_EXEC -#define PROT_EXEC 0x0 -#endif - -#define FILE_MAP_EXECUTE 0 -#endif - -#ifdef __USE_FILE_OFFSET64 -# define DWORD_HI(x) (x >> 32) -# define DWORD_LO(x) ((x) & 0xffffffff) -#else -# define DWORD_HI(x) (0) -# define DWORD_LO(x) (x) -#endif - void* mmap(void *addr, size_t len, int prot, int flags, int fildes, size_t offset) { - uint32_t flProtect, dwDesiredAccess; - off_t end; - HANDLE mmap_fd, h; - void *ret; + void *map = (void*)NULL; + HANDLE handle = INVALID_HANDLE_VALUE; - if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC)) - return MAP_FAILED; - - if (fd == -1) + switch (prot) { - if (!(flags & MAP_ANON) || offset) - return MAP_FAILED; - } - else if (flags & MAP_ANON) - return MAP_FAILED; - - if (prot & PROT_WRITE) - { - flProtect = PAGE_READWRITE; - if (prot & PROT_EXEC) - flProtect = PAGE_EXECUTE_READWRITE; + case PROT_READ: + default: + { + handle = CreateFileMapping((HANDLE) _get_osfhandle(fildes), 0, PAGE_READONLY, 0, + len, 0); + if (!handle) + break; + map = (void*)MapViewOfFile(handle, FILE_MAP_READ, 0, 0, len); + CloseHandle(handle); + break; + } + case PROT_WRITE: + { + handle = CreateFileMapping((HANDLE) _get_osfhandle(fildes),0,PAGE_READWRITE,0, + len, 0); + if (!handle) + break; + map = (void*)MapViewOfFile(handle, FILE_MAP_WRITE, 0, 0, len); + CloseHandle(handle); + break; + } + case PROT_READWRITE: + { + handle = CreateFileMapping((HANDLE) _get_osfhandle(fildes),0,PAGE_READWRITE,0, + len, 0); + if (!handle) + break; + map = (void*)MapViewOfFile(handle, FILE_MAP_ALL_ACCESS, 0, 0, len); + CloseHandle(handle); + break; + } } - else if (prot & PROT_EXEC) - { - flProtect = PAGE_EXECUTE; - if (prot & PROT_READ) - flProtect = PAGE_EXECUTE_READ; - } - else - flProtect = PAGE_READONLY; - - end = length + offset; - - if (fd == -1) - mmap_fd = INVALID_HANDLE_VALUE; - else - mmap_fd = (HANDLE)_get_osfhandle(fd); - - h = CreateFileMapping(mmap_fd, NULL, flProtect, DWORD_HI(end), DWORD_LO(end), NULL); - if (h == NULL) - return MAP_FAILED; - - dwDesiredAccess = FILE_MAP_READ; - if (prot & PROT_WRITE) - dwDesiredAccess = FILE_MAP_WRITE; - if (prot & PROT_EXEC) - dwDesiredAccess |= FILE_MAP_EXECUTE; - if (flags & MAP_PRIVATE) - dwDesiredAccess |= FILE_MAP_COPY; - ret = MapViewOfFile(h, dwDesiredAccess, DWORD_HI(offset), DWORD_LO(offset), length); - - if (ret == NULL) - { - CloseHandle(h); - ret = MAP_FAILED; - } - - return ret; + if (map == (void*)NULL) + return((void*)MAP_FAILED); + return((void*) ((int8_t*)map + offset)); } -void munmap(void *addr, size_t length) +int munmap(void *addr, size_t length) { - UnmapViewOfFile(addr); - /* ruh-ro, we leaked handle from CreateFileMapping() ... */ + if (!UnmapViewOfFile(addr)) + return -1; + return 0; } int mprotect(void *addr, size_t len, int prot) @@ -144,9 +107,10 @@ void* mmap(void *addr, size_t len, int prot, int flags, int fildes, size_t offse return malloc(len); } -void munmap(void *addr, size_t len) +int munmap(void *addr, size_t len) { free(addr); + return 0; } int mprotect(void *addr, size_t len, int prot) From 7bcb3d4f27617bbd66f2f98ef4e2d421ae5b4f1d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 11:46:18 +0200 Subject: [PATCH 501/822] (file_path.c) Get rid of rhash.h dependency --- libretro-common/file/file_path.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index 74eab7b322..05539e9158 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -40,10 +40,6 @@ #include #include -#ifdef HAVE_COMPRESSION -#include -#endif - #if defined(__CELLOS_LV2__) #ifndef S_ISDIR @@ -135,9 +131,6 @@ bool path_contains_compressed_file(const char *path) return (strchr(path,'#') != NULL); } -#define FILE_EXT_7Z 0x005971d6U -#define FILE_EXT_ZIP 0x0b88c7d8U - /** * path_is_compressed_file: * @path : path @@ -150,19 +143,16 @@ bool path_is_compressed_file(const char* path) { #ifdef HAVE_COMPRESSION const char* file_ext = path_get_extension(path); - uint32_t file_ext_hash = djb2_calculate(file_ext); - switch (file_ext_hash) - { #ifdef HAVE_7ZIP - case FILE_EXT_7Z: - return true; + if (!strcmp(file_ext, "zip")) + return true; #endif -#ifdef HAVE_ZLIB - case FILE_EXT_ZIP: - return true; + +#ifdef HAVE_7ZIP + if (!strcmp(file_ext, "7z")) + return true; #endif - } #endif return false; From 15ba019ea1cfbbafb5df9c0226c96e32723be022 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 11:59:27 +0200 Subject: [PATCH 502/822] Don't make asserts dependent on retro_log.h --- decompress/7zip_support.c | 4 +- decompress/zip_support.c | 1 + file_ops.c | 9 ++-- file_path_special.c | 10 +++-- general.h | 1 + input/input_autodetect.h | 2 + input/input_overlay.c | 1 + libretro-common/file/config_file.c | 19 ++++---- libretro-common/file/file_path.c | 45 ++++++++++--------- libretro-common/include/retro_assert.h | 40 +++++++++++++++++ libretro-common/include/retro_miscellaneous.h | 10 ----- libretro-common/string/string_list.c | 1 + menu/cbs/menu_cbs_scan.c | 2 + menu/intl/menu_hash_es.c | 3 ++ menu/intl/menu_hash_pt.c | 2 + menu/menu_shader.c | 1 + msg_hash.c | 2 + runloop_msg.c | 1 + tasks/task_file_transfer.c | 1 + 19 files changed, 107 insertions(+), 48 deletions(-) create mode 100644 libretro-common/include/retro_assert.h diff --git a/decompress/7zip_support.c b/decompress/7zip_support.c index 37c739b5e6..43dd987f12 100644 --- a/decompress/7zip_support.c +++ b/decompress/7zip_support.c @@ -19,11 +19,13 @@ #include #include #include - #include + +#include #include #include #include + #include "7zip_support.h" #include "../deps/7zip/7z.h" diff --git a/decompress/zip_support.c b/decompress/zip_support.c index f04d8fae16..44402dcf81 100644 --- a/decompress/zip_support.c +++ b/decompress/zip_support.c @@ -21,6 +21,7 @@ #include #include +#include #include #include diff --git a/file_ops.c b/file_ops.c index 148f3c6fc0..3e61219421 100644 --- a/file_ops.c +++ b/file_ops.c @@ -14,21 +14,24 @@ * If not, see . */ -#include "file_ops.h" -#include #include #include #include #include #include + #include #include +#include #include - +#include #ifdef HAVE_COMPRESSION #include #endif +#include "file_ops.h" + + #ifdef HAVE_7ZIP #include "decompress/7zip_support.h" #endif diff --git a/file_path_special.c b/file_path_special.c index b87474ca39..0d9b3309ed 100644 --- a/file_path_special.c +++ b/file_path_special.c @@ -20,15 +20,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include #include #include #include #include #include -#include -#include -#include #ifdef __HAIKU__ #include @@ -73,6 +69,12 @@ #include #endif +#include +#include +#include +#include +#include + void fill_pathname_expand_special(char *out_path, const char *in_path, size_t size) { diff --git a/general.h b/general.h index 80650c274a..093d451fa5 100644 --- a/general.h +++ b/general.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "configuration.h" #include "driver.h" diff --git a/input/input_autodetect.h b/input/input_autodetect.h index 888ce59bef..5a1c758fa4 100644 --- a/input/input_autodetect.h +++ b/input/input_autodetect.h @@ -18,6 +18,8 @@ #define _INPUT_AUTODETECT_H #include + +#include #include typedef struct autoconfig_params diff --git a/input/input_overlay.c b/input/input_overlay.c index 6e8517f05a..eaa1830c9b 100644 --- a/input/input_overlay.c +++ b/input/input_overlay.c @@ -21,6 +21,7 @@ #include #include +#include #include #include #include diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 768a984e3e..15de0353b0 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -20,19 +20,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include #include #include #include #include #include -#include -#include -#include -#include -#include -#include -#include #if !defined(_WIN32) && !defined(__CELLOS_LV2__) && !defined(_XBOX) #include /* PATH_MAX */ @@ -43,8 +35,17 @@ #include #endif -#define MAX_INCLUDE_DEPTH 16 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define MAX_INCLUDE_DEPTH 16 static config_file_t *config_file_new_internal(const char *path, unsigned depth); void config_file_free(config_file_t *conf); diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index 05539e9158..1a96cb8ba8 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -20,7 +20,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include #include #include @@ -28,26 +27,6 @@ #include #include -#ifdef __HAIKU__ -#include -#endif - -#if (defined(__CELLOS_LV2__) && !defined(__PSL1GHT__)) || defined(__QNX__) || defined(PSP) -#include /* stat() is defined here */ -#endif - -#include -#include -#include - -#if defined(__CELLOS_LV2__) - -#ifndef S_ISDIR -#define S_ISDIR(x) (x & 0040000) -#endif - -#endif - #if defined(_WIN32) #ifdef _MSC_VER #define setmode _setmode @@ -75,6 +54,30 @@ #include #endif +#ifdef __HAIKU__ +#include +#endif + +#if (defined(__CELLOS_LV2__) && !defined(__PSL1GHT__)) || defined(__QNX__) || defined(PSP) +#include /* stat() is defined here */ +#endif + +#include + +#include +#include +#include +#include + +#if defined(__CELLOS_LV2__) + +#ifndef S_ISDIR +#define S_ISDIR(x) (x & 0040000) +#endif + +#endif + + /** * path_get_extension: * @path : path diff --git a/libretro-common/include/retro_assert.h b/libretro-common/include/retro_assert.h new file mode 100644 index 0000000000..56996acd34 --- /dev/null +++ b/libretro-common/include/retro_assert.h @@ -0,0 +1,40 @@ +/* Copyright (C) 2010-2015 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (retro_assert.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __RETRO_ASSERT_H +#define __RETRO_ASSERT_H + +#ifdef RARCH_INTERNAL +#include +#else +#include +#endif + +#ifdef RARCH_INTERNAL +#define rarch_assert(cond) do { \ + if (!(cond)) { RARCH_ERR("Assertion failed at %s:%d.\n", __FILE__, __LINE__); abort(); } \ +} while(0) +#else +#define rarch_assert(cond) assert(cond) +#endif + +#endif diff --git a/libretro-common/include/retro_miscellaneous.h b/libretro-common/include/retro_miscellaneous.h index a2ea69f57c..e90fadaee9 100644 --- a/libretro-common/include/retro_miscellaneous.h +++ b/libretro-common/include/retro_miscellaneous.h @@ -49,7 +49,6 @@ #endif #include -#include #include #include #include @@ -66,15 +65,6 @@ #define min(a, b) ((a) < (b) ? (a) : (b)) #endif -#ifdef RARCH_INTERNAL -#define rarch_assert(cond) do { \ - if (!(cond)) { RARCH_ERR("Assertion failed at %s:%d.\n", __FILE__, __LINE__); abort(); } \ -} while(0) -#else -#include -#define rarch_assert(cond) assert(cond) -#endif - #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) #define RARCH_SCALE_BASE 256 diff --git a/libretro-common/string/string_list.c b/libretro-common/string/string_list.c index bd892ec8b3..efe7145162 100644 --- a/libretro-common/string/string_list.c +++ b/libretro-common/string/string_list.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include diff --git a/menu/cbs/menu_cbs_scan.c b/menu/cbs/menu_cbs_scan.c index bdbe5fc296..edbc029b99 100644 --- a/menu/cbs/menu_cbs_scan.c +++ b/menu/cbs/menu_cbs_scan.c @@ -14,6 +14,8 @@ */ #include +#include + #include "../menu.h" #include "../menu_cbs.h" #include "../menu_entry.h" diff --git a/menu/intl/menu_hash_es.c b/menu/intl/menu_hash_es.c index fb30190674..e06b3a1ea2 100644 --- a/menu/intl/menu_hash_es.c +++ b/menu/intl/menu_hash_es.c @@ -16,6 +16,9 @@ #include #include + +#include + #include "../../configuration.h" #include "../menu_hash.h" diff --git a/menu/intl/menu_hash_pt.c b/menu/intl/menu_hash_pt.c index a7325c4b5c..573c1e242e 100644 --- a/menu/intl/menu_hash_pt.c +++ b/menu/intl/menu_hash_pt.c @@ -17,6 +17,8 @@ #include #include +#include + #include "../menu_hash.h" #include "../../configuration.h" diff --git a/menu/menu_shader.c b/menu/menu_shader.c index 5f7b1e2aee..92c39570b4 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -17,6 +17,7 @@ #include #include +#include #include #include "menu.h" diff --git a/msg_hash.c b/msg_hash.c index 8edcb2447d..6798ed0f17 100644 --- a/msg_hash.c +++ b/msg_hash.c @@ -14,6 +14,8 @@ * If not, see . */ +#include + #include #include "msg_hash.h" diff --git a/runloop_msg.c b/runloop_msg.c index e08c3c8eea..87906d18a8 100644 --- a/runloop_msg.c +++ b/runloop_msg.c @@ -16,6 +16,7 @@ * If not, see . */ +#include #include #ifdef HAVE_THREADS #include diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index 2384f7b434..a423677b26 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include From 5e3a79b74b6c63325001ca2c895dd7363af91d65 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 12:02:04 +0200 Subject: [PATCH 503/822] (cocoa_gl_ctx.m) Put in retro_assert.h --- gfx/drivers_context/cocoa_gl_ctx.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m index 68f46e19cb..e67725fd4d 100644 --- a/gfx/drivers_context/cocoa_gl_ctx.m +++ b/gfx/drivers_context/cocoa_gl_ctx.m @@ -27,6 +27,9 @@ #elif defined(HAVE_COCOATOUCH) #include #endif + +#include + #import "../../ui/drivers/cocoa/cocoa_common.h" #include "../video_context_driver.h" #include "../video_monitor.h" From a519654810520e35379acf86b3cabe09946b1adf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 12:04:08 +0200 Subject: [PATCH 504/822] (Android) Some build fixes --- android/phoenix/jni/apk-extract/apk-extract.c | 7 +++++-- libretro-common/compat/compat.c | 21 +++++++++++-------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/android/phoenix/jni/apk-extract/apk-extract.c b/android/phoenix/jni/apk-extract/apk-extract.c index 630176b9cb..ffa0439f12 100644 --- a/android/phoenix/jni/apk-extract/apk-extract.c +++ b/android/phoenix/jni/apk-extract/apk-extract.c @@ -1,9 +1,12 @@ -#include -#include #include #include + +#include +#include +#include #include + #include "../native/com_retroarch_browser_NativeInterface.h" //#define VERBOSE_LOG diff --git a/libretro-common/compat/compat.c b/libretro-common/compat/compat.c index 77b898bd4c..f2a3c2241a 100644 --- a/libretro-common/compat/compat.c +++ b/libretro-common/compat/compat.c @@ -21,21 +21,24 @@ */ #include + +#ifndef HAVE_GETOPT_LONG +#include +#include +#include +#include + +#include +#endif + #include #include #include #include +#include + #ifndef HAVE_GETOPT_LONG - -#include -#include -#include -#include -#include - -#include - char *optarg; int optind, opterr, optopt; From 067673814055acde64b209be35b523341200b6b8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 12:10:26 +0200 Subject: [PATCH 505/822] Console build fixes --- frontend/drivers/platform_psp.c | 12 ++++++------ frontend/frontend_salamander.c | 6 ++++-- libretro-common/file/config_file.c | 7 ++++--- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 51efd2fce1..39760f31d5 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -14,17 +14,18 @@ * If not, see . */ +#include +#include +#include +#include + #include #include #include #include #include -#include -#include -#include -#include - +#include #include #ifndef IS_SALAMANDER #include @@ -37,7 +38,6 @@ #include "../../psp1/kernel_functions.h" #endif - PSP_MODULE_INFO("RetroArch", 0, 1, 1); PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER|THREAD_ATTR_VFPU); #ifdef BIG_STACK diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index b6611dc229..2b20ab57e5 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -19,12 +19,14 @@ #include #include +#include #include -#include "../general.h" -#include "../file_ext.h" #include #include + #include "frontend_driver.h" +#include "../general.h" +#include "../file_ext.h" struct defaults g_defaults; diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 15de0353b0..e0cfce7f70 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -35,13 +35,14 @@ #include #endif -#include +#include +#include +#include #include #include #include +#include #include -#include -#include #include #include From 09aac8a320dd8ffc6df00eef09e21b3e21d33f6d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 12:39:17 +0200 Subject: [PATCH 506/822] Create rpng_nbio_is_valid --- libretro-common/formats/png/rpng_nbio.c | 11 +++++++++++ libretro-common/include/formats/rpng.h | 2 ++ tasks/task_file_transfer.c | 4 +--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index 5ffc56af89..63ed17a89f 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -248,3 +248,14 @@ bool rpng_nbio_load_image_argb_start(struct rpng_t *rpng) return true; } + +bool rpng_nbio_is_valid(struct rpng_t *rpng) +{ + if (rpng->has_ihdr) + return true; + if (rpng->has_idat) + return true; + if (rpng->has_iend) + return true; + return false; +} diff --git a/libretro-common/include/formats/rpng.h b/libretro-common/include/formats/rpng.h index fdd3ca2032..d4d2342e16 100644 --- a/libretro-common/include/formats/rpng.h +++ b/libretro-common/include/formats/rpng.h @@ -105,6 +105,8 @@ bool rpng_load_image_argb(const char *path, uint32_t **data, struct rpng_t *rpng_nbio_load_image_argb_init(const char *path); +bool rpng_nbio_is_valid(struct rpng_t *rpng); + void rpng_nbio_load_image_free(struct rpng_t *rpng); bool rpng_nbio_load_image_argb_iterate(uint8_t *buf, diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index a423677b26..3c83736256 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -185,9 +185,7 @@ static int cb_image_menu_generic(nbio_handle_t *nbio) if (!nbio) return -1; - if ( !nbio->image.handle->has_ihdr || - !nbio->image.handle->has_idat || - !nbio->image.handle->has_iend) + if (!rpng_nbio_is_valid(nbio->image.handle)) return -1; retval = rpng_nbio_load_image_argb_process(nbio->image.handle, From 37625021129b8ddf505186f0facc596c5be493ad Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 12:41:31 +0200 Subject: [PATCH 507/822] Create rpng_is_valid --- libretro-common/formats/png/rpng_fbio.c | 2 +- libretro-common/formats/png/rpng_nbio.c | 2 +- libretro-common/include/formats/rpng.h | 2 +- tasks/task_file_transfer.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libretro-common/formats/png/rpng_fbio.c b/libretro-common/formats/png/rpng_fbio.c index 4a6eb541f2..ccaecb85f6 100644 --- a/libretro-common/formats/png/rpng_fbio.c +++ b/libretro-common/formats/png/rpng_fbio.c @@ -160,7 +160,7 @@ bool rpng_load_image_argb_iterate(FILE **fd, struct rpng_t *rpng) return false; case PNG_CHUNK_IHDR: - if (rpng->has_ihdr || rpng->has_idat || rpng->has_iend) + if (rpng_is_valid(rpng)) return false; if (!png_parse_ihdr_fio(fd, &chunk, &rpng->ihdr)) diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index 63ed17a89f..e90a0f910a 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -249,7 +249,7 @@ bool rpng_nbio_load_image_argb_start(struct rpng_t *rpng) return true; } -bool rpng_nbio_is_valid(struct rpng_t *rpng) +bool rpng_is_valid(struct rpng_t *rpng) { if (rpng->has_ihdr) return true; diff --git a/libretro-common/include/formats/rpng.h b/libretro-common/include/formats/rpng.h index d4d2342e16..84b0d411b6 100644 --- a/libretro-common/include/formats/rpng.h +++ b/libretro-common/include/formats/rpng.h @@ -105,7 +105,7 @@ bool rpng_load_image_argb(const char *path, uint32_t **data, struct rpng_t *rpng_nbio_load_image_argb_init(const char *path); -bool rpng_nbio_is_valid(struct rpng_t *rpng); +bool rpng_is_valid(struct rpng_t *rpng); void rpng_nbio_load_image_free(struct rpng_t *rpng); diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index 3c83736256..55c66a27e9 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -185,7 +185,7 @@ static int cb_image_menu_generic(nbio_handle_t *nbio) if (!nbio) return -1; - if (!rpng_nbio_is_valid(nbio->image.handle)) + if (!rpng_is_valid(nbio->image.handle)) return -1; retval = rpng_nbio_load_image_argb_process(nbio->image.handle, From cd791430383fce9a90c892ce8fc23793359fcec5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 12:52:04 +0200 Subject: [PATCH 508/822] (rpng) Encapsulate incrementation of buffer position --- libretro-common/formats/png/rpng_nbio.c | 6 ++++-- libretro-common/formats/png/rpng_test.c | 6 +----- libretro-common/include/formats/rpng.h | 2 +- tasks/task_file_transfer.c | 5 +---- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index e90a0f910a..13c40dc638 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -98,9 +98,10 @@ static bool png_read_plte_into_buf(uint8_t *buf, return true; } -bool rpng_nbio_load_image_argb_iterate(uint8_t *buf, struct rpng_t *rpng, unsigned *ret) +bool rpng_nbio_load_image_argb_iterate(uint8_t *buf, struct rpng_t *rpng) { unsigned i; + unsigned ret; struct png_chunk chunk = {0}; @@ -181,7 +182,8 @@ bool rpng_nbio_load_image_argb_iterate(uint8_t *buf, struct rpng_t *rpng, unsign goto error; } - *ret = 4 + 4 + chunk.size + 4; + ret = 4 + 4 + chunk.size + 4; + rpng->buff_data += ret; return true; diff --git a/libretro-common/formats/png/rpng_test.c b/libretro-common/formats/png/rpng_test.c index da8fbd6bc3..0636e8dee5 100644 --- a/libretro-common/formats/png/rpng_test.c +++ b/libretro-common/formats/png/rpng_test.c @@ -46,7 +46,6 @@ static bool rpng_nbio_load_image_argb(const char *path, uint32_t **data, bool ret = true; struct rpng_t *rpng = NULL; void *ptr = NULL; - unsigned val = 0; struct nbio_t* handle = (void*)nbio_open(path, NBIO_READ); if (!handle) @@ -89,10 +88,7 @@ static bool rpng_nbio_load_image_argb(const char *path, uint32_t **data, } while (rpng_nbio_load_image_argb_iterate( - rpng->buff_data, rpng, &val)) - { - rpng->buff_data += val; - } + rpng->buff_data, rpng)); #if 0 fprintf(stderr, "has_ihdr: %d\n", rpng->has_ihdr); diff --git a/libretro-common/include/formats/rpng.h b/libretro-common/include/formats/rpng.h index 84b0d411b6..9981e30c38 100644 --- a/libretro-common/include/formats/rpng.h +++ b/libretro-common/include/formats/rpng.h @@ -110,7 +110,7 @@ bool rpng_is_valid(struct rpng_t *rpng); void rpng_nbio_load_image_free(struct rpng_t *rpng); bool rpng_nbio_load_image_argb_iterate(uint8_t *buf, - struct rpng_t *rpng, unsigned *ret); + struct rpng_t *rpng); int rpng_nbio_load_image_argb_process(struct rpng_t *rpng, uint32_t **data, unsigned *width, unsigned *height); diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index 55c66a27e9..f00afe25e9 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -263,13 +263,10 @@ static int rarch_main_data_image_iterate_transfer(nbio_handle_t *nbio) for (i = 0; i < nbio->image.pos_increment; i++) { - unsigned ret; if (!rpng_nbio_load_image_argb_iterate( nbio->image.handle->buff_data, - nbio->image.handle, &ret)) + nbio->image.handle)) goto error; - - nbio->image.handle->buff_data += ret; } nbio->image.frame_count++; From d5837f4b7cc9ae58957b5c8471c2b245a76a97f2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 12:56:39 +0200 Subject: [PATCH 509/822] Don't take in as first argument rpng->buff_data - handle this internally --- libretro-common/formats/png/rpng_nbio.c | 3 ++- libretro-common/formats/png/rpng_test.c | 3 +-- libretro-common/include/formats/rpng.h | 3 +-- tasks/task_file_transfer.c | 4 +--- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index 13c40dc638..9f282870e8 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -98,10 +98,11 @@ static bool png_read_plte_into_buf(uint8_t *buf, return true; } -bool rpng_nbio_load_image_argb_iterate(uint8_t *buf, struct rpng_t *rpng) +bool rpng_nbio_load_image_argb_iterate(struct rpng_t *rpng) { unsigned i; unsigned ret; + uint8_t *buf = (uint8_t*)rpng->buff_data; struct png_chunk chunk = {0}; diff --git a/libretro-common/formats/png/rpng_test.c b/libretro-common/formats/png/rpng_test.c index 0636e8dee5..17f1893a38 100644 --- a/libretro-common/formats/png/rpng_test.c +++ b/libretro-common/formats/png/rpng_test.c @@ -87,8 +87,7 @@ static bool rpng_nbio_load_image_argb(const char *path, uint32_t **data, goto end; } - while (rpng_nbio_load_image_argb_iterate( - rpng->buff_data, rpng)); + while (rpng_nbio_load_image_argb_iterate(rpng)); #if 0 fprintf(stderr, "has_ihdr: %d\n", rpng->has_ihdr); diff --git a/libretro-common/include/formats/rpng.h b/libretro-common/include/formats/rpng.h index 9981e30c38..75d6ddd590 100644 --- a/libretro-common/include/formats/rpng.h +++ b/libretro-common/include/formats/rpng.h @@ -109,8 +109,7 @@ bool rpng_is_valid(struct rpng_t *rpng); void rpng_nbio_load_image_free(struct rpng_t *rpng); -bool rpng_nbio_load_image_argb_iterate(uint8_t *buf, - struct rpng_t *rpng); +bool rpng_nbio_load_image_argb_iterate(struct rpng_t *rpng); int rpng_nbio_load_image_argb_process(struct rpng_t *rpng, uint32_t **data, unsigned *width, unsigned *height); diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index f00afe25e9..eac67470d4 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -263,9 +263,7 @@ static int rarch_main_data_image_iterate_transfer(nbio_handle_t *nbio) for (i = 0; i < nbio->image.pos_increment; i++) { - if (!rpng_nbio_load_image_argb_iterate( - nbio->image.handle->buff_data, - nbio->image.handle)) + if (!rpng_nbio_load_image_argb_iterate(nbio->image.handle)) goto error; } From 511b2c6d83e29a2e078fca0e033a1b358523382b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:00:02 +0200 Subject: [PATCH 510/822] Create rpng_set_buf_ptr --- libretro-common/formats/png/rpng_nbio.c | 11 +++++++++++ libretro-common/include/formats/rpng.h | 2 ++ tasks/task_file_transfer.c | 1 + 3 files changed, 14 insertions(+) diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index 9f282870e8..b2ae9ac71e 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -254,6 +254,9 @@ bool rpng_nbio_load_image_argb_start(struct rpng_t *rpng) bool rpng_is_valid(struct rpng_t *rpng) { + if (!rpng) + return false; + if (rpng->has_ihdr) return true; if (rpng->has_idat) @@ -262,3 +265,11 @@ bool rpng_is_valid(struct rpng_t *rpng) return true; return false; } + +void rpng_set_buf_ptr(struct rpng_t *rpng, uint8_t *data) +{ + if (!rpng) + return false; + + rpng->buff_data = data; +} diff --git a/libretro-common/include/formats/rpng.h b/libretro-common/include/formats/rpng.h index 75d6ddd590..58f42f4970 100644 --- a/libretro-common/include/formats/rpng.h +++ b/libretro-common/include/formats/rpng.h @@ -107,6 +107,8 @@ struct rpng_t *rpng_nbio_load_image_argb_init(const char *path); bool rpng_is_valid(struct rpng_t *rpng); +void rpng_set_buf_ptr(struct rpng_t *rpng, uint8_t *data); + void rpng_nbio_load_image_free(struct rpng_t *rpng); bool rpng_nbio_load_image_argb_iterate(struct rpng_t *rpng); diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index eac67470d4..2b2ed6227d 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -434,6 +434,7 @@ static int cb_nbio_generic(nbio_handle_t *nbio, size_t *len) return -1; } + rpng_set_buf_ptr(nbio->image.handle, (uint8_t*)ptr); nbio->image.handle->buff_data = (uint8_t*)ptr; nbio->image.pos_increment = (*len / 2) ? (*len / 2) : 1; nbio->image.processing_pos_increment = (*len / 4) ? (*len / 4) : 1; From 2194ab6631f8a501c87a52b8f8005e13c8ee8c32 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:01:16 +0200 Subject: [PATCH 511/822] Cleanups --- tasks/task_file_transfer.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index 2b2ed6227d..13b20b2ce8 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -435,7 +435,6 @@ static int cb_nbio_generic(nbio_handle_t *nbio, size_t *len) } rpng_set_buf_ptr(nbio->image.handle, (uint8_t*)ptr); - nbio->image.handle->buff_data = (uint8_t*)ptr; nbio->image.pos_increment = (*len / 2) ? (*len / 2) : 1; nbio->image.processing_pos_increment = (*len / 4) ? (*len / 4) : 1; From c259b983de479076e370d61124c9164b440813bc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:08:10 +0200 Subject: [PATCH 512/822] struct definitions now go inside rpng_common.h - move them away from public headers --- libretro-common/formats/png/rpng_common.h | 67 +++++++++++++++++++++ libretro-common/formats/png/rpng_nbio.c | 12 +++- libretro-common/formats/png/rpng_test.c | 8 +-- libretro-common/include/formats/rpng.h | 71 ++--------------------- tasks/task_file_transfer.c | 4 +- 5 files changed, 87 insertions(+), 75 deletions(-) diff --git a/libretro-common/formats/png/rpng_common.h b/libretro-common/formats/png/rpng_common.h index 676e68f2fd..e6e8667d91 100644 --- a/libretro-common/formats/png/rpng_common.h +++ b/libretro-common/formats/png/rpng_common.h @@ -78,6 +78,73 @@ struct adam7_pass unsigned stride_y; }; +struct idat_buffer +{ + uint8_t *data; + size_t size; +}; + +struct png_chunk +{ + uint32_t size; + char type[4]; + uint8_t *data; +}; + +struct png_ihdr +{ + uint32_t width; + uint32_t height; + uint8_t depth; + uint8_t color_type; + uint8_t compression; + uint8_t filter; + uint8_t interlace; +}; + +struct rpng_process_t +{ + bool initialized; + bool inflate_initialized; + bool adam7_pass_initialized; + bool pass_initialized; + uint32_t *data; + uint32_t *palette; + struct png_ihdr ihdr; + uint8_t *prev_scanline; + uint8_t *decoded_scanline; + uint8_t *inflate_buf; + size_t restore_buf_size; + size_t adam7_restore_buf_size; + size_t data_restore_buf_size; + size_t inflate_buf_size; + unsigned bpp; + unsigned pitch; + unsigned h; + struct + { + unsigned width; + unsigned height; + size_t size; + unsigned pos; + } pass; + void *stream; + zlib_file_handle_t handle; +}; + +struct rpng_t +{ + struct rpng_process_t process; + bool has_ihdr; + bool has_idat; + bool has_iend; + bool has_plte; + struct idat_buffer idat_buf; + struct png_ihdr ihdr; + uint8_t *buff_data; + uint32_t palette[256]; +}; + /* Paeth prediction filter. */ static INLINE int paeth(int a, int b, int c) { diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index b2ae9ac71e..42a222d307 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -266,10 +266,20 @@ bool rpng_is_valid(struct rpng_t *rpng) return false; } -void rpng_set_buf_ptr(struct rpng_t *rpng, uint8_t *data) +bool rpng_set_buf_ptr(struct rpng_t *rpng, uint8_t *data) { if (!rpng) return false; rpng->buff_data = data; + + return true; +} + +struct rpng_t *rpng_alloc(void) +{ + struct rpng_t *rpng = (struct rpng_t*)calloc(1, sizeof(struct rpng_t)); + if (!rpng) + return NULL; + return rpng; } diff --git a/libretro-common/formats/png/rpng_test.c b/libretro-common/formats/png/rpng_test.c index 17f1893a38..f1f4e0923b 100644 --- a/libretro-common/formats/png/rpng_test.c +++ b/libretro-common/formats/png/rpng_test.c @@ -65,7 +65,7 @@ static bool rpng_nbio_load_image_argb(const char *path, uint32_t **data, goto end; } - rpng = (struct rpng_t*)calloc(1, sizeof(struct rpng_t)); + rpng = rpng_alloc(); if (!rpng) { @@ -73,9 +73,7 @@ static bool rpng_nbio_load_image_argb(const char *path, uint32_t **data, goto end; } - rpng->buff_data = (uint8_t*)ptr; - - if (!rpng->buff_data) + if (!rpng_set_buf_ptr(rpng, (uint8_t*)ptr)) { ret = false; goto end; @@ -95,7 +93,7 @@ static bool rpng_nbio_load_image_argb(const char *path, uint32_t **data, fprintf(stderr, "has_iend: %d\n", rpng->has_iend); #endif - if (!rpng->has_ihdr || !rpng->has_idat || !rpng->has_iend) + if (!rpng_is_valid(rpng)) { ret = false; goto end; diff --git a/libretro-common/include/formats/rpng.h b/libretro-common/include/formats/rpng.h index 58f42f4970..049b7bcf55 100644 --- a/libretro-common/include/formats/rpng.h +++ b/libretro-common/include/formats/rpng.h @@ -33,72 +33,7 @@ extern "C" { #endif -struct idat_buffer -{ - uint8_t *data; - size_t size; -}; - -struct png_chunk -{ - uint32_t size; - char type[4]; - uint8_t *data; -}; - -struct png_ihdr -{ - uint32_t width; - uint32_t height; - uint8_t depth; - uint8_t color_type; - uint8_t compression; - uint8_t filter; - uint8_t interlace; -}; - -struct rpng_process_t -{ - bool initialized; - bool inflate_initialized; - bool adam7_pass_initialized; - bool pass_initialized; - uint32_t *data; - uint32_t *palette; - struct png_ihdr ihdr; - uint8_t *prev_scanline; - uint8_t *decoded_scanline; - uint8_t *inflate_buf; - size_t restore_buf_size; - size_t adam7_restore_buf_size; - size_t data_restore_buf_size; - size_t inflate_buf_size; - unsigned bpp; - unsigned pitch; - unsigned h; - struct - { - unsigned width; - unsigned height; - size_t size; - unsigned pos; - } pass; - void *stream; - zlib_file_handle_t handle; -}; - -struct rpng_t -{ - struct rpng_process_t process; - bool has_ihdr; - bool has_idat; - bool has_iend; - bool has_plte; - struct idat_buffer idat_buf; - struct png_ihdr ihdr; - uint8_t *buff_data; - uint32_t palette[256]; -}; +struct rpng_t; bool rpng_load_image_argb(const char *path, uint32_t **data, unsigned *width, unsigned *height); @@ -107,7 +42,9 @@ struct rpng_t *rpng_nbio_load_image_argb_init(const char *path); bool rpng_is_valid(struct rpng_t *rpng); -void rpng_set_buf_ptr(struct rpng_t *rpng, uint8_t *data); +bool rpng_set_buf_ptr(struct rpng_t *rpng, uint8_t *data); + +struct rpng_t *rpng_alloc(void); void rpng_nbio_load_image_free(struct rpng_t *rpng); diff --git a/tasks/task_file_transfer.c b/tasks/task_file_transfer.c index 13b20b2ce8..8b2930075b 100644 --- a/tasks/task_file_transfer.c +++ b/tasks/task_file_transfer.c @@ -458,7 +458,7 @@ static int cb_nbio_image_menu_wallpaper(void *data, size_t len) if (!nbio || !data) return -1; - nbio->image.handle = (struct rpng_t*)calloc(1, sizeof(struct rpng_t)); + nbio->image.handle = rpng_alloc(); nbio->image.cb = &cb_image_menu_wallpaper; return cb_nbio_generic(nbio, &len); @@ -471,7 +471,7 @@ static int cb_nbio_image_menu_boxart(void *data, size_t len) if (!nbio || !data) return -1; - nbio->image.handle = (struct rpng_t*)calloc(1, sizeof(struct rpng_t)); + nbio->image.handle = rpng_alloc(); nbio->image.cb = &cb_image_menu_boxart; return cb_nbio_generic(nbio, &len); From c80e59b8880b886cfc563029f5a1d8160719d3ff Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:22:20 +0200 Subject: [PATCH 513/822] Create common png_read_plte --- libretro-common/formats/png/rpng_common.h | 16 +++++++ libretro-common/formats/png/rpng_fbio.c | 54 +++++++++-------------- libretro-common/formats/png/rpng_nbio.c | 27 +++--------- 3 files changed, 43 insertions(+), 54 deletions(-) diff --git a/libretro-common/formats/png/rpng_common.h b/libretro-common/formats/png/rpng_common.h index e6e8667d91..2e678e0382 100644 --- a/libretro-common/formats/png/rpng_common.h +++ b/libretro-common/formats/png/rpng_common.h @@ -165,5 +165,21 @@ static INLINE uint32_t dword_be(const uint8_t *buf) return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | (buf[3] << 0); } +static INLINE bool png_read_plte(uint8_t *buf, + uint32_t *buffer, unsigned entries) +{ + unsigned i; + + for (i = 0; i < entries; i++) + { + uint32_t r = buf[3 * i + 0]; + uint32_t g = buf[3 * i + 1]; + uint32_t b = buf[3 * i + 2]; + buffer[i] = (r << 16) | (g << 8) | (b << 0) | (0xffu << 24); + } + + return true; +} + #endif diff --git a/libretro-common/formats/png/rpng_fbio.c b/libretro-common/formats/png/rpng_fbio.c index ccaecb85f6..66f05e46ef 100644 --- a/libretro-common/formats/png/rpng_fbio.c +++ b/libretro-common/formats/png/rpng_fbio.c @@ -114,32 +114,6 @@ static bool png_append_idat_fio(FILE **fd, return true; } -static bool png_read_plte_fio(FILE **fd, uint32_t *buffer, unsigned entries) -{ - unsigned i; - uint8_t buf[256 * 3]; - FILE *file = *fd; - - if (entries > 256) - return false; - - if (fread(buf, 3, entries, file) != entries) - return false; - - for (i = 0; i < entries; i++) - { - uint32_t r = buf[3 * i + 0]; - uint32_t g = buf[3 * i + 1]; - uint32_t b = buf[3 * i + 2]; - buffer[i] = (r << 16) | (g << 8) | (b << 0) | (0xffu << 24); - } - - if (fseek(file, sizeof(uint32_t), SEEK_CUR) < 0) - return false; - - return true; -} - bool rpng_load_image_argb_iterate(FILE **fd, struct rpng_t *rpng) { struct png_chunk chunk = {0}; @@ -180,16 +154,30 @@ bool rpng_load_image_argb_iterate(FILE **fd, struct rpng_t *rpng) break; case PNG_CHUNK_PLTE: - if (!rpng->has_ihdr || rpng->has_plte || rpng->has_iend || rpng->has_idat) - return false; + { + uint8_t buf[256 * 3]; + unsigned entries = chunk.size / 3; - if (chunk.size % 3) - return false; + if (!rpng->has_ihdr || rpng->has_plte || rpng->has_iend || rpng->has_idat) + return false; - if (!png_read_plte_fio(fd, rpng->palette, chunk.size / 3)) - return false; + if (chunk.size % 3) + return false; - rpng->has_plte = true; + if (entries > 256) + return false; + + if (fread(rpng->palette, 3, entries, *fd) != entries) + return false; + + if (!png_read_plte(&buf[0], rpng->palette, entries)) + return false; + + if (fseek(*fd, sizeof(uint32_t), SEEK_CUR) < 0) + return false; + + rpng->has_plte = true; + } break; case PNG_CHUNK_IDAT: diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index 42a222d307..f62e3aa9a2 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -77,26 +77,6 @@ static bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer * return true; } -static bool png_read_plte_into_buf(uint8_t *buf, - uint32_t *buffer, unsigned entries) -{ - unsigned i; - - if (entries > 256) - return false; - - buf += 8; - - for (i = 0; i < entries; i++) - { - uint32_t r = buf[3 * i + 0]; - uint32_t g = buf[3 * i + 1]; - uint32_t b = buf[3 * i + 2]; - buffer[i] = (r << 16) | (g << 8) | (b << 0) | (0xffu << 24); - } - - return true; -} bool rpng_nbio_load_image_argb_iterate(struct rpng_t *rpng) { @@ -151,7 +131,12 @@ bool rpng_nbio_load_image_argb_iterate(struct rpng_t *rpng) if (chunk.size % 3) goto error; - if (!png_read_plte_into_buf(buf, rpng->palette, entries)) + if (entries > 256) + goto error; + + buf += 8; + + if (!png_read_plte(buf, rpng->palette, entries)) goto error; rpng->has_plte = true; From 3ccb4380f1f7b2a9aa3cb548abc26febdb88b753 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:27:36 +0200 Subject: [PATCH 514/822] (RPNG) Move more common code outside --- libretro-common/formats/png/rpng_common.h | 10 +++++++++ libretro-common/formats/png/rpng_fbio.c | 27 +++++++---------------- libretro-common/formats/png/rpng_nbio.c | 12 ---------- 3 files changed, 18 insertions(+), 31 deletions(-) diff --git a/libretro-common/formats/png/rpng_common.h b/libretro-common/formats/png/rpng_common.h index 2e678e0382..e84e97f9c5 100644 --- a/libretro-common/formats/png/rpng_common.h +++ b/libretro-common/formats/png/rpng_common.h @@ -181,5 +181,15 @@ static INLINE bool png_read_plte(uint8_t *buf, return true; } +static INLINE bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer *buf) +{ + uint8_t *new_buffer = (uint8_t*)realloc(buf->data, buf->size + chunk->size); + + if (!new_buffer) + return false; + + buf->data = new_buffer; + return true; +} #endif diff --git a/libretro-common/formats/png/rpng_fbio.c b/libretro-common/formats/png/rpng_fbio.c index 66f05e46ef..4d73186f32 100644 --- a/libretro-common/formats/png/rpng_fbio.c +++ b/libretro-common/formats/png/rpng_fbio.c @@ -96,24 +96,6 @@ static bool png_parse_ihdr_fio(FILE **fd, return true; } -static bool png_append_idat_fio(FILE **fd, - const struct png_chunk *chunk, struct idat_buffer *buf) -{ - FILE *file = *fd; - uint8_t *new_buffer = (uint8_t*)realloc(buf->data, buf->size + chunk->size); - - if (!new_buffer) - return false; - - buf->data = new_buffer; - if (fread(buf->data + buf->size, 1, chunk->size, file) != chunk->size) - return false; - if (fseek(file, sizeof(uint32_t), SEEK_CUR) < 0) - return false; - buf->size += chunk->size; - return true; -} - bool rpng_load_image_argb_iterate(FILE **fd, struct rpng_t *rpng) { struct png_chunk chunk = {0}; @@ -184,9 +166,16 @@ bool rpng_load_image_argb_iterate(FILE **fd, struct rpng_t *rpng) if (!rpng->has_ihdr || rpng->has_iend || (rpng->ihdr.color_type == PNG_IHDR_COLOR_PLT && !rpng->has_plte)) return false; - if (!png_append_idat_fio(fd, &chunk, &rpng->idat_buf)) + if (!png_realloc_idat(&chunk, &rpng->idat_buf)) return false; + if (fread(rpng->idat_buf.data + rpng->idat_buf.size, 1, chunk.size, file) != chunk.size) + return false; + if (fseek(file, sizeof(uint32_t), SEEK_CUR) < 0) + return false; + + rpng->idat_buf.size += chunk.size; + rpng->has_idat = true; break; diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index f62e3aa9a2..1b4ca54133 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -66,18 +66,6 @@ static bool png_parse_ihdr(uint8_t *buf, return true; } -static bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer *buf) -{ - uint8_t *new_buffer = (uint8_t*)realloc(buf->data, buf->size + chunk->size); - - if (!new_buffer) - return false; - - buf->data = new_buffer; - return true; -} - - bool rpng_nbio_load_image_argb_iterate(struct rpng_t *rpng) { unsigned i; From 0d923d6b05f7ff0c36e87d3436131c2b0052cd6a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:37:03 +0200 Subject: [PATCH 515/822] (rpng) Cleanup --- libretro-common/formats/png/rpng_test.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libretro-common/formats/png/rpng_test.c b/libretro-common/formats/png/rpng_test.c index f1f4e0923b..5c9a3a0221 100644 --- a/libretro-common/formats/png/rpng_test.c +++ b/libretro-common/formats/png/rpng_test.c @@ -87,12 +87,6 @@ static bool rpng_nbio_load_image_argb(const char *path, uint32_t **data, while (rpng_nbio_load_image_argb_iterate(rpng)); -#if 0 - fprintf(stderr, "has_ihdr: %d\n", rpng->has_ihdr); - fprintf(stderr, "has_idat: %d\n", rpng->has_idat); - fprintf(stderr, "has_iend: %d\n", rpng->has_iend); -#endif - if (!rpng_is_valid(rpng)) { ret = false; From 679a7ee13026ffc328c5efc8baf6883a5411cbc7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:39:09 +0200 Subject: [PATCH 516/822] (rpng) Don't expose unused internal function --- libretro-common/formats/png/rpng_common.h | 3 +++ libretro-common/include/formats/rpng.h | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libretro-common/formats/png/rpng_common.h b/libretro-common/formats/png/rpng_common.h index e84e97f9c5..c93d685e6b 100644 --- a/libretro-common/formats/png/rpng_common.h +++ b/libretro-common/formats/png/rpng_common.h @@ -192,4 +192,7 @@ static INLINE bool png_realloc_idat(const struct png_chunk *chunk, struct idat_b return true; } +int rpng_load_image_argb_process_inflate_init(struct rpng_t *rpng, + uint32_t **data, unsigned *width, unsigned *height); + #endif diff --git a/libretro-common/include/formats/rpng.h b/libretro-common/include/formats/rpng.h index 049b7bcf55..9d8118867c 100644 --- a/libretro-common/include/formats/rpng.h +++ b/libretro-common/include/formats/rpng.h @@ -53,9 +53,6 @@ bool rpng_nbio_load_image_argb_iterate(struct rpng_t *rpng); int rpng_nbio_load_image_argb_process(struct rpng_t *rpng, uint32_t **data, unsigned *width, unsigned *height); -int rpng_load_image_argb_process_inflate_init(struct rpng_t *rpng, - uint32_t **data, unsigned *width, unsigned *height); - bool rpng_nbio_load_image_argb_start(struct rpng_t *rpng); #ifdef HAVE_ZLIB_DEFLATE From 30912ef535112a82c226721dccf2153525972c96 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:40:17 +0200 Subject: [PATCH 517/822] Rename rpng_common.h to rpng_internal.h --- libretro-common/formats/png/rpng_decode.c | 2 +- libretro-common/formats/png/rpng_encode.c | 2 +- libretro-common/formats/png/rpng_fbio.c | 2 +- libretro-common/formats/png/{rpng_common.h => rpng_internal.h} | 0 libretro-common/formats/png/rpng_nbio.c | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename libretro-common/formats/png/{rpng_common.h => rpng_internal.h} (100%) diff --git a/libretro-common/formats/png/rpng_decode.c b/libretro-common/formats/png/rpng_decode.c index 4e96b67dd5..fc76680d45 100644 --- a/libretro-common/formats/png/rpng_decode.c +++ b/libretro-common/formats/png/rpng_decode.c @@ -26,7 +26,7 @@ #include #include -#include "rpng_common.h" +#include "rpng_internal.h" #include "rpng_decode.h" #ifdef GEKKO diff --git a/libretro-common/formats/png/rpng_encode.c b/libretro-common/formats/png/rpng_encode.c index c78ed3e963..8a45554c6f 100644 --- a/libretro-common/formats/png/rpng_encode.c +++ b/libretro-common/formats/png/rpng_encode.c @@ -24,7 +24,7 @@ #include #include -#include "rpng_common.h" +#include "rpng_internal.h" #undef GOTO_END_ERROR #define GOTO_END_ERROR() do { \ diff --git a/libretro-common/formats/png/rpng_fbio.c b/libretro-common/formats/png/rpng_fbio.c index 4d73186f32..9b027cecbb 100644 --- a/libretro-common/formats/png/rpng_fbio.c +++ b/libretro-common/formats/png/rpng_fbio.c @@ -26,7 +26,7 @@ #include #include -#include "rpng_common.h" +#include "rpng_internal.h" #include "rpng_decode.h" static bool read_chunk_header_fio(FILE **fd, struct png_chunk *chunk) diff --git a/libretro-common/formats/png/rpng_common.h b/libretro-common/formats/png/rpng_internal.h similarity index 100% rename from libretro-common/formats/png/rpng_common.h rename to libretro-common/formats/png/rpng_internal.h diff --git a/libretro-common/formats/png/rpng_nbio.c b/libretro-common/formats/png/rpng_nbio.c index 1b4ca54133..b73da2d8ab 100644 --- a/libretro-common/formats/png/rpng_nbio.c +++ b/libretro-common/formats/png/rpng_nbio.c @@ -24,7 +24,7 @@ #include #include -#include "rpng_common.h" +#include "rpng_internal.h" #include "rpng_decode.h" static bool read_chunk_header(uint8_t *buf, struct png_chunk *chunk) From 7874eb989019191e19cd4c6e9368ec1938ffb451 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:41:45 +0200 Subject: [PATCH 518/822] Move some inline functions to rpng_decode.c --- libretro-common/formats/png/rpng_decode.c | 27 ++++++++++++++++++++ libretro-common/formats/png/rpng_internal.h | 28 +++------------------ 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/libretro-common/formats/png/rpng_decode.c b/libretro-common/formats/png/rpng_decode.c index fc76680d45..b929630780 100644 --- a/libretro-common/formats/png/rpng_decode.c +++ b/libretro-common/formats/png/rpng_decode.c @@ -641,6 +641,33 @@ false_end: return -1; } +bool png_read_plte(uint8_t *buf, + uint32_t *buffer, unsigned entries) +{ + unsigned i; + + for (i = 0; i < entries; i++) + { + uint32_t r = buf[3 * i + 0]; + uint32_t g = buf[3 * i + 1]; + uint32_t b = buf[3 * i + 2]; + buffer[i] = (r << 16) | (g << 8) | (b << 0) | (0xffu << 24); + } + + return true; +} + +bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer *buf) +{ + uint8_t *new_buffer = (uint8_t*)realloc(buf->data, buf->size + chunk->size); + + if (!new_buffer) + return false; + + buf->data = new_buffer; + return true; +} + bool rpng_load_image_argb_process_init(struct rpng_t *rpng, uint32_t **data, unsigned *width, unsigned *height) { diff --git a/libretro-common/formats/png/rpng_internal.h b/libretro-common/formats/png/rpng_internal.h index c93d685e6b..d74e2a3561 100644 --- a/libretro-common/formats/png/rpng_internal.h +++ b/libretro-common/formats/png/rpng_internal.h @@ -165,32 +165,10 @@ static INLINE uint32_t dword_be(const uint8_t *buf) return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | (buf[3] << 0); } -static INLINE bool png_read_plte(uint8_t *buf, - uint32_t *buffer, unsigned entries) -{ - unsigned i; +bool png_read_plte(uint8_t *buf, + uint32_t *buffer, unsigned entries); - for (i = 0; i < entries; i++) - { - uint32_t r = buf[3 * i + 0]; - uint32_t g = buf[3 * i + 1]; - uint32_t b = buf[3 * i + 2]; - buffer[i] = (r << 16) | (g << 8) | (b << 0) | (0xffu << 24); - } - - return true; -} - -static INLINE bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer *buf) -{ - uint8_t *new_buffer = (uint8_t*)realloc(buf->data, buf->size + chunk->size); - - if (!new_buffer) - return false; - - buf->data = new_buffer; - return true; -} +bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer *buf); int rpng_load_image_argb_process_inflate_init(struct rpng_t *rpng, uint32_t **data, unsigned *width, unsigned *height); From 6d188a4840a6d961868a78119b86687be81da0d7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 13:42:28 +0200 Subject: [PATCH 519/822] Move function prototypes to rpng_decode.h --- libretro-common/formats/png/rpng_decode.h | 5 +++++ libretro-common/formats/png/rpng_internal.h | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libretro-common/formats/png/rpng_decode.h b/libretro-common/formats/png/rpng_decode.h index e63f43ab89..1de1ed5574 100644 --- a/libretro-common/formats/png/rpng_decode.h +++ b/libretro-common/formats/png/rpng_decode.h @@ -35,6 +35,11 @@ enum png_chunk_type png_chunk_type(const struct png_chunk *chunk); bool png_process_ihdr(struct png_ihdr *ihdr); +bool png_read_plte(uint8_t *buf, + uint32_t *buffer, unsigned entries); + +bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer *buf); + int png_reverse_filter_iterate(struct rpng_t *rpng, uint32_t **data); diff --git a/libretro-common/formats/png/rpng_internal.h b/libretro-common/formats/png/rpng_internal.h index d74e2a3561..a1ebcbccde 100644 --- a/libretro-common/formats/png/rpng_internal.h +++ b/libretro-common/formats/png/rpng_internal.h @@ -165,11 +165,6 @@ static INLINE uint32_t dword_be(const uint8_t *buf) return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | (buf[3] << 0); } -bool png_read_plte(uint8_t *buf, - uint32_t *buffer, unsigned entries); - -bool png_realloc_idat(const struct png_chunk *chunk, struct idat_buffer *buf); - int rpng_load_image_argb_process_inflate_init(struct rpng_t *rpng, uint32_t **data, unsigned *width, unsigned *height); From 29399513c034b646fb6a5fd188544c7ffc7884c7 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 1 Sep 2015 14:39:43 +0200 Subject: [PATCH 520/822] (file_path.c) Bugfix --- libretro-common/file/file_path.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro-common/file/file_path.c b/libretro-common/file/file_path.c index 1a96cb8ba8..ec5449ff82 100644 --- a/libretro-common/file/file_path.c +++ b/libretro-common/file/file_path.c @@ -147,7 +147,7 @@ bool path_is_compressed_file(const char* path) #ifdef HAVE_COMPRESSION const char* file_ext = path_get_extension(path); -#ifdef HAVE_7ZIP +#ifdef HAVE_ZLIB if (!strcmp(file_ext, "zip")) return true; #endif From b1348cfe94360b5c7dccaab2e9e1ea32fa019362 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 14:59:58 +0200 Subject: [PATCH 521/822] Add retro_log.h to menu_cbs.c --- menu/menu_cbs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/menu/menu_cbs.c b/menu/menu_cbs.c index 2af38718fb..556ff2a456 100644 --- a/menu/menu_cbs.c +++ b/menu/menu_cbs.c @@ -15,6 +15,7 @@ #include #include +#include #include "menu.h" #include "menu_hash.h" From 1308aa83563bae9158e54b4f5b057493caf69d08 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 15:43:51 +0200 Subject: [PATCH 522/822] (Vita) Correct RARCH_CONSOLE rule --- Makefile.griffin | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index acc88a232c..ef8f36452a 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -5,6 +5,7 @@ WHOLE_ARCHIVE_LINK = 0 BIG_STACK = 1 PC_DEVELOPMENT_IP_ADDRESS = 255.255.255.255 PC_DEVELOPMENT_UDP_PORT = 3490 +RARCH_CONSOLE = 0 ifneq ($(EMSCRIPTEN),) platform = emscripten @@ -67,13 +68,13 @@ endif ifeq ($(platform), ps3) #TODO MEDIA_SHADER_DIR := pkg/ps3/USRDIR/cores/shaders - RARCH_CONSOLE := 1 + RARCH_CONSOLE = 1 # PS3 - Cobra else ifeq ($(platform), ps3-cobra) #TODO MEDIA_SHADER_DIR := ps3/iso/PS3_GAME/USRDIR/cores/shaders - RARCH_CONSOLE := 1 + RARCH_CONSOLE = 1 # NGC/Wii - libogc else ifeq ($(libogc_platform), 1) @@ -131,7 +132,7 @@ endif HAVE_BUILTIN_AUTOCONFIG := 1 HAVE_ZLIB := 1 HAVE_7ZIP := 1 - RARCH_CONSOLE := 1 + RARCH_CONSOLE = 1 ifeq ($(platform), wii) HAVE_WIIUSB_HID := 1 @@ -168,7 +169,7 @@ else ifeq ($(platform), xenon360) PLATCFLAGS += -u read -u _start -u exc_base HAVE_THREADS := 1 HAVE_GETOPT_LONG := 1 - RARCH_CONSOLE := 1 + RARCH_CONSOLE = 1 # PSP else ifeq ($(platform), psp1) @@ -189,7 +190,7 @@ else ifeq ($(platform), psp1) HAVE_LIBRETRO_MANAGEMENT := 1 HAVE_RPNG := 1 HAVE_KERNEL_PRX := 1 - RARCH_CONSOLE := 1 # Maybe switch to RARCH_MOBILE ? + RARCH_CONSOLE = 1 ifeq ($(BUILD_PRX), 1) LDFLAGS += $(addprefix -L,$(PSPSDK)/lib) -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS) @@ -219,7 +220,7 @@ else ifeq ($(platform), vita) HAVE_RPNG := 1 HAVE_ZLIB := 1 HAVE_VITA2D := 1 - RARCH_CONSOLE := 1 # Maybe switch to RARCH_MOBILE ? + RARCH_CONSOLE = 1 endif From 26e1de42bf19c9af1901283d1c69f9f9cde89d1f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 16:09:37 +0200 Subject: [PATCH 523/822] (PS3) Remove custom PNG decoder (PS3) Add header for sys_ppu_thread_ functions --- audio/drivers/ps3_audio.c | 4 + gfx/image/image.c | 180 -------------------------------------- 2 files changed, 4 insertions(+), 180 deletions(-) diff --git a/audio/drivers/ps3_audio.c b/audio/drivers/ps3_audio.c index eb8acbf71d..0318ce7017 100644 --- a/audio/drivers/ps3_audio.c +++ b/audio/drivers/ps3_audio.c @@ -23,6 +23,10 @@ #include "../../defines/ps3_defines.h" +#if defined(__CELLOS_LV2__) +#include +#endif + #define AUDIO_BLOCKS 8 #define AUDIO_CHANNELS 2 diff --git a/gfx/image/image.c b/gfx/image/image.c index 7e73aad878..543523c03d 100644 --- a/gfx/image/image.c +++ b/gfx/image/image.c @@ -35,19 +35,6 @@ #include #include "../../general.h" -#if defined(__CELLOS_LV2__) || defined(__PSLIGHT__) -#include "../../defines/ps3_defines.h" - -#ifdef __PSL1GHT__ -#include -#include -#include -#else -#include -#endif - -#endif - bool texture_image_set_color_shifts(unsigned *r_shift, unsigned *g_shift, unsigned *b_shift, unsigned *a_shift) { @@ -229,173 +216,6 @@ bool texture_image_load(struct texture_image *out_img, const char *path) return true; } -#elif defined(__CELLOS_LV2__) -typedef struct CtrlMallocArg -{ - uint32_t mallocCallCounts; -} CtrlMallocArg; - -typedef struct CtrlFreeArg -{ - uint32_t freeCallCounts; -} CtrlFreeArg; - -void *img_malloc(uint32_t size, void *a) -{ -#ifndef __PSL1GHT__ - CtrlMallocArg *arg; - arg = (CtrlMallocArg *) a; - arg->mallocCallCounts++; -#endif - - return malloc(size); -} - -static int img_free(void *ptr, void *a) -{ -#ifndef __PSL1GHT__ - CtrlFreeArg *arg; - arg = (CtrlFreeArg *) a; - arg->freeCallCounts++; -#endif - - free(ptr); - return 0; -} - -static bool ps3_load_png(const char *path, struct texture_image *out_img) -{ -#ifdef __PSL1GHT__ - uint64_t output_bytes_per_line; -#else - CtrlMallocArg MallocArg; - CtrlFreeArg FreeArg; - CellPngDecDataCtrlParam dCtrlParam; -#endif - CellPngDecThreadInParam InParam; - CellPngDecThreadOutParam OutParam; - CellPngDecSrc src; - CellPngDecOpnInfo opnInfo; - CellPngDecInfo info; - CellPngDecInParam inParam; - CellPngDecOutParam outParam; - CellPngDecDataOutInfo dOutInfo; - size_t img_size; - int ret_png, ret = -1; - CellPngDecMainHandle mHandle = PTR_NULL; - CellPngDecSubHandle sHandle = PTR_NULL; - - InParam.spu_enable = CELL_PNGDEC_SPU_THREAD_ENABLE; - InParam.ppu_prio = 512; - InParam.spu_prio = 200; -#ifdef __PSL1GHT__ - InParam.malloc_func = __get_addr32(__get_opd32(img_malloc)); - InParam.free_func = __get_addr32(__get_opd32(img_free)); - InParam.malloc_arg = 0; - InParam.free_arg = 0; -#else - MallocArg.mallocCallCounts = 0; - FreeArg.freeCallCounts = 0; - InParam.malloc_func = img_malloc; - InParam.malloc_arg = &MallocArg; - InParam.free_func = img_free; - InParam.free_arg = &FreeArg; -#endif - - ret_png = cellPngDecCreate(&mHandle, &InParam, &OutParam); - - if (ret_png != CELL_OK) - goto error; - - memset(&src, 0, sizeof(CellPngDecSrc)); - - src.stream_select = CELL_PNGDEC_FILE; -#ifdef __PSL1GHT__ - src.file_name = __get_addr32(path); -#else - src.file_name = path; -#endif - src.file_offset = 0; - src.file_size = 0; - src.stream_ptr = 0; - src.stream_size = 0; - src.spu_enable = CELL_PNGDEC_SPU_THREAD_ENABLE; - - ret = cellPngDecOpen(mHandle, &sHandle, &src, &opnInfo); - - if (ret != CELL_OK) - goto error; - - ret = cellPngDecReadHeader(mHandle, sHandle, &info); - - if (ret != CELL_OK) - goto error; - - inParam.cmd_ptr = PTR_NULL; - inParam.output_mode = CELL_PNGDEC_TOP_TO_BOTTOM; - inParam.color_space = CELL_PNGDEC_ARGB; - inParam.bit_depth = 8; - inParam.pack_flag = CELL_PNGDEC_1BYTE_PER_1PIXEL; - inParam.alpha_select = CELL_PNGDEC_STREAM_ALPHA; - - ret = cellPngDecSetParameter(mHandle, sHandle, &inParam, &outParam); - - if (ret != CELL_OK) - goto error; - - img_size = outParam.output_width * - outParam.output_height * sizeof(uint32_t); - out_img->pixels = (uint32_t*)malloc(img_size); - - if (!out_img->pixels) - goto error; - - memset(out_img->pixels, 0, img_size); - -#ifdef __PSL1GHT__ - output_bytes_per_line = outParam.output_width * 4; - ret = cellPngDecDecodeData(mHandle, sHandle, (uint8_t*) - out_img->pixels, &output_bytes_per_line, &dOutInfo); -#else - dCtrlParam.output_bytes_per_line = outParam.output_width * 4; - ret = cellPngDecDecodeData(mHandle, sHandle, (uint8_t*) - out_img->pixels, &dCtrlParam, &dOutInfo); -#endif - - if (ret != CELL_OK || dOutInfo.status != CELL_PNGDEC_DEC_STATUS_FINISH) - goto error; - - out_img->width = outParam.output_width; - out_img->height = outParam.output_height; - - cellPngDecClose(mHandle, sHandle); - cellPngDecDestroy(mHandle); - - return true; - -error: - if (out_img->pixels) - free(out_img->pixels); - out_img->pixels = 0; - if (mHandle && sHandle) - cellPngDecClose(mHandle, sHandle); - if (mHandle) - cellPngDecDestroy(mHandle); - - return false; -} - - -bool texture_image_load(struct texture_image *out_img, const char *path) -{ - if (!out_img) - return false; - - if (!ps3_load_png(path, out_img)) - return false; - - return true; -} #else bool texture_image_load(struct texture_image *out_img, const char *path) { From bbbc353f28f20989db1d616589dd5f5e8372eaf2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 16:12:07 +0200 Subject: [PATCH 524/822] Add sys/ppu_thread.h headers to ps3_defines.h --- audio/drivers/ps3_audio.c | 4 ---- defines/ps3_defines.h | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/audio/drivers/ps3_audio.c b/audio/drivers/ps3_audio.c index 0318ce7017..eb8acbf71d 100644 --- a/audio/drivers/ps3_audio.c +++ b/audio/drivers/ps3_audio.c @@ -23,10 +23,6 @@ #include "../../defines/ps3_defines.h" -#if defined(__CELLOS_LV2__) -#include -#endif - #define AUDIO_BLOCKS 8 #define AUDIO_CHANNELS 2 diff --git a/defines/ps3_defines.h b/defines/ps3_defines.h index cdd4cee7df..2241709c2c 100644 --- a/defines/ps3_defines.h +++ b/defines/ps3_defines.h @@ -323,12 +323,16 @@ extern int audioAddData(uint32_t portNum, float *data, uint32_t frames, float vo ============================================================ */ #ifdef __PSL1GHT__ +#include + /* define all the thread functions */ #define sys_ppu_thread_create sysThreadCreate #define sys_ppu_thread_join sysThreadJoin #define sys_ppu_thread_exit sysThreadExit #define SYS_PPU_THREAD_CREATE_JOINABLE 0 /* FIXME - not sure if this is correct */ +#elif defined(__CELLOS_LV2__) +#include #endif /*============================================================ From 11d574bc30a627b36c26fb88642629023ebb387e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 16:40:09 +0200 Subject: [PATCH 525/822] Fix up some dist-scripts --- dist-scripts/ps3-cores-dex.sh | 38 ++++++++++++++++++----------------- dist-scripts/wii-cores.sh | 22 +++++++++++--------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/dist-scripts/ps3-cores-dex.sh b/dist-scripts/ps3-cores-dex.sh index 8900acb0d4..a4b69ec181 100755 --- a/dist-scripts/ps3-cores-dex.sh +++ b/dist-scripts/ps3-cores-dex.sh @@ -1,37 +1,39 @@ #!/bin/sh -make -C ../ -f Makefile.ps3.salamander clean || exit 1 -make -C ../ -f Makefile.ps3 clean || exit 1 +PLATFORM=ps3 -make -C ../ -f Makefile.ps3.salamander || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 +make -C ../ -f Makefile.${PLATFORM} clean || exit 1 + +make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 EXE_PATH=/usr/local/cell/host-win32/bin MAKE_FSELF_NPDRM=$EXE_PATH/make_fself_npdrm.exe MAKE_PACKAGE_NPDRM=$EXE_PATH/make_package_npdrm.exe -for f in *_ps3.a ; do - name=`echo "$f" | sed 's/\(_libretro_ps3\|\).a$//'` +for f in *_${PLATFORM}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` whole_archive= if [ $name = "nxengine" ] ; then - echo "NXEngine found, applying whole archive linking..." + echo "Applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" - echo $name yes fi if [ $name = "tyrquake" ] ; then - echo "Tyrquake found, applying big stack..." + echo "Applying big stack..." big_stack="BIG_STACK=1" fi - cp -f "$f" ../libretro_ps3.a - make -C ../ -f Makefile.ps3 $whole_archive $big_stack -j3 || exit 1 - $MAKE_FSELF_NPDRM ../retroarch_ps3.elf ../CORE.SELF - mv -f ../CORE.SELF ../ps3/pkg/USRDIR/cores/"${name}_libretro_ps3.SELF" - rm -f ../retroarch_ps3.elf ../retroarch_ps3.self ../CORE.SELF + echo "-- Building core: $name --" + cp -f "$f" ../libretro_${PLATFORM}.a + make -C ../ -f Makefile.${PLATFORM} $whole_archive $big_stack -j3 || exit 1 + $MAKE_FSELF_NPDRM ../retroarch_${PLATFORM}.elf ../CORE.SELF + mv -f ../CORE.SELF ../pkg/${PLATFORM}/USRDIR/cores/"${name}_libretro_${PLATFORM}.SELF" + rm -f ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.self ../CORE.SELF done -cp -r ../media/rmenu/*.png ../ps3/pkg/USRDIR/cores/borders/Menu/ +cp -r ../media/rmenu/*.png ../pkg/${PLATFORM}/USRDIR/cores/borders/Menu/ -make -C ../ -f Makefile.griffin platform=ps3 shaders-deploy +make -C ../ -f Makefile.griffin platform=${PLATFORM} shaders-deploy -$MAKE_FSELF_NPDRM ../retroarch-salamander_ps3.elf ../ps3/pkg/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_ps3.elf -$MAKE_PACKAGE_NPDRM ../ps3/pkg/package.conf ../ps3/pkg +$MAKE_FSELF_NPDRM ../retroarch-salamander_${PLATFORM}.elf ../pkg/${PLATFORM}/USRDIR/EBOOT.BIN +rm -rf ../retroarch-salamander_${PLATFORM}.elf +$MAKE_PACKAGE_NPDRM ../pkg/${PLATFORM}/package.conf ../pkg/${PLATFORM} diff --git a/dist-scripts/wii-cores.sh b/dist-scripts/wii-cores.sh index 78d9d37d7d..10299fdf11 100755 --- a/dist-scripts/wii-cores.sh +++ b/dist-scripts/wii-cores.sh @@ -1,13 +1,15 @@ #!/bin/sh -make -C ../ -f Makefile.wii.salamander clean || exit 1 -make -C ../ -f Makefile.griffin platform=wii clean || exit 1 +PLATFORM=wii -make -C ../ -f Makefile.wii.salamander || exit 1 -make -C ../ -f Makefile.wii.salamander pkg || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 +make -C ../ -f Makefile.griffin PLATFORM=${PLATFORM} clean || exit 1 -for f in *_wii.a ; do - name=`echo "$f" | sed 's/\(_libretro_wii\|\).a$//'` +make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander pkg || exit 1 + +for f in *_${PLATFORM}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` whole_archive= big_stack= if [ $name = "nxengine" ] ; then @@ -18,8 +20,8 @@ for f in *_wii.a ; do echo "Tyrquake found, applying big stack..." big_stack="BIG_STACK=1" fi - cp -f "$f" ../libretro_wii.a - make -C ../ -f Makefile.griffin platform=wii $whole_archive $big_stack -j3 || exit 1 - mv -f ../retroarch_wii.dol ../wii/pkg/${name}_libretro_wii.dol - rm -f ../retroarch_wii.dol ../retroarch_wii.elf ../retroarch_wii.elf.map + cp -f "$f" ../libretro_${PLATFORM}.a + make -C ../ -f Makefile.griffin platform=${PLATFORM} $whole_archive $big_stack -j3 || exit 1 + mv -f ../retroarch_${PLATFORM}.dol ../pkg/${PLATFORM}/${name}_libretro_${PLATFORM}.dol + rm -f ../retroarch_${PLATFORM}.dol ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.elf.map done From 259b3e9e0f0ce3bd1cad64e5face4618d4934447 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 16:46:28 +0200 Subject: [PATCH 526/822] Update dist-scripts --- dist-scripts/ps3-cores-cex-355.sh | 35 +++++++++++++++--------------- dist-scripts/ps3-cores-cobraode.sh | 29 +++++++++++++------------ dist-scripts/psp1-cores.sh | 4 ++-- dist-scripts/xdk1-cores.sh | 15 +++++-------- dist-scripts/xdk360-cores.sh | 13 +++++------ 5 files changed, 45 insertions(+), 51 deletions(-) diff --git a/dist-scripts/ps3-cores-cex-355.sh b/dist-scripts/ps3-cores-cex-355.sh index 7592a4f8e5..4795ce055c 100755 --- a/dist-scripts/ps3-cores-cex-355.sh +++ b/dist-scripts/ps3-cores-cex-355.sh @@ -1,32 +1,31 @@ #!/bin/sh -RARCH_VERSION=0.9.9 +RARCH_VERSION=1.2.2 +PLATFORM=ps3 -make -C ../ -f Makefile.ps3.salamander clean || exit 1 -make -C ../ -f Makefile.ps3 clean || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 +make -C ../ -f Makefile.${PLATFORM} clean || exit 1 -make -C ../ -f Makefile.ps3.salamander || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 EXE_PATH=/usr/local/cell/host-win32/bin -for f in *_ps3.a ; do - name=`echo "$f" | sed 's/\(_libretro_ps3\|\).a$//'` +for f in *_${PLATFORM}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` whole_archive= if [ $name = "nxengine" ] ; then - echo "NXEngine found, applying whole archive linking..." + echo "Applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" - echo $name yes fi - cp -f "$f" ../libretro_ps3.a - make -C ../ -f Makefile.ps3 $whole_archive -j3 || exit 1 - make_self_wc ../retroarch_ps3.elf ../CORE.SELF - mv -f ../CORE.SELF ../ps3/pkg/USRDIR/cores/"${name}_libretro_ps3.SELF" - rm -f ../retroarch_ps3.elf ../retroarch_ps3.self ../CORE.SELF + echo $name yes + cp -f "$f" ../libretro_${PLATFORM}.a + make -C ../ -f Makefile.${PLATFORM} $whole_archive -j3 || exit 1 + make_self_wc ../retroarch_${PLATFORM}.elf ../CORE.SELF + mv -f ../CORE.SELF ../pkg/${PLATFORM}/USRDIR/cores/"${name}_libretro_${PLATFORM}.SELF" + rm -f ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.self ../CORE.SELF done -cp -r ../media/rmenu/*.png ../ps3/pkg/USRDIR/cores/borders/Menu/ - make -C ../ -f Makefile.shaders deploy-ps3 -make_self_wc ../retroarch-salamander_ps3.elf ../ps3/pkg/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_ps3.elf -python2 ../ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../ps3/pkg/ retroarch-ps3-cfw-$RARCH_VERSION.pkg +make_self_wc ../retroarch-salamander_${PLATFORM}.elf ../pkg/${PLATFORM}/USRDIR/EBOOT.BIN +rm -rf ../retroarch-salamander_${PLATFORM}.elf +python2 ../ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../pkg/${PLATFORM} retroarch-${PLATFORM}-cfw-$RARCH_VERSION.pkg diff --git a/dist-scripts/ps3-cores-cobraode.sh b/dist-scripts/ps3-cores-cobraode.sh index 65346ea5a6..3c2fe4af31 100644 --- a/dist-scripts/ps3-cores-cobraode.sh +++ b/dist-scripts/ps3-cores-cobraode.sh @@ -1,35 +1,36 @@ #!/bin/sh #For this script to work correctly, you must place the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder. +PLATFORM=ps3 -make -C ../ -f Makefile.ps3.salamander clean || exit 1 -make -C ../ -f Makefile.ps3.cobra clean || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 +make -C ../ -f Makefile.${PLATFORM}.cobra clean || exit 1 -make -C ../ -f Makefile.ps3.salamander || exit 1 +make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 GENPS3ISO_PATH=/cygdrive/c/Cobra_ODE_GenPS3iso_v2.3/genps3iso.exe SCETOOL_PATH=/cygdrive/c/Users/aaa801/ps3tools/ps3tools/tools/scetool/scetool.exe SCETOOL_FLAGS="--sce-type SELF --compress-data FALSE --self-type APP --key-revision 0004 --self-fw-version 0003004100000000 --self-app-version 0001000000000000 --self-auth-id 1010000001000003 --self-vendor-id 01000002 --self-cap-flags 00000000000000000000000000000000000000000000003b0000000100040000" -for f in *_ps3.a ; do - name=`echo "$f" | sed 's/\(_libretro_ps3\|\).a$//'` +for f in *_${PLATFORM}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` whole_archive= if [ $name = "nxengine" ] ; then echo "NXEngine found, applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" echo $name yes fi - cp -f "$f" ../libretro_ps3.a - make -C ../ -f Makefile.ps3.cobra $whole_archive -j3 || exit 1 - $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch_ps3.elf ../CORE.SELF - mv -f ../CORE.SELF ../ps3/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_ps3.SELF" - rm -f ../retroarch_ps3.elf ../retroarch_ps3.self ../CORE.SELF + cp -f "$f" ../libretro_${PLATFORM}.a + make -C ../ -f Makefile.${PLATFORM}.cobra $whole_archive -j3 || exit 1 + $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch_${PLATFORM}.elf ../CORE.SELF + mv -f ../CORE.SELF ../${PLATFORM}/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_${PLATFORM}.SELF" + rm -f ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.self ../CORE.SELF done cp -r ../media/rmenu/*.png ../ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/ -make -C ../ -f Makefile.griffin platform=ps3-cobra shaders-deploy +make -C ../ -f Makefile.griffin platform=${PLATFORM}-cobra shaders-deploy -$SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch-salamander_ps3.elf ../ps3/iso/PS3_GAME/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_ps3.elf +$SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch-salamander_${PLATFORM}.elf ../${PLATFORM}/iso/PS3_GAME/USRDIR/EBOOT.BIN +rm -rf ../retroarch-salamander_${PLATFORM}.elf -$GENPS3ISO_PATH ../ps3/iso RetroArch-COBRA-ODE.iso +$GENPS3ISO_PATH ../${PLATFORM}/iso RetroArch-COBRA-ODE.iso diff --git a/dist-scripts/psp1-cores.sh b/dist-scripts/psp1-cores.sh index da2da95ad7..eb5886c6fa 100755 --- a/dist-scripts/psp1-cores.sh +++ b/dist-scripts/psp1-cores.sh @@ -20,12 +20,12 @@ for f in *_${PLATFORM}.a ; do big_stack= if [ $name = "nxengine" ] ; then - echo "NXEngine found, applying whole archive linking..." + echo "Applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" fi if [ $name = "tyrquake" ] ; then - echo "Tyrquake found, applying big stack..." + echo "Applying big stack..." big_stack="BIG_STACK=1" fi diff --git a/dist-scripts/xdk1-cores.sh b/dist-scripts/xdk1-cores.sh index 3892a64b49..efed18b23f 100644 --- a/dist-scripts/xdk1-cores.sh +++ b/dist-scripts/xdk1-cores.sh @@ -1,25 +1,22 @@ #!/bin/sh +PLATFORM=xdk + ip='192.168.1.10' -#make -C ../ -f Makefile.wii.salamander clean || exit 1 -#make -C ../ -f Makefile.wii clean || exit 1 - -#make -C ../ -f Makefile.wii.salamander || exit 1 -#make -C ../ -f Makefile.wii.salamander pkg || exit 1 mkdir -p ../msvc/RetroArch-Xbox1/Debug mkdir -p ../msvc/RetroArch-Xbox1/Release mkdir -p ../msvc/RetroArch-Xbox1/Release_LTCG -for f in *_xdk.lib ; do - name=`echo "$f" | sed 's/\(_libretro_xdk\|\).lib$//'` +for f in *_${PLATFORM}.lib ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).lib$//"` echo $name if [ $name = "tyrquake" ] || [ $name = "genesis_plus_gx" ] ; then echo "Applying whole archive linking for this core..." - cp -f "$f" ../msvc/RetroArch-Xbox1/Release_LTCG_BigStack/libretro_xdk.lib + cp -f "$f" ../msvc/RetroArch-Xbox1/Release_LTCG_BigStack/libretro_${PLATFORM}.lib cmd.exe /k xdk1_env_bigstack.bat ${name}_libretro_xdk1 else - cp -f "$f" ../msvc/RetroArch-Xbox1/Release_LTCG/libretro_xdk.lib + cp -f "$f" ../msvc/RetroArch-Xbox1/Release_LTCG/libretro_${PLATFORM}.lib cmd.exe /k xdk1_env.bat ${name}_libretro_xdk1 fi done diff --git a/dist-scripts/xdk360-cores.sh b/dist-scripts/xdk360-cores.sh index cfd5e2dec1..c9e8cac54f 100644 --- a/dist-scripts/xdk360-cores.sh +++ b/dist-scripts/xdk360-cores.sh @@ -1,17 +1,14 @@ #!/bin/sh -#make -C ../ -f Makefile.wii.salamander clean || exit 1 -#make -C ../ -f Makefile.wii clean || exit 1 +PLATFORM=xdk360 -#make -C ../ -f Makefile.wii.salamander || exit 1 -#make -C ../ -f Makefile.wii.salamander pkg || exit 1 mkdir -p ../msvc/RetroArch-360/Debug mkdir -p ../msvc/RetroArch-360/Release mkdir -p ../msvc/RetroArch-360/Release_LTCG -for f in *_xdk360.lib ; do - name=`echo "$f" | sed 's/\(_libretro_xdk360\|\).lib$//'` +for f in *_${PLATFORM}.lib ; do + name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).lib$//"` echo $name - cp -f "$f" ../msvc/RetroArch-360/Release_LTCG/libretro_xdk360.lib - cmd.exe /k xdk360_env.bat ${name}_libretro_xdk360 + cp -f "$f" ../msvc/RetroArch-360/Release_LTCG/libretro_${PLATFORM}.lib + cmd.exe /k ${PLATFORM}_env.bat ${name}_libretro_${PLATFORM} done From a1881e7e718f283d9126299caf3aae97af13ae50 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 16:51:17 +0200 Subject: [PATCH 527/822] dist-scripts - refactors --- dist-scripts/ngc-cores.sh | 16 +++++++-------- dist-scripts/ps3-cores-cex-355.sh | 28 +++++++++++++------------- dist-scripts/ps3-cores-cobraode.sh | 30 ++++++++++++++-------------- dist-scripts/ps3-cores-dex.sh | 32 +++++++++++++++--------------- dist-scripts/psp1-cores.sh | 32 +++++++++++++++--------------- dist-scripts/vita-cores.sh | 20 +++++++++---------- dist-scripts/wii-cores.sh | 22 ++++++++++---------- dist-scripts/xdk1-cores.sh | 10 +++++----- dist-scripts/xdk360-cores.sh | 10 +++++----- 9 files changed, 100 insertions(+), 100 deletions(-) diff --git a/dist-scripts/ngc-cores.sh b/dist-scripts/ngc-cores.sh index 966a0f36b9..5b9d288f5b 100755 --- a/dist-scripts/ngc-cores.sh +++ b/dist-scripts/ngc-cores.sh @@ -1,11 +1,11 @@ #!/bin/sh -PLATFORM=ngc +platform=ngc -make -C ../ -f Makefile.griffin platform=${PLATFORM} clean || exit 1 +make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 -for f in *_${PLATFORM}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` +for f in *_${platform}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` whole_archive= big_stack= if [ $name = "nxengine" ] ; then @@ -16,8 +16,8 @@ for f in *_${PLATFORM}.a ; do echo "Tyrquake found, applying big stack..." big_stack="BIG_STACK=1" fi - cp -f "$f" ../libretro_${PLATFORM}.a - make -C ../ -f Makefile.griffin platform=${PLATFORM} $whole_archive $big_stack -j3 || exit 1 - mv -f ../retroarch_${PLATFORM}.dol ../pkg/${PLATFORM}/${name}_libretro_${PLATFORM}.dol - rm -f ../retroarch_${PLATFORM}.dol ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.elf.map + cp -f "$f" ../libretro_${platform}.a + make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1 + mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol + rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map done diff --git a/dist-scripts/ps3-cores-cex-355.sh b/dist-scripts/ps3-cores-cex-355.sh index 4795ce055c..dcbccf3992 100755 --- a/dist-scripts/ps3-cores-cex-355.sh +++ b/dist-scripts/ps3-cores-cex-355.sh @@ -1,31 +1,31 @@ #!/bin/sh RARCH_VERSION=1.2.2 -PLATFORM=ps3 +platform=ps3 -make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 -make -C ../ -f Makefile.${PLATFORM} clean || exit 1 +make -C ../ -f Makefile.${platform}.salamander clean || exit 1 +make -C ../ -f Makefile.${platform} clean || exit 1 -make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 +make -C ../ -f Makefile.${platform}.salamander || exit 1 EXE_PATH=/usr/local/cell/host-win32/bin -for f in *_${PLATFORM}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` +for f in *_${platform}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` whole_archive= if [ $name = "nxengine" ] ; then echo "Applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" fi echo $name yes - cp -f "$f" ../libretro_${PLATFORM}.a - make -C ../ -f Makefile.${PLATFORM} $whole_archive -j3 || exit 1 - make_self_wc ../retroarch_${PLATFORM}.elf ../CORE.SELF - mv -f ../CORE.SELF ../pkg/${PLATFORM}/USRDIR/cores/"${name}_libretro_${PLATFORM}.SELF" - rm -f ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.self ../CORE.SELF + cp -f "$f" ../libretro_${platform}.a + make -C ../ -f Makefile.${platform} $whole_archive -j3 || exit 1 + make_self_wc ../retroarch_${platform}.elf ../CORE.SELF + mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" + rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF done make -C ../ -f Makefile.shaders deploy-ps3 -make_self_wc ../retroarch-salamander_${PLATFORM}.elf ../pkg/${PLATFORM}/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_${PLATFORM}.elf -python2 ../ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../pkg/${PLATFORM} retroarch-${PLATFORM}-cfw-$RARCH_VERSION.pkg +make_self_wc ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN +rm -rf ../retroarch-salamander_${platform}.elf +python2 ../ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../pkg/${platform} retroarch-${platform}-cfw-$RARCH_VERSION.pkg diff --git a/dist-scripts/ps3-cores-cobraode.sh b/dist-scripts/ps3-cores-cobraode.sh index 3c2fe4af31..d8680ff358 100644 --- a/dist-scripts/ps3-cores-cobraode.sh +++ b/dist-scripts/ps3-cores-cobraode.sh @@ -1,36 +1,36 @@ #!/bin/sh #For this script to work correctly, you must place the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder. -PLATFORM=ps3 +platform=ps3 -make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 -make -C ../ -f Makefile.${PLATFORM}.cobra clean || exit 1 +make -C ../ -f Makefile.${platform}.salamander clean || exit 1 +make -C ../ -f Makefile.${platform}.cobra clean || exit 1 -make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 +make -C ../ -f Makefile.${platform}.salamander || exit 1 GENPS3ISO_PATH=/cygdrive/c/Cobra_ODE_GenPS3iso_v2.3/genps3iso.exe SCETOOL_PATH=/cygdrive/c/Users/aaa801/ps3tools/ps3tools/tools/scetool/scetool.exe SCETOOL_FLAGS="--sce-type SELF --compress-data FALSE --self-type APP --key-revision 0004 --self-fw-version 0003004100000000 --self-app-version 0001000000000000 --self-auth-id 1010000001000003 --self-vendor-id 01000002 --self-cap-flags 00000000000000000000000000000000000000000000003b0000000100040000" -for f in *_${PLATFORM}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` +for f in *_${platform}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` whole_archive= if [ $name = "nxengine" ] ; then echo "NXEngine found, applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" echo $name yes fi - cp -f "$f" ../libretro_${PLATFORM}.a - make -C ../ -f Makefile.${PLATFORM}.cobra $whole_archive -j3 || exit 1 - $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch_${PLATFORM}.elf ../CORE.SELF - mv -f ../CORE.SELF ../${PLATFORM}/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_${PLATFORM}.SELF" - rm -f ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.self ../CORE.SELF + cp -f "$f" ../libretro_${platform}.a + make -C ../ -f Makefile.${platform}.cobra $whole_archive -j3 || exit 1 + $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch_${platform}.elf ../CORE.SELF + mv -f ../CORE.SELF ../${platform}/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_${platform}.SELF" + rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF done cp -r ../media/rmenu/*.png ../ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/ -make -C ../ -f Makefile.griffin platform=${PLATFORM}-cobra shaders-deploy +make -C ../ -f Makefile.griffin platform=${platform}-cobra shaders-deploy -$SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch-salamander_${PLATFORM}.elf ../${PLATFORM}/iso/PS3_GAME/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_${PLATFORM}.elf +$SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch-salamander_${platform}.elf ../${platform}/iso/PS3_GAME/USRDIR/EBOOT.BIN +rm -rf ../retroarch-salamander_${platform}.elf -$GENPS3ISO_PATH ../${PLATFORM}/iso RetroArch-COBRA-ODE.iso +$GENPS3ISO_PATH ../${platform}/iso RetroArch-COBRA-ODE.iso diff --git a/dist-scripts/ps3-cores-dex.sh b/dist-scripts/ps3-cores-dex.sh index a4b69ec181..e3cad2b1bc 100755 --- a/dist-scripts/ps3-cores-dex.sh +++ b/dist-scripts/ps3-cores-dex.sh @@ -1,18 +1,18 @@ #!/bin/sh -PLATFORM=ps3 +platform=ps3 -make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 -make -C ../ -f Makefile.${PLATFORM} clean || exit 1 +make -C ../ -f Makefile.${platform}.salamander clean || exit 1 +make -C ../ -f Makefile.${platform} clean || exit 1 -make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 +make -C ../ -f Makefile.${platform}.salamander || exit 1 EXE_PATH=/usr/local/cell/host-win32/bin MAKE_FSELF_NPDRM=$EXE_PATH/make_fself_npdrm.exe MAKE_PACKAGE_NPDRM=$EXE_PATH/make_package_npdrm.exe -for f in *_${PLATFORM}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` +for f in *_${platform}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` whole_archive= if [ $name = "nxengine" ] ; then echo "Applying whole archive linking..." @@ -23,17 +23,17 @@ for f in *_${PLATFORM}.a ; do big_stack="BIG_STACK=1" fi echo "-- Building core: $name --" - cp -f "$f" ../libretro_${PLATFORM}.a - make -C ../ -f Makefile.${PLATFORM} $whole_archive $big_stack -j3 || exit 1 - $MAKE_FSELF_NPDRM ../retroarch_${PLATFORM}.elf ../CORE.SELF - mv -f ../CORE.SELF ../pkg/${PLATFORM}/USRDIR/cores/"${name}_libretro_${PLATFORM}.SELF" - rm -f ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.self ../CORE.SELF + cp -f "$f" ../libretro_${platform}.a + make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 + $MAKE_FSELF_NPDRM ../retroarch_${platform}.elf ../CORE.SELF + mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" + rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF done -cp -r ../media/rmenu/*.png ../pkg/${PLATFORM}/USRDIR/cores/borders/Menu/ +cp -r ../media/rmenu/*.png ../pkg/${platform}/USRDIR/cores/borders/Menu/ -make -C ../ -f Makefile.griffin platform=${PLATFORM} shaders-deploy +make -C ../ -f Makefile.griffin platform=${platform} shaders-deploy -$MAKE_FSELF_NPDRM ../retroarch-salamander_${PLATFORM}.elf ../pkg/${PLATFORM}/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_${PLATFORM}.elf -$MAKE_PACKAGE_NPDRM ../pkg/${PLATFORM}/package.conf ../pkg/${PLATFORM} +$MAKE_FSELF_NPDRM ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN +rm -rf ../retroarch-salamander_${platform}.elf +$MAKE_PACKAGE_NPDRM ../pkg/${platform}/package.conf ../pkg/${platform} diff --git a/dist-scripts/psp1-cores.sh b/dist-scripts/psp1-cores.sh index eb5886c6fa..a216f572d4 100755 --- a/dist-scripts/psp1-cores.sh +++ b/dist-scripts/psp1-cores.sh @@ -1,21 +1,21 @@ #!/bin/sh -PLATFORM=psp1 +platform=psp1 -mkdir -p ../${PLATFORM}/pkg/cores/ +mkdir -p ../${platform}/pkg/cores/ -make -C ../${PLATFORM}/kernelFunctionsPrx/ clean || exit 1 -make -C ../${PLATFORM}/kernelFunctionsPrx/ || exit 1 -cp -f ../kernel_functions.prx ../pkg/${PLATFORM}/kernel_functions.prx +make -C ../${platform}/kernelFunctionsPrx/ clean || exit 1 +make -C ../${platform}/kernelFunctionsPrx/ || exit 1 +cp -f ../kernel_functions.prx ../pkg/${platform}/kernel_functions.prx -make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 -make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 -mv -f ../EBOOT.PBP ../pkg/${PLATFORM}/EBOOT.PBP +make -C ../ -f Makefile.${platform}.salamander clean || exit 1 +make -C ../ -f Makefile.${platform}.salamander || exit 1 +mv -f ../EBOOT.PBP ../pkg/${platform}/EBOOT.PBP -make -C ../ -f Makefile.${PLATFORM} clean || exit 1 +make -C ../ -f Makefile.${platform} clean || exit 1 -for f in *_${PLATFORM}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` +for f in *_${platform}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` whole_archive= big_stack= @@ -30,15 +30,15 @@ for f in *_${PLATFORM}.a ; do fi if [ $big_stack="BIG_STACK=1" ] ; then - make -C ../ -f Makefile.${PLATFORM} clean || exit 1 + make -C ../ -f Makefile.${platform} clean || exit 1 fi - cp -f "$f" ../libretro_${PLATFORM}.a - make -C ../ -f Makefile.${PLATFORM} $whole_archive $big_stack -j3 || exit 1 - mv -f ../EBOOT.PBP ../pkg/${PLATFORM}/cores/${name}_libretro.PBP + cp -f "$f" ../libretro_${platform}.a + make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 + mv -f ../EBOOT.PBP ../pkg/${platform}/cores/${name}_libretro.PBP rm -f ../retroarchpsp.elf if [ $big_stack="BIG_STACK=1" ] ; then - make -C ../ -f Makefile.${PLATFORM} clean || exit 1 + make -C ../ -f Makefile.${platform} clean || exit 1 fi done diff --git a/dist-scripts/vita-cores.sh b/dist-scripts/vita-cores.sh index 7e53f0c823..bf686e74a5 100755 --- a/dist-scripts/vita-cores.sh +++ b/dist-scripts/vita-cores.sh @@ -1,15 +1,15 @@ #!/bin/sh -PLATFORM=vita +platform=vita -#make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 -make -C ../ -f Makefile.griffin platform=${PLATFORM} clean || exit 1 +#make -C ../ -f Makefile.${platform}.salamander clean || exit 1 +make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 -#make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 -#make -C ../ -f Makefile.${PLATFORM}.salamander pkg || exit 1 +#make -C ../ -f Makefile.${platform}.salamander || exit 1 +#make -C ../ -f Makefile.${platform}.salamander pkg || exit 1 for f in *_vita.a ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` whole_archive= big_stack= if [ $name = "nxengine" ] ; then @@ -20,8 +20,8 @@ for f in *_vita.a ; do echo "Tyrquake found, applying big stack..." big_stack="BIG_STACK=1" fi - cp -f "$f" ../libretro_${PLATFORM}.a - make -C ../ -f Makefile.griffin platform=${PLATFORM} $whole_archive $big_stack -j3 || exit 1 - mv -f ../retroarch_${PLATFORM}.velf ../pkg/${PLATFORM}/${name}_libretro_${PLATFORM}.velf - rm -f ../retroarch_${PLATFORM}.velf ../retroarch_${PLATFORM}.elf + cp -f "$f" ../libretro_${platform}.a + make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1 + mv -f ../retroarch_${platform}.velf ../pkg/${platform}/${name}_libretro_${platform}.velf + rm -f ../retroarch_${platform}.velf ../retroarch_${platform}.elf done diff --git a/dist-scripts/wii-cores.sh b/dist-scripts/wii-cores.sh index 10299fdf11..fb2cf3f4e6 100755 --- a/dist-scripts/wii-cores.sh +++ b/dist-scripts/wii-cores.sh @@ -1,15 +1,15 @@ #!/bin/sh -PLATFORM=wii +platform=wii -make -C ../ -f Makefile.${PLATFORM}.salamander clean || exit 1 -make -C ../ -f Makefile.griffin PLATFORM=${PLATFORM} clean || exit 1 +make -C ../ -f Makefile.${platform}.salamander clean || exit 1 +make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 -make -C ../ -f Makefile.${PLATFORM}.salamander || exit 1 -make -C ../ -f Makefile.${PLATFORM}.salamander pkg || exit 1 +make -C ../ -f Makefile.${platform}.salamander || exit 1 +make -C ../ -f Makefile.${platform}.salamander pkg || exit 1 -for f in *_${PLATFORM}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).a$//"` +for f in *_${platform}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` whole_archive= big_stack= if [ $name = "nxengine" ] ; then @@ -20,8 +20,8 @@ for f in *_${PLATFORM}.a ; do echo "Tyrquake found, applying big stack..." big_stack="BIG_STACK=1" fi - cp -f "$f" ../libretro_${PLATFORM}.a - make -C ../ -f Makefile.griffin platform=${PLATFORM} $whole_archive $big_stack -j3 || exit 1 - mv -f ../retroarch_${PLATFORM}.dol ../pkg/${PLATFORM}/${name}_libretro_${PLATFORM}.dol - rm -f ../retroarch_${PLATFORM}.dol ../retroarch_${PLATFORM}.elf ../retroarch_${PLATFORM}.elf.map + cp -f "$f" ../libretro_${platform}.a + make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1 + mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol + rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map done diff --git a/dist-scripts/xdk1-cores.sh b/dist-scripts/xdk1-cores.sh index efed18b23f..f47e0ab284 100644 --- a/dist-scripts/xdk1-cores.sh +++ b/dist-scripts/xdk1-cores.sh @@ -1,6 +1,6 @@ #!/bin/sh -PLATFORM=xdk +platform=xdk ip='192.168.1.10' @@ -8,15 +8,15 @@ mkdir -p ../msvc/RetroArch-Xbox1/Debug mkdir -p ../msvc/RetroArch-Xbox1/Release mkdir -p ../msvc/RetroArch-Xbox1/Release_LTCG -for f in *_${PLATFORM}.lib ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).lib$//"` +for f in *_${platform}.lib ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).lib$//"` echo $name if [ $name = "tyrquake" ] || [ $name = "genesis_plus_gx" ] ; then echo "Applying whole archive linking for this core..." - cp -f "$f" ../msvc/RetroArch-Xbox1/Release_LTCG_BigStack/libretro_${PLATFORM}.lib + cp -f "$f" ../msvc/RetroArch-Xbox1/Release_LTCG_BigStack/libretro_${platform}.lib cmd.exe /k xdk1_env_bigstack.bat ${name}_libretro_xdk1 else - cp -f "$f" ../msvc/RetroArch-Xbox1/Release_LTCG/libretro_${PLATFORM}.lib + cp -f "$f" ../msvc/RetroArch-Xbox1/Release_LTCG/libretro_${platform}.lib cmd.exe /k xdk1_env.bat ${name}_libretro_xdk1 fi done diff --git a/dist-scripts/xdk360-cores.sh b/dist-scripts/xdk360-cores.sh index c9e8cac54f..7053bd6044 100644 --- a/dist-scripts/xdk360-cores.sh +++ b/dist-scripts/xdk360-cores.sh @@ -1,14 +1,14 @@ #!/bin/sh -PLATFORM=xdk360 +platform=xdk360 mkdir -p ../msvc/RetroArch-360/Debug mkdir -p ../msvc/RetroArch-360/Release mkdir -p ../msvc/RetroArch-360/Release_LTCG -for f in *_${PLATFORM}.lib ; do - name=`echo "$f" | sed "s/\(_libretro_${PLATFORM}\|\).lib$//"` +for f in *_${platform}.lib ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).lib$//"` echo $name - cp -f "$f" ../msvc/RetroArch-360/Release_LTCG/libretro_${PLATFORM}.lib - cmd.exe /k ${PLATFORM}_env.bat ${name}_libretro_${PLATFORM} + cp -f "$f" ../msvc/RetroArch-360/Release_LTCG/libretro_${platform}.lib + cmd.exe /k ${platform}_env.bat ${name}_libretro_${platform} done From 6e1df2ce14e0778a62d1d7491906e96395820789 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 17:00:07 +0200 Subject: [PATCH 528/822] Start integrating everything into one file - dist-cores.sh --- dist-scripts/dist-cores.sh | 66 +++++++++++++++++++++++++++++++ dist-scripts/ps3-cores-cex-355.sh | 31 --------------- dist-scripts/ps3-cores-dex.sh | 39 ------------------ 3 files changed, 66 insertions(+), 70 deletions(-) create mode 100755 dist-scripts/dist-cores.sh delete mode 100755 dist-scripts/ps3-cores-dex.sh diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh new file mode 100755 index 0000000000..62e3232aec --- /dev/null +++ b/dist-scripts/dist-cores.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +RARCH_VERSION=1.2.2 +PLATFORM=$1 + +if [ $PLATFORM = "dex-ps3" ] ; then +platform=ps3 + +EXE_PATH=/usr/local/cell/host-win32/bin +MAKE_FSELF_NPDRM=$EXE_PATH/make_fself_npdrm.exe +MAKE_PACKAGE_NPDRM=$EXE_PATH/make_package_npdrm.exe +fi +if [ $PLATFORM = "cex-ps3" ]; then +platform=ps3 + +EXE_PATH=/usr/local/cell/host-win32/bin +fi + +make -C ../ -f Makefile.${platform}.salamander clean || exit 1 +make -C ../ -f Makefile.${platform} clean || exit 1 + +make -C ../ -f Makefile.${platform}.salamander || exit 1 + +for f in *_${platform}.a ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` + whole_archive= + if [ $name = "nxengine" ] ; then + echo "Applying whole archive linking..." + whole_archive="WHOLE_ARCHIVE_LINK=1" + fi + if [ $name = "tyrquake" ] ; then + echo "Applying big stack..." + big_stack="BIG_STACK=1" + fi + echo "-- Building core: $name --" + cp -f "$f" ../libretro_${platform}.a + make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 + + if [ $PLATFORM = "dex-ps3" ] ; then + $MAKE_FSELF_NPDRM ../retroarch_${platform}.elf ../CORE.SELF + fi + if [ $PLATFORM = "cex-ps3" ] ; then + make -C ../ -f Makefile.${platform} $whole_archive -j3 || exit 1 + make_self_wc ../retroarch_${platform}.elf ../CORE.SELF + fi + + if [ $platform = "ps3" ] ; then + mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" + rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF + fi +done + +if [ $PLATFORM = "ps3" ] ; then + make -C ../ -f Makefile.griffin platform=${platform} shaders-deploy +fi + +if [ $PLATFORM = "dex-ps3" ] ; then + $MAKE_FSELF_NPDRM ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN + rm -rf ../retroarch-salamander_${platform}.elf + $MAKE_PACKAGE_NPDRM ../pkg/${platform}/package.conf ../pkg/${platform} +fi +if [ $PLATFORM = "cex-ps3" ] ; then + make_self_wc ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN + rm -rf ../retroarch-salamander_${platform}.elf + python2 ../ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../pkg/${platform} retroarch-${platform}-cfw-$RARCH_VERSION.pkg +fi diff --git a/dist-scripts/ps3-cores-cex-355.sh b/dist-scripts/ps3-cores-cex-355.sh index dcbccf3992..e69de29bb2 100755 --- a/dist-scripts/ps3-cores-cex-355.sh +++ b/dist-scripts/ps3-cores-cex-355.sh @@ -1,31 +0,0 @@ -#!/bin/sh -RARCH_VERSION=1.2.2 -platform=ps3 - -make -C ../ -f Makefile.${platform}.salamander clean || exit 1 -make -C ../ -f Makefile.${platform} clean || exit 1 - -make -C ../ -f Makefile.${platform}.salamander || exit 1 - -EXE_PATH=/usr/local/cell/host-win32/bin - -for f in *_${platform}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` - whole_archive= - if [ $name = "nxengine" ] ; then - echo "Applying whole archive linking..." - whole_archive="WHOLE_ARCHIVE_LINK=1" - fi - echo $name yes - cp -f "$f" ../libretro_${platform}.a - make -C ../ -f Makefile.${platform} $whole_archive -j3 || exit 1 - make_self_wc ../retroarch_${platform}.elf ../CORE.SELF - mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" - rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF -done - -make -C ../ -f Makefile.shaders deploy-ps3 - -make_self_wc ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_${platform}.elf -python2 ../ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../pkg/${platform} retroarch-${platform}-cfw-$RARCH_VERSION.pkg diff --git a/dist-scripts/ps3-cores-dex.sh b/dist-scripts/ps3-cores-dex.sh deleted file mode 100755 index e3cad2b1bc..0000000000 --- a/dist-scripts/ps3-cores-dex.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -platform=ps3 - -make -C ../ -f Makefile.${platform}.salamander clean || exit 1 -make -C ../ -f Makefile.${platform} clean || exit 1 - -make -C ../ -f Makefile.${platform}.salamander || exit 1 - -EXE_PATH=/usr/local/cell/host-win32/bin -MAKE_FSELF_NPDRM=$EXE_PATH/make_fself_npdrm.exe -MAKE_PACKAGE_NPDRM=$EXE_PATH/make_package_npdrm.exe - -for f in *_${platform}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` - whole_archive= - if [ $name = "nxengine" ] ; then - echo "Applying whole archive linking..." - whole_archive="WHOLE_ARCHIVE_LINK=1" - fi - if [ $name = "tyrquake" ] ; then - echo "Applying big stack..." - big_stack="BIG_STACK=1" - fi - echo "-- Building core: $name --" - cp -f "$f" ../libretro_${platform}.a - make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 - $MAKE_FSELF_NPDRM ../retroarch_${platform}.elf ../CORE.SELF - mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" - rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF -done - -cp -r ../media/rmenu/*.png ../pkg/${platform}/USRDIR/cores/borders/Menu/ - -make -C ../ -f Makefile.griffin platform=${platform} shaders-deploy - -$MAKE_FSELF_NPDRM ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_${platform}.elf -$MAKE_PACKAGE_NPDRM ../pkg/${platform}/package.conf ../pkg/${platform} From 9b9c5658930ac274ad2d03a65a7cdc73640073c3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 17:07:13 +0200 Subject: [PATCH 529/822] Merge files inside dist-cores.sh --- dist-scripts/dist-cores.sh | 36 ++++++++++++++++++++++++++---- dist-scripts/ps3-cores-cex-355.sh | 0 dist-scripts/ps3-cores-cobraode.sh | 36 ------------------------------ 3 files changed, 32 insertions(+), 40 deletions(-) delete mode 100755 dist-scripts/ps3-cores-cex-355.sh delete mode 100644 dist-scripts/ps3-cores-cobraode.sh diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh index 62e3232aec..135f278f68 100755 --- a/dist-scripts/dist-cores.sh +++ b/dist-scripts/dist-cores.sh @@ -15,9 +15,21 @@ platform=ps3 EXE_PATH=/usr/local/cell/host-win32/bin fi +if [ $PLATFORM = "ode-ps3" ]; then +#For this script to work correctly, you must place the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder. +platform=ps3 + +GENPS3ISO_PATH=/cygdrive/c/Cobra_ODE_GenPS3iso_v2.3/genps3iso.exe +SCETOOL_PATH=/cygdrive/c/Users/aaa801/ps3tools/ps3tools/tools/scetool/scetool.exe +SCETOOL_FLAGS="--sce-type SELF --compress-data FALSE --self-type APP --key-revision 0004 --self-fw-version 0003004100000000 --self-app-version 0001000000000000 --self-auth-id 1010000001000003 --self-vendor-id 01000002 --self-cap-flags 00000000000000000000000000000000000000000000003b0000000100040000" +fi make -C ../ -f Makefile.${platform}.salamander clean || exit 1 -make -C ../ -f Makefile.${platform} clean || exit 1 +if [ $PLATFORM = "ode-ps3" ]; then + make -C ../ -f Makefile.${platform}.cobra clean || exit 1 +else + make -C ../ -f Makefile.${platform} clean || exit 1 +fi make -C ../ -f Makefile.${platform}.salamander || exit 1 @@ -34,18 +46,28 @@ for f in *_${platform}.a ; do fi echo "-- Building core: $name --" cp -f "$f" ../libretro_${platform}.a - make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 + if [ $PLATFORM = "ode-ps3" ] ; then + make -C ../ -f Makefile.${platform}.cobra $whole_archive -j3 || exit 1 + else + make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 + fi if [ $PLATFORM = "dex-ps3" ] ; then $MAKE_FSELF_NPDRM ../retroarch_${platform}.elf ../CORE.SELF fi if [ $PLATFORM = "cex-ps3" ] ; then - make -C ../ -f Makefile.${platform} $whole_archive -j3 || exit 1 make_self_wc ../retroarch_${platform}.elf ../CORE.SELF fi + if [ $PLATFORM = "ode-ps3" ] ; then + $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch_${platform}.elf ../CORE.SELF + fi if [ $platform = "ps3" ] ; then - mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" + if [ $PLATFORM = "ode-ps3" ] ; then + mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" + else + mv -f ../CORE.SELF ../${platform}/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_${platform}.SELF" + fi rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF fi done @@ -64,3 +86,9 @@ if [ $PLATFORM = "cex-ps3" ] ; then rm -rf ../retroarch-salamander_${platform}.elf python2 ../ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../pkg/${platform} retroarch-${platform}-cfw-$RARCH_VERSION.pkg fi +if [ $PLATFORM = "ode-ps3" ] ; then + $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch-salamander_${platform}.elf ../${platform}/iso/PS3_GAME/USRDIR/EBOOT.BIN + rm -rf ../retroarch-salamander_${platform}.elf + + $GENPS3ISO_PATH ../${platform}/iso RetroArch-COBRA-ODE.iso +fi diff --git a/dist-scripts/ps3-cores-cex-355.sh b/dist-scripts/ps3-cores-cex-355.sh deleted file mode 100755 index e69de29bb2..0000000000 diff --git a/dist-scripts/ps3-cores-cobraode.sh b/dist-scripts/ps3-cores-cobraode.sh deleted file mode 100644 index d8680ff358..0000000000 --- a/dist-scripts/ps3-cores-cobraode.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -#For this script to work correctly, you must place the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder. -platform=ps3 - -make -C ../ -f Makefile.${platform}.salamander clean || exit 1 -make -C ../ -f Makefile.${platform}.cobra clean || exit 1 - -make -C ../ -f Makefile.${platform}.salamander || exit 1 - -GENPS3ISO_PATH=/cygdrive/c/Cobra_ODE_GenPS3iso_v2.3/genps3iso.exe -SCETOOL_PATH=/cygdrive/c/Users/aaa801/ps3tools/ps3tools/tools/scetool/scetool.exe -SCETOOL_FLAGS="--sce-type SELF --compress-data FALSE --self-type APP --key-revision 0004 --self-fw-version 0003004100000000 --self-app-version 0001000000000000 --self-auth-id 1010000001000003 --self-vendor-id 01000002 --self-cap-flags 00000000000000000000000000000000000000000000003b0000000100040000" - -for f in *_${platform}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` - whole_archive= - if [ $name = "nxengine" ] ; then - echo "NXEngine found, applying whole archive linking..." - whole_archive="WHOLE_ARCHIVE_LINK=1" - echo $name yes - fi - cp -f "$f" ../libretro_${platform}.a - make -C ../ -f Makefile.${platform}.cobra $whole_archive -j3 || exit 1 - $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch_${platform}.elf ../CORE.SELF - mv -f ../CORE.SELF ../${platform}/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_${platform}.SELF" - rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF -done - -cp -r ../media/rmenu/*.png ../ps3/iso/PS3_GAME/USRDIR/cores/borders/Menu/ - -make -C ../ -f Makefile.griffin platform=${platform}-cobra shaders-deploy - -$SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch-salamander_${platform}.elf ../${platform}/iso/PS3_GAME/USRDIR/EBOOT.BIN -rm -rf ../retroarch-salamander_${platform}.elf - -$GENPS3ISO_PATH ../${platform}/iso RetroArch-COBRA-ODE.iso From 6e347c03a7aa53199c3eb9a349fbee07cf9c769a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 17:14:14 +0200 Subject: [PATCH 530/822] Merge psp1-cores.sh into dist-cores.sh --- dist-scripts/dist-cores.sh | 27 +++++++++++++++++++++++ dist-scripts/psp1-cores.sh | 44 -------------------------------------- 2 files changed, 27 insertions(+), 44 deletions(-) delete mode 100755 dist-scripts/psp1-cores.sh diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh index 135f278f68..8358c6505a 100755 --- a/dist-scripts/dist-cores.sh +++ b/dist-scripts/dist-cores.sh @@ -3,6 +3,18 @@ RARCH_VERSION=1.2.2 PLATFORM=$1 +# PSP +if [ $PLATFORM = "psp1" ] ; then +platform=psp1 + +mkdir -p ../pkg/${platform}/cores/ + +make -C ../${platform}/kernelFunctionsPrx/ clean || exit 1 +make -C ../${platform}/kernelFunctionsPrx/ || exit 1 +cp -f ../kernel_functions.prx ../pkg/${platform}/kernel_functions.prx +mv -f ../EBOOT.PBP ../pkg/${platform}/EBOOT.PBP +fi +# DEX PS3 if [ $PLATFORM = "dex-ps3" ] ; then platform=ps3 @@ -10,11 +22,13 @@ EXE_PATH=/usr/local/cell/host-win32/bin MAKE_FSELF_NPDRM=$EXE_PATH/make_fself_npdrm.exe MAKE_PACKAGE_NPDRM=$EXE_PATH/make_package_npdrm.exe fi +# CEX PS3 if [ $PLATFORM = "cex-ps3" ]; then platform=ps3 EXE_PATH=/usr/local/cell/host-win32/bin fi +# ODE PS3 if [ $PLATFORM = "ode-ps3" ]; then #For this script to work correctly, you must place the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder. platform=ps3 @@ -46,12 +60,21 @@ for f in *_${platform}.a ; do fi echo "-- Building core: $name --" cp -f "$f" ../libretro_${platform}.a + + if [ $big_stack="BIG_STACK=1" ] ; then + make -C ../ -f Makefile.${platform} clean || exit 1 + fi + if [ $PLATFORM = "ode-ps3" ] ; then make -C ../ -f Makefile.${platform}.cobra $whole_archive -j3 || exit 1 else make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 fi + if [ $PLATFORM = "psp1" ] ; then + mv -f ../EBOOT.PBP ../pkg/${platform}/cores/${name}_libretro.PBP + rm -f ../retroarchpsp.elf + fi if [ $PLATFORM = "dex-ps3" ] ; then $MAKE_FSELF_NPDRM ../retroarch_${platform}.elf ../CORE.SELF fi @@ -70,6 +93,10 @@ for f in *_${platform}.a ; do fi rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF fi + + if [ $big_stack="BIG_STACK=1" ] ; then + make -C ../ -f Makefile.${platform} clean || exit 1 + fi done if [ $PLATFORM = "ps3" ] ; then diff --git a/dist-scripts/psp1-cores.sh b/dist-scripts/psp1-cores.sh deleted file mode 100755 index a216f572d4..0000000000 --- a/dist-scripts/psp1-cores.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh - -platform=psp1 - -mkdir -p ../${platform}/pkg/cores/ - -make -C ../${platform}/kernelFunctionsPrx/ clean || exit 1 -make -C ../${platform}/kernelFunctionsPrx/ || exit 1 -cp -f ../kernel_functions.prx ../pkg/${platform}/kernel_functions.prx - -make -C ../ -f Makefile.${platform}.salamander clean || exit 1 -make -C ../ -f Makefile.${platform}.salamander || exit 1 -mv -f ../EBOOT.PBP ../pkg/${platform}/EBOOT.PBP - -make -C ../ -f Makefile.${platform} clean || exit 1 - -for f in *_${platform}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` - whole_archive= - big_stack= - - if [ $name = "nxengine" ] ; then - echo "Applying whole archive linking..." - whole_archive="WHOLE_ARCHIVE_LINK=1" - fi - - if [ $name = "tyrquake" ] ; then - echo "Applying big stack..." - big_stack="BIG_STACK=1" - fi - - if [ $big_stack="BIG_STACK=1" ] ; then - make -C ../ -f Makefile.${platform} clean || exit 1 - fi - - cp -f "$f" ../libretro_${platform}.a - make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 - mv -f ../EBOOT.PBP ../pkg/${platform}/cores/${name}_libretro.PBP - rm -f ../retroarchpsp.elf - - if [ $big_stack="BIG_STACK=1" ] ; then - make -C ../ -f Makefile.${platform} clean || exit 1 - fi -done From e19dfa956ea3458d8f48e21b32a99800cbf09832 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 17:31:34 +0200 Subject: [PATCH 531/822] Integrate vita into dist-cores.sh --- dist-scripts/dist-cores.sh | 89 ++++++++++++++++++++++++++++---------- dist-scripts/vita-cores.sh | 27 ------------ 2 files changed, 65 insertions(+), 51 deletions(-) delete mode 100755 dist-scripts/vita-cores.sh diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh index 8358c6505a..ce72246b80 100755 --- a/dist-scripts/dist-cores.sh +++ b/dist-scripts/dist-cores.sh @@ -2,10 +2,13 @@ RARCH_VERSION=1.2.2 PLATFORM=$1 +SALAMANDER=no +MAKEFILE_GRIFFIN=no # PSP if [ $PLATFORM = "psp1" ] ; then platform=psp1 +SALAMANDER=yes mkdir -p ../pkg/${platform}/cores/ @@ -13,39 +16,57 @@ make -C ../${platform}/kernelFunctionsPrx/ clean || exit 1 make -C ../${platform}/kernelFunctionsPrx/ || exit 1 cp -f ../kernel_functions.prx ../pkg/${platform}/kernel_functions.prx mv -f ../EBOOT.PBP ../pkg/${platform}/EBOOT.PBP -fi + +# Vita +elif [ $PLATFORM = "vita" ] ; then +platform=vita +MAKEFILE_GRIFFIN=yes + # DEX PS3 -if [ $PLATFORM = "dex-ps3" ] ; then +elif [ $PLATFORM = "dex-ps3" ] ; then platform=ps3 +SALAMANDER=yes EXE_PATH=/usr/local/cell/host-win32/bin MAKE_FSELF_NPDRM=$EXE_PATH/make_fself_npdrm.exe MAKE_PACKAGE_NPDRM=$EXE_PATH/make_package_npdrm.exe -fi + # CEX PS3 -if [ $PLATFORM = "cex-ps3" ]; then +elif [ $PLATFORM = "cex-ps3" ]; then platform=ps3 +SALAMANDER=yes EXE_PATH=/usr/local/cell/host-win32/bin -fi + # ODE PS3 -if [ $PLATFORM = "ode-ps3" ]; then +elif [ $PLATFORM = "ode-ps3" ]; then #For this script to work correctly, you must place the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder. platform=ps3 +SALAMANDER=yes GENPS3ISO_PATH=/cygdrive/c/Cobra_ODE_GenPS3iso_v2.3/genps3iso.exe SCETOOL_PATH=/cygdrive/c/Users/aaa801/ps3tools/ps3tools/tools/scetool/scetool.exe SCETOOL_FLAGS="--sce-type SELF --compress-data FALSE --self-type APP --key-revision 0004 --self-fw-version 0003004100000000 --self-app-version 0001000000000000 --self-auth-id 1010000001000003 --self-vendor-id 01000002 --self-cap-flags 00000000000000000000000000000000000000000000003b0000000100040000" fi +# Cleanup Salamander core if it exists +if [ $SALAMANDER = "yes" ]; then make -C ../ -f Makefile.${platform}.salamander clean || exit 1 +fi + +# Cleanup existing core if it exists if [ $PLATFORM = "ode-ps3" ]; then make -C ../ -f Makefile.${platform}.cobra clean || exit 1 +elif [ $MAKEFILE_GRIFFIN = "yes" ]; then + make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 else make -C ../ -f Makefile.${platform} clean || exit 1 fi -make -C ../ -f Makefile.${platform}.salamander || exit 1 +# Compile Salamander core +if [ $SALAMANDER = "yes" ]; then + make -C ../ -f Makefile.${platform}.salamander || exit 1 +fi for f in *_${platform}.a ; do name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` @@ -53,67 +74,87 @@ for f in *_${platform}.a ; do if [ $name = "nxengine" ] ; then echo "Applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" - fi - if [ $name = "tyrquake" ] ; then + elif [ $name = "tyrquake" ] ; then echo "Applying big stack..." big_stack="BIG_STACK=1" fi echo "-- Building core: $name --" cp -f "$f" ../libretro_${platform}.a + # Do cleanup if this is a big stack core if [ $big_stack="BIG_STACK=1" ] ; then - make -C ../ -f Makefile.${platform} clean || exit 1 + if [ $MAKEFILE_GRIFFIN = "yes" ]; then + make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 + else + make -C ../ -f Makefile.${platform} clean || exit 1 + fi fi + # Compile core if [ $PLATFORM = "ode-ps3" ] ; then make -C ../ -f Makefile.${platform}.cobra $whole_archive -j3 || exit 1 + elif [ $MAKEFILE_GRIFFIN = "yes" ]; then + make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1 else make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 fi - if [ $PLATFORM = "psp1" ] ; then - mv -f ../EBOOT.PBP ../pkg/${platform}/cores/${name}_libretro.PBP - rm -f ../retroarchpsp.elf - fi + # Do manual executable step if [ $PLATFORM = "dex-ps3" ] ; then $MAKE_FSELF_NPDRM ../retroarch_${platform}.elf ../CORE.SELF - fi - if [ $PLATFORM = "cex-ps3" ] ; then + elif [ $PLATFORM = "cex-ps3" ] ; then make_self_wc ../retroarch_${platform}.elf ../CORE.SELF - fi - if [ $PLATFORM = "ode-ps3" ] ; then + elif [ $PLATFORM = "ode-ps3" ] ; then $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch_${platform}.elf ../CORE.SELF fi + # Move executable files if [ $platform = "ps3" ] ; then if [ $PLATFORM = "ode-ps3" ] ; then mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" else mv -f ../CORE.SELF ../${platform}/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_${platform}.SELF" fi - rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF + elif [ $PLATFORM = "psp1" ] ; then + mv -f ../EBOOT.PBP ../pkg/${platform}/cores/${name}_libretro.PBP + elif [ $PLATFORM = "vita" ] ; then + mv -f ../retroarch_${platform}.velf ../pkg/${platform}/${name}_libretro_${platform}.velf fi + # Remove executable files + if [ $platform = "ps3" ] ; then + rm -f ../retroarch_${platform}.elf ../retroarch_${platform}.self ../CORE.SELF + elif [ $PLATFORM = "psp1" ] ; then + rm -f ../retroarchpsp.elf + elif [ $PLATFORM = "vita" ] ; then + rm -f ../retroarch_${platform}.velf ../retroarch_${platform}.elf + fi + + # Do cleanup if this is a big stack core if [ $big_stack="BIG_STACK=1" ] ; then - make -C ../ -f Makefile.${platform} clean || exit 1 + if [ $MAKEFILE_GRIFFIN = "yes" ]; then + make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 + else + make -C ../ -f Makefile.${platform} clean || exit 1 + fi fi done +# Additional build step if [ $PLATFORM = "ps3" ] ; then make -C ../ -f Makefile.griffin platform=${platform} shaders-deploy fi +# Packaging if [ $PLATFORM = "dex-ps3" ] ; then $MAKE_FSELF_NPDRM ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN rm -rf ../retroarch-salamander_${platform}.elf $MAKE_PACKAGE_NPDRM ../pkg/${platform}/package.conf ../pkg/${platform} -fi -if [ $PLATFORM = "cex-ps3" ] ; then +elif [ $PLATFORM = "cex-ps3" ] ; then make_self_wc ../retroarch-salamander_${platform}.elf ../pkg/${platform}/USRDIR/EBOOT.BIN rm -rf ../retroarch-salamander_${platform}.elf python2 ../ps3/ps3py/pkg.py --contentid UP0001-SSNE10000_00-0000000000000001 ../pkg/${platform} retroarch-${platform}-cfw-$RARCH_VERSION.pkg -fi -if [ $PLATFORM = "ode-ps3" ] ; then +elif [ $PLATFORM = "ode-ps3" ] ; then $SCETOOL_PATH $SCETOOL_FLAGS --encrypt ../retroarch-salamander_${platform}.elf ../${platform}/iso/PS3_GAME/USRDIR/EBOOT.BIN rm -rf ../retroarch-salamander_${platform}.elf diff --git a/dist-scripts/vita-cores.sh b/dist-scripts/vita-cores.sh deleted file mode 100755 index bf686e74a5..0000000000 --- a/dist-scripts/vita-cores.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -platform=vita - -#make -C ../ -f Makefile.${platform}.salamander clean || exit 1 -make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 - -#make -C ../ -f Makefile.${platform}.salamander || exit 1 -#make -C ../ -f Makefile.${platform}.salamander pkg || exit 1 - -for f in *_vita.a ; do - name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` - whole_archive= - big_stack= - if [ $name = "nxengine" ] ; then - echo "NXEngine found, applying whole archive linking..." - whole_archive="WHOLE_ARCHIVE_LINK=1" - fi - if [ $name = "tyrquake" ] ; then - echo "Tyrquake found, applying big stack..." - big_stack="BIG_STACK=1" - fi - cp -f "$f" ../libretro_${platform}.a - make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1 - mv -f ../retroarch_${platform}.velf ../pkg/${platform}/${name}_libretro_${platform}.velf - rm -f ../retroarch_${platform}.velf ../retroarch_${platform}.elf -done From 2c9092d244e75ad4156e77e0731fc3ff82e81e16 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 17:41:20 +0200 Subject: [PATCH 532/822] Merge wii-cores.sh and ngc-cores.sh into dist-cores.sh --- dist-scripts/dist-cores.sh | 19 +++++++++++++++++++ dist-scripts/ngc-cores.sh | 23 ----------------------- dist-scripts/wii-cores.sh | 27 --------------------------- 3 files changed, 19 insertions(+), 50 deletions(-) delete mode 100755 dist-scripts/ngc-cores.sh delete mode 100755 dist-scripts/wii-cores.sh diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh index ce72246b80..f85c780695 100755 --- a/dist-scripts/dist-cores.sh +++ b/dist-scripts/dist-cores.sh @@ -22,6 +22,17 @@ elif [ $PLATFORM = "vita" ] ; then platform=vita MAKEFILE_GRIFFIN=yes +# Wii +elif [ $PLATFORM = "wii" ] ; then +platform=wii +MAKEFILE_GRIFFIN=yes +SALAMANDER=yes + +# NGC +elif [ $PLATFORM = "ngc" ] ; then +platform=ngc +MAKEFILE_GRIFFIN=yes + # DEX PS3 elif [ $PLATFORM = "dex-ps3" ] ; then platform=ps3 @@ -119,6 +130,10 @@ for f in *_${platform}.a ; do mv -f ../EBOOT.PBP ../pkg/${platform}/cores/${name}_libretro.PBP elif [ $PLATFORM = "vita" ] ; then mv -f ../retroarch_${platform}.velf ../pkg/${platform}/${name}_libretro_${platform}.velf + elif [ $PLATFORM = "ngc" ] ; then + mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol + elif [ $PLATFORM = "wii" ] ; then + mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol fi # Remove executable files @@ -128,6 +143,10 @@ for f in *_${platform}.a ; do rm -f ../retroarchpsp.elf elif [ $PLATFORM = "vita" ] ; then rm -f ../retroarch_${platform}.velf ../retroarch_${platform}.elf + elif [ $PLATFORM = "ngc" ] ; then + rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map + elif [ $PLATFORM = "wii" ] ; then + rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map fi # Do cleanup if this is a big stack core diff --git a/dist-scripts/ngc-cores.sh b/dist-scripts/ngc-cores.sh deleted file mode 100755 index 5b9d288f5b..0000000000 --- a/dist-scripts/ngc-cores.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -platform=ngc - -make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 - -for f in *_${platform}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` - whole_archive= - big_stack= - if [ $name = "nxengine" ] ; then - echo "NXEngine found, applying whole archive linking..." - whole_archive="WHOLE_ARCHIVE_LINK=1" - fi - if [ $name = "tyrquake" ] ; then - echo "Tyrquake found, applying big stack..." - big_stack="BIG_STACK=1" - fi - cp -f "$f" ../libretro_${platform}.a - make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1 - mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol - rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map -done diff --git a/dist-scripts/wii-cores.sh b/dist-scripts/wii-cores.sh deleted file mode 100755 index fb2cf3f4e6..0000000000 --- a/dist-scripts/wii-cores.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -platform=wii - -make -C ../ -f Makefile.${platform}.salamander clean || exit 1 -make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 - -make -C ../ -f Makefile.${platform}.salamander || exit 1 -make -C ../ -f Makefile.${platform}.salamander pkg || exit 1 - -for f in *_${platform}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` - whole_archive= - big_stack= - if [ $name = "nxengine" ] ; then - echo "NXEngine found, applying whole archive linking..." - whole_archive="WHOLE_ARCHIVE_LINK=1" - fi - if [ $name = "tyrquake" ] ; then - echo "Tyrquake found, applying big stack..." - big_stack="BIG_STACK=1" - fi - cp -f "$f" ../libretro_${platform}.a - make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1 - mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol - rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map -done From c86d809331025a557e664d77eba6c7f7a9ece839 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 18:27:49 +0200 Subject: [PATCH 533/822] Another commit --- dist-scripts/dist-cores.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh index f85c780695..1abbe802f5 100755 --- a/dist-scripts/dist-cores.sh +++ b/dist-scripts/dist-cores.sh @@ -82,6 +82,7 @@ fi for f in *_${platform}.a ; do name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` whole_archive= + big_stack= if [ $name = "nxengine" ] ; then echo "Applying whole archive linking..." whole_archive="WHOLE_ARCHIVE_LINK=1" @@ -122,9 +123,9 @@ for f in *_${platform}.a ; do # Move executable files if [ $platform = "ps3" ] ; then if [ $PLATFORM = "ode-ps3" ] ; then - mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" - else mv -f ../CORE.SELF ../${platform}/iso/PS3_GAME/USRDIR/cores/"${name}_libretro_${platform}.SELF" + else + mv -f ../CORE.SELF ../pkg/${platform}/USRDIR/cores/"${name}_libretro_${platform}.SELF" fi elif [ $PLATFORM = "psp1" ] ; then mv -f ../EBOOT.PBP ../pkg/${platform}/cores/${name}_libretro.PBP From d5d498df5f836ba8f45705070cfd6f96b0f15052 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 18:44:25 +0200 Subject: [PATCH 534/822] (wiiusb_hid.c) Remove problematic line --- input/drivers_hid/wiiusb_hid.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/input/drivers_hid/wiiusb_hid.c b/input/drivers_hid/wiiusb_hid.c index 877e3b1db7..77f6f44994 100644 --- a/input/drivers_hid/wiiusb_hid.c +++ b/input/drivers_hid/wiiusb_hid.c @@ -295,10 +295,7 @@ static int add_adapter(void *data, usb_device_entry *dev) device_name = (const char *)adapter->name; if (adapter->name[0] == '\0') - { - strcpy(adapter->name, "dummydev"); - // goto error; - } + goto error; adapter->send_control_lock = slock_new(); adapter->send_control_buffer = fifo_new(4096); From bc6692e5674b566d1cbec4c0236d3c09dca310cb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 18:53:35 +0200 Subject: [PATCH 535/822] (wiiusb_hid.c) Remove goto error --- input/drivers_hid/wiiusb_hid.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/input/drivers_hid/wiiusb_hid.c b/input/drivers_hid/wiiusb_hid.c index 77f6f44994..78bdbc06fa 100644 --- a/input/drivers_hid/wiiusb_hid.c +++ b/input/drivers_hid/wiiusb_hid.c @@ -294,9 +294,6 @@ static int add_adapter(void *data, usb_device_entry *dev) device_name = (const char *)adapter->name; - if (adapter->name[0] == '\0') - goto error; - adapter->send_control_lock = slock_new(); adapter->send_control_buffer = fifo_new(4096); From 620035b7660ba0ae4663a8c00184d8e44167961f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 19:22:33 +0200 Subject: [PATCH 536/822] (menu_cbs_deferred_push.c) Get rid of code duplication --- menu/cbs/menu_cbs_deferred_push.c | 90 +++++++++++-------------------- 1 file changed, 31 insertions(+), 59 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 240a7e6fac..13a79a892e 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -314,7 +314,7 @@ static int deferred_archive_action(menu_displaylist_info_t *info) return menu_displaylist_push_list(info, DISPLAYLIST_ARCHIVE_ACTION); } -static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) +static int general_archive_open(menu_displaylist_info_t *info, unsigned id) { settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); @@ -329,18 +329,32 @@ static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) info->type_default = MENU_FILE_PLAIN; info->setting = menu_setting_find(info->label); - - if (global->core_info.list) - strlcpy(info->exts, core_info_list_get_all_extensions( - global->core_info.list), sizeof(info->exts)); - else if (global->menu.info.valid_extensions) + switch (id) { - if (*global->menu.info.valid_extensions) - strlcpy(info->exts, global->menu.info.valid_extensions, - sizeof(info->exts)); + case 0: + if (global->core_info.list) + strlcpy(info->exts, core_info_list_get_all_extensions( + global->core_info.list), sizeof(info->exts)); + else if (global->menu.info.valid_extensions) + { + if (*global->menu.info.valid_extensions) + strlcpy(info->exts, global->menu.info.valid_extensions, + sizeof(info->exts)); + } + else + strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); + break; + case 1: + if (global->menu.info.valid_extensions) + { + if (*global->menu.info.valid_extensions) + strlcpy(info->exts, global->menu.info.valid_extensions, + sizeof(info->exts)); + } + else + strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); + break; } - else - strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); (void)settings; @@ -371,56 +385,14 @@ static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) return menu_displaylist_push_list(info, DISPLAYLIST_DEFAULT); } +static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) +{ + return general_archive_open(info, 0); +} + static int deferred_archive_open(menu_displaylist_info_t *info) { - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - rarch_system_info_t *system = rarch_system_info_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - - fill_pathname_join(info->path, menu->scratch2_buf, - menu->scratch_buf, sizeof(info->path)); - fill_pathname_join(info->label, menu->scratch2_buf, - menu->scratch_buf, sizeof(info->label)); - - info->type_default = MENU_FILE_PLAIN; - info->setting = menu_setting_find(info->label); - - if (global->menu.info.valid_extensions) - { - if (*global->menu.info.valid_extensions) - strlcpy(info->exts, global->menu.info.valid_extensions, - sizeof(info->exts)); - } - else - strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); - - (void)settings; - - if (settings->multimedia.builtin_mediaplayer_enable || - settings->multimedia.builtin_imageviewer_enable) - { - struct retro_system_info sysinfo = {0}; - - (void)sysinfo; -#ifdef HAVE_FFMPEG - if (settings->multimedia.builtin_mediaplayer_enable) - { - libretro_ffmpeg_retro_get_system_info(&sysinfo); - strlcat(info->exts, "|", sizeof(info->exts)); - strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts)); - } -#endif -#ifdef HAVE_IMAGEVIEWER - if (settings->multimedia.builtin_imageviewer_enable) - { - libretro_imageviewer_retro_get_system_info(&sysinfo); - strlcat(info->exts, "|", sizeof(info->exts)); - strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts)); - } -#endif - } - return menu_displaylist_push_list(info, DISPLAYLIST_DEFAULT); + return general_archive_open(info, 1); } static int deferred_push_history_list(menu_displaylist_info_t *info) From a254ebe474e75e2806968a4ab88c2b93d7eab824 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 20:27:14 +0200 Subject: [PATCH 537/822] Some more code de-duplication --- menu/cbs/menu_cbs_deferred_push.c | 91 ++++++++++++------------------- 1 file changed, 35 insertions(+), 56 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 13a79a892e..04f6b04865 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -314,24 +314,34 @@ static int deferred_archive_action(menu_displaylist_info_t *info) return menu_displaylist_push_list(info, DISPLAYLIST_ARCHIVE_ACTION); } -static int general_archive_open(menu_displaylist_info_t *info, unsigned id) +enum +{ + PUSH_ARCHIVE_OPEN_DETECT_CORE = 0, + PUSH_ARCHIVE_OPEN, + PUSH_DEFAULT +}; + +static int general_push(menu_displaylist_info_t *info, unsigned id) { settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); - fill_pathname_join(info->path, menu->scratch2_buf, - menu->scratch_buf, sizeof(info->path)); - fill_pathname_join(info->label, menu->scratch2_buf, - menu->scratch_buf, sizeof(info->label)); + if (id != PUSH_DEFAULT) + { + fill_pathname_join(info->path, menu->scratch2_buf, + menu->scratch_buf, sizeof(info->path)); + fill_pathname_join(info->label, menu->scratch2_buf, + menu->scratch_buf, sizeof(info->label)); + } info->type_default = MENU_FILE_PLAIN; info->setting = menu_setting_find(info->label); switch (id) { - case 0: + case PUSH_ARCHIVE_OPEN_DETECT_CORE: if (global->core_info.list) strlcpy(info->exts, core_info_list_get_all_extensions( global->core_info.list), sizeof(info->exts)); @@ -344,7 +354,7 @@ static int general_archive_open(menu_displaylist_info_t *info, unsigned id) else strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); break; - case 1: + case PUSH_ARCHIVE_OPEN: if (global->menu.info.valid_extensions) { if (*global->menu.info.valid_extensions) @@ -354,6 +364,17 @@ static int general_archive_open(menu_displaylist_info_t *info, unsigned id) else strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); break; + case PUSH_DEFAULT: + if (info->setting && info->setting->browser_selection_type == ST_DIR) {} + else if (global->menu.info.valid_extensions) + { + if (*global->menu.info.valid_extensions) + strlcpy(info->exts, global->menu.info.valid_extensions, + sizeof(info->exts)); + } + else + strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); + break; } (void)settings; @@ -387,12 +408,17 @@ static int general_archive_open(menu_displaylist_info_t *info, unsigned id) static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) { - return general_archive_open(info, 0); + return general_push(info, PUSH_ARCHIVE_OPEN_DETECT_CORE); } static int deferred_archive_open(menu_displaylist_info_t *info) { - return general_archive_open(info, 1); + return general_push(info, PUSH_ARCHIVE_OPEN); +} + +static int deferred_push_default(menu_displaylist_info_t *info) +{ + return general_push(info, PUSH_DEFAULT); } static int deferred_push_history_list(menu_displaylist_info_t *info) @@ -590,53 +616,6 @@ static int deferred_push_detect_core_list(menu_displaylist_info_t *info) return menu_displaylist_push_list(info, DISPLAYLIST_CORES_DETECTED); } -static int deferred_push_default(menu_displaylist_info_t *info) -{ - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - rarch_system_info_t *system = rarch_system_info_get_ptr(); - - info->type_default = MENU_FILE_PLAIN; - info->setting = menu_setting_find(info->label); - - if (info->setting && info->setting->browser_selection_type == ST_DIR) {} - else if (global->menu.info.valid_extensions) - { - if (*global->menu.info.valid_extensions) - strlcpy(info->exts, global->menu.info.valid_extensions, - sizeof(info->exts)); - } - else - strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); - - (void)settings; - - if (settings->multimedia.builtin_mediaplayer_enable || - settings->multimedia.builtin_imageviewer_enable) - { - struct retro_system_info sysinfo = {0}; - - (void)sysinfo; -#ifdef HAVE_FFMPEG - if (settings->multimedia.builtin_mediaplayer_enable) - { - libretro_ffmpeg_retro_get_system_info(&sysinfo); - strlcat(info->exts, "|", sizeof(info->exts)); - strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts)); - } -#endif -#ifdef HAVE_IMAGEVIEWER - if (settings->multimedia.builtin_imageviewer_enable) - { - libretro_imageviewer_retro_get_system_info(&sysinfo); - strlcat(info->exts, "|", sizeof(info->exts)); - strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts)); - } -#endif - } - - return menu_displaylist_push_list(info, DISPLAYLIST_DEFAULT); -} static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t *cbs, const char *label, uint32_t label_hash) From 71b85b460daab1cfa76c2e707225cf6028a1c928 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Sep 2015 20:41:58 +0200 Subject: [PATCH 538/822] Add another param to general_push --- menu/cbs/menu_cbs_deferred_push.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 04f6b04865..d3ea79a182 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -321,7 +321,7 @@ enum PUSH_DEFAULT }; -static int general_push(menu_displaylist_info_t *info, unsigned id) +static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned type) { settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); @@ -403,22 +403,22 @@ static int general_push(menu_displaylist_info_t *info, unsigned id) #endif } - return menu_displaylist_push_list(info, DISPLAYLIST_DEFAULT); + return menu_displaylist_push_list(info, type); } static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) { - return general_push(info, PUSH_ARCHIVE_OPEN_DETECT_CORE); + return general_push(info, PUSH_ARCHIVE_OPEN_DETECT_CORE, DISPLAYLIST_DEFAULT); } static int deferred_archive_open(menu_displaylist_info_t *info) { - return general_push(info, PUSH_ARCHIVE_OPEN); + return general_push(info, PUSH_ARCHIVE_OPEN, DISPLAYLIST_DEFAULT); } static int deferred_push_default(menu_displaylist_info_t *info) { - return general_push(info, PUSH_DEFAULT); + return general_push(info, PUSH_DEFAULT, DISPLAYLIST_DEFAULT); } static int deferred_push_history_list(menu_displaylist_info_t *info) From 554a3ccd68dce3541dcd94fc0fefe63581bf9217 Mon Sep 17 00:00:00 2001 From: Radius Date: Tue, 1 Sep 2015 20:08:29 +0100 Subject: [PATCH 539/822] [android] fix default keyboard overlay --- configuration.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.c b/configuration.c index 5233e951a6..77e72c1dfb 100644 --- a/configuration.c +++ b/configuration.c @@ -805,7 +805,7 @@ static void config_set_defaults(void) if (!*settings->osk.overlay) fill_pathname_join(settings->osk.overlay, global->dir.osk_overlay, - "overlays/keyboards/modular-keyboard/opaque/big.cfg", + "keyboards/modular-keyboard/opaque/big.cfg", sizeof(settings->osk.overlay)); #endif } From e39f28f989bbbbfee91f6eee72e184eca88a690a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 00:10:40 +0200 Subject: [PATCH 540/822] (menu_cbs_deferred_push.c) Cut down on some more code duplication --- menu/cbs/menu_cbs_deferred_push.c | 71 +++++++++++-------------------- 1 file changed, 26 insertions(+), 45 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index d3ea79a182..345efb5bb9 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -318,9 +318,11 @@ enum { PUSH_ARCHIVE_OPEN_DETECT_CORE = 0, PUSH_ARCHIVE_OPEN, - PUSH_DEFAULT + PUSH_DEFAULT, + PUSH_DETECT_CORE_LIST, }; + static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned type) { settings_t *settings = config_get_ptr(); @@ -328,20 +330,25 @@ static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned typ rarch_system_info_t *system = rarch_system_info_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); - if (id != PUSH_DEFAULT) + switch (id) { - fill_pathname_join(info->path, menu->scratch2_buf, - menu->scratch_buf, sizeof(info->path)); - fill_pathname_join(info->label, menu->scratch2_buf, - menu->scratch_buf, sizeof(info->label)); + case PUSH_DEFAULT: + case PUSH_DETECT_CORE_LIST: + break; + default: + fill_pathname_join(info->path, menu->scratch2_buf, + menu->scratch_buf, sizeof(info->path)); + fill_pathname_join(info->label, menu->scratch2_buf, + menu->scratch_buf, sizeof(info->label)); + break; } info->type_default = MENU_FILE_PLAIN; - info->setting = menu_setting_find(info->label); switch (id) { case PUSH_ARCHIVE_OPEN_DETECT_CORE: + info->setting = menu_setting_find(info->label); if (global->core_info.list) strlcpy(info->exts, core_info_list_get_all_extensions( global->core_info.list), sizeof(info->exts)); @@ -355,6 +362,7 @@ static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned typ strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); break; case PUSH_ARCHIVE_OPEN: + info->setting = menu_setting_find(info->label); if (global->menu.info.valid_extensions) { if (*global->menu.info.valid_extensions) @@ -365,6 +373,7 @@ static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned typ strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); break; case PUSH_DEFAULT: + info->setting = menu_setting_find(info->label); if (info->setting && info->setting->browser_selection_type == ST_DIR) {} else if (global->menu.info.valid_extensions) { @@ -375,6 +384,11 @@ static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned typ else strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); break; + case PUSH_DETECT_CORE_LIST: + if (global->core_info.list) + strlcpy(info->exts, core_info_list_get_all_extensions( + global->core_info.list), sizeof(info->exts)); + break; } (void)settings; @@ -406,6 +420,11 @@ static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned typ return menu_displaylist_push_list(info, type); } +static int deferred_push_detect_core_list(menu_displaylist_info_t *info) +{ + return general_push(info, PUSH_DETECT_CORE_LIST, DISPLAYLIST_CORES_DETECTED); +} + static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) { return general_push(info, PUSH_ARCHIVE_OPEN_DETECT_CORE, DISPLAYLIST_DEFAULT); @@ -577,44 +596,6 @@ static int deferred_push_content_history_path(menu_displaylist_info_t *info) return menu_displaylist_push_list(info, DISPLAYLIST_CONTENT_HISTORY); } -static int deferred_push_detect_core_list(menu_displaylist_info_t *info) -{ - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - - info->type_default = MENU_FILE_PLAIN; - if (global->core_info.list) - strlcpy(info->exts, core_info_list_get_all_extensions( - global->core_info.list), sizeof(info->exts)); - - (void)settings; - - if (settings->multimedia.builtin_mediaplayer_enable || - settings->multimedia.builtin_imageviewer_enable) - { - struct retro_system_info sysinfo = {0}; - - (void)sysinfo; -#ifdef HAVE_FFMPEG - if (settings->multimedia.builtin_mediaplayer_enable) - { - libretro_ffmpeg_retro_get_system_info(&sysinfo); - strlcat(info->exts, "|", sizeof(info->exts)); - strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts)); - } -#endif -#ifdef HAVE_IMAGEVIEWER - if (settings->multimedia.builtin_imageviewer_enable) - { - libretro_imageviewer_retro_get_system_info(&sysinfo); - strlcat(info->exts, "|", sizeof(info->exts)); - strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts)); - } -#endif - } - - return menu_displaylist_push_list(info, DISPLAYLIST_CORES_DETECTED); -} static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t *cbs, From 02f9afb20251a60242d712d1727acbc4ce54f237 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 00:13:55 +0200 Subject: [PATCH 541/822] Cleanups --- menu/cbs/menu_cbs_deferred_push.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 345efb5bb9..2e0ea33b38 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -17,7 +17,6 @@ #include "../menu.h" #include "../menu_cbs.h" -#include "../menu_hash.h" #include "../menu_displaylist.h" #ifdef HAVE_LIBRETRODB @@ -28,7 +27,6 @@ #include "../../general.h" #include "../../file_ext.h" -#include "../../gfx/video_shader_driver.h" static int deferred_push_core_information(menu_displaylist_info_t *info) { @@ -42,7 +40,6 @@ static int deferred_push_system_information(menu_displaylist_info_t *info) static int deferred_push_rdb_collection(menu_displaylist_info_t *info) { - /* TODO/FIXME - add path? */ return menu_displaylist_push_list(info, DISPLAYLIST_PLAYLIST_COLLECTION); } @@ -94,26 +91,20 @@ static int deferred_push_database_manager_list_deferred(menu_displaylist_info_t static int deferred_push_cursor_manager_list_deferred(menu_displaylist_info_t *info) { + char rdb_path[PATH_MAX_LENGTH]; char *query = NULL; char *rdb = NULL; - char rdb_path[PATH_MAX_LENGTH] = {0}; settings_t *settings = config_get_ptr(); config_file_t *conf = config_file_new(info->path); if (!conf || !settings) - return -1; + goto error; if (!config_get_string(conf, "query", &query)) - { - config_file_free(conf); - return -1; - } + goto error; if (!config_get_string(conf, "rdb", &rdb)) - { - config_file_free(conf); - return -1; - } + goto error; fill_pathname_join(rdb_path, settings->content_database, rdb, sizeof(rdb_path)); @@ -126,6 +117,11 @@ static int deferred_push_cursor_manager_list_deferred(menu_displaylist_info_t *i config_file_free(conf); return 0; + +error: + if (conf) + config_file_free(conf); + return -1; } static int deferred_push_cursor_manager_list_deferred_query_subsearch(menu_displaylist_info_t *info) From d93559039e057e3bf0df3cac8cdb154315f08c89 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 00:35:32 +0200 Subject: [PATCH 542/822] (menu_cbs_ok.c) Cleanups --- menu/cbs/menu_cbs_ok.c | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 285e324f38..dcc8d12367 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -41,7 +41,7 @@ char core_updater_path[PATH_MAX_LENGTH]; static int menu_action_setting_set_current_string_path( rarch_setting_t *setting, const char *dir, const char *path) { - char s[PATH_MAX_LENGTH] = {0}; + char s[PATH_MAX_LENGTH]; fill_pathname_join(s, dir, path, sizeof(s)); setting_set_with_string_representation(setting, s); return menu_setting_generic(setting, false); @@ -880,8 +880,8 @@ static int action_ok_remap_file_save_as(const char *path, static int action_ok_remap_file_save_core(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - char directory[PATH_MAX_LENGTH] = {0}; - char file[PATH_MAX_LENGTH] = {0}; + char directory[PATH_MAX_LENGTH]; + char file[PATH_MAX_LENGTH]; settings_t *settings = config_get_ptr(); rarch_system_info_t *info = rarch_system_info_get_ptr(); const char *core_name = info ? info->info.library_name : NULL; @@ -903,8 +903,8 @@ static int action_ok_remap_file_save_core(const char *path, static int action_ok_remap_file_save_game(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - char directory[PATH_MAX_LENGTH] = {0}; - char file[PATH_MAX_LENGTH] = {0}; + char directory[PATH_MAX_LENGTH]; + char file[PATH_MAX_LENGTH]; global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); rarch_system_info_t *info = rarch_system_info_get_ptr(); @@ -1431,8 +1431,8 @@ static int action_ok_download_generic(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, const char *type_msg) { - char s[PATH_MAX_LENGTH] = {0}; - char s2[PATH_MAX_LENGTH] = {0}; + char s[PATH_MAX_LENGTH]; + char s2[PATH_MAX_LENGTH]; settings_t *settings = config_get_ptr(); fill_pathname_join(s, settings->network.buildbot_assets_url, @@ -1602,8 +1602,7 @@ static int action_ok_disk_cycle_tray_status(const char *path, static int action_ok_close_content(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - int ret = generic_action_ok_command(EVENT_CMD_UNLOAD_CORE); - return ret; + return generic_action_ok_command(EVENT_CMD_UNLOAD_CORE); } static int action_ok_quit(const char *path, @@ -1674,7 +1673,7 @@ static int action_ok_rdb_entry_submenu(const char *path, { int ret; union string_list_elem_attr attr; - char new_label[PATH_MAX_LENGTH] = {0}; + char new_label[PATH_MAX_LENGTH]; menu_displaylist_info_t info = {0}; char *rdb = NULL; int len = 0; @@ -1688,14 +1687,11 @@ static int action_ok_rdb_entry_submenu(const char *path, str_list = string_split(label, "|"); if (!str_list) - return -1; + goto error; str_list2 = string_list_new(); if (!str_list2) - { - string_list_free(str_list); - return -1; - } + goto error; /* element 0 : label * element 1 : value @@ -1713,11 +1709,7 @@ static int action_ok_rdb_entry_submenu(const char *path, rdb = (char*)calloc(len, sizeof(char)); if (!rdb) - { - string_list_free(str_list); - string_list_free(str_list2); - return -1; - } + goto error; string_list_join_concat(rdb, len, str_list2, "|"); @@ -1738,6 +1730,13 @@ static int action_ok_rdb_entry_submenu(const char *path, string_list_free(str_list2); return ret; + +error: + if (str_list) + string_list_free(str_list); + if (str_list2) + string_list_free(str_list2); + return -1; } static int action_ok_open_archive_detect_core(const char *path, From b32a3e55f4f79abc7be1aec76af787f135a35733 Mon Sep 17 00:00:00 2001 From: radius Date: Tue, 1 Sep 2015 17:37:23 -0500 Subject: [PATCH 543/822] Settings are now being passed correctly to the QT side --- ui/drivers/qt/wimp/wimp.cpp | 19 ++++--------------- ui/drivers/qt/wimp/wimp.h | 25 +++++++++++++++++++++---- ui/drivers/qt/wrapper/wrapper.cpp | 8 ++++---- ui/drivers/qt/wrapper/wrapper.h | 10 ++++++++-- ui/drivers/ui_qt.c | 12 ++++-------- 5 files changed, 41 insertions(+), 33 deletions(-) diff --git a/ui/drivers/qt/wimp/wimp.cpp b/ui/drivers/qt/wimp/wimp.cpp index cfab987dce..0508385049 100644 --- a/ui/drivers/qt/wimp/wimp.cpp +++ b/ui/drivers/qt/wimp/wimp.cpp @@ -22,29 +22,18 @@ QObject *topLevel; -static settings_t *settings; - -int Wimp::CreateMainWindow(char* windowTitle) +int Wimp::CreateMainWindow() { QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); topLevel = engine.rootObjects().value(0); window = qobject_cast(topLevel); - SetTitle(windowTitle); return this->exec(); + } - -void Wimp::SetTitle(char* title) +void Wimp::GetSettings(settings_t *s) { - window->setTitle(title); -} - -void Wimp::ConfigGetPtr(settings_t *g_config) -{ - settings = g_config; - /* test print the value of max users to compare with the value in RA */ - printf("Max Users: %d\n",g_config->input.max_users); - fflush(stdout); + settings = s; } diff --git a/ui/drivers/qt/wimp/wimp.h b/ui/drivers/qt/wimp/wimp.h index 4de50e63de..4b6748e31f 100644 --- a/ui/drivers/qt/wimp/wimp.h +++ b/ui/drivers/qt/wimp/wimp.h @@ -16,12 +16,22 @@ #ifndef WIMP_H #define WIMP_H +/* this is the only define missing from config.h remove these once + * we can build everything with a single makefile + */ + +#ifndef HAVE_MENU +#define HAVE_MENU +#endif + +#include "config.h" +#include "configuration.h" + #include "wimp_global.h" #include #include #include #include -#include "configuration.h" class WIMPSHARED_EXPORT Wimp : public QGuiApplication { @@ -30,9 +40,16 @@ class WIMPSHARED_EXPORT Wimp : public QGuiApplication Q_OBJECT public: Wimp(int argc, char *argv[]): QGuiApplication(argc, argv) {} - int CreateMainWindow(char* windowTitle); - void SetTitle(char* title); - void ConfigGetPtr(settings_t *g_config); + + /* create the main QT window */ + int CreateMainWindow(); + + /* get a pointer to RetroArch settings */ + void GetSettings(settings_t *s); + + private: + /* pointer to RetroArch settings */ + settings_t *settings; }; diff --git a/ui/drivers/qt/wrapper/wrapper.cpp b/ui/drivers/qt/wrapper/wrapper.cpp index 3e1877a626..c3573e40a5 100644 --- a/ui/drivers/qt/wrapper/wrapper.cpp +++ b/ui/drivers/qt/wrapper/wrapper.cpp @@ -29,14 +29,14 @@ Wimp* ctrWimp(int argc, char *argv[]){ return new Wimp(argc,argv); } -int CreateMainWindow(Wimp* p, char* windowTitle) +int CreateMainWindow(Wimp* p) { - return p->CreateMainWindow(windowTitle); + return p->CreateMainWindow(); } -void ConfigGetPtr(Wimp*p, settings_t *g_config) +void GetSettings(Wimp* p, settings_t *s) { - return p->ConfigGetPtr(g_config); + return p->GetSettings(s); } #ifdef __cplusplus diff --git a/ui/drivers/qt/wrapper/wrapper.h b/ui/drivers/qt/wrapper/wrapper.h index 98b392063c..5329613c7d 100644 --- a/ui/drivers/qt/wrapper/wrapper.h +++ b/ui/drivers/qt/wrapper/wrapper.h @@ -13,6 +13,11 @@ * If not, see . */ +#ifndef HAVE_MENU +#define HAVE_MENU +#endif + +#include "config.h" #include "configuration.h" #ifndef WRAPPER_H @@ -23,11 +28,12 @@ extern "C" { #endif typedef struct Wimp Wimp; +typedef settings_t (*config_get_ptr_cb); Wimp* ctrWimp(int argc, char *argv[]); -int CreateMainWindow(Wimp* p, char* windowTitle); -void ConfigGetPtr(Wimp*p, settings_t *g_config); +int CreateMainWindow(Wimp* p); +void GetSettings(Wimp* p, settings_t *s); #ifdef __cplusplus } diff --git a/ui/drivers/ui_qt.c b/ui/drivers/ui_qt.c index e8ca4008a7..2068afdb8d 100644 --- a/ui/drivers/ui_qt.c +++ b/ui/drivers/ui_qt.c @@ -29,7 +29,7 @@ struct Wimp* wimp; char* args[] = {""}; - +settings_t *settings; typedef struct ui_companion_qt { @@ -41,16 +41,12 @@ typedef struct ui_companion_qt static void qt_thread(void *data) { - settings_t *settings = config_get_ptr(); - /* test print the value of max users to compare with the value in QT */ - RARCH_LOG("Max Users: %d\n", settings->input.max_users); - ui_companion_qt_t *handle = (ui_companion_qt_t*)data; wimp = ctrWimp(0, NULL); if(wimp) { - ConfigGetPtr(wimp, settings); - CreateMainWindow(wimp, "RetroArch QT"); + GetSettings(wimp, settings); + CreateMainWindow(wimp); } return; @@ -74,7 +70,7 @@ static void *ui_companion_qt_init(void) ui_companion_qt_t *handle = (ui_companion_qt_t*)calloc(1, sizeof(*handle)); if (!handle) return NULL; - + settings = config_get_ptr(); handle->lock = slock_new(); handle->thread = sthread_create(qt_thread, handle); if (!handle->thread) From ce43122b6f6135ad215d4016794fc13f63684d9f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 00:42:45 +0200 Subject: [PATCH 544/822] (menu_cbs_ok.c) Cut down on some code duplication --- menu/cbs/menu_cbs_ok.c | 50 +++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index dcc8d12367..74f5c10ce4 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1251,14 +1251,22 @@ static int action_ok_disk_image_append(const char *path, return -1; } -#ifdef HAVE_FFMPEG -static int action_ok_file_load_ffmpeg(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) +enum +{ + ACTION_OK_FFMPEG = 0, + ACTION_OK_IMAGEVIEWER +}; + +static int generic_action_ok_file_load(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx, + unsigned action_type, unsigned id) { const char *menu_path = NULL; global_t *global = global_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); + (void)id; + if (!menu_list) return -1; @@ -1268,31 +1276,33 @@ static int action_ok_file_load_ffmpeg(const char *path, fill_pathname_join(global->path.fullpath, menu_path, path, sizeof(global->path.fullpath)); - menu_common_load_content(true, CORE_TYPE_FFMPEG); + switch (id) + { + case ACTION_OK_FFMPEG: + case ACTION_OK_IMAGEVIEWER: + menu_common_load_content(true, action_type); + break; + default: + break; + } return 0; } + +#ifdef HAVE_FFMPEG +static int action_ok_file_load_ffmpeg(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_file_load(path, label, type, idx, + entry_idx, CORE_TYPE_FFMPEG, ACTION_OK_FFMPEG); +} #endif static int action_ok_file_load_imageviewer(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - const char *menu_path = NULL; - global_t *global = global_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - menu_list_get_last(menu_list->menu_stack, - &menu_path, NULL, NULL, NULL); - - fill_pathname_join(global->path.fullpath, menu_path, path, - sizeof(global->path.fullpath)); - - menu_common_load_content(true, CORE_TYPE_IMAGEVIEWER); - - return 0; + return generic_action_ok_file_load(path, label, type, idx, + entry_idx, CORE_TYPE_IMAGEVIEWER, ACTION_OK_IMAGEVIEWER); } static int action_ok_file_load(const char *path, From 87d41c10d26e27492f05c558e6086858ca73eb8f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 00:47:44 +0200 Subject: [PATCH 545/822] (menu_cbs_ok.c) Code de-duplication --- menu/cbs/menu_cbs_ok.c | 48 ++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 74f5c10ce4..ce68991eb7 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1937,8 +1937,9 @@ static int action_ok_help_audio_video_troubleshooting(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); } -static int action_ok_help_scanning_content(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) +static int generic_action_ok_help(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx, + unsigned id, unsigned id2) { menu_displaylist_info_t info = {0}; menu_list_t *menu_list = menu_list_get_ptr(); @@ -1948,50 +1949,33 @@ static int action_ok_help_scanning_content(const char *path, info.list = menu_list->menu_stack; strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_HELP_SCANNING_CONTENT), + menu_hash_to_str(id), sizeof(info.label)); menu->push_help_screen = true; - menu->help_screen_type = MENU_HELP_SCANNING_CONTENT; + menu->help_screen_type = id2; return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); } +static int action_ok_help_scanning_content(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_help(path, label, type, idx, entry_idx, + MENU_LABEL_HELP_SCANNING_CONTENT, MENU_HELP_SCANNING_CONTENT); +} + static int action_ok_help_change_virtual_gamepad(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD), - sizeof(info.label)); - menu->push_help_screen = true; - menu->help_screen_type = MENU_HELP_CHANGE_VIRTUAL_GAMEPAD; - - return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); + return generic_action_ok_help(path, label, type, idx, entry_idx, + MENU_LABEL_HELP_CHANGE_VIRTUAL_GAMEPAD, MENU_HELP_CHANGE_VIRTUAL_GAMEPAD); } static int action_ok_help_load_content(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_HELP_LOADING_CONTENT), - sizeof(info.label)); - menu->push_help_screen = true; - menu->help_screen_type = MENU_HELP_LOADING_CONTENT; - - return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); + return generic_action_ok_help(path, label, type, idx, entry_idx, + MENU_LABEL_HELP_LOADING_CONTENT, MENU_HELP_LOADING_CONTENT); } static int action_ok_video_resolution(const char *path, From 1a54984fe9983bcd55dd73c3947a6e6e59c0bdb2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 00:50:47 +0200 Subject: [PATCH 546/822] (menu_cbs_ok.c) Code de-duplication --- menu/cbs/menu_cbs_ok.c | 104 +++++++++++------------------------------ 1 file changed, 28 insertions(+), 76 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index ce68991eb7..bbf6fc9aa1 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1860,82 +1860,6 @@ static int action_ok_load_archive_detect_core(const char *path, return ret; } -static int action_ok_help(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_HELP), - sizeof(info.label)); - menu->push_help_screen = true; - menu->help_screen_type = MENU_HELP_WELCOME; - - return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); - -} - -static int action_ok_help_controls(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_HELP_CONTROLS), - sizeof(info.label)); - menu->push_help_screen = true; - menu->help_screen_type = MENU_HELP_CONTROLS; - - return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); -} - -static int action_ok_help_what_is_a_core(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_HELP_WHAT_IS_A_CORE), - sizeof(info.label)); - menu->push_help_screen = true; - menu->help_screen_type = MENU_HELP_WHAT_IS_A_CORE; - - return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); -} - -static int action_ok_help_audio_video_troubleshooting(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING), - sizeof(info.label)); - menu->push_help_screen = true; - menu->help_screen_type = MENU_HELP_AUDIO_VIDEO_TROUBLESHOOTING; - - return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); -} static int generic_action_ok_help(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, @@ -1957,6 +1881,34 @@ static int generic_action_ok_help(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); } +static int action_ok_help_audio_video_troubleshooting(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_help(path, label, type, idx, entry_idx, + MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING, MENU_HELP_AUDIO_VIDEO_TROUBLESHOOTING); +} + +static int action_ok_help(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_help(path, label, type, idx, entry_idx, + MENU_LABEL_HELP, MENU_HELP_WELCOME); +} + +static int action_ok_help_controls(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_help(path, label, type, idx, entry_idx, + MENU_LABEL_HELP_CONTROLS, MENU_HELP_CONTROLS); +} + +static int action_ok_help_what_is_a_core(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_help(path, label, type, idx, entry_idx, + MENU_LABEL_HELP_WHAT_IS_A_CORE, MENU_HELP_WHAT_IS_A_CORE); +} + static int action_ok_help_scanning_content(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From bbf7e0213920137b337cbaea6948ee9281c5df39 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 01:10:44 +0200 Subject: [PATCH 547/822] Create EVENT_CMD_CHEATS_APPLY --- command_event.c | 6 ++++++ command_event.h | 2 ++ menu/cbs/menu_cbs_ok.c | 10 +--------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/command_event.c b/command_event.c index c317e07ddc..21c8fa1b96 100644 --- a/command_event.c +++ b/command_event.c @@ -1187,6 +1187,12 @@ bool event_command(enum event_command cmd) event_command(EVENT_CMD_CHEATS_DEINIT); event_init_cheats(); break; + case EVENT_CMD_CHEATS_APPLY: + if (!global->cheat) + break; + + cheat_manager_apply_cheats(global->cheat); + break; case EVENT_CMD_REMAPPING_DEINIT: break; case EVENT_CMD_REMAPPING_INIT: diff --git a/command_event.h b/command_event.h index 54fc4c3c40..d47e1291a7 100644 --- a/command_event.h +++ b/command_event.h @@ -149,6 +149,8 @@ enum event_command EVENT_CMD_CHEATS_INIT, /* Deinitializes cheats. */ EVENT_CMD_CHEATS_DEINIT, + /* Apply cheats. */ + EVENT_CMD_CHEATS_APPLY, /* Deinitializes network system. */ EVENT_CMD_NETWORK_DEINIT, /* Initializes network system. */ diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index bbf6fc9aa1..dc9d2e55ad 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -276,18 +276,10 @@ static int action_ok_playlist_entry(const char *path, return -1; } - - static int action_ok_cheat_apply_changes(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - global_t *global = global_get_ptr(); - cheat_manager_t *cheat = global->cheat; - - if (!cheat) - return -1; - - cheat_manager_apply_cheats(cheat); + event_command(EVENT_CMD_CHEATS_APPLY); return 0; } From 78d3b94a4a639c00d57e0f1bdb9247384a84d5c3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 01:15:10 +0200 Subject: [PATCH 548/822] Craete EVENT_CMD_SAVE_STATE_INCREMENT/EVENT_CMD_SAVE_STATE_DECREMENT --- command_event.c | 8 ++++++++ command_event.h | 2 ++ menu/cbs/menu_cbs_left.c | 7 +------ menu/cbs/menu_cbs_right.c | 4 +--- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/command_event.c b/command_event.c index 21c8fa1b96..a9b2017f03 100644 --- a/command_event.c +++ b/command_event.c @@ -1127,6 +1127,14 @@ bool event_command(enum event_command cmd) event_main_state(cmd); break; + case EVENT_CMD_SAVE_STATE_DECREMENT: + /* Slot -1 is (auto) slot. */ + if (settings->state_slot >= 0) + settings->state_slot--; + break; + case EVENT_CMD_SAVE_STATE_INCREMENT: + settings->state_slot++; + break; case EVENT_CMD_TAKE_SCREENSHOT: if (!take_screenshot()) return false; diff --git a/command_event.h b/command_event.h index d47e1291a7..ded995fb66 100644 --- a/command_event.h +++ b/command_event.h @@ -41,6 +41,8 @@ enum event_command EVENT_CMD_UNLOAD_CORE, EVENT_CMD_LOAD_STATE, EVENT_CMD_SAVE_STATE, + EVENT_CMD_SAVE_STATE_DECREMENT, + EVENT_CMD_SAVE_STATE_INCREMENT, /* Takes screenshot. */ EVENT_CMD_TAKE_SCREENSHOT, /* Initializes dummy core. */ diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index 2abfc0fcb6..fb7f7282c9 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -103,12 +103,7 @@ static int action_left_input_desc(unsigned type, const char *label, static int action_left_save_state(unsigned type, const char *label, bool wraparound) { - settings_t *settings = config_get_ptr(); - - /* Slot -1 is (auto) slot. */ - if (settings->state_slot >= 0) - settings->state_slot--; - + event_command(EVENT_CMD_SAVE_STATE_DECREMENT); return 0; } diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 602e987052..ed70ffbc7b 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -110,9 +110,7 @@ int action_right_input_desc(unsigned type, const char *label, static int action_right_save_state(unsigned type, const char *label, bool wraparound) { - settings_t *settings = config_get_ptr(); - - settings->state_slot++; + event_command(EVENT_CMD_SAVE_STATE_INCREMENT); return 0; } From ec8f7d9a6d6d8904ad0d374492d4fe000c32629a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 01:17:51 +0200 Subject: [PATCH 549/822] (menu_cbs_left.c) - Simplify --- menu/cbs/menu_cbs_left.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index fb7f7282c9..68d2582035 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -324,15 +324,13 @@ static int disk_options_disk_idx_left(unsigned type, const char *label, bool wraparound) { event_command(EVENT_CMD_DISK_PREV); - return 0; } static int bind_left_generic(unsigned type, const char *label, bool wraparound) { - unsigned action = MENU_ACTION_LEFT; - return menu_setting_set(type, label, action, wraparound); + return menu_setting_set(type, label, MENU_ACTION_LEFT, wraparound); } static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs, From c4af46b686093e48bbfed195af0d3c0dca702718 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 01:19:26 +0200 Subject: [PATCH 550/822] Call notify_refresh of UI companion driver when we touch shader parameters --- menu/cbs/menu_cbs_right.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index ed70ffbc7b..a7d9326c65 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -32,11 +32,16 @@ static void shader_action_parameter_right_common( struct video_shader_parameter *param, struct video_shader *shader) { + driver_t * driver = driver_get_ptr(); + const ui_companion_driver_t *ui = ui_companion_get_ptr(); if (!shader) return; param->current += param->step; - param->current = min(max(param->minimum, param->current), param->maximum); + param->current = min(max(param->minimum, param->current), param->maximum); + + if (ui->notify_refresh && ui_companion_is_on_foreground()) + ui->notify_refresh(driver->ui_companion_data); } #endif From a1cf6352895a14d9b7daff5ae6ff98d03c0d53a0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 01:39:52 +0200 Subject: [PATCH 551/822] (menu_cbs_select.c) Bind shader parameters --- menu/cbs/menu_cbs_right.c | 4 ++-- menu/cbs/menu_cbs_select.c | 28 +++++++++++++++++++++++++++- menu/menu_cbs.h | 5 +++++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index a7d9326c65..96b0f5bd0e 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -45,7 +45,7 @@ static void shader_action_parameter_right_common( } #endif -static int shader_action_parameter_right(unsigned type, const char *label, bool wraparound) +int shader_action_parameter_right(unsigned type, const char *label, bool wraparound) { #ifdef HAVE_SHADER_MANAGER struct video_shader *shader = video_shader_driver_get_current_shader(); @@ -57,7 +57,7 @@ static int shader_action_parameter_right(unsigned type, const char *label, bool return 0; } -static int shader_action_parameter_preset_right(unsigned type, const char *label, +int shader_action_parameter_preset_right(unsigned type, const char *label, bool wraparound) { #ifdef HAVE_SHADER_MANAGER diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index 05486a59d4..41f7f11bba 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -95,6 +95,26 @@ static int action_select_core_setting(const char *path, const char *label, unsig return core_setting_right(type, label, true); } +static int shader_action_parameter_select(const char *path, const char *label, unsigned type, + size_t idx) +{ +#ifdef HAVE_SHADER_MANAGER + return shader_action_parameter_right(type, label, true); +#else + return 0; +#endif +} + +static int shader_action_parameter_preset_select(const char *path, const char *label, unsigned type, + size_t idx) +{ +#ifdef HAVE_SHADER_MANAGER + return shader_action_parameter_preset_right(type, label, true); +#else + return 0; +#endif +} + static int action_select_cheat(const char *path, const char *label, unsigned type, size_t idx) { @@ -110,7 +130,13 @@ static int action_select_input_desc(const char *path, const char *label, unsigne static int menu_cbs_init_bind_select_compare_type( menu_file_list_cbs_t *cbs, unsigned type) { - if (type >= MENU_SETTINGS_CHEAT_BEGIN + if (type >= MENU_SETTINGS_SHADER_PARAMETER_0 + && type <= MENU_SETTINGS_SHADER_PARAMETER_LAST) + cbs->action_select = shader_action_parameter_select; + else if (type >= MENU_SETTINGS_SHADER_PRESET_PARAMETER_0 + && type <= MENU_SETTINGS_SHADER_PRESET_PARAMETER_LAST) + cbs->action_select = shader_action_parameter_preset_select; + else if (type >= MENU_SETTINGS_CHEAT_BEGIN && type <= MENU_SETTINGS_CHEAT_END) cbs->action_select = action_select_cheat; else if (type >= MENU_SETTINGS_INPUT_DESC_BEGIN diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 076a943d3a..eeace61095 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -33,6 +33,11 @@ extern char core_updater_path[PATH_MAX_LENGTH]; /* Function callbacks */ +int shader_action_parameter_right(unsigned type, const char *label, bool wraparound); + +int shader_action_parameter_preset_right(unsigned type, const char *label, + bool wraparound); + int action_ok_push_generic_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx); From 51a4370dda4e27b590fd67193dbdc4d3d143c35f Mon Sep 17 00:00:00 2001 From: radius Date: Tue, 1 Sep 2015 23:48:48 -0500 Subject: [PATCH 552/822] Populate core list and collection list --- ui/drivers/qt/wimp/main.qml | 482 +++++++++++++++--------------------- ui/drivers/qt/wimp/wimp.cpp | 56 ++++- ui/drivers/qt/wimp/wimp.h | 7 + 3 files changed, 257 insertions(+), 288 deletions(-) diff --git a/ui/drivers/qt/wimp/main.qml b/ui/drivers/qt/wimp/main.qml index 3bc9d70838..1ebcbfbf80 100644 --- a/ui/drivers/qt/wimp/main.qml +++ b/ui/drivers/qt/wimp/main.qml @@ -1,301 +1,211 @@ -import QtQuick 2.4 -import QtQuick.Window 2.2 -import QtQuick.Controls 1.2 -import QtQuick.Layouts 1.1 +import QtQuick 2.2 +import Material 0.1 +import Material.ListItems 0.1 as ListItem - -Window { +ApplicationWindow { id: mainWindow title: "RetroArch" width: 1280 height: 720 color: "#211822" visible: true - - SplitView { - anchors.fill: parent - orientation: Qt.Horizontal - - Rectangle { - id: consoleBar; - color: "#2b2b2b"; - height: 500; - width: 250; - Layout.maximumWidth: 400 - - Rectangle { - id: rightBord; - anchors { - top: parent.top; - bottom: parent.bottom; - right: parent.right; - } - width: 1; - color: "#1a1a1a"; - } - - Row { - id: leftBord; - anchors { - left: parent.left; - top: parent.top; - bottom: parent.bottom; - } - } - - - Rectangle { - id: consoleHeader; - height: 36; - color: parent.color; - - anchors { - top: parent.top; - //topMargin: 12; - left: parent.left; - right: parent.right; - rightMargin: 1; - } - } - - MouseArea { - id: mouse; - anchors.fill: parent; - onClicked: { - if (listView.retractList) - listView.retractList = false; - else - listView.retractList = true; - } - } - Row { - anchors { - left: parent.left; - top: parent.top; - topMargin: 12; - leftMargin: 12; - horizontalCenter: parent.horizontalCenter; - } - Text { - renderType: Text.QtRendering; - text: "Platforms"; - color: "#f1f1f1"; - font { - bold: true; - family: "Sans"; - pixelSize: 12; - } - } - } - ListModel { - id: platformsModel - ListElement { name: "Megadrive" } - ListElement { name: "Nintendo" } - ListElement { name: "Playstation" } - } - ListView { - id: listView; - visible: (height !== 0); - anchors { - top: consoleHeader.bottom; - //bottom: parent.bottom; - right: parent.right; - left: parent.left; - topMargin: 0; - } - - height: retractList ? 0 : 500; - - Behavior on height { - PropertyAnimation {} - } - - snapMode: ListView.SnapToItem; - orientation: ListView.Vertical; - interactive: true; - highlightFollowsCurrentItem: false; - - property bool retractList: false; - - highlight: Item { - id: highlightItem; - visible: !listView.retractList; - height: listView.currentItem.height; - width: listView.width; - anchors.verticalCenter: listView.currentItem.verticalCenter; - y: listView.currentItem.y; - Item { - id: innerItem; - height: parent.height; - width: parent.width; - - - - - Rectangle { - id: mainColor; - anchors { - left: parent.left; - right: parent.right; - top: parent.top; - bottom: parent.bottom; - } - color: listView.currentItem ? "#171717" : "#000000FF"; - Rectangle { - id: topBorder; - color: "#f27b77"; - anchors { - left: parent.left; - leftMargin: leftBord.width; - top: parent.top; - } - height: 2; - width: 4; - } - - Row { - // leftAccent; - anchors { - left: parent.left; - leftMargin: leftBord.width; - bottom: bottomB.top; - top: topBorder.bottom; - } - - Rectangle { - anchors { - top: parent.top; - bottom: parent.bottom; - } - width: 1; - color: "#db5753"; - } - - Rectangle { - anchors { - top: parent.top; - bottom: parent.bottom; - } - width: 3; - color: "#e8433f"; - } - - } - - Column { - id: bottomB; - anchors { - right: parent.right; - rightMargin: rightBord.width; - left: parent.left; - leftMargin: leftBord.width; - bottom: parent.bottom; - } - - Rectangle { - color: "#a22f2c"; - anchors { - left: parent.left; - } - width: 4; - height: 2; - } - Rectangle { - color: "#474747"; - anchors { - left: parent.left; - right: parent.right; - } - height: 1; - } - } - } - - - } - } - - anchors { - right: parent.right; - left: parent.left; - top: consoleLabel.bottom; - topMargin: 10; - } - - model: platformsModel; - - ExclusiveGroup { - id: consoleGroup - } - - delegate: Item { - //visible: !listView.retractList; - height: 22; - width: consoleBar.width; - Row { - id: row; - anchors { - fill: parent; - leftMargin: 25; - } - spacing: 7; - - Image { - anchors.verticalCenter: parent.verticalCenter; - fillMode: Image.PreserveAspectFit; - sourceSize { - height: 24; - width: 24; - } - height: 20; - width: 20; - } - - Text { - id: consoleItem; - anchors.verticalCenter: parent.verticalCenter; - width: 140; - text: modelData; - color: "#f1f1f1"; - renderType: Text.QtRendering; - elide: Text.ElideRight; - font { - family: "Sans"; - pixelSize: 11; - } - } - } - - MouseArea { - anchors.fill: parent; - onClicked: { - listView.currentIndex = index; - - } - } - } - } - - - } - - Rectangle { - id: centerItem - Layout.minimumWidth: 50 - Layout.fillWidth: true - color: "lightgray" - Text { - text: "Content View" - anchors.centerIn: parent - } - - } - + theme { + primaryColor: Palette.colors["blue"]["500"] + primaryDarkColor: Palette.colors["blue"]["700"] + accentColor: Palette.colors["red"]["A200"] + tabHighlightColor: "white" } + /* temporary top level folder list */ + property var folders: [ + "C:\\", "D:\\" + ] + + property var sections: [ collections, cores, folders ] + property var sectionTitles: [ "Collections", "Cores", "File Browser" ] + + property string selectedItem: collections[0] + initialPage: Page { + id: page + + title: "RetroArch" + + tabs: navDrawer.enabled ? [] : sectionTitles + + actionBar.maxActionCount: navDrawer.enabled ? 3 : 4 + + actions: [ + Action { + iconName: "action/search" + name: "Search" + enabled: true + }, + + Action { + iconName: "image/color_lens" + name: "Colors" + onTriggered: colorPicker.show() + }, + + Action { + iconName: "action/settings" + name: "Settings" + hoverAnimation: true + }, + Action { + iconName: "action/language" + name: "Language" + enabled: true + }, + + Action { + iconName: "action/account_circle" + name: "Accounts" + } + ] + + backAction: navDrawer.action + + NavigationDrawer { + id: navDrawer + enabled: page.width < Units.dp(500) + + + Flickable { + anchors.fill: parent + + contentHeight: Math.max(content.implicitHeight, height) + + Column { + id: content + anchors.fill: parent + + Repeater { + model: sections + + delegate: ListItem.Standard { + width: parent.width + ListItem.Subheader { + text: sectionTitles[index] + } + } + } + } + } + } + + TabView { + id: tabView + anchors.fill: parent + currentIndex: page.selectedTab + model: sections + + + delegate: Item { + width: tabView.width + height: tabView.height + clip: true + + Sidebar { + id: sidebar + + expanded: !navDrawer.enabled + + Column { + width: parent.width + + Repeater { + model: modelData + delegate: ListItem.Standard { + text: modelData + selected: modelData == selectedItem + onClicked: selectedItem = modelData + } + } + } + } + Flickable { + id: flickable + anchors { + left: sidebar.right + right: parent.right + top: parent.top + bottom: parent.bottom + } + clip: true + Column { + width: parent.width + } + + } + Scrollbar { + flickableItem: flickable + } + } + } + } + + Dialog { + id: colorPicker + title: "Pick color" + + positiveButtonText: "Done" + + MenuField { + id: selection + model: ["Primary color", "Accent color", "Background color"] + width: Units.dp(160) + } + + Grid { + columns: 7 + spacing: Units.dp(8) + + Repeater { + model: [ + "red", "pink", "purple", "deepPurple", "indigo", + "blue", "lightBlue", "cyan", "teal", "green", + "lightGreen", "lime", "yellow", "amber", "orange", + "deepOrange", "grey", "blueGrey", "brown", "black", + "white" + ] + + Rectangle { + width: Units.dp(30) + height: Units.dp(30) + radius: Units.dp(2) + color: Palette.colors[modelData]["500"] + border.width: modelData === "white" ? Units.dp(2) : 0 + border.color: Theme.alpha("#000", 0.26) + + Ink { + anchors.fill: parent + + onPressed: { + switch(selection.selectedIndex) { + case 0: + theme.primaryColor = parent.color + break; + case 1: + theme.accentColor = parent.color + break; + case 2: + theme.backgroundColor = parent.color + break; + } + } + } + } + } + } + + onRejected: { + // TODO set default colors again but we currently don't know what that is + } + } } diff --git a/ui/drivers/qt/wimp/wimp.cpp b/ui/drivers/qt/wimp/wimp.cpp index 0508385049..cd75373fea 100644 --- a/ui/drivers/qt/wimp/wimp.cpp +++ b/ui/drivers/qt/wimp/wimp.cpp @@ -17,18 +17,34 @@ #include "stdio.h" #include #include -#include #include +#include +#include +#include QObject *topLevel; int Wimp::CreateMainWindow() { - QQmlApplicationEngine engine; + engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); topLevel = engine.rootObjects().value(0); window = qobject_cast(topLevel); + if(settings->playlist_directory[0] != '\0') + GetCollections(settings->playlist_directory); + else + collections.append("Collection dir not defined"); + + engine.rootContext()->setContextProperty("collections", QVariant::fromValue(collections)); + + if(settings->libretro_directory[0] != '\0') + GetCores(settings->libretro_directory); + else + cores.append("Core dir not defined"); + + engine.rootContext()->setContextProperty("cores", QVariant::fromValue(cores)); + return this->exec(); } @@ -37,3 +53,39 @@ void Wimp::GetSettings(settings_t *s) { settings = s; } + +void Wimp::GetCollections(char* path) +{ + QDir dir(path); + dir.setNameFilters(QStringList("*.lpl")); + QStringList fileList = dir.entryList(); + + if(fileList.count() == 0) + collections.append("Empty"); + + for (int i=0; i < fileList.count(); i++) + { + QString collection = fileList[i].section('.',0,0); + collections.append(collection); + qDebug() << "Found file: " << collection; + } + +} + +void Wimp::GetCores(char* path) +{ + QDir dir(path); + dir.setNameFilters(QStringList("*.dll")); + QStringList fileList = dir.entryList(); + + if(fileList.count() == 0) + cores.append("Empty"); + + for (int i=0; i < fileList.count(); i++) + { + QString core = fileList[i].section('.',0,0); + cores.append(core); + qDebug() << "Found file: " << core; + } + +} diff --git a/ui/drivers/qt/wimp/wimp.h b/ui/drivers/qt/wimp/wimp.h index 4b6748e31f..6c7c368677 100644 --- a/ui/drivers/qt/wimp/wimp.h +++ b/ui/drivers/qt/wimp/wimp.h @@ -47,10 +47,17 @@ class WIMPSHARED_EXPORT Wimp : public QGuiApplication /* get a pointer to RetroArch settings */ void GetSettings(settings_t *s); + void GetCollections(char* path); + void GetCores(char* path); + private: /* pointer to RetroArch settings */ settings_t *settings; + QStringList collections; + QStringList cores; + QQmlApplicationEngine engine; }; #endif // WIMP_H + From 40a52e417c5efc533189682943f8e6d640e1715d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 12:08:07 +0200 Subject: [PATCH 553/822] (memmap.c) Cleanup --- libretro-common/memmap/memmap.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/libretro-common/memmap/memmap.c b/libretro-common/memmap/memmap.c index cf8a631fb7..c2d1a174af 100644 --- a/libretro-common/memmap/memmap.c +++ b/libretro-common/memmap/memmap.c @@ -24,19 +24,27 @@ #include #ifndef PROT_READ -#define PROT_READ 0x1 /* Page can be read */ +#define PROT_READ 0x1 /* Page can be read */ #endif #ifndef PROT_WRITE -#define PROT_WRITE 0x2 /* Page can be written. */ +#define PROT_WRITE 0x2 /* Page can be written. */ +#endif + +#ifndef PROT_READWRITE +#define PROT_READWRITE 0x3 /* Page can be written to and read from. */ #endif #ifndef PROT_EXEC -#define PROT_EXEC 0x4 /* Page can be executed. */ +#define PROT_EXEC 0x4 /* Page can be executed. */ #endif #ifndef PROT_NONE -#define PROT_NONE 0x0 /* Page can not be accessed. */ +#define PROT_NONE 0x0 /* Page can not be accessed. */ +#endif + +#ifndef MAP_FAILED +#define MAP_FAILED ((void *) -1) #endif #ifdef _WIN32 From abd678122b7345e28cc216d25764cfd61115577c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 12:25:00 +0200 Subject: [PATCH 554/822] (Wii) Buildfix Makefile.griffin --- Makefile.griffin | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Makefile.griffin b/Makefile.griffin index ef8f36452a..f949327859 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -97,16 +97,14 @@ endif LIBDIRS += -L. MACHDEP += -DGEKKO -mcpu=750 -meabi -mhard-float -DMSB_FIRST - LDFLAGS += $(MACHDEP) -Wl,-Map,$(notdir $(EXT_INTER_TARGET)).map - -ifeq ($(platform), wii) - LDFLAGS += ,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,strdup,-wrap,strndup,-wrap,malloc_usable_size -endif - -ifeq ($(BIG_STACK), 1) ifeq ($(platform), ngc) + LDFLAGS += $(MACHDEP) -Wl,-Map,$(notdir $(EXT_INTER_TARGET)).map +ifeq ($(BIG_STACK), 1) LDFLAGS += -T gx/ld/ogc.ld +endif else ifeq ($(platform), wii) + LDFLAGS += $(MACHDEP) -Wl,-Map,$(notdir $(EXT_INTER_TARGET)).map,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,strdup,-wrap,strndup,-wrap,malloc_usable_size +ifeq ($(BIG_STACK), 1) LDFLAGS += -T gx/ld/rvl.ld endif endif From 503a7131c2b065d3427ec63d9e58ecba5d69ea3e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 12:34:05 +0200 Subject: [PATCH 555/822] dist-cores.sh - cleanups --- dist-scripts/dist-cores.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh index 1abbe802f5..eef89cbd75 100755 --- a/dist-scripts/dist-cores.sh +++ b/dist-scripts/dist-cores.sh @@ -9,6 +9,7 @@ MAKEFILE_GRIFFIN=no if [ $PLATFORM = "psp1" ] ; then platform=psp1 SALAMANDER=yes +EXT=a mkdir -p ../pkg/${platform}/cores/ @@ -21,22 +22,26 @@ mv -f ../EBOOT.PBP ../pkg/${platform}/EBOOT.PBP elif [ $PLATFORM = "vita" ] ; then platform=vita MAKEFILE_GRIFFIN=yes +EXT=a # Wii elif [ $PLATFORM = "wii" ] ; then platform=wii MAKEFILE_GRIFFIN=yes SALAMANDER=yes +EXT=a # NGC elif [ $PLATFORM = "ngc" ] ; then platform=ngc MAKEFILE_GRIFFIN=yes +EXT=a # DEX PS3 elif [ $PLATFORM = "dex-ps3" ] ; then platform=ps3 SALAMANDER=yes +EXT=a EXE_PATH=/usr/local/cell/host-win32/bin MAKE_FSELF_NPDRM=$EXE_PATH/make_fself_npdrm.exe @@ -46,6 +51,7 @@ MAKE_PACKAGE_NPDRM=$EXE_PATH/make_package_npdrm.exe elif [ $PLATFORM = "cex-ps3" ]; then platform=ps3 SALAMANDER=yes +EXT=a EXE_PATH=/usr/local/cell/host-win32/bin @@ -54,6 +60,7 @@ elif [ $PLATFORM = "ode-ps3" ]; then #For this script to work correctly, you must place the "data" folder containing your ps3 keys for scetool to use in the dist-scripts folder. platform=ps3 SALAMANDER=yes +EXT=a GENPS3ISO_PATH=/cygdrive/c/Cobra_ODE_GenPS3iso_v2.3/genps3iso.exe SCETOOL_PATH=/cygdrive/c/Users/aaa801/ps3tools/ps3tools/tools/scetool/scetool.exe @@ -79,8 +86,8 @@ if [ $SALAMANDER = "yes" ]; then make -C ../ -f Makefile.${platform}.salamander || exit 1 fi -for f in *_${platform}.a ; do - name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).a$//"` +for f in *_${platform}.${EXT} ; do + name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).${EXT}$//"` whole_archive= big_stack= if [ $name = "nxengine" ] ; then @@ -91,7 +98,7 @@ for f in *_${platform}.a ; do big_stack="BIG_STACK=1" fi echo "-- Building core: $name --" - cp -f "$f" ../libretro_${platform}.a + cp -f "$f" ../libretro_${platform}.${EXT} # Do cleanup if this is a big stack core if [ $big_stack="BIG_STACK=1" ] ; then From c276f3f8a2ab72036f4bd234071c1c6ea650d034 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 12:38:32 +0200 Subject: [PATCH 556/822] (Emscripten) Buildfix --- menu/menu_navigation.c | 2 +- menu/menu_navigation.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/menu/menu_navigation.c b/menu/menu_navigation.c index b3ff0dbafa..12ff3a5853 100644 --- a/menu/menu_navigation.c +++ b/menu/menu_navigation.c @@ -259,7 +259,7 @@ void menu_navigation_ascend_alphabet(menu_navigation_t *nav, size_t *ptr_out) menu_driver_navigation_ascend_alphabet(ptr_out); } -ssize_t menu_navigation_get_current_selection(void) +unsigned menu_navigation_get_current_selection(void) { menu_navigation_t *nav = menu_navigation_get_ptr(); if (!nav) diff --git a/menu/menu_navigation.h b/menu/menu_navigation.h index a60497eaa5..b9ff0b894d 100644 --- a/menu/menu_navigation.h +++ b/menu/menu_navigation.h @@ -34,7 +34,7 @@ typedef struct menu_navigation } indices; unsigned acceleration; } scroll; - size_t selection_ptr; + unsigned selection_ptr; } menu_navigation_t; /** @@ -99,7 +99,7 @@ void menu_navigation_descend_alphabet(menu_navigation_t *nav, size_t *ptr_out); **/ void menu_navigation_ascend_alphabet(menu_navigation_t *nav, size_t *ptr_out); -ssize_t menu_navigation_get_current_selection(void); +unsigned menu_navigation_get_current_selection(void); #ifdef __cplusplus } From 634c24ac0b8ca033fed19022ae30410475a214e6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 12:42:45 +0200 Subject: [PATCH 557/822] Revert "(Emscripten) Buildfix" This reverts commit c276f3f8a2ab72036f4bd234071c1c6ea650d034. --- menu/menu_navigation.c | 2 +- menu/menu_navigation.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/menu/menu_navigation.c b/menu/menu_navigation.c index 12ff3a5853..b3ff0dbafa 100644 --- a/menu/menu_navigation.c +++ b/menu/menu_navigation.c @@ -259,7 +259,7 @@ void menu_navigation_ascend_alphabet(menu_navigation_t *nav, size_t *ptr_out) menu_driver_navigation_ascend_alphabet(ptr_out); } -unsigned menu_navigation_get_current_selection(void) +ssize_t menu_navigation_get_current_selection(void) { menu_navigation_t *nav = menu_navigation_get_ptr(); if (!nav) diff --git a/menu/menu_navigation.h b/menu/menu_navigation.h index b9ff0b894d..a60497eaa5 100644 --- a/menu/menu_navigation.h +++ b/menu/menu_navigation.h @@ -34,7 +34,7 @@ typedef struct menu_navigation } indices; unsigned acceleration; } scroll; - unsigned selection_ptr; + size_t selection_ptr; } menu_navigation_t; /** @@ -99,7 +99,7 @@ void menu_navigation_descend_alphabet(menu_navigation_t *nav, size_t *ptr_out); **/ void menu_navigation_ascend_alphabet(menu_navigation_t *nav, size_t *ptr_out); -unsigned menu_navigation_get_current_selection(void); +ssize_t menu_navigation_get_current_selection(void); #ifdef __cplusplus } From ed7c31f173e0de7009dabc7c2b3b9f356b816d8b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 12:45:58 +0200 Subject: [PATCH 558/822] menu_navigation.h - include unistd.h, stddef.h for definitions of size_t and ssize_t --- menu/menu_navigation.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/menu/menu_navigation.h b/menu/menu_navigation.h index a60497eaa5..40179e7b15 100644 --- a/menu/menu_navigation.h +++ b/menu/menu_navigation.h @@ -17,6 +17,13 @@ #ifndef _MENU_NAVIGATION_H #define _MENU_NAVIGATION_H +#include +#ifdef _WIN32 +#include +#else +#include +#endif + #ifdef __cplusplus extern "C" { #endif From a28dd3944c897a42487e81b4bbbdfd99cbce9196 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 12:47:44 +0200 Subject: [PATCH 559/822] (platform_null.c) Another Emscripten fix --- frontend/drivers/platform_null.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/drivers/platform_null.c b/frontend/drivers/platform_null.c index f8d051dad2..df7f5f5626 100644 --- a/frontend/drivers/platform_null.c +++ b/frontend/drivers/platform_null.c @@ -17,8 +17,6 @@ #include "../frontend_driver.h" #include -#include -#include #include frontend_ctx_driver_t frontend_ctx_null = { From 97dae69f28ce6bf56ef118115f0a0a6d607db5c9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 12:54:31 +0200 Subject: [PATCH 560/822] Cleanups --- frontend/drivers/platform_linux.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index 71ab01e0e8..be203581a9 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -31,8 +31,8 @@ #include "../frontend_driver.h" -static const char *proc_apm_path = "/proc/apm"; -static const char *proc_acpi_battery_path = "/proc/acpi/battery"; +static const char *proc_apm_path = "/proc/apm"; +static const char *proc_acpi_battery_path = "/proc/acpi/battery"; static const char *proc_acpi_ac_adapter_path = "/proc/acpi/ac_adapter"; static int open_acpi_file(const char *base, const char *node, const char *key) @@ -158,7 +158,7 @@ check_proc_acpi_battery(const char * node, bool * have_battery, case ACPI_KEY_REMAINING_CAPACITY: { char *endptr = NULL; - const int cvt = (int) strtol(val, &endptr, 10); + const int cvt = (int)strtol(val, &endptr, 10); if (*endptr == ' ') remaining = cvt; @@ -178,7 +178,7 @@ check_proc_acpi_battery(const char * node, bool * have_battery, case ACPI_KEY_DESIGN_CAPACITY: { char *endptr = NULL; - const int cvt = (int) strtol(val, &endptr, 10); + const int cvt = (int)strtol(val, &endptr, 10); if (*endptr == ' ') maximum = cvt; @@ -192,7 +192,7 @@ check_proc_acpi_battery(const char * node, bool * have_battery, pct = (int) ((((float) remaining) / ((float) maximum)) * 100.0f); if (pct < 0) pct = 0; - else if (pct > 100) + if (pct > 100) pct = 100; } From 5e2c998b9c293c5bba1345a49bb6ff14d7faad7a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 13:07:13 +0200 Subject: [PATCH 561/822] Integrate platform_vita.c into platform_psp.c --- frontend/drivers/platform_psp.c | 60 +++++++- frontend/drivers/platform_vita.c | 251 ------------------------------- frontend/frontend_driver.c | 5 +- frontend/frontend_driver.h | 1 - griffin/griffin.c | 4 +- 5 files changed, 60 insertions(+), 261 deletions(-) delete mode 100644 frontend/drivers/platform_vita.c diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 39760f31d5..77b904ef45 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -19,11 +19,16 @@ #include #include +#ifdef VITA +#include +#include +#else #include #include #include #include #include +#endif #include #include @@ -35,15 +40,21 @@ #include "../../general.h" #if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) +#ifndef VITA #include "../../psp1/kernel_functions.h" #endif +#endif +#ifdef VITA +PSP2_MODULE_INFO(0, 0, "RetroArch"); +#else PSP_MODULE_INFO("RetroArch", 0, 1, 1); PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER|THREAD_ATTR_VFPU); #ifdef BIG_STACK PSP_MAIN_THREAD_STACK_SIZE_KB(4*1024); #endif PSP_HEAP_SIZE_MAX(); +#endif char eboot_path[512]; @@ -57,19 +68,28 @@ static bool exitspawn_start_game = false; static void frontend_psp_get_environment_settings(int *argc, char *argv[], void *args, void *params_data) { + struct rarch_main_wrap *params = NULL; + (void)args; + #ifndef IS_SALAMANDER #if defined(HAVE_LOGGER) logger_init(); #elif defined(HAVE_FILE_LOGGER) +#ifndef VITA global_t *global = global_get_ptr(); global->log_file = fopen("ms0:/retroarch-log.txt", "w"); #endif #endif +#endif +#ifdef VITA + strlcpy(eboot_path, "cache0:/retroarch/", sizeof(eboot_path)); + strlcpy(g_defaults.dir.port, eboot_path, sizeof(g_defaults.dir.port)); +#else strlcpy(eboot_path, argv[0], sizeof(eboot_path)); - fill_pathname_basedir(g_defaults.dir.port, argv[0], sizeof(g_defaults.dir.port)); +#endif RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, @@ -93,6 +113,11 @@ static void frontend_psp_get_environment_settings(int *argc, char *argv[], fill_pathname_join(g_defaults.dir.remap, g_defaults.dir.remap, "remaps", sizeof(g_defaults.dir.remap)); +#ifdef VITA + params = (struct rarch_main_wrap*)params_data; + params->verbose = true; +#endif + #ifndef IS_SALAMANDER if (argv[1] && (argv[1][0] != '\0')) { @@ -144,9 +169,14 @@ static void frontend_psp_deinit(void *data) static void frontend_psp_shutdown(bool unused) { (void)unused; +#ifdef VITA + sceKernelExitProcess(0); +#else sceKernelExitGame(); +#endif } +#ifndef VITA static int exit_callback(int arg1, int arg2, void *common) { frontend_psp_deinit(NULL); @@ -173,10 +203,12 @@ static int setup_callback(void) return thread_id; } +#endif static void frontend_psp_init(void *data) { #ifndef IS_SALAMANDER +#ifndef VITA (void)data; /* TODO/FIXME - Err on the safe side for now and @@ -192,10 +224,13 @@ static void frontend_psp_init(void *data) pspFpuSetEnable(0); /* disable FPU exceptions */ scePowerSetClockFrequency(333,333,166); #endif +#endif #if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) +#ifndef VITA pspSdkLoadStartModule("kernel_functions.prx", PSP_MEMORY_PARTITION_KERNEL); #endif +#endif } static void frontend_psp_exec(const char *path, bool should_load_game) @@ -246,19 +281,26 @@ static void frontend_psp_exitspawn(char *s, size_t len) static int frontend_psp_get_rating(void) { +#ifdef VITA + return 6; /* Go with a conservative figure for now. */ +#else return 4; +#endif } static enum frontend_powerstate frontend_psp_get_powerstate(int *seconds, int *percent) { enum frontend_powerstate ret = FRONTEND_POWERSTATE_NONE; - int battery = scePowerIsBatteryExist(); /* this function does not exist on Vita? */ +#ifndef VITA + int battery = scePowerIsBatteryExist(); +#endif int plugged = scePowerIsPowerOnline(); int charging = scePowerIsBatteryCharging(); *percent = scePowerGetBatteryLifePercent(); *seconds = scePowerGetBatteryLifeTime() * 60; +#ifndef VITA if (!battery) { ret = FRONTEND_POWERSTATE_NO_SOURCE; @@ -266,6 +308,7 @@ static enum frontend_powerstate frontend_psp_get_powerstate(int *seconds, int *p *percent = -1; } else +#endif if (charging) ret = FRONTEND_POWERSTATE_CHARGING; else if (plugged) @@ -278,7 +321,11 @@ static enum frontend_powerstate frontend_psp_get_powerstate(int *seconds, int *p enum frontend_architecture frontend_psp_get_architecture(void) { +#ifdef VITA + return FRONTEND_ARCH_ARM; +#else return FRONTEND_ARCH_MIPS; +#endif } static int frontend_psp_parse_drive_list(void *data) @@ -286,12 +333,17 @@ static int frontend_psp_parse_drive_list(void *data) #ifndef IS_SALAMANDER file_list_t *list = (file_list_t*)data; +#ifdef VITA + menu_list_push(list, + "cache0:/", "", MENU_FILE_DIRECTORY, 0, 0); +#else menu_list_push(list, "ms0:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "ef0:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "host0:/", "", MENU_FILE_DIRECTORY, 0, 0); +#endif #endif return 0; @@ -313,5 +365,9 @@ frontend_ctx_driver_t frontend_ctx_psp = { frontend_psp_get_architecture, frontend_psp_get_powerstate, frontend_psp_parse_drive_list, +#ifdef VITA + "vita", +#else "psp", +#endif }; diff --git a/frontend/drivers/platform_vita.c b/frontend/drivers/platform_vita.c deleted file mode 100644 index 7aeeab94e0..0000000000 --- a/frontend/drivers/platform_vita.c +++ /dev/null @@ -1,251 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2015 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include -#include - -#include -#include -#include -#include - -#include -#ifndef IS_SALAMANDER -#include -#endif - -#include "../../defines/psp_defines.h" -#include "../../general.h" - -PSP2_MODULE_INFO(0, 0, "RetroArch"); - -char retroarch_path[512]; - -static bool exit_spawn = false; -static bool exitspawn_start_game = false; - -#ifdef IS_SALAMANDER -#include "../../file_ext.h" -#endif - -static void frontend_vita_get_environment_settings(int *argc, char *argv[], - void *args, void *params_data) -{ - (void)args; -#ifndef IS_SALAMANDER -#if defined(HAVE_LOGGER) - logger_init(); -#elif defined(HAVE_FILE_LOGGER) - global_t *global = global_get_ptr(); - global->log_file = fopen("cache0:/retroarch-log.txt", "w"); -#endif -#endif - - strlcpy(retroarch_path, "cache0:/retroarch/", sizeof(retroarch_path)); - - strlcpy(g_defaults.dir.port, retroarch_path, sizeof(g_defaults.dir.port)); - RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); - - fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, - "media", sizeof(g_defaults.dir.assets)); - fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, - "cores", sizeof(g_defaults.dir.core)); - fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port, - "cores", sizeof(g_defaults.dir.core_info)); - fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, - "savestates", sizeof(g_defaults.dir.savestate)); - fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, - "savefiles", sizeof(g_defaults.dir.sram)); - fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, - "system", sizeof(g_defaults.dir.system)); - fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core, - "playlists", sizeof(g_defaults.dir.playlist)); - fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, - "retroarch.cfg", sizeof(g_defaults.path.config)); - fill_pathname_join(g_defaults.dir.cheats, g_defaults.dir.cheats, - "cheats", sizeof(g_defaults.dir.cheats)); - fill_pathname_join(g_defaults.dir.remap, g_defaults.dir.remap, - "remaps", sizeof(g_defaults.dir.remap)); - - struct rarch_main_wrap *params = NULL; - params = (struct rarch_main_wrap*)params_data; - - params->verbose = true; - -#ifndef IS_SALAMANDER - if (argv[1] && (argv[1][0] != '\0')) - { - static char path[PATH_MAX_LENGTH]; - struct rarch_main_wrap *args = NULL; - - *path = '\0'; - args = (struct rarch_main_wrap*)params_data; - - if (args) - { - strlcpy(path, argv[1], sizeof(path)); - - args->touched = true; - args->no_content = false; - args->verbose = false; - args->config_path = NULL; - args->sram_path = NULL; - args->state_path = NULL; - args->content_path = path; - args->libretro_path = NULL; - - RARCH_LOG("argv[0]: %s\n", argv[0]); - RARCH_LOG("argv[1]: %s\n", argv[1]); - RARCH_LOG("argv[2]: %s\n", argv[2]); - - RARCH_LOG("Auto-start game %s.\n", argv[1]); - } - } -#endif -} - -static void frontend_vita_deinit(void *data) -{ - (void)data; -#ifndef IS_SALAMANDER - global_t *global = global_get_ptr(); - global->verbosity = false; - -#ifdef HAVE_FILE_LOGGER - if (global->log_file) - fclose(global->log_file); - global->log_file = NULL; -#endif - -#endif -} - -static void frontend_vita_shutdown(bool unused) -{ - (void)unused; - sceKernelExitProcess(0); -} - -static void frontend_vita_init(void *data) -{ - (void)data; -} - -static void frontend_vita_exec(const char *path, bool should_load_game) -{ -#if defined(HAVE_KERNEL_PRX) || defined(IS_SALAMANDER) - char argp[512] = {0}; - SceSize args = 0; - - argp[0] = '\0'; - strlcpy(argp, retroarch_path, sizeof(argp)); - args = strlen(argp) + 1; - -#ifndef IS_SALAMANDER - global_t *global = global_get_ptr(); - - if (should_load_game && global->path.fullpath[0] != '\0') - { - argp[args] = '\0'; - strlcat(argp + args, global->path.fullpath, sizeof(argp) - args); - args += strlen(argp + args) + 1; - } -#endif - - RARCH_LOG("Attempt to load executable: [%s].\n", path); - - exitspawn_kernel(path, args, argp); - -#endif -} - -static void frontend_vita_set_fork(bool exit, bool start_game) -{ - exit_spawn = true; - exitspawn_start_game = start_game; -} - -static void frontend_vita_exitspawn(char *s, size_t len) -{ - bool should_load_game = false; -#ifndef IS_SALAMANDER - should_load_game = exitspawn_start_game; - - if (!exit_spawn) - return; -#endif - frontend_vita_exec(s, should_load_game); -} - -static int frontend_vita_get_rating(void) -{ - return 4; -} - -static enum frontend_powerstate frontend_vita_get_powerstate(int *seconds, int *percent) -{ - enum frontend_powerstate ret = FRONTEND_POWERSTATE_NONE; - int plugged = scePowerIsPowerOnline(); - int charging = scePowerIsBatteryCharging(); - - *percent = scePowerGetBatteryLifePercent(); - *seconds = scePowerGetBatteryLifeTime() * 60; - - if (charging) - ret = FRONTEND_POWERSTATE_CHARGING; - else if (plugged) - ret = FRONTEND_POWERSTATE_CHARGED; - else - ret = FRONTEND_POWERSTATE_ON_POWER_SOURCE; - - return ret; -} - -enum frontend_architecture frontend_vita_get_architecture(void) -{ - return FRONTEND_ARCH_MIPS; -} - -static int frontend_vita_parse_drive_list(void *data) -{ -#ifndef IS_SALAMANDER - file_list_t *list = (file_list_t*)data; - - menu_list_push(list, - "cache0:/", "", MENU_FILE_DIRECTORY, 0, 0); -#endif - - return 0; -} - -frontend_ctx_driver_t frontend_ctx_vita = { - frontend_vita_get_environment_settings, - frontend_vita_init, - frontend_vita_deinit, - frontend_vita_exitspawn, - NULL, /* process_args */ - frontend_vita_exec, - frontend_vita_set_fork, - frontend_vita_shutdown, - NULL, /* get_name */ - NULL, /* get_os */ - frontend_vita_get_rating, - NULL, /* load_content */ - frontend_vita_get_architecture, - frontend_vita_get_powerstate, - frontend_vita_parse_drive_list, - "vita", -}; diff --git a/frontend/frontend_driver.c b/frontend/frontend_driver.c index bc7829f251..4046425925 100644 --- a/frontend/frontend_driver.c +++ b/frontend/frontend_driver.c @@ -44,12 +44,9 @@ static frontend_ctx_driver_t *frontend_ctx_drivers[] = { #if defined(__linux__) && !defined(ANDROID) &frontend_ctx_linux, #endif -#if defined(PSP) +#if defined(PSP) || defined(VITA) &frontend_ctx_psp, #endif -#if defined(VITA) - &frontend_ctx_vita, -#endif #if defined(_3DS) &frontend_ctx_ctr, #endif diff --git a/frontend/frontend_driver.h b/frontend/frontend_driver.h index 26814368eb..30f5870467 100644 --- a/frontend/frontend_driver.h +++ b/frontend/frontend_driver.h @@ -84,7 +84,6 @@ extern frontend_ctx_driver_t frontend_ctx_darwin; extern frontend_ctx_driver_t frontend_ctx_android; extern frontend_ctx_driver_t frontend_ctx_linux; extern frontend_ctx_driver_t frontend_ctx_psp; -extern frontend_ctx_driver_t frontend_ctx_vita; extern frontend_ctx_driver_t frontend_ctx_ctr; extern frontend_ctx_driver_t frontend_ctx_win32; extern frontend_ctx_driver_t frontend_ctx_null; diff --git a/griffin/griffin.c b/griffin/griffin.c index 73bcd24204..60135a4b50 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -628,10 +628,8 @@ FRONTEND #endif #elif defined(_XBOX) #include "../frontend/drivers/platform_xdk.c" -#elif defined(PSP) +#elif defined(PSP) || defined(VITA) #include "../frontend/drivers/platform_psp.c" -#elif defined(VITA) -#include "../frontend/drivers/platform_vita.c" #elif defined(_3DS) #include "../frontend/drivers/platform_ctr.c" #elif defined(__QNX__) From cb05634300a3804cf230db9748c155e326b5e527 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 14:00:36 +0200 Subject: [PATCH 562/822] Merge emscripten-cores.sh into dist-cores.sh --- dist-scripts/dist-cores.sh | 22 ++++++++++++++++++++++ dist-scripts/emscripten-cores.sh | 21 --------------------- 2 files changed, 22 insertions(+), 21 deletions(-) delete mode 100755 dist-scripts/emscripten-cores.sh diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh index eef89cbd75..7f233858ba 100755 --- a/dist-scripts/dist-cores.sh +++ b/dist-scripts/dist-cores.sh @@ -24,6 +24,16 @@ platform=vita MAKEFILE_GRIFFIN=yes EXT=a +# Emscripten +elif [ $PLATFORM = "emscripten" ] ; then +platform=emscripten +EXT=bc + +if [ -z "$EMSCRIPTEN" ] ; then + echo "run this script with emmake. Ex: emmake $0" + exit 1 +fi + # Wii elif [ $PLATFORM = "wii" ] ; then platform=wii @@ -88,6 +98,7 @@ fi for f in *_${platform}.${EXT} ; do name=`echo "$f" | sed "s/\(_libretro_${platform}\|\).${EXT}$//"` + lto=0 whole_archive= big_stack= if [ $name = "nxengine" ] ; then @@ -95,6 +106,7 @@ for f in *_${platform}.${EXT} ; do whole_archive="WHOLE_ARCHIVE_LINK=1" elif [ $name = "tyrquake" ] ; then echo "Applying big stack..." + lto=0 big_stack="BIG_STACK=1" fi echo "-- Building core: $name --" @@ -104,6 +116,8 @@ for f in *_${platform}.${EXT} ; do if [ $big_stack="BIG_STACK=1" ] ; then if [ $MAKEFILE_GRIFFIN = "yes" ]; then make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 + elif [ $PLATFORM = "emscripten" ]; then + make -C ../ -f Makefile.emscripten LTO=$lto -j7 clean || exit 1 else make -C ../ -f Makefile.${platform} clean || exit 1 fi @@ -114,6 +128,8 @@ for f in *_${platform}.${EXT} ; do make -C ../ -f Makefile.${platform}.cobra $whole_archive -j3 || exit 1 elif [ $MAKEFILE_GRIFFIN = "yes" ]; then make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1 + elif [ $PLATFORM = "emscripten" ]; then + make -C ../ -f Makefile.emscripten LTO=$lto -j7 || exit 1 else make -C ../ -f Makefile.${platform} $whole_archive $big_stack -j3 || exit 1 fi @@ -142,6 +158,8 @@ for f in *_${platform}.${EXT} ; do mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol elif [ $PLATFORM = "wii" ] ; then mv -f ../retroarch_${platform}.dol ../pkg/${platform}/${name}_libretro_${platform}.dol + elif [ $PLATFORM = "emscripten" ] ; then + mv -f ../retroarch.js ../emscripten/$name.js fi # Remove executable files @@ -155,12 +173,16 @@ for f in *_${platform}.${EXT} ; do rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map elif [ $PLATFORM = "wii" ] ; then rm -f ../retroarch_${platform}.dol ../retroarch_${platform}.elf ../retroarch_${platform}.elf.map + elif [ $platform = "emscripten" ] ; then + rm -f ../retroarch.js fi # Do cleanup if this is a big stack core if [ $big_stack="BIG_STACK=1" ] ; then if [ $MAKEFILE_GRIFFIN = "yes" ]; then make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1 + elif [ $PLATFORM = "emscripten" ]; then + make -C ../ -f Makefile.emscripten LTO=$lto -j7 clean || exit 1 else make -C ../ -f Makefile.${platform} clean || exit 1 fi diff --git a/dist-scripts/emscripten-cores.sh b/dist-scripts/emscripten-cores.sh deleted file mode 100755 index 8b82b3d56b..0000000000 --- a/dist-scripts/emscripten-cores.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -if [ -z "$EMSCRIPTEN" ] ; then - echo "run this script with emmake. Ex: emmake $0" - exit 1 -fi - -make -C ../ -f Makefile.emscripten clean || exit 1 - -for f in *_emscripten.bc ; do - name=`echo "$f" | sed 's/\(_libretro_emscripten\|\).bc$//'` - lto=0 - echo "building $name" - if [ $name = "tyrquake" ] ; then - lto=0 - fi - cp -f "$f" ../libretro_emscripten.bc - make -C ../ -f Makefile.emscripten LTO=$lto -j7 || exit 1 - cp -fv ../retroarch.js ../emscripten/$name.js - rm -f ../retroarch.js -done From a42b59916c7baf73d2ad576085818ec1faf3bddf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 15:58:22 +0200 Subject: [PATCH 563/822] CXX_BUILD buildfixes --- menu/cbs/menu_cbs_ok.c | 4 ++-- menu/menu_list.c | 4 ++-- menu/menu_list.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index dc9d2e55ad..53015ec666 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1251,7 +1251,7 @@ enum static int generic_action_ok_file_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, - unsigned action_type, unsigned id) + enum rarch_core_type action_type, unsigned id) { const char *menu_path = NULL; global_t *global = global_get_ptr(); @@ -1855,7 +1855,7 @@ static int action_ok_load_archive_detect_core(const char *path, static int generic_action_ok_help(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, - unsigned id, unsigned id2) + unsigned id, menu_help_type_t id2) { menu_displaylist_info_t info = {0}; menu_list_t *menu_list = menu_list_get_ptr(); diff --git a/menu/menu_list.c b/menu/menu_list.c index 3880acb2f3..47dd088fc0 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -122,11 +122,11 @@ menu_file_list_cbs_t *menu_list_get_actiondata_at_offset( file_list_get_actiondata_at_offset(list, idx); } -void *menu_list_get_last_stack_actiondata(const menu_list_t *list) +menu_file_list_cbs_t *menu_list_get_last_stack_actiondata(const menu_list_t *list) { if (!list) return NULL; - return file_list_get_last_actiondata(list->menu_stack); + return (menu_file_list_cbs_t*)file_list_get_last_actiondata(list->menu_stack); } static int menu_list_flush_stack_type( diff --git a/menu/menu_list.h b/menu/menu_list.h index a5fce0425a..64a9008a3b 100644 --- a/menu/menu_list.h +++ b/menu/menu_list.h @@ -97,7 +97,7 @@ size_t menu_list_get_stack_size(menu_list_t *list); size_t menu_list_get_size(menu_list_t *list); -void *menu_list_get_last_stack_actiondata(const menu_list_t *list); +menu_file_list_cbs_t *menu_list_get_last_stack_actiondata(const menu_list_t *list); void menu_list_get_last(const file_list_t *list, const char **path, const char **label, From 236a8425ecb98f1536b3e83192a019ff5ccef63e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 16:36:59 +0200 Subject: [PATCH 564/822] (menu_cbs_{left|right}.c) Cut down on some code duplication --- menu/cbs/menu_cbs_left.c | 53 +++++++++++++-------------------------- menu/cbs/menu_cbs_right.c | 43 +++++++++++-------------------- 2 files changed, 33 insertions(+), 63 deletions(-) diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index 68d2582035..59ff4093ab 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -26,48 +26,34 @@ #include "../../general.h" #include "../../retroarch.h" - -#ifdef HAVE_SHADER_MANAGER -static void shader_action_parameter_left_common( - struct video_shader_parameter *param, - struct video_shader *shader) +static int generic_shader_action_parameter_left(unsigned type, const char *label, + bool wraparound, unsigned param_id) { - if (!shader) - return; +#ifdef HAVE_SHADER_MANAGER + struct video_shader *shader = video_shader_driver_get_current_shader(); + struct video_shader_parameter *param = &shader->parameters[type - param_id]; - param->current -= param->step; - param->current = min(max(param->minimum, param->current), param->maximum); -} + if (shader) + { + param->current -= param->step; + param->current = min(max(param->minimum, param->current), param->maximum); + } #endif + return 0; +} static int shader_action_parameter_left(unsigned type, const char *label, bool wraparound) { -#ifdef HAVE_SHADER_MANAGER - struct video_shader *shader = video_shader_driver_get_current_shader(); - struct video_shader_parameter *param = - &shader->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0]; - - shader_action_parameter_left_common(param, shader); -#endif - return 0; + return generic_shader_action_parameter_left(type, label, wraparound, + MENU_SETTINGS_SHADER_PARAMETER_0); } static int shader_action_parameter_preset_left(unsigned type, const char *label, bool wraparound) { -#ifdef HAVE_SHADER_MANAGER - struct video_shader_parameter *param = NULL; - menu_handle_t *menu = menu_driver_get_ptr(); - struct video_shader *shader = menu ? menu->shader : NULL; - if (!menu || !shader) - return -1; - - param = &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0]; - - shader_action_parameter_left_common(param, shader); -#endif - return 0; + return generic_shader_action_parameter_left(type, label, wraparound, + MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); } static int action_left_cheat(unsigned type, const char *label, @@ -208,6 +194,7 @@ static int action_left_shader_filter_pass(unsigned type, const char *label, bool wraparound) { #ifdef HAVE_SHADER_MANAGER + unsigned delta = 2; unsigned pass = type - MENU_SETTINGS_SHADER_PASS_FILTER_0; struct video_shader *shader = NULL; struct video_shader_pass *shader_pass = NULL; @@ -222,11 +209,7 @@ static int action_left_shader_filter_pass(unsigned type, const char *label, if (!shader_pass) return -1; - { - unsigned delta = 2; - shader_pass->filter = ((shader_pass->filter + delta) % 3); - - } + shader_pass->filter = ((shader_pass->filter + delta) % 3); #endif return 0; } diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 96b0f5bd0e..c7939f8ca8 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -27,51 +27,38 @@ #include "../../retroarch.h" -#ifdef HAVE_SHADER_MANAGER -static void shader_action_parameter_right_common( - struct video_shader_parameter *param, - struct video_shader *shader) +static int generic_shader_action_parameter_right(unsigned type, const char *label, + bool wraparound, unsigned param_id) { - driver_t * driver = driver_get_ptr(); - const ui_companion_driver_t *ui = ui_companion_get_ptr(); +#ifdef HAVE_SHADER_MANAGER + driver_t *driver = driver_get_ptr(); + const ui_companion_driver_t *ui = ui_companion_get_ptr(); + struct video_shader *shader = video_shader_driver_get_current_shader(); + struct video_shader_parameter *param = &shader->parameters[type - param_id]; + if (!shader) - return; + return -1; param->current += param->step; param->current = min(max(param->minimum, param->current), param->maximum); if (ui->notify_refresh && ui_companion_is_on_foreground()) ui->notify_refresh(driver->ui_companion_data); -} #endif + return 0; +} int shader_action_parameter_right(unsigned type, const char *label, bool wraparound) { -#ifdef HAVE_SHADER_MANAGER - struct video_shader *shader = video_shader_driver_get_current_shader(); - struct video_shader_parameter *param = - &shader->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0]; - - shader_action_parameter_right_common(param, shader); -#endif - return 0; + return generic_shader_action_parameter_right(type, label, wraparound, + MENU_SETTINGS_SHADER_PARAMETER_0); } int shader_action_parameter_preset_right(unsigned type, const char *label, bool wraparound) { -#ifdef HAVE_SHADER_MANAGER - struct video_shader_parameter *param = NULL; - menu_handle_t *menu = menu_driver_get_ptr(); - struct video_shader *shader = menu ? menu->shader : NULL; - if (!menu || !shader) - return -1; - - param = &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0]; - - shader_action_parameter_right_common(param, shader); -#endif - return 0; + return generic_shader_action_parameter_right(type, label, wraparound, + MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); } int action_right_cheat(unsigned type, const char *label, From 156cdd329555e846e60ca69918701ecccc0632cc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 17:06:02 +0200 Subject: [PATCH 565/822] Create memalign.c --- Makefile.common | 1 + audio/drivers_resampler/cc_resampler.c | 39 ++++----------------- audio/drivers_resampler/sinc.c | 34 ++++-------------- griffin/griffin.c | 1 + libretro-common/include/memalign.h | 40 +++++++++++++++++++++ libretro-common/memmap/memalign.c | 48 ++++++++++++++++++++++++++ 6 files changed, 102 insertions(+), 61 deletions(-) create mode 100644 libretro-common/include/memalign.h create mode 100644 libretro-common/memmap/memalign.c diff --git a/Makefile.common b/Makefile.common index 705f049b68..00a5e7c0ce 100644 --- a/Makefile.common +++ b/Makefile.common @@ -132,6 +132,7 @@ OBJ += frontend/frontend.o \ libretro-common/file/dir_list.o \ libretro-common/string/string_list.o \ libretro-common/string/stdstring.o \ + libretro-common/memmap/memalign.o \ libretro-common/memmap/memmap.o \ dir_list_special.o \ file_ops.o \ diff --git a/audio/drivers_resampler/cc_resampler.c b/audio/drivers_resampler/cc_resampler.c index b27110510f..2d1a26dc66 100644 --- a/audio/drivers_resampler/cc_resampler.c +++ b/audio/drivers_resampler/cc_resampler.c @@ -15,7 +15,6 @@ /* Convoluted Cosine Resampler */ -#include "../audio_resampler_driver.h" #include #include #include @@ -23,6 +22,9 @@ #include #endif #include +#include + +#include "../audio_resampler_driver.h" /* Since SSE and NEON don't provide support for trigonometric functions * we approximate those with polynoms @@ -177,34 +179,6 @@ static void *resampler_CC_init(const struct resampler_config *config, return (void*)-1; } #else -/* memalign() replacement functions - * copied from sinc.c and changed signature so no conflict - * happens when using griffin.c - * these functions should probably be moved to a common header - */ - -static void *memalign_alloc__(size_t boundary, size_t size) -{ - void **place; - uintptr_t addr = 0; - void *ptr = malloc(boundary + size + sizeof(uintptr_t)); - if (!ptr) - return NULL; - - addr = ((uintptr_t) - ptr + sizeof(uintptr_t) + boundary) - & ~(boundary - 1); - place = (void**)addr; - place[-1] = ptr; - - return (void*)addr; -} - -static void memalign_free__(void *ptr) -{ - void **p = (void**)ptr; - free(p[-1]); -} #if defined(__SSE__) #define CC_RESAMPLER_IDENT "SSE" @@ -530,7 +504,7 @@ static void resampler_CC_free(void *re_) { rarch_CC_resampler_t *re = (rarch_CC_resampler_t*)re_; if (re) - memalign_free__(re); + memalign_free(re); } static void *resampler_CC_init(const struct resampler_config *config, @@ -538,15 +512,14 @@ static void *resampler_CC_init(const struct resampler_config *config, { int i; rarch_CC_resampler_t *re = (rarch_CC_resampler_t*) - memalign_alloc__(32, sizeof(rarch_CC_resampler_t)); + memalign_alloc(32, sizeof(rarch_CC_resampler_t)); /* TODO: lookup if NEON support can be detected at * runtime and a funcptr set at runtime for either * C codepath or NEON codepath. This will help out * Android. */ (void)mask; - (void)config; - + (void)config; if (!re) return NULL; diff --git a/audio/drivers_resampler/sinc.c b/audio/drivers_resampler/sinc.c index a468c0ee8f..8b773c7964 100644 --- a/audio/drivers_resampler/sinc.c +++ b/audio/drivers_resampler/sinc.c @@ -15,7 +15,6 @@ /* Bog-standard windowed SINC implementation. */ -#include "../audio_resampler_driver.h" #include #include #include @@ -24,7 +23,11 @@ #ifdef __SSE__ #include #endif + #include +#include + +#include "../audio_resampler_driver.h" /* Rough SNR values for upsampling: * LOWEST: 40 dB @@ -212,30 +215,6 @@ static void init_sinc_table(rarch_sinc_resampler_t *resamp, double cutoff, } } -/* No memalign() for us on Win32 ... */ -static void *aligned_alloc__(size_t boundary, size_t size) -{ - void **place; - uintptr_t addr = 0; - void *ptr = malloc(boundary + size + sizeof(uintptr_t)); - - if (!ptr) - return NULL; - - addr = ((uintptr_t)ptr + sizeof(uintptr_t) + boundary) - & ~(boundary - 1); - place = (void**)addr; - place[-1] = ptr; - - return (void*)addr; -} - -static void aligned_free__(void *ptr) -{ - void **p = (void**)ptr; - free(p[-1]); -} - #if !(defined(__AVX__) && ENABLE_AVX) && !defined(__SSE__) static INLINE void process_sinc_C(rarch_sinc_resampler_t *resamp, float *out_buffer) @@ -462,7 +441,7 @@ static void resampler_sinc_free(void *re) { rarch_sinc_resampler_t *resampler = (rarch_sinc_resampler_t*)re; if (resampler) - aligned_free__(resampler->main_buffer); + memalign_free(resampler->main_buffer); free(resampler); } @@ -503,8 +482,7 @@ static void *resampler_sinc_new(const struct resampler_config *config, #endif elems = phase_elems + 4 * re->taps; - re->main_buffer = (float*) - aligned_alloc__(128, sizeof(float) * elems); + re->main_buffer = (float*)memalign_alloc(128, sizeof(float) * elems); if (!re->main_buffer) goto error; diff --git a/griffin/griffin.c b/griffin/griffin.c index 60135a4b50..f7cef3f818 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -61,6 +61,7 @@ COMPATIBILITY ============================================================ */ #include "../compat/compat.c" #include "../libretro-common/compat/compat_fnmatch.c" +#include "../libretro-common/memmap/memalign.c" #include "../libretro-common/memmap/memmap.c" /*============================================================ diff --git a/libretro-common/include/memalign.h b/libretro-common/include/memalign.h new file mode 100644 index 0000000000..674f7d24fc --- /dev/null +++ b/libretro-common/include/memalign.h @@ -0,0 +1,40 @@ +/* Copyright (C) 2010-2015 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (memalign.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _LIBRETRO_MEMALIGN_H +#define _LIBRETRO_MEMALIGN_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void *memalign_alloc(size_t boundary, size_t size); + +void memalign_free(void *ptr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libretro-common/memmap/memalign.c b/libretro-common/memmap/memalign.c new file mode 100644 index 0000000000..60f4ba4153 --- /dev/null +++ b/libretro-common/memmap/memalign.c @@ -0,0 +1,48 @@ +/* Copyright (C) 2010-2015 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (memalign.c). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include + +#include + +void *memalign_alloc(size_t boundary, size_t size) +{ + void **place; + uintptr_t addr = 0; + void *ptr = malloc(boundary + size + sizeof(uintptr_t)); + if (!ptr) + return NULL; + + addr = ((uintptr_t)ptr + sizeof(uintptr_t) + boundary) + & ~(boundary - 1); + place = (void**)addr; + place[-1] = ptr; + + return (void*)addr; +} + +void memalign_free(void *ptr) +{ + void **p = (void**)ptr; + free(p[-1]); +} From 33f947e18d8f89465cdfa54b19892121e976645c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 2 Sep 2015 18:38:45 +0200 Subject: [PATCH 566/822] (menu_cbs_ok.c) Cleanups --- menu/cbs/menu_cbs_ok.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 53015ec666..8509fe4668 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -291,8 +291,9 @@ static int action_ok_shader_pass_load(const char *path, const char *menu_path = NULL; menu_handle_t *menu = menu_driver_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); + if (!menu || !menu_list) - return -1; + goto error; (void)menu_path; (void)menu_list; @@ -310,9 +311,10 @@ static int action_ok_shader_pass_load(const char *path, menu_list_flush_stack(menu_list, menu_hash_to_str(MENU_LABEL_SHADER_OPTIONS), 0); return 0; -#else - return -1; #endif + +error: + return -1; } #ifdef HAVE_SHADER_MANAGER @@ -815,7 +817,7 @@ static int action_ok_shader_preset_load(const char *path, menu_handle_t *menu = menu_driver_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); if (!menu || !menu_list) - return -1; + goto error; (void)shader_path; (void)menu_path; @@ -832,9 +834,10 @@ static int action_ok_shader_preset_load(const char *path, menu_list_flush_stack(menu_list, menu_hash_to_str(MENU_LABEL_SHADER_OPTIONS), 0); return 0; -#else - return -1; #endif + +error: + return -1; } static int action_ok_cheat(const char *path, @@ -1648,14 +1651,13 @@ static int action_ok_file_load_or_resume(const char *path, if (!strcmp(menu->deferred_path, global->path.fullpath)) return generic_action_ok_command(EVENT_CMD_RESUME); - else - { - strlcpy(global->path.fullpath, - menu->deferred_path, sizeof(global->path.fullpath)); - event_command(EVENT_CMD_LOAD_CORE); - rarch_main_set_state(RARCH_ACTION_STATE_LOAD_CONTENT); - return -1; - } + + strlcpy(global->path.fullpath, + menu->deferred_path, sizeof(global->path.fullpath)); + event_command(EVENT_CMD_LOAD_CORE); + rarch_main_set_state(RARCH_ACTION_STATE_LOAD_CONTENT); + + return -1; } static int action_ok_shader_apply_changes(const char *path, From 5e6ec3a78b7dced5864ee9bd4351d0cc4dee8158 Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Wed, 2 Sep 2015 18:55:22 +0200 Subject: [PATCH 567/822] (Vita) Add -U__ARM_NEON__ to disable NEON (temporary fix) --- Makefile.griffin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.griffin b/Makefile.griffin index f949327859..ffdc147432 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -202,7 +202,7 @@ else ifeq ($(platform), vita) EXT_TARGET := $(TARGET_NAME)_$(platform).velf EXT_INTER_TARGET := $(TARGET_NAME)_$(platform).elf MACHDEP := -DVITA - PLATCFLAGS := -O3 + PLATCFLAGS := -O3 -U__ARM_NEON__ LIBS += -lSceKernel_stub -lSceDisplay_stub -lSceGxm_stub -lSceNet_stub \ -lSceSysmodule_stub -lSceCtrl_stub -lSceAudio_stub \ -lScePower_stub -lSceRtc_stub -lz -lm -lc From dcd9f09d17b3ea0e35e8232f31edb5396959fc6b Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Wed, 2 Sep 2015 18:56:05 +0200 Subject: [PATCH 568/822] (Vita) Fix the audio driver --- audio/drivers/psp_audio.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/audio/drivers/psp_audio.c b/audio/drivers/psp_audio.c index 98d786e5b7..78c45f3781 100644 --- a/audio/drivers/psp_audio.c +++ b/audio/drivers/psp_audio.c @@ -52,7 +52,8 @@ static int audioMainLoop(SceSize args, void* argp) psp_audio_t* psp = *((psp_audio_t**)argp); #ifdef VITA - int port = sceAudioOutOpenPort(PSP2_AUDIO_OUT_PORT_TYPE_MAIN, AUDIO_OUT_COUNT, psp->rate, 2); + int port = sceAudioOutOpenPort(PSP2_AUDIO_OUT_PORT_TYPE_MAIN, AUDIO_OUT_COUNT, + psp->rate, PSP2_AUDIO_OUT_MODE_STEREO); #else sceAudioSRCChReserve(AUDIO_OUT_COUNT, psp->rate, 2); #endif @@ -65,7 +66,7 @@ static int audioMainLoop(SceSize args, void* argp) < (AUDIO_OUT_COUNT * 2); #ifdef VITA - sceAudioOutOutput(0, + sceAudioOutOutput(port, cond ? psp->zeroBuffer : (psp->buffer + readPos)); #else sceAudioSRCOutputBlocking(PSP_AUDIO_VOLUME_MAX, cond ? (psp->zeroBuffer) From 4dfaa33ad12dd574b5fb02a43f003acd5d0bf30c Mon Sep 17 00:00:00 2001 From: Sergi Granell Date: Wed, 2 Sep 2015 18:56:24 +0200 Subject: [PATCH 569/822] (Vita) Update the vita2d video driver --- gfx/drivers/vita2d_gfx.c | 94 +++++++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 36 deletions(-) diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 1818fb1410..5b0abe578c 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -30,8 +30,8 @@ typedef struct vita_menu_frame bool active; int width; int height; - vita2d_texture *frame; -} vita_menu_frame_t; + vita2d_texture *texture; +} vita_menu_t; typedef struct vita_video { @@ -51,7 +51,7 @@ typedef struct vita_video bool keep_aspect; bool should_resize; - vita_menu_frame_t menu; + vita_menu_t menu; } vita_video_t; static void *vita2d_gfx_init(const video_info_t *video, @@ -77,14 +77,20 @@ static void *vita2d_gfx_init(const video_info_t *video, vita2d_set_vblank_wait(video->vsync); if (vita->rgb32) + { + RARCH_LOG("Format: SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB\n"); vita->format = SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB; + } else + { + RARCH_LOG("Format: SCE_GXM_TEXTURE_FORMAT_R5G6B5\n"); vita->format = SCE_GXM_TEXTURE_FORMAT_R5G6B5; + } vita->fullscreen = video->fullscreen; vita->texture = NULL; - vita->menu.frame = NULL; + vita->menu.texture = NULL; vita->menu.active = 0; vita->menu.width = 0; vita->menu.height = 0; @@ -108,6 +114,7 @@ static bool vita2d_gfx_frame(void *data, const void *frame, { int i, j; void *tex_p; + unsigned int stride; vita_video_t *vita = (vita_video_t *)data; (void)frame; (void)width; @@ -125,31 +132,37 @@ static bool vita2d_gfx_frame(void *data, const void *frame, if (!vita->texture) { + RARCH_LOG("Creating texture: %ix%i\n", width, height); vita->width = width; vita->height = height; vita->texture = vita2d_create_empty_texture_format(width, height, vita->format); } tex_p = vita2d_texture_get_datap(vita->texture); + stride = vita2d_texture_get_stride(vita->texture); - if (vita->format == SCE_GXM_TEXTURE_FORMAT_A8B8G8R8) + if (vita->format == SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB) { + stride /= 4; + pitch /= 4; + unsigned int *tex32 = tex_p; + const unsigned int *frame32 = frame; for (i = 0; i < height; i++) - for (j = 0; j < width; j++) - *(unsigned int *)(tex_p + (j + i*height) * 4) = *(unsigned int *)(frame + (j + i*height) * 4); + for (j = 0; j < width; j++) + tex32[j + i*stride] = frame32[j + i*pitch]; } else { - /*for (i = 0; i < height; i++) - for (j = 0; j < width; j++) - *(unsigned short *)(tex_p + (j + i*height) * 2) = *(unsigned short *)(frame + (j + i*height) * 2);*/ - memcpy(tex_p, frame, width*height*2); + stride /= 2; + pitch /= 2; + unsigned short *tex16 = tex_p; + const unsigned short *frame16 = frame; + for (i = 0; i < height; i++) + for (j = 0; j < width; j++) + tex16[j + i*stride] = frame16[j + i*pitch]; } } - // RARCH_LOG("w: %i h: %i pitch: %i\n", width, height, pitch); - // RARCH_LOG("msg: %s\n", msg); - vita2d_start_drawing(); vita2d_clear_screen(); @@ -179,10 +192,10 @@ static bool vita2d_gfx_frame(void *data, const void *frame, } } - if (vita->menu.active && vita->menu.frame) + if (vita->menu.active && vita->menu.texture) { if (vita->fullscreen) - vita2d_draw_texture_scale(vita->menu.frame, + vita2d_draw_texture_scale(vita->menu.texture, 0, 0, SCREEN_W/(float)vita->menu.width, SCREEN_H/(float)vita->menu.height); @@ -191,7 +204,7 @@ static bool vita2d_gfx_frame(void *data, const void *frame, { float scale = SCREEN_H/(float)vita->menu.height; float w = vita->menu.width * scale; - vita2d_draw_texture_scale(vita->menu.frame, + vita2d_draw_texture_scale(vita->menu.texture, SCREEN_W/2.0f - w/2.0f, 0.0f, scale, scale); } @@ -199,7 +212,7 @@ static bool vita2d_gfx_frame(void *data, const void *frame, { float scale = SCREEN_W/(float)vita->menu.width; float h = vita->menu.height * scale; - vita2d_draw_texture_scale(vita->menu.frame, + vita2d_draw_texture_scale(vita->menu.texture, 0.0f, SCREEN_H/2.0f - h/2.0f, scale, scale); } @@ -253,10 +266,12 @@ static void vita2d_gfx_free(void *data) RARCH_LOG("vita2d_gfx_free()\n"); - if (vita->menu.frame) + vita2d_fini(); + + if (vita->menu.texture) { - vita2d_free_texture(vita->menu.frame); - vita->menu.frame = NULL; + vita2d_free_texture(vita->menu.texture); + vita->menu.texture = NULL; } if (vita->texture) @@ -265,7 +280,7 @@ static void vita2d_gfx_free(void *data) vita->texture = NULL; } - vita2d_fini(); + RARCH_LOG("vita2d_gfx_free() done\n"); } static bool vita2d_gfx_set_shader(void *data, @@ -345,46 +360,53 @@ static void vita_set_texture_frame(void *data, const void *frame, bool rgb32, { int i, j; void *tex_p; + unsigned int stride; vita_video_t *vita = (vita_video_t*)data; (void)alpha; - if (width != vita->menu.width && height != vita->menu.height && vita->menu.frame) + if (width != vita->menu.width && height != vita->menu.height && vita->menu.texture) { - vita2d_free_texture(vita->menu.frame); - vita->menu.frame = NULL; + vita2d_free_texture(vita->menu.texture); + vita->menu.texture = NULL; } - if (!vita->menu.frame) + if (!vita->menu.texture) { if (rgb32) { - vita->menu.frame = vita2d_create_empty_texture(width, height); + vita->menu.texture = vita2d_create_empty_texture(width, height); RARCH_LOG("Creating Frame RGBA8 texture: w: %i h: %i\n", width, height); } else { - vita->menu.frame = vita2d_create_empty_texture_format(width, height, SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_RGBA); + vita->menu.texture = vita2d_create_empty_texture_format(width, height, SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_RGBA); RARCH_LOG("Creating Frame R5G6B5 texture: w: %i h: %i\n", width, height); } vita->menu.width = width; vita->menu.height = height; } - tex_p = vita2d_texture_get_datap(vita->menu.frame); + tex_p = vita2d_texture_get_datap(vita->menu.texture); + stride = vita2d_texture_get_stride(vita->menu.texture); if (rgb32) { - for (i = 0; i < height; i++) - for (j = 0; j < width; j++) - *(unsigned int *)(tex_p + (j + i*height) * 4) = *(unsigned int *)(frame + (j + i*height) * 4); + stride /= 4; + unsigned int *tex32 = tex_p; + const unsigned int *frame32 = frame; + for (i = 0; i < height; i++) + for (j = 0; j < width; j++) + tex32[j + i*stride] = frame32[j + i*width]; } else { - /*for (i = 0; i < height; i++) - for (j = 0; j < width; j++) - *(unsigned short *)(tex_p + (j + i*height) * 2) = *(unsigned short *)(frame + (j + i*height) * 2);*/ - memcpy(tex_p, frame, width*height*2); + stride /= 2; + unsigned short *tex16 = tex_p; + const unsigned short *frame16 = frame; + for (i = 0; i < height; i++) + for (j = 0; j < width; j++) + tex16[j + i*stride] = frame16[j + i*width]; } } From 68ecf7c60230a87e39b034c0cced6258cde5ae70 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 01:56:01 +0200 Subject: [PATCH 570/822] (menu_cbs_ok.c) Cut down on code duplication --- menu/cbs/menu_cbs_ok.c | 124 ++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 63 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 8509fe4668..7ceefe7098 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -284,37 +284,69 @@ static int action_ok_cheat_apply_changes(const char *path, return 0; } +enum +{ + ACTION_OK_LOAD_PRESET = 0, + ACTION_OK_LOAD_SHADER_PASS +}; + +static int generic_action_ok(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx, + unsigned id, unsigned flush_id) +{ + char action_path[PATH_MAX_LENGTH]; + const char *menu_path = NULL; + menu_handle_t *menu = menu_driver_get_ptr(); + menu_list_t *menu_list = menu_list_get_ptr(); + if (!menu || !menu_list) + goto error; + + menu_list_get_last_stack(menu_list, &menu_path, NULL, + NULL, NULL); + + fill_pathname_join(action_path, menu_path, path, sizeof(action_path)); + + switch (id) + { +#ifdef HAVE_SHADER_MANAGER + case ACTION_OK_LOAD_PRESET: + menu_shader_manager_set_preset(menu->shader, + video_shader_parse_type(action_path, RARCH_SHADER_NONE), + action_path); + break; +#endif +#ifdef HAVE_SHADER_MANAGER + case ACTION_OK_LOAD_SHADER_PASS: + fill_pathname_join(menu->shader->pass[hack_shader_pass].source.path, + menu_path, path, + sizeof(menu->shader->pass[hack_shader_pass].source.path)); + video_shader_resolve_parameters(NULL, menu->shader); + break; +#endif + default: + break; + } + + menu_list_flush_stack(menu_list, menu_hash_to_str(flush_id), 0); + + return 0; + +error: + return -1; +} + +static int action_ok_shader_preset_load(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok(path, label, type, idx, entry_idx, + ACTION_OK_LOAD_SHADER_PASS, MENU_LABEL_SHADER_OPTIONS); +} static int action_ok_shader_pass_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - const char *menu_path = NULL; - menu_handle_t *menu = menu_driver_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu || !menu_list) - goto error; - - (void)menu_path; - (void)menu_list; - -#ifdef HAVE_SHADER_MANAGER - menu_list_get_last_stack(menu_list, &menu_path, NULL, - NULL, NULL); - - fill_pathname_join(menu->shader->pass[hack_shader_pass].source.path, - menu_path, path, - sizeof(menu->shader->pass[hack_shader_pass].source.path)); - - /* This will reset any changed parameters. */ - video_shader_resolve_parameters(NULL, menu->shader); - menu_list_flush_stack(menu_list, - menu_hash_to_str(MENU_LABEL_SHADER_OPTIONS), 0); - return 0; -#endif - -error: - return -1; + return generic_action_ok(path, label, type, idx, entry_idx, + ACTION_OK_LOAD_PRESET, MENU_LABEL_SHADER_OPTIONS); } #ifdef HAVE_SHADER_MANAGER @@ -724,15 +756,12 @@ static int action_ok_record_configfile_load(const char *path, static int action_ok_remap_file_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { + char remap_path[PATH_MAX_LENGTH]; const char *menu_path = NULL; - char remap_path[PATH_MAX_LENGTH] = {0}; menu_list_t *menu_list = menu_list_get_ptr(); if (!menu_list) return -1; - (void)remap_path; - (void)menu_path; - menu_list_get_last_stack(menu_list, &menu_path, NULL, NULL, NULL); @@ -748,13 +777,11 @@ static int action_ok_remap_file_load(const char *path, static int action_ok_cheat_file_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { + char cheat_path[PATH_MAX_LENGTH]; const char *menu_path = NULL; - char cheat_path[PATH_MAX_LENGTH] = {0}; menu_list_t *menu_list = menu_list_get_ptr(); global_t *global = global_get_ptr(); - (void)cheat_path; - (void)menu_path; menu_list_get_last_stack(menu_list, &menu_path, NULL, NULL, NULL); @@ -809,36 +836,7 @@ static int action_ok_menu_wallpaper_load(const char *path, return 0; } -static int action_ok_shader_preset_load(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - const char *menu_path = NULL; - char shader_path[PATH_MAX_LENGTH] = {0}; - menu_handle_t *menu = menu_driver_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu || !menu_list) - goto error; - (void)shader_path; - (void)menu_path; - (void)menu_list; - -#ifdef HAVE_SHADER_MANAGER - menu_list_get_last_stack(menu_list, &menu_path, NULL, - NULL, NULL); - - fill_pathname_join(shader_path, menu_path, path, sizeof(shader_path)); - menu_shader_manager_set_preset(menu->shader, - video_shader_parse_type(shader_path, RARCH_SHADER_NONE), - shader_path); - menu_list_flush_stack(menu_list, - menu_hash_to_str(MENU_LABEL_SHADER_OPTIONS), 0); - return 0; -#endif - -error: - return -1; -} static int action_ok_cheat(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) From 80a9530a203ca0d0da966d017ea7e80361e6df6f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 02:00:18 +0200 Subject: [PATCH 571/822] (menu_cbs_ok.c) Cut down on code duplication pt. 2 --- menu/cbs/menu_cbs_ok.c | 65 ++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 40 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 7ceefe7098..6e4981a369 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -287,7 +287,9 @@ static int action_ok_cheat_apply_changes(const char *path, enum { ACTION_OK_LOAD_PRESET = 0, - ACTION_OK_LOAD_SHADER_PASS + ACTION_OK_LOAD_SHADER_PASS, + ACTION_OK_LOAD_RECORD_CONFIGFILE, + ACTION_OK_LOAD_REMAPPING_FILE }; static int generic_action_ok(const char *path, @@ -296,6 +298,7 @@ static int generic_action_ok(const char *path, { char action_path[PATH_MAX_LENGTH]; const char *menu_path = NULL; + global_t *global = global_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); if (!menu || !menu_list) @@ -323,6 +326,13 @@ static int generic_action_ok(const char *path, video_shader_resolve_parameters(NULL, menu->shader); break; #endif + case ACTION_OK_LOAD_RECORD_CONFIGFILE: + fill_pathname_join(global->record.config, menu_path, + path, sizeof(global->record.config)); + break; + case ACTION_OK_LOAD_REMAPPING_FILE: + input_remapping_load_file(action_path); + break; default: break; } @@ -335,6 +345,20 @@ error: return -1; } +static int action_ok_record_configfile_load(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok(path, label, type, idx, entry_idx, + ACTION_OK_LOAD_RECORD_CONFIGFILE, MENU_LABEL_RECORDING_SETTINGS); +} + +static int action_ok_remap_file_load(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok(path, label, type, idx, entry_idx, + ACTION_OK_LOAD_REMAPPING_FILE, MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS); +} + static int action_ok_shader_preset_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -734,45 +758,6 @@ static int action_ok_core_list(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } -static int action_ok_record_configfile_load(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - const char *menu_path = NULL; - global_t *global = global_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!global || !menu_list) - return -1; - - menu_list_get_last_stack(menu_list, &menu_path, NULL, - NULL, NULL); - - fill_pathname_join(global->record.config, menu_path, path, sizeof(global->record.config)); - - menu_list_flush_stack(menu_list, menu_hash_to_str(MENU_LABEL_VALUE_RECORDING_SETTINGS), 0); - return 0; -} - -static int action_ok_remap_file_load(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - char remap_path[PATH_MAX_LENGTH]; - const char *menu_path = NULL; - menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu_list) - return -1; - - menu_list_get_last_stack(menu_list, &menu_path, NULL, - NULL, NULL); - - fill_pathname_join(remap_path, menu_path, path, sizeof(remap_path)); - input_remapping_load_file(remap_path); - - menu_list_flush_stack(menu_list, - menu_hash_to_str(MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS), 0); - - return 0; -} static int action_ok_cheat_file_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) From 5b4d4c40b88636c7c440d9d9695d23b32ee2b778 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 02:05:37 +0200 Subject: [PATCH 572/822] (menu_cbs_ok.c) Get rid of code duplication pt. 3 --- menu/cbs/menu_cbs_ok.c | 78 ++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 48 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 6e4981a369..08317a1b62 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -289,7 +289,9 @@ enum ACTION_OK_LOAD_PRESET = 0, ACTION_OK_LOAD_SHADER_PASS, ACTION_OK_LOAD_RECORD_CONFIGFILE, - ACTION_OK_LOAD_REMAPPING_FILE + ACTION_OK_LOAD_REMAPPING_FILE, + ACTION_OK_LOAD_CHEAT_FILE, + ACTION_OK_APPEND_DISK_IMAGE }; static int generic_action_ok(const char *path, @@ -333,6 +335,19 @@ static int generic_action_ok(const char *path, case ACTION_OK_LOAD_REMAPPING_FILE: input_remapping_load_file(action_path); break; + case ACTION_OK_LOAD_CHEAT_FILE: + if (global->cheat) + cheat_manager_free(global->cheat); + + global->cheat = cheat_manager_load(action_path); + + if (!global->cheat) + goto error; + break; + case ACTION_OK_APPEND_DISK_IMAGE: + event_disk_control_append_image(action_path); + event_command(EVENT_CMD_RESUME); + break; default: break; } @@ -345,6 +360,20 @@ error: return -1; } +static int action_ok_disk_image_append(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok(path, label, type, idx, entry_idx, + ACTION_OK_APPEND_DISK_IMAGE, MENU_SETTINGS); +} + +static int action_ok_cheat_file_load(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok(path, label, type, idx, entry_idx, + ACTION_OK_LOAD_RECORD_CONFIGFILE, MENU_LABEL_CORE_CHEAT_OPTIONS); +} + static int action_ok_record_configfile_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -759,33 +788,6 @@ static int action_ok_core_list(const char *path, } -static int action_ok_cheat_file_load(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - char cheat_path[PATH_MAX_LENGTH]; - const char *menu_path = NULL; - menu_list_t *menu_list = menu_list_get_ptr(); - global_t *global = global_get_ptr(); - - menu_list_get_last_stack(menu_list, &menu_path, NULL, - NULL, NULL); - - fill_pathname_join(cheat_path, menu_path, path, sizeof(cheat_path)); - - if (global->cheat) - cheat_manager_free(global->cheat); - - global->cheat = cheat_manager_load(cheat_path); - - if (!global->cheat) - return -1; - - menu_list_flush_stack(menu_list, - menu_hash_to_str(MENU_LABEL_CORE_CHEAT_OPTIONS), 0); - - return 0; -} - static int action_ok_menu_wallpaper_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1208,26 +1210,6 @@ static int action_ok_config_load(const char *path, return 0; } -static int action_ok_disk_image_append(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - char image[PATH_MAX_LENGTH] = {0}; - const char *menu_path = NULL; - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - menu_list_get_last_stack(menu_list, &menu_path, NULL, NULL, NULL); - - fill_pathname_join(image, menu_path, path, sizeof(image)); - event_disk_control_append_image(image); - - event_command(EVENT_CMD_RESUME); - - menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS); - return -1; -} enum { From 9d5562e4236412f5dbc1688cde84ab6470676631 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 11:21:04 +0200 Subject: [PATCH 573/822] Fix shader preset/pass load --- menu/cbs/menu_cbs_ok.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 08317a1b62..e1592d3ad8 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -392,14 +392,14 @@ static int action_ok_shader_preset_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { return generic_action_ok(path, label, type, idx, entry_idx, - ACTION_OK_LOAD_SHADER_PASS, MENU_LABEL_SHADER_OPTIONS); + ACTION_OK_LOAD_PRESET, MENU_LABEL_SHADER_OPTIONS); } static int action_ok_shader_pass_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { return generic_action_ok(path, label, type, idx, entry_idx, - ACTION_OK_LOAD_PRESET, MENU_LABEL_SHADER_OPTIONS); + ACTION_OK_LOAD_SHADER_PASS, MENU_LABEL_SHADER_OPTIONS); } #ifdef HAVE_SHADER_MANAGER From ea71eac2fed057c5be70989b419d906163cc5c9c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 11:24:00 +0200 Subject: [PATCH 574/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index e1592d3ad8..14cb861e05 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -322,15 +322,16 @@ static int generic_action_ok(const char *path, #endif #ifdef HAVE_SHADER_MANAGER case ACTION_OK_LOAD_SHADER_PASS: - fill_pathname_join(menu->shader->pass[hack_shader_pass].source.path, - menu_path, path, + strlcpy( + menu->shader->pass[hack_shader_pass].source.path, + action_path, sizeof(menu->shader->pass[hack_shader_pass].source.path)); video_shader_resolve_parameters(NULL, menu->shader); break; #endif case ACTION_OK_LOAD_RECORD_CONFIGFILE: - fill_pathname_join(global->record.config, menu_path, - path, sizeof(global->record.config)); + strlcpy(global->record.config, action_path, + sizeof(global->record.config)); break; case ACTION_OK_LOAD_REMAPPING_FILE: input_remapping_load_file(action_path); From b15785c7e237ca5fdaf140d16c2259a56376e6af Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 20:21:12 +0200 Subject: [PATCH 575/822] (menu_cbs_get_value.c) Cut down on code duplication --- menu/cbs/menu_cbs_get_value.c | 45 +++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index d2e0e1c724..8e542e2e95 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -443,19 +443,15 @@ static void menu_action_setting_disp_set_label_perf_counters_common( (unsigned long long)counters[offset]->call_cnt); } -static void menu_action_setting_disp_set_label_perf_counters( - file_list_t* list, - unsigned *w, unsigned type, unsigned i, - const char *label, +static void general_disp_set_label_perf_counters( + const struct retro_perf_counter **counters, + unsigned offset, char *s, size_t len, - const char *entry_label, - const char *path, - char *s2, size_t len2) + char *s2, size_t len2, + const char *path, unsigned *w + ) { menu_animation_t *anim = menu_animation_get_ptr(); - const struct retro_perf_counter **counters = - (const struct retro_perf_counter **)perf_counters_rarch; - unsigned offset = type - MENU_SETTINGS_PERF_COUNTERS_BEGIN; *s = '\0'; *w = 19; @@ -468,6 +464,22 @@ static void menu_action_setting_disp_set_label_perf_counters( anim->label.is_updated = true; } +static void menu_action_setting_disp_set_label_perf_counters( + file_list_t* list, + unsigned *w, unsigned type, unsigned i, + const char *label, + char *s, size_t len, + const char *entry_label, + const char *path, + char *s2, size_t len2) +{ + const struct retro_perf_counter **counters = + (const struct retro_perf_counter **)perf_counters_rarch; + unsigned offset = type - MENU_SETTINGS_PERF_COUNTERS_BEGIN; + general_disp_set_label_perf_counters(counters, offset, s, len, + s2, len, path, w); +} + static void menu_action_setting_disp_set_label_libretro_perf_counters( file_list_t* list, unsigned *w, unsigned type, unsigned i, @@ -477,20 +489,11 @@ static void menu_action_setting_disp_set_label_libretro_perf_counters( const char *path, char *s2, size_t len2) { - menu_animation_t *anim = menu_animation_get_ptr(); const struct retro_perf_counter **counters = (const struct retro_perf_counter **)perf_counters_libretro; unsigned offset = type - MENU_SETTINGS_LIBRETRO_PERF_COUNTERS_BEGIN; - - *s = '\0'; - *w = 19; - strlcpy(s2, path, len2); - - menu_action_setting_disp_set_label_perf_counters_common( - counters, offset, s, len); - - if (anim) - anim->label.is_updated = true; + general_disp_set_label_perf_counters(counters, offset, s, len, + s2, len, path, w); } static void menu_action_setting_disp_set_label_menu_more( From b203f1006155302414d33a50f9fdfb6f66567954 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 20:26:12 +0200 Subject: [PATCH 576/822] Cleanups --- menu/cbs/menu_cbs_deferred_push.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 2e0ea33b38..49949d742a 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -257,10 +257,10 @@ static int cb_net_generic(void *data_, size_t len) char *data = (char*)data_; menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) - return -1; + goto error; if (!data) - return -1; + goto error; if (core_buf) free(core_buf); @@ -268,7 +268,7 @@ static int cb_net_generic(void *data_, size_t len) core_buf = (char*)malloc((len+1) * sizeof(char)); if (!core_buf) - return -1; + goto error; memcpy(core_buf, data, len * sizeof(char)); core_buf[len] = '\0'; @@ -277,6 +277,9 @@ static int cb_net_generic(void *data_, size_t len) menu_entries_unset_refresh(true); return 0; + +error: + return -1; } int cb_core_updater_list(void *data_, size_t len) From e5c2ec8dcb68e2942d449ae24373da8526b509a6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 21:53:01 +0200 Subject: [PATCH 577/822] menu_cbs_ok.c - Code de-duplication --- menu/cbs/menu_cbs_ok.c | 80 ++++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 31 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 14cb861e05..d5db58be81 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1709,54 +1709,72 @@ error: return -1; } -static int action_ok_open_archive_detect_core(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) +enum +{ + ACTION_OK_DL_DEFAULT = 0, + ACTION_OK_DL_OPEN_ARCHIVE, + ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE +}; + +static int generic_action_ok_displaylist_push(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx, + unsigned action_type) { menu_displaylist_info_t info = {0}; menu_list_t *menu_list = menu_list_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); - const char *menu_path = menu ? menu->scratch2_buf : NULL; - const char *content_path = menu ? menu->scratch_buf : NULL; + const char *menu_path = NULL; + const char *content_path = NULL; if (!menu_list) return -1; - fill_pathname_join(detect_content_path, menu_path, content_path, - sizeof(detect_content_path)); + switch (action_type) + { + case ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE: + if (menu) + { + menu_path = menu->scratch2_buf; + content_path = menu->scratch_buf; + } + fill_pathname_join(detect_content_path, menu_path, content_path, + sizeof(detect_content_path)); + + switch (action_type) + { + case ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE), + sizeof(info.label)); + break; + case ACTION_OK_DL_OPEN_ARCHIVE: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_OPEN), sizeof(info.label)); + break; + } + strlcpy(info.path, path, sizeof(info.path)); + break; + } info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = 0; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE), sizeof(info.label)); + info.type = type; + info.directory_ptr = idx; return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } +static int action_ok_open_archive_detect_core(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, 0, 0, entry_idx, + ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE); +} + static int action_ok_open_archive(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - const char *menu_path = menu ? menu->scratch2_buf : NULL; - const char *content_path = menu ? menu->scratch_buf : NULL; - - if (!menu_list) - return -1; - - fill_pathname_join(detect_content_path, menu_path, content_path, - sizeof(detect_content_path)); - - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = 0; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_OPEN), sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); + return generic_action_ok_displaylist_push(path, label, 0, 0, entry_idx, + ACTION_OK_DL_OPEN_ARCHIVE); } static int action_ok_load_archive(const char *path, From 8fec2bd68d14521becfe74183f7b86effd0e11d5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 22:17:47 +0200 Subject: [PATCH 578/822] (menu_cbs_ok.c) Code cleanups --- menu/cbs/menu_cbs_ok.c | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d5db58be81..66f6523e5d 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1713,13 +1713,15 @@ enum { ACTION_OK_DL_DEFAULT = 0, ACTION_OK_DL_OPEN_ARCHIVE, - ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE + ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, + ACTION_OK_DL_HELP }; static int generic_action_ok_displaylist_push(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, unsigned action_type) { + unsigned dl_type = DISPLAYLIST_GENERIC; menu_displaylist_info_t info = {0}; menu_list_t *menu_list = menu_list_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); @@ -1732,6 +1734,7 @@ static int generic_action_ok_displaylist_push(const char *path, switch (action_type) { case ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE: + case ACTION_OK_DL_OPEN_ARCHIVE: if (menu) { menu_path = menu->scratch2_buf; @@ -1753,14 +1756,30 @@ static int generic_action_ok_displaylist_push(const char *path, break; } strlcpy(info.path, path, sizeof(info.path)); + info.type = type; + info.directory_ptr = idx; + break; + case ACTION_OK_DL_HELP: + strlcpy(info.label, label, sizeof(info.label)); + menu->push_help_screen = true; + dl_type = DISPLAYLIST_HELP; break; } info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); + return menu_displaylist_push_list(&info, dl_type); +} + +static int generic_action_ok_help(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx, + unsigned id, menu_help_type_t id2) +{ + const char *lbl = menu_hash_to_str(id); + menu_handle_t *menu = menu_driver_get_ptr(); + menu->help_screen_type = id2; + return generic_action_ok_displaylist_push(path, lbl, type, idx, + entry_idx, ACTION_OK_DL_HELP); } static int action_ok_open_archive_detect_core(const char *path, @@ -1839,25 +1858,6 @@ static int action_ok_load_archive_detect_core(const char *path, } -static int generic_action_ok_help(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx, - unsigned id, menu_help_type_t id2) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - strlcpy(info.label, - menu_hash_to_str(id), - sizeof(info.label)); - menu->push_help_screen = true; - menu->help_screen_type = id2; - - return menu_displaylist_push_list(&info, DISPLAYLIST_HELP); -} static int action_ok_help_audio_video_troubleshooting(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) From 29cd1d008757efabeef81023a36898d534aa5082 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 22:20:43 +0200 Subject: [PATCH 579/822] (menu_cbs_ok.c) Cut down on code duplication --- menu/cbs/menu_cbs_ok.c | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 66f6523e5d..de32699dc6 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -173,26 +173,6 @@ static int action_ok_file_load_detect_core(const char *path, return -1; } -static int action_ok_rpl_entry(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_handle_t *menu = menu_driver_get_ptr(); - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu_list) - return -1; - - strlcpy(menu->deferred_path, label, sizeof(menu->deferred_path)); - - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = idx; - rpl_entry_selection_ptr = idx; - - strlcpy(info.label, menu_hash_to_str(MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS), sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} static int action_ok_playlist_entry(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1714,9 +1694,11 @@ enum ACTION_OK_DL_DEFAULT = 0, ACTION_OK_DL_OPEN_ARCHIVE, ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, - ACTION_OK_DL_HELP + ACTION_OK_DL_HELP, + ACTION_OK_RPL_ENTRY }; + static int generic_action_ok_displaylist_push(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, unsigned action_type) @@ -1764,6 +1746,14 @@ static int generic_action_ok_displaylist_push(const char *path, menu->push_help_screen = true; dl_type = DISPLAYLIST_HELP; break; + case ACTION_OK_RPL_ENTRY: + strlcpy(menu->deferred_path, label, sizeof(menu->deferred_path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS), sizeof(info.label)); + info.type = 0; + info.directory_ptr = idx; + rpl_entry_selection_ptr = idx; + break; } info.list = menu_list->menu_stack; @@ -1771,6 +1761,13 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } +static int action_ok_rpl_entry(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_RPL_ENTRY); +} + static int generic_action_ok_help(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, unsigned id, menu_help_type_t id2) From 18226651e0691d8f16bee5d70f26c5b8bc62b98e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 22:52:19 +0200 Subject: [PATCH 580/822] (menu_cbs_ok.c) Refactor code --- menu/cbs/menu_cbs_ok.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index de32699dc6..941bc9b290 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -582,24 +582,6 @@ static int action_ok_cheat_file(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } -static int action_ok_audio_dsp_plugin(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, settings->audio.filter_dir, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_AUDIO_DSP_PLUGIN), sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} static int action_ok_core_updater_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1695,7 +1677,8 @@ enum ACTION_OK_DL_OPEN_ARCHIVE, ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, ACTION_OK_DL_HELP, - ACTION_OK_RPL_ENTRY + ACTION_OK_RPL_ENTRY, + ACTION_OK_AUDIO_DSP_PLUGIN }; @@ -1705,6 +1688,7 @@ static int generic_action_ok_displaylist_push(const char *path, { unsigned dl_type = DISPLAYLIST_GENERIC; menu_displaylist_info_t info = {0}; + settings_t *settings = config_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); const char *menu_path = NULL; @@ -1754,6 +1738,13 @@ static int generic_action_ok_displaylist_push(const char *path, info.directory_ptr = idx; rpl_entry_selection_ptr = idx; break; + case ACTION_OK_AUDIO_DSP_PLUGIN: + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, settings->audio.filter_dir, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_AUDIO_DSP_PLUGIN), sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1761,6 +1752,13 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } +static int action_ok_audio_dsp_plugin(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_AUDIO_DSP_PLUGIN); +} + static int action_ok_rpl_entry(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 2d18d6e27dde7083f3da15a7c14076e37d0634a5 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 22:56:30 +0200 Subject: [PATCH 581/822] (menu_cbs_ok.c) More code de-duplication --- menu/cbs/menu_cbs_ok.c | 85 +++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 47 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 941bc9b290..6385ee133c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -383,47 +383,6 @@ static int action_ok_shader_pass_load(const char *path, ACTION_OK_LOAD_SHADER_PASS, MENU_LABEL_SHADER_OPTIONS); } -#ifdef HAVE_SHADER_MANAGER -extern size_t hack_shader_pass; -#endif - -static int action_ok_shader_pass(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_handle_t *menu = menu_driver_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - hack_shader_pass = type - MENU_SETTINGS_SHADER_PASS_0; - if (!menu || !menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->video.shader_dir, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_shader_parameters(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_handle_t *menu = menu_driver_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu || !menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = MENU_SETTING_ACTION; - info.directory_ptr = idx; - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} int action_ok_push_generic_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1677,8 +1636,10 @@ enum ACTION_OK_DL_OPEN_ARCHIVE, ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, ACTION_OK_DL_HELP, - ACTION_OK_RPL_ENTRY, - ACTION_OK_AUDIO_DSP_PLUGIN + ACTION_OK_DL_RPL_ENTRY, + ACTION_OK_DL_AUDIO_DSP_PLUGIN, + ACTION_OK_DL_SHADER_PASS, + ACTION_OK_DL_SHADER_PARAMETERS }; @@ -1730,7 +1691,7 @@ static int generic_action_ok_displaylist_push(const char *path, menu->push_help_screen = true; dl_type = DISPLAYLIST_HELP; break; - case ACTION_OK_RPL_ENTRY: + case ACTION_OK_DL_RPL_ENTRY: strlcpy(menu->deferred_path, label, sizeof(menu->deferred_path)); strlcpy(info.label, menu_hash_to_str(MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS), sizeof(info.label)); @@ -1738,13 +1699,24 @@ static int generic_action_ok_displaylist_push(const char *path, info.directory_ptr = idx; rpl_entry_selection_ptr = idx; break; - case ACTION_OK_AUDIO_DSP_PLUGIN: + case ACTION_OK_DL_AUDIO_DSP_PLUGIN: info.type = 0; info.directory_ptr = idx; strlcpy(info.path, settings->audio.filter_dir, sizeof(info.path)); strlcpy(info.label, menu_hash_to_str(MENU_LABEL_AUDIO_DSP_PLUGIN), sizeof(info.label)); break; + case ACTION_OK_DL_SHADER_PASS: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->video.shader_dir, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_SHADER_PARAMETERS: + info.type = MENU_SETTING_ACTION; + info.directory_ptr = idx; + strlcpy(info.label, label, sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1752,18 +1724,37 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } +#ifdef HAVE_SHADER_MANAGER +extern size_t hack_shader_pass; +#endif + +static int action_ok_shader_pass(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + hack_shader_pass = type - MENU_SETTINGS_SHADER_PASS_0; + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_SHADER_PASS); +} + +static int action_ok_shader_parameters(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_SHADER_PARAMETERS); +} + static int action_ok_audio_dsp_plugin(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { return generic_action_ok_displaylist_push(path, label, type, idx, - entry_idx, ACTION_OK_AUDIO_DSP_PLUGIN); + entry_idx, ACTION_OK_DL_AUDIO_DSP_PLUGIN); } static int action_ok_rpl_entry(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { return generic_action_ok_displaylist_push(path, label, type, idx, - entry_idx, ACTION_OK_RPL_ENTRY); + entry_idx, ACTION_OK_DL_RPL_ENTRY); } static int generic_action_ok_help(const char *path, From 54ee9d8b066e2486b0bde9bd15b793e48b21e5f2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 23:14:50 +0200 Subject: [PATCH 582/822] (menu_cbs_ok.c) Cleanups --- menu/cbs/menu_cbs_ok.c | 75 +++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 6385ee133c..ac2321b894 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -383,47 +383,6 @@ static int action_ok_shader_pass_load(const char *path, ACTION_OK_LOAD_SHADER_PASS, MENU_LABEL_SHADER_OPTIONS); } - -int action_ok_push_generic_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_handle_t *menu = menu_driver_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu || !menu_list) - return -1; - - if (path) - strlcpy(menu->deferred_path, path, - sizeof(menu->deferred_path)); - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_push_default(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, label, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - static int action_ok_shader_preset(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1639,7 +1598,9 @@ enum ACTION_OK_DL_RPL_ENTRY, ACTION_OK_DL_AUDIO_DSP_PLUGIN, ACTION_OK_DL_SHADER_PASS, - ACTION_OK_DL_SHADER_PARAMETERS + ACTION_OK_DL_SHADER_PARAMETERS, + ACTION_OK_DL_GENERIC, + ACTION_OK_DL_PUSH_DEFAULT }; @@ -1717,6 +1678,21 @@ static int generic_action_ok_displaylist_push(const char *path, info.directory_ptr = idx; strlcpy(info.label, label, sizeof(info.label)); break; + case ACTION_OK_DL_GENERIC: + if (path) + strlcpy(menu->deferred_path, path, + sizeof(menu->deferred_path)); + + info.type = type; + info.directory_ptr = idx; + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_PUSH_DEFAULT: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, label, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1724,6 +1700,7 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } + #ifdef HAVE_SHADER_MANAGER extern size_t hack_shader_pass; #endif @@ -1743,6 +1720,20 @@ static int action_ok_shader_parameters(const char *path, entry_idx, ACTION_OK_DL_SHADER_PARAMETERS); } +int action_ok_push_generic_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_GENERIC); +} + +static int action_ok_push_default(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_PUSH_DEFAULT); +} + static int action_ok_audio_dsp_plugin(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 533446f561d6d28e4e8c5704173e0448014dcf23 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 23:22:16 +0200 Subject: [PATCH 583/822] (menu_cbs_ok.c) More code de-duplication --- menu/cbs/menu_cbs_ok.c | 135 +++++++++++++++++------------------------ 1 file changed, 57 insertions(+), 78 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index ac2321b894..4733cb897b 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -383,63 +383,6 @@ static int action_ok_shader_pass_load(const char *path, ACTION_OK_LOAD_SHADER_PASS, MENU_LABEL_SHADER_OPTIONS); } -static int action_ok_shader_preset(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_handle_t *menu = menu_driver_get_ptr(); - settings_t *settings = config_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->video.shader_dir, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_push_downloads_dir(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - settings_t *settings = config_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = MENU_FILE_DIRECTORY; - info.directory_ptr = idx; - strlcpy(info.path, settings->core_assets_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_push_content_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - settings_t *settings = config_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = MENU_FILE_DIRECTORY; - info.directory_ptr = idx; - strlcpy(info.path, settings->menu_content_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} static int action_ok_disk_image_append_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -574,24 +517,6 @@ static int action_ok_core_content_list(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } -static int action_ok_remap_file(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->input_remapping_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} static int action_ok_record_configfile(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1599,11 +1524,14 @@ enum ACTION_OK_DL_AUDIO_DSP_PLUGIN, ACTION_OK_DL_SHADER_PASS, ACTION_OK_DL_SHADER_PARAMETERS, + ACTION_OK_DL_SHADER_PRESET, ACTION_OK_DL_GENERIC, - ACTION_OK_DL_PUSH_DEFAULT + ACTION_OK_DL_PUSH_DEFAULT, + ACTION_OK_DL_DOWNLOADS_DIR, + ACTION_OK_DL_CONTENT_LIST, + ACTION_OK_DL_REMAP_FILE }; - static int generic_action_ok_displaylist_push(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, unsigned action_type) @@ -1693,6 +1621,30 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(info.path, label, sizeof(info.path)); strlcpy(info.label, label, sizeof(info.label)); break; + case ACTION_OK_DL_SHADER_PRESET: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->video.shader_dir, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_DOWNLOADS_DIR: + info.type = MENU_FILE_DIRECTORY; + info.directory_ptr = idx; + strlcpy(info.path, settings->core_assets_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_CONTENT_LIST: + info.type = MENU_FILE_DIRECTORY; + info.directory_ptr = idx; + strlcpy(info.path, settings->menu_content_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_REMAP_FILE: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->input_remapping_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1700,7 +1652,6 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } - #ifdef HAVE_SHADER_MANAGER extern size_t hack_shader_pass; #endif @@ -1720,6 +1671,34 @@ static int action_ok_shader_parameters(const char *path, entry_idx, ACTION_OK_DL_SHADER_PARAMETERS); } +static int action_ok_remap_file(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_REMAP_FILE); +} + +static int action_ok_push_content_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_CONTENT_LIST); +} + +static int action_ok_push_downloads_dir(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_DOWNLOADS_DIR); +} + +static int action_ok_shader_preset(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_SHADER_PRESET); +} + int action_ok_push_generic_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From dd611f6d4e42ef9b7d99e8707399d3490a7af83a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 23:35:21 +0200 Subject: [PATCH 584/822] Code de-duplication --- menu/cbs/menu_cbs_ok.c | 203 ++++++++++++++++++----------------------- 1 file changed, 89 insertions(+), 114 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 4733cb897b..294ef8c8cf 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -384,24 +384,6 @@ static int action_ok_shader_pass_load(const char *path, } -static int action_ok_disk_image_append_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - settings_t *settings = config_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->menu_content_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} static int action_ok_configurations_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -425,24 +407,6 @@ static int action_ok_configurations_list(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } -static int action_ok_cheat_file(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->cheat_database, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - static int action_ok_core_updater_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -518,81 +482,6 @@ static int action_ok_core_content_list(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } -static int action_ok_record_configfile(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - global_t *global = global_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, global->record.config_dir, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_playlist_collection(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_content_collection_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->playlist_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_core_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->libretro_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - static int action_ok_menu_wallpaper_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1529,7 +1418,13 @@ enum ACTION_OK_DL_PUSH_DEFAULT, ACTION_OK_DL_DOWNLOADS_DIR, ACTION_OK_DL_CONTENT_LIST, - ACTION_OK_DL_REMAP_FILE + ACTION_OK_DL_REMAP_FILE, + ACTION_OK_DL_RECORD_CONFIGFILE, + ACTION_OK_DL_DISK_IMAGE_APPEND_LIST, + ACTION_OK_DL_PLAYLIST_COLLECTION, + ACTION_OK_DL_CONTENT_COLLECTION_LIST, + ACTION_OK_DL_CHEAT_FILE, + ACTION_OK_DL_CORE_LIST }; static int generic_action_ok_displaylist_push(const char *path, @@ -1538,11 +1433,12 @@ static int generic_action_ok_displaylist_push(const char *path, { unsigned dl_type = DISPLAYLIST_GENERIC; menu_displaylist_info_t info = {0}; + const char *menu_path = NULL; + const char *content_path = NULL; + global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); - const char *menu_path = NULL; - const char *content_path = NULL; if (!menu_list) return -1; @@ -1645,6 +1541,43 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(info.path, settings->input_remapping_directory, sizeof(info.path)); strlcpy(info.label, label, sizeof(info.label)); break; + case ACTION_OK_DL_RECORD_CONFIGFILE: + info.list = menu_list->menu_stack; + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, global->record.config_dir, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->menu_content_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_PLAYLIST_COLLECTION: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_CHEAT_FILE: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->cheat_database, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_CORE_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->libretro_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_CONTENT_COLLECTION_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->playlist_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1671,6 +1604,48 @@ static int action_ok_shader_parameters(const char *path, entry_idx, ACTION_OK_DL_SHADER_PARAMETERS); } +static int action_ok_content_collection_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_CONTENT_COLLECTION_LIST); +} + +static int action_ok_core_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_CORE_LIST); +} + +static int action_ok_cheat_file(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_CHEAT_FILE); +} + +static int action_ok_playlist_collection(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_PLAYLIST_COLLECTION); +} + +static int action_ok_disk_image_append_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_DISK_IMAGE_APPEND_LIST); +} + +static int action_ok_record_configfile(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_RECORD_CONFIGFILE); +} + static int action_ok_remap_file(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 144bdcfdad04008befb4514a983755901798536c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 23:38:07 +0200 Subject: [PATCH 585/822] Code de-duplication --- menu/cbs/menu_cbs_ok.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 294ef8c8cf..f49775a5e4 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -672,26 +672,6 @@ static int action_ok_database_manager_list_deferred(const char *path, return 0; } -static int action_ok_rdb_entry(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - char tmp[PATH_MAX_LENGTH] = {0}; - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu_list) - return -1; - - fill_pathname_join_delim(tmp, menu_hash_to_str(MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL), - path, '|', sizeof(tmp)); - - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, label, sizeof(info.path)); - strlcpy(info.label, tmp, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} static int action_ok_cursor_manager_list_deferred(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1410,6 +1390,7 @@ enum ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, ACTION_OK_DL_HELP, ACTION_OK_DL_RPL_ENTRY, + ACTION_OK_DL_RDB_ENTRY, ACTION_OK_DL_AUDIO_DSP_PLUGIN, ACTION_OK_DL_SHADER_PASS, ACTION_OK_DL_SHADER_PARAMETERS, @@ -1578,6 +1559,18 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(info.path, settings->playlist_directory, sizeof(info.path)); strlcpy(info.label, label, sizeof(info.label)); break; + case ACTION_OK_DL_RDB_ENTRY: + { + char tmp[PATH_MAX_LENGTH]; + fill_pathname_join_delim(tmp, menu_hash_to_str(MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL), + path, '|', sizeof(tmp)); + + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, label, sizeof(info.path)); + strlcpy(info.label, tmp, sizeof(info.label)); + } + break; } info.list = menu_list->menu_stack; @@ -1604,6 +1597,13 @@ static int action_ok_shader_parameters(const char *path, entry_idx, ACTION_OK_DL_SHADER_PARAMETERS); } +static int action_ok_rdb_entry(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_RDB_ENTRY); +} + static int action_ok_content_collection_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 8eeac237a68acdf304beaab7538ef3a95d4ec6b9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 23:45:02 +0200 Subject: [PATCH 586/822] More of same --- menu/cbs/menu_cbs_ok.c | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index f49775a5e4..1cc403840d 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -385,29 +385,6 @@ static int action_ok_shader_pass_load(const char *path, -static int action_ok_configurations_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - settings_t *settings = config_get_ptr(); - const char *dir = settings->menu_config_directory; - menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - if (dir) - strlcpy(info.path, dir, sizeof(info.path)); - else - strlcpy(info.path, label, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - - static int action_ok_core_updater_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1405,7 +1382,8 @@ enum ACTION_OK_DL_PLAYLIST_COLLECTION, ACTION_OK_DL_CONTENT_COLLECTION_LIST, ACTION_OK_DL_CHEAT_FILE, - ACTION_OK_DL_CORE_LIST + ACTION_OK_DL_CORE_LIST, + ACTION_OK_DL_CONFIGURATIONS_LIST }; static int generic_action_ok_displaylist_push(const char *path, @@ -1571,6 +1549,15 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(info.label, tmp, sizeof(info.label)); } break; + case ACTION_OK_DL_CONFIGURATIONS_LIST: + info.type = type; + info.directory_ptr = idx; + if (path) + strlcpy(info.path, path, sizeof(info.path)); + else + strlcpy(info.path, label, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1597,6 +1584,13 @@ static int action_ok_shader_parameters(const char *path, entry_idx, ACTION_OK_DL_SHADER_PARAMETERS); } +static int action_ok_configurations_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_CONFIGURATIONS_LIST); +} + static int action_ok_rdb_entry(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 36592121f119f18572fd0735b3008712579b141a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 3 Sep 2015 23:50:18 +0200 Subject: [PATCH 587/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 59 ++++++++++-------------------------------- 1 file changed, 13 insertions(+), 46 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 1cc403840d..e4fd154276 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1048,11 +1048,11 @@ static int action_ok_save_state(const char *path, return generic_action_ok_command(EVENT_CMD_RESUME); } -#ifdef HAVE_NETWORKING static int action_ok_download_generic(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx, const char *type_msg) { +#ifdef HAVE_NETWORKING char s[PATH_MAX_LENGTH]; char s2[PATH_MAX_LENGTH]; settings_t *settings = config_get_ptr(); @@ -1101,118 +1101,85 @@ static int action_ok_download_generic(const char *path, rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, s, type_msg, 0, 1, true); +#endif return 0; } -#endif static int action_ok_core_content_download(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_core_content_download"); -#endif - return 0; } static int action_ok_core_updater_download(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_core_updater_download"); -#endif - return 0; } static int action_ok_update_assets(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_assets"); -#endif - return 0; } static int action_ok_update_core_info_files(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_core_info_files"); -#endif - return 0; } static int action_ok_update_overlays(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_overlays"); -#endif - return 0; } static int action_ok_update_shaders_cg(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_shaders_cg"); -#endif - return 0; } static int action_ok_update_shaders_glsl(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_shaders_glsl"); -#endif - return 0; } static int action_ok_update_databases(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_databases"); -#endif - return 0; } static int action_ok_update_cheats(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_cheats"); -#endif - return 0; } static int action_ok_update_autoconfig_profiles(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_autoconfig_profiles"); -#endif - return 0; } static int action_ok_update_autoconfig_profiles_hid(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { -#ifdef HAVE_NETWORKING - action_ok_download_generic(path, label, type, idx, entry_idx, + return action_ok_download_generic(path, label, type, idx, entry_idx, "cb_update_autoconfig_profiles_hid"); -#endif - return 0; } static int action_ok_disk_cycle_tray_status(const char *path, From ae814c66c648acd8d238af443c1c16bbd239de8c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 00:03:31 +0200 Subject: [PATCH 588/822] Cut down on code duplication --- menu/cbs/menu_cbs_ok.c | 98 +++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 54 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index e4fd154276..bf23668d0c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -706,57 +706,6 @@ static int action_ok_core_download(const char *path, return 0; } -static int action_ok_compressed_archive_push_detect_core(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - const char *menu_path = NULL; - menu_handle_t *menu = menu_driver_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu_list || !menu) - return -1; - - menu_list_get_last_stack(menu_list, - &menu_path, NULL, NULL, NULL); - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE), sizeof(info.label)); - - strlcpy(menu->scratch_buf, path, sizeof(menu->scratch_buf)); - strlcpy(menu->scratch2_buf, menu_path, sizeof(menu->scratch2_buf)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_compressed_archive_push(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - const char *menu_path = NULL; - menu_handle_t *menu = menu_driver_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu_list || !menu) - return -1; - - menu_list_get_last_stack(menu_list, - &menu_path, NULL, NULL, NULL); - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION), sizeof(info.label)); - - strlcpy(menu->scratch_buf, path, sizeof(menu->scratch_buf)); - strlcpy(menu->scratch2_buf, menu_path, sizeof(menu->scratch2_buf)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} int action_ok_directory_push(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1350,7 +1299,9 @@ enum ACTION_OK_DL_CONTENT_COLLECTION_LIST, ACTION_OK_DL_CHEAT_FILE, ACTION_OK_DL_CORE_LIST, - ACTION_OK_DL_CONFIGURATIONS_LIST + ACTION_OK_DL_CONFIGURATIONS_LIST, + ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH, + ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE }; static int generic_action_ok_displaylist_push(const char *path, @@ -1525,6 +1476,33 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(info.path, label, sizeof(info.path)); strlcpy(info.label, label, sizeof(info.label)); break; + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: + { + const char *menu_path = NULL; + menu_list_get_last_stack(menu_list, + &menu_path, NULL, NULL, NULL); + + + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + switch (action_type) + { + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE), sizeof(info.label)); + break; + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION), sizeof(info.label)); + break; + } + + strlcpy(menu->scratch_buf, path, sizeof(menu->scratch_buf)); + strlcpy(menu->scratch2_buf, menu_path, sizeof(menu->scratch2_buf)); + } + break; } info.list = menu_list->menu_stack; @@ -1551,6 +1529,20 @@ static int action_ok_shader_parameters(const char *path, entry_idx, ACTION_OK_DL_SHADER_PARAMETERS); } +static int action_ok_compressed_archive_push(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH); +} + +static int action_ok_compressed_archive_push_detect_core(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE); +} + static int action_ok_configurations_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1749,8 +1741,6 @@ static int action_ok_load_archive_detect_core(const char *path, return ret; } - - static int action_ok_help_audio_video_troubleshooting(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 773f40c71ca37aed74fda86f8bd334868634379c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 00:15:56 +0200 Subject: [PATCH 589/822] Code de-duplication pt. 2 --- menu/cbs/menu_cbs_ok.c | 52 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index bf23668d0c..21c5f4de8c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -707,31 +707,6 @@ static int action_ok_core_download(const char *path, } -int action_ok_directory_push(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - const char *menu_path = NULL; - const char *menu_label = NULL; - char cat_path[PATH_MAX_LENGTH] = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu_list || !path) - return -1; - - menu_list_get_last_stack(menu_list, - &menu_path, &menu_label, NULL, NULL); - - fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, cat_path, sizeof(info.path)); - strlcpy(info.label, menu_label, sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - static int action_ok_database_manager_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1301,7 +1276,8 @@ enum ACTION_OK_DL_CORE_LIST, ACTION_OK_DL_CONFIGURATIONS_LIST, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH, - ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE + ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE, + ACTION_OK_DL_DIRECTORY_PUSH }; static int generic_action_ok_displaylist_push(const char *path, @@ -1503,6 +1479,23 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(menu->scratch2_buf, menu_path, sizeof(menu->scratch2_buf)); } break; + case ACTION_OK_DL_DIRECTORY_PUSH: + { + char cat_path[PATH_MAX_LENGTH] = {0}; + const char *menu_path = NULL; + const char *menu_label = NULL; + + menu_list_get_last_stack(menu_list, + &menu_path, &menu_label, NULL, NULL); + + fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); + + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, cat_path, sizeof(info.path)); + strlcpy(info.label, menu_label, sizeof(info.label)); + } + break; } info.list = menu_list->menu_stack; @@ -1529,6 +1522,13 @@ static int action_ok_shader_parameters(const char *path, entry_idx, ACTION_OK_DL_SHADER_PARAMETERS); } +int action_ok_directory_push(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_DIRECTORY_PUSH); +} + static int action_ok_compressed_archive_push(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 9f21d947a20642c026fdb804e6a6db39d3a78c19 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 00:21:07 +0200 Subject: [PATCH 590/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 47 ++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 21c5f4de8c..e3eb85bdc7 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1286,6 +1286,7 @@ static int generic_action_ok_displaylist_push(const char *path, { unsigned dl_type = DISPLAYLIST_GENERIC; menu_displaylist_info_t info = {0}; + const char *menu_label = NULL; const char *menu_path = NULL; const char *content_path = NULL; global_t *global = global_get_ptr(); @@ -1296,6 +1297,9 @@ static int generic_action_ok_displaylist_push(const char *path, if (!menu_list) return -1; + menu_list_get_last_stack(menu_list, + &menu_path, &menu_label, NULL, NULL); + switch (action_type) { case ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE: @@ -1454,39 +1458,28 @@ static int generic_action_ok_displaylist_push(const char *path, break; case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: + + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + switch (action_type) { - const char *menu_path = NULL; - menu_list_get_last_stack(menu_list, - &menu_path, NULL, NULL, NULL); - - - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - switch (action_type) - { - case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE), sizeof(info.label)); - break; - case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION), sizeof(info.label)); - break; - } - - strlcpy(menu->scratch_buf, path, sizeof(menu->scratch_buf)); - strlcpy(menu->scratch2_buf, menu_path, sizeof(menu->scratch2_buf)); + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE), sizeof(info.label)); + break; + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION), sizeof(info.label)); + break; } + + strlcpy(menu->scratch_buf, path, sizeof(menu->scratch_buf)); + strlcpy(menu->scratch2_buf, menu_path, sizeof(menu->scratch2_buf)); break; case ACTION_OK_DL_DIRECTORY_PUSH: { char cat_path[PATH_MAX_LENGTH] = {0}; - const char *menu_path = NULL; - const char *menu_label = NULL; - - menu_list_get_last_stack(menu_list, - &menu_path, &menu_label, NULL, NULL); fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); From ad103d11cbea71f281f5829b049d734ecac61895 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 00:27:55 +0200 Subject: [PATCH 591/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 98 ++++++++++++++++++++---------------------- 1 file changed, 47 insertions(+), 51 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index e3eb85bdc7..1ef8baf7fd 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -707,56 +707,6 @@ static int action_ok_core_download(const char *path, } -static int action_ok_database_manager_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - char rdb_path[PATH_MAX_LENGTH] = {0}; - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - - if (!menu_list || !path || !label) - return -1; - - fill_pathname_join(rdb_path, settings->content_database, - path, sizeof(rdb_path)); - - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, rdb_path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST), - sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - -static int action_ok_cursor_manager_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - char cursor_path[PATH_MAX_LENGTH] = {0}; - menu_displaylist_info_t info = {0}; - settings_t *settings = config_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - fill_pathname_join(cursor_path, settings->cursor_directory, - path, sizeof(cursor_path)); - - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, cursor_path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST), - sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - static int action_ok_config_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1277,7 +1227,9 @@ enum ACTION_OK_DL_CONFIGURATIONS_LIST, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH, ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE, - ACTION_OK_DL_DIRECTORY_PUSH + ACTION_OK_DL_DIRECTORY_PUSH, + ACTION_OK_DL_DATABASE_MANAGER_LIST, + ACTION_OK_DL_CURSOR_MANAGER_LIST }; static int generic_action_ok_displaylist_push(const char *path, @@ -1489,6 +1441,36 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(info.label, menu_label, sizeof(info.label)); } break; + case ACTION_OK_DL_DATABASE_MANAGER_LIST: + { + char rdb_path[PATH_MAX_LENGTH] = {0}; + + fill_pathname_join(rdb_path, settings->content_database, + path, sizeof(rdb_path)); + + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, rdb_path, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST), + sizeof(info.label)); + } + break; + case ACTION_OK_DL_CURSOR_MANAGER_LIST: + { + char cursor_path[PATH_MAX_LENGTH] = {0}; + + fill_pathname_join(cursor_path, settings->cursor_directory, + path, sizeof(cursor_path)); + + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, cursor_path, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST), + sizeof(info.label)); + } + break; } info.list = menu_list->menu_stack; @@ -1522,6 +1504,20 @@ int action_ok_directory_push(const char *path, entry_idx, ACTION_OK_DL_DIRECTORY_PUSH); } +static int action_ok_database_manager_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_DATABASE_MANAGER_LIST); +} + +static int action_ok_cursor_manager_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, type, idx, + entry_idx, ACTION_OK_DL_CURSOR_MANAGER_LIST); +} + static int action_ok_compressed_archive_push(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 45e90d9e6bcb7613ab8c41f70d55c4cc8bd0993d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 00:31:46 +0200 Subject: [PATCH 592/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 1ef8baf7fd..188ef78a5e 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1149,11 +1149,17 @@ static int action_ok_rdb_entry_submenu(const char *path, str_list = string_split(label, "|"); if (!str_list) - goto error; + { + ret = -1; + goto end; + } str_list2 = string_list_new(); if (!str_list2) - goto error; + { + ret = -1; + goto end; + } /* element 0 : label * element 1 : value @@ -1171,7 +1177,10 @@ static int action_ok_rdb_entry_submenu(const char *path, rdb = (char*)calloc(len, sizeof(char)); if (!rdb) - goto error; + { + ret = -1; + goto end; + } string_list_join_concat(rdb, len, str_list2, "|"); @@ -1188,17 +1197,13 @@ static int action_ok_rdb_entry_submenu(const char *path, ret = menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); - string_list_free(str_list); - string_list_free(str_list2); - - return ret; - -error: +end: if (str_list) string_list_free(str_list); if (str_list2) string_list_free(str_list2); - return -1; + + return ret; } enum From 23538b3dc8d3a581f9cf3ca3cc032f82a192c87e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 00:35:55 +0200 Subject: [PATCH 593/822] Cleanup --- menu/cbs/menu_cbs_ok.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 188ef78a5e..031d170b37 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1133,9 +1133,9 @@ static int action_ok_lookup_setting(const char *path, static int action_ok_rdb_entry_submenu(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - int ret; union string_list_elem_attr attr; char new_label[PATH_MAX_LENGTH]; + int ret = -1; menu_displaylist_info_t info = {0}; char *rdb = NULL; int len = 0; @@ -1149,17 +1149,11 @@ static int action_ok_rdb_entry_submenu(const char *path, str_list = string_split(label, "|"); if (!str_list) - { - ret = -1; goto end; - } str_list2 = string_list_new(); if (!str_list2) - { - ret = -1; goto end; - } /* element 0 : label * element 1 : value @@ -1177,10 +1171,7 @@ static int action_ok_rdb_entry_submenu(const char *path, rdb = (char*)calloc(len, sizeof(char)); if (!rdb) - { - ret = -1; goto end; - } string_list_join_concat(rdb, len, str_list2, "|"); From 8c01eb5c50a5cfa81aa762139266d4a32012a11f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 00:44:09 +0200 Subject: [PATCH 594/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 139 ++++++++++++++++++++++------------------- 1 file changed, 73 insertions(+), 66 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 031d170b37..a12d86a174 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1130,72 +1130,6 @@ static int action_ok_lookup_setting(const char *path, return menu_setting_set(type, label, MENU_ACTION_OK, false); } -static int action_ok_rdb_entry_submenu(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - union string_list_elem_attr attr; - char new_label[PATH_MAX_LENGTH]; - int ret = -1; - menu_displaylist_info_t info = {0}; - char *rdb = NULL; - int len = 0; - struct string_list *str_list = NULL; - struct string_list *str_list2 = NULL; - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list || !label) - return -1; - - str_list = string_split(label, "|"); - - if (!str_list) - goto end; - - str_list2 = string_list_new(); - if (!str_list2) - goto end; - - /* element 0 : label - * element 1 : value - * element 2 : database path - */ - - attr.i = 0; - - len += strlen(str_list->elems[1].data) + 1; - string_list_append(str_list2, str_list->elems[1].data, attr); - - len += strlen(str_list->elems[2].data) + 1; - string_list_append(str_list2, str_list->elems[2].data, attr); - - rdb = (char*)calloc(len, sizeof(char)); - - if (!rdb) - goto end; - - string_list_join_concat(rdb, len, str_list2, "|"); - - fill_pathname_join_delim(new_label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST), - str_list->elems[0].data, '_', - sizeof(new_label)); - - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, rdb, sizeof(info.path)); - strlcpy(info.label, new_label, sizeof(info.label)); - - ret = menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); - -end: - if (str_list) - string_list_free(str_list); - if (str_list2) - string_list_free(str_list2); - - return ret; -} enum { @@ -1205,6 +1139,7 @@ enum ACTION_OK_DL_HELP, ACTION_OK_DL_RPL_ENTRY, ACTION_OK_DL_RDB_ENTRY, + ACTION_OK_DL_RDB_ENTRY_SUBMENU, ACTION_OK_DL_AUDIO_DSP_PLUGIN, ACTION_OK_DL_SHADER_PASS, ACTION_OK_DL_SHADER_PARAMETERS, @@ -1395,6 +1330,13 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(info.label, tmp, sizeof(info.label)); } break; + case ACTION_OK_DL_RDB_ENTRY_SUBMENU: + info.list = menu_list->menu_stack; + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.label, label, sizeof(info.label)); + strlcpy(info.path, path, sizeof(info.path)); + break; case ACTION_OK_DL_CONFIGURATIONS_LIST: info.type = type; info.directory_ptr = idx; @@ -1474,6 +1416,71 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } +static int action_ok_rdb_entry_submenu(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + union string_list_elem_attr attr; + char new_label[PATH_MAX_LENGTH]; + char new_path[PATH_MAX_LENGTH]; + int ret = -1; + menu_displaylist_info_t info = {0}; + char *rdb = NULL; + int len = 0; + struct string_list *str_list = NULL; + struct string_list *str_list2 = NULL; + menu_list_t *menu_list = menu_list_get_ptr(); + + if (!menu_list || !label) + return -1; + + str_list = string_split(label, "|"); + + if (!str_list) + goto end; + + str_list2 = string_list_new(); + if (!str_list2) + goto end; + + /* element 0 : label + * element 1 : value + * element 2 : database path + */ + + attr.i = 0; + + len += strlen(str_list->elems[1].data) + 1; + string_list_append(str_list2, str_list->elems[1].data, attr); + + len += strlen(str_list->elems[2].data) + 1; + string_list_append(str_list2, str_list->elems[2].data, attr); + + rdb = (char*)calloc(len, sizeof(char)); + + if (!rdb) + goto end; + + string_list_join_concat(rdb, len, str_list2, "|"); + strlcpy(new_path, rdb, sizeof(new_path)); + + fill_pathname_join_delim(new_label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST), + str_list->elems[0].data, '_', + sizeof(new_label)); + + ret = generic_action_ok_displaylist_push(new_path, + new_label, type, idx, entry_idx, + ACTION_OK_DL_RDB_ENTRY_SUBMENU); + +end: + if (str_list) + string_list_free(str_list); + if (str_list2) + string_list_free(str_list2); + + return ret; +} + #ifdef HAVE_SHADER_MANAGER extern size_t hack_shader_pass; #endif From b88b97bc561247d78e1b74468b06c0383a22b6a2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 01:18:26 +0200 Subject: [PATCH 595/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 57 +++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index a12d86a174..3625be498c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -867,35 +867,6 @@ static int action_ok_set_path(const char *path, return 0; } -static int action_ok_custom_viewport(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - menu_displaylist_info_t info = {0}; - int ret = 0; - video_viewport_t *custom = video_viewport_get_custom(); - settings_t *settings = config_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - - if (!menu_list) - return -1; - - info.list = menu_list->menu_stack; - info.type = MENU_SETTINGS_CUSTOM_VIEWPORT; - info.directory_ptr = idx; - strlcpy(info.label, menu_hash_to_str(MENU_LABEL_CUSTOM_VIEWPORT_1), sizeof(info.label)); - - ret = menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); - - video_driver_viewport_info(custom); - - aspectratio_lut[ASPECT_RATIO_CUSTOM].value = - (float)custom->width / custom->height; - - settings->video.aspect_ratio_idx = ASPECT_RATIO_CUSTOM; - - event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO); - return ret; -} static int generic_action_ok_command(enum event_command cmd) @@ -1130,7 +1101,6 @@ static int action_ok_lookup_setting(const char *path, return menu_setting_set(type, label, MENU_ACTION_OK, false); } - enum { ACTION_OK_DL_DEFAULT = 0, @@ -1160,7 +1130,8 @@ enum ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE, ACTION_OK_DL_DIRECTORY_PUSH, ACTION_OK_DL_DATABASE_MANAGER_LIST, - ACTION_OK_DL_CURSOR_MANAGER_LIST + ACTION_OK_DL_CURSOR_MANAGER_LIST, + ACTION_OK_DL_CUSTOM_VIEWPORT }; static int generic_action_ok_displaylist_push(const char *path, @@ -1409,6 +1380,11 @@ static int generic_action_ok_displaylist_push(const char *path, sizeof(info.label)); } break; + case ACTION_OK_DL_CUSTOM_VIEWPORT: + info.type = MENU_SETTINGS_CUSTOM_VIEWPORT; + info.directory_ptr = idx; + strlcpy(info.label, menu_hash_to_str(MENU_LABEL_CUSTOM_VIEWPORT_1), sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1416,6 +1392,25 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } +static int action_ok_custom_viewport(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + settings_t *settings = config_get_ptr(); + video_viewport_t *custom = video_viewport_get_custom(); + int ret = generic_action_ok_displaylist_push(path, + label, type, idx, entry_idx, ACTION_OK_DL_CUSTOM_VIEWPORT); + + video_driver_viewport_info(custom); + + aspectratio_lut[ASPECT_RATIO_CUSTOM].value = + (float)custom->width / custom->height; + + settings->video.aspect_ratio_idx = ASPECT_RATIO_CUSTOM; + + event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO); + return ret; +} + static int action_ok_rdb_entry_submenu(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 354de315e7f1975eeed9f1991a757627f838cdf0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 01:23:02 +0200 Subject: [PATCH 596/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 73 ++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 3625be498c..f3449bfa9a 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -384,44 +384,6 @@ static int action_ok_shader_pass_load(const char *path, } - -static int action_ok_core_updater_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - char url_path[PATH_MAX_LENGTH] = {0}; - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - if (!menu_list) - return -1; - - (void)url_path; - - menu_entries_set_refresh(true); - - if (settings->network.buildbot_url[0] == '\0') - return -1; - -#ifdef HAVE_NETWORKING - event_command(EVENT_CMD_NETWORK_INIT); - - fill_pathname_join(url_path, settings->network.buildbot_url, - ".index", sizeof(url_path)); - - rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_updater_list", 0, 1, - true); -#endif - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_UPDATER_LIST), sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - static int action_ok_core_content_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1131,7 +1093,8 @@ enum ACTION_OK_DL_DIRECTORY_PUSH, ACTION_OK_DL_DATABASE_MANAGER_LIST, ACTION_OK_DL_CURSOR_MANAGER_LIST, - ACTION_OK_DL_CUSTOM_VIEWPORT + ACTION_OK_DL_CUSTOM_VIEWPORT, + ACTION_OK_DL_CORE_UPDATER_LIST }; static int generic_action_ok_displaylist_push(const char *path, @@ -1385,6 +1348,13 @@ static int generic_action_ok_displaylist_push(const char *path, info.directory_ptr = idx; strlcpy(info.label, menu_hash_to_str(MENU_LABEL_CUSTOM_VIEWPORT_1), sizeof(info.label)); break; + case ACTION_OK_DL_CORE_UPDATER_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_UPDATER_LIST), sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1392,6 +1362,31 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } +static int action_ok_core_updater_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + char url_path[PATH_MAX_LENGTH] = {0}; + settings_t *settings = config_get_ptr(); + + menu_entries_set_refresh(true); + + if (settings->network.buildbot_url[0] == '\0') + return -1; + +#ifdef HAVE_NETWORKING + event_command(EVENT_CMD_NETWORK_INIT); + + fill_pathname_join(url_path, settings->network.buildbot_url, + ".index", sizeof(url_path)); + + rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_updater_list", 0, 1, + true); +#endif + + return generic_action_ok_displaylist_push(path, + label, type, idx, entry_idx, ACTION_OK_DL_CORE_UPDATER_LIST); +} + static int action_ok_custom_viewport(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 7e81aaf2740137d6248829adb4d8bb4e57750ba9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 01:26:17 +0200 Subject: [PATCH 597/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 72 ++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index f3449bfa9a..064e80533e 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -384,43 +384,6 @@ static int action_ok_shader_pass_load(const char *path, } -static int action_ok_core_content_list(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - char url_path[PATH_MAX_LENGTH] = {0}; - menu_displaylist_info_t info = {0}; - menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); - if (!menu_list) - return -1; - - (void)url_path; - - menu_entries_set_refresh(true); - - if (settings->network.buildbot_url[0] == '\0') - return -1; - -#ifdef HAVE_NETWORKING - event_command(EVENT_CMD_NETWORK_INIT); - - fill_pathname_join(url_path, settings->network.buildbot_assets_url, - "cores/gw/.index", sizeof(url_path)); - - rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_content_list", 0, 1, - true); -#endif - - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_CONTENT_LIST), sizeof(info.label)); - - return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); -} - static int action_ok_menu_wallpaper_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1094,7 +1057,8 @@ enum ACTION_OK_DL_DATABASE_MANAGER_LIST, ACTION_OK_DL_CURSOR_MANAGER_LIST, ACTION_OK_DL_CUSTOM_VIEWPORT, - ACTION_OK_DL_CORE_UPDATER_LIST + ACTION_OK_DL_CORE_UPDATER_LIST, + ACTION_OK_DL_CORE_CONTENT_LIST }; static int generic_action_ok_displaylist_push(const char *path, @@ -1355,6 +1319,13 @@ static int generic_action_ok_displaylist_push(const char *path, strlcpy(info.label, menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_UPDATER_LIST), sizeof(info.label)); break; + case ACTION_OK_DL_CORE_CONTENT_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_CONTENT_LIST), sizeof(info.label)); + break; } info.list = menu_list->menu_stack; @@ -1362,6 +1333,31 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } +static int action_ok_core_content_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + char url_path[PATH_MAX_LENGTH] = {0}; + settings_t *settings = config_get_ptr(); + + menu_entries_set_refresh(true); + + if (settings->network.buildbot_url[0] == '\0') + return -1; + +#ifdef HAVE_NETWORKING + event_command(EVENT_CMD_NETWORK_INIT); + + fill_pathname_join(url_path, settings->network.buildbot_assets_url, + "cores/gw/.index", sizeof(url_path)); + + rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_content_list", 0, 1, + true); +#endif + + return generic_action_ok_displaylist_push(path, + label, type, idx, entry_idx, ACTION_OK_DL_CORE_CONTENT_LIST); +} + static int action_ok_core_updater_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { From 6ede080c99a139862601505b888d45df5a6d1952 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 01:28:37 +0200 Subject: [PATCH 598/822] Cleanup --- menu/cbs/menu_cbs_ok.c | 1 - 1 file changed, 1 deletion(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 064e80533e..784c0378bc 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1409,7 +1409,6 @@ static int action_ok_rdb_entry_submenu(const char *path, char new_label[PATH_MAX_LENGTH]; char new_path[PATH_MAX_LENGTH]; int ret = -1; - menu_displaylist_info_t info = {0}; char *rdb = NULL; int len = 0; struct string_list *str_list = NULL; From 2b82b23cc5e8f0be925a33899f45afb67a06879e Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Fri, 4 Sep 2015 01:58:16 +0200 Subject: [PATCH 599/822] Update menu_cbs.c --- menu/menu_cbs.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/menu/menu_cbs.c b/menu/menu_cbs.c index 556ff2a456..5a4948d050 100644 --- a/menu/menu_cbs.c +++ b/menu/menu_cbs.c @@ -84,10 +84,8 @@ void menu_cbs_init(void *data, if (str_list && str_list->size > 0) strlcpy(elem0, str_list->elems[0].data, sizeof(elem0)); - else elem0[0]='\0'; if (str_list && str_list->size > 1) strlcpy(elem1, str_list->elems[1].data, sizeof(elem1)); - else elem1[0]='\0'; if (str_list) { From 5d7485771a703c6b23e9f751e49bd09ddb3e66c7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 13:08:15 +0200 Subject: [PATCH 600/822] Code de-duplication --- menu/cbs/menu_cbs_ok.c | 650 +++++++++++++++++++++-------------------- 1 file changed, 328 insertions(+), 322 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 784c0378bc..a7eddb1e41 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -47,6 +47,330 @@ static int menu_action_setting_set_current_string_path( return menu_setting_generic(setting, false); } +enum +{ + ACTION_OK_DL_DEFAULT = 0, + ACTION_OK_DL_OPEN_ARCHIVE, + ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, + ACTION_OK_DL_HELP, + ACTION_OK_DL_RPL_ENTRY, + ACTION_OK_DL_RDB_ENTRY, + ACTION_OK_DL_RDB_ENTRY_SUBMENU, + ACTION_OK_DL_AUDIO_DSP_PLUGIN, + ACTION_OK_DL_SHADER_PASS, + ACTION_OK_DL_SHADER_PARAMETERS, + ACTION_OK_DL_SHADER_PRESET, + ACTION_OK_DL_GENERIC, + ACTION_OK_DL_PUSH_DEFAULT, + ACTION_OK_DL_DOWNLOADS_DIR, + ACTION_OK_DL_CONTENT_LIST, + ACTION_OK_DL_REMAP_FILE, + ACTION_OK_DL_RECORD_CONFIGFILE, + ACTION_OK_DL_DISK_IMAGE_APPEND_LIST, + ACTION_OK_DL_PLAYLIST_COLLECTION, + ACTION_OK_DL_CONTENT_COLLECTION_LIST, + ACTION_OK_DL_CHEAT_FILE, + ACTION_OK_DL_CORE_LIST, + ACTION_OK_DL_CONFIGURATIONS_LIST, + ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH, + ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE, + ACTION_OK_DL_DIRECTORY_PUSH, + ACTION_OK_DL_DATABASE_MANAGER_LIST, + ACTION_OK_DL_CURSOR_MANAGER_LIST, + ACTION_OK_DL_CUSTOM_VIEWPORT, + ACTION_OK_DL_CORE_UPDATER_LIST, + ACTION_OK_DL_CORE_CONTENT_LIST, + ACTION_OK_DL_DEFERRED_CORE_LIST, + ACTION_OK_DL_DEFERRED_CORE_LIST_SET +}; + +static int generic_action_ok_displaylist_push(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx, + unsigned action_type) +{ + unsigned dl_type = DISPLAYLIST_GENERIC; + menu_displaylist_info_t info = {0}; + const char *menu_label = NULL; + const char *menu_path = NULL; + const char *content_path = NULL; + global_t *global = global_get_ptr(); + settings_t *settings = config_get_ptr(); + menu_list_t *menu_list = menu_list_get_ptr(); + menu_handle_t *menu = menu_driver_get_ptr(); + + if (!menu_list) + return -1; + + menu_list_get_last_stack(menu_list, + &menu_path, &menu_label, NULL, NULL); + + switch (action_type) + { + case ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE: + case ACTION_OK_DL_OPEN_ARCHIVE: + if (menu) + { + menu_path = menu->scratch2_buf; + content_path = menu->scratch_buf; + } + fill_pathname_join(detect_content_path, menu_path, content_path, + sizeof(detect_content_path)); + + switch (action_type) + { + case ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE), + sizeof(info.label)); + break; + case ACTION_OK_DL_OPEN_ARCHIVE: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_OPEN), sizeof(info.label)); + break; + } + strlcpy(info.path, path, sizeof(info.path)); + info.type = type; + info.directory_ptr = idx; + break; + case ACTION_OK_DL_HELP: + strlcpy(info.label, label, sizeof(info.label)); + menu->push_help_screen = true; + dl_type = DISPLAYLIST_HELP; + break; + case ACTION_OK_DL_RPL_ENTRY: + strlcpy(menu->deferred_path, label, sizeof(menu->deferred_path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS), sizeof(info.label)); + info.type = 0; + info.directory_ptr = idx; + rpl_entry_selection_ptr = idx; + break; + case ACTION_OK_DL_AUDIO_DSP_PLUGIN: + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, settings->audio.filter_dir, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_AUDIO_DSP_PLUGIN), sizeof(info.label)); + break; + case ACTION_OK_DL_SHADER_PASS: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->video.shader_dir, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_SHADER_PARAMETERS: + info.type = MENU_SETTING_ACTION; + info.directory_ptr = idx; + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_GENERIC: + if (path) + strlcpy(menu->deferred_path, path, + sizeof(menu->deferred_path)); + + info.type = type; + info.directory_ptr = idx; + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_PUSH_DEFAULT: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, label, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_SHADER_PRESET: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->video.shader_dir, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_DOWNLOADS_DIR: + info.type = MENU_FILE_DIRECTORY; + info.directory_ptr = idx; + strlcpy(info.path, settings->core_assets_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_CONTENT_LIST: + info.type = MENU_FILE_DIRECTORY; + info.directory_ptr = idx; + strlcpy(info.path, settings->menu_content_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_REMAP_FILE: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->input_remapping_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_RECORD_CONFIGFILE: + info.list = menu_list->menu_stack; + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, global->record.config_dir, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->menu_content_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_PLAYLIST_COLLECTION: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_CHEAT_FILE: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->cheat_database, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_CORE_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->libretro_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_CONTENT_COLLECTION_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, settings->playlist_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_RDB_ENTRY: + { + char tmp[PATH_MAX_LENGTH]; + fill_pathname_join_delim(tmp, menu_hash_to_str(MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL), + path, '|', sizeof(tmp)); + + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, label, sizeof(info.path)); + strlcpy(info.label, tmp, sizeof(info.label)); + } + break; + case ACTION_OK_DL_RDB_ENTRY_SUBMENU: + info.list = menu_list->menu_stack; + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.label, label, sizeof(info.label)); + strlcpy(info.path, path, sizeof(info.path)); + break; + case ACTION_OK_DL_CONFIGURATIONS_LIST: + info.type = type; + info.directory_ptr = idx; + if (path) + strlcpy(info.path, path, sizeof(info.path)); + else + strlcpy(info.path, label, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + break; + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: + + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + switch (action_type) + { + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE), sizeof(info.label)); + break; + case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION), sizeof(info.label)); + break; + } + + strlcpy(menu->scratch_buf, path, sizeof(menu->scratch_buf)); + strlcpy(menu->scratch2_buf, menu_path, sizeof(menu->scratch2_buf)); + break; + case ACTION_OK_DL_DIRECTORY_PUSH: + { + char cat_path[PATH_MAX_LENGTH] = {0}; + + fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); + + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, cat_path, sizeof(info.path)); + strlcpy(info.label, menu_label, sizeof(info.label)); + } + break; + case ACTION_OK_DL_DATABASE_MANAGER_LIST: + { + char rdb_path[PATH_MAX_LENGTH] = {0}; + + fill_pathname_join(rdb_path, settings->content_database, + path, sizeof(rdb_path)); + + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, rdb_path, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST), + sizeof(info.label)); + } + break; + case ACTION_OK_DL_CURSOR_MANAGER_LIST: + { + char cursor_path[PATH_MAX_LENGTH] = {0}; + + fill_pathname_join(cursor_path, settings->cursor_directory, + path, sizeof(cursor_path)); + + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, cursor_path, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST), + sizeof(info.label)); + } + break; + case ACTION_OK_DL_CUSTOM_VIEWPORT: + info.type = MENU_SETTINGS_CUSTOM_VIEWPORT; + info.directory_ptr = idx; + strlcpy(info.label, menu_hash_to_str(MENU_LABEL_CUSTOM_VIEWPORT_1), sizeof(info.label)); + break; + case ACTION_OK_DL_CORE_UPDATER_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_UPDATER_LIST), sizeof(info.label)); + break; + case ACTION_OK_DL_CORE_CONTENT_LIST: + info.type = type; + info.directory_ptr = idx; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_CONTENT_LIST), sizeof(info.label)); + break; + case ACTION_OK_DL_DEFERRED_CORE_LIST: + info.type = 0; + info.directory_ptr = idx; + strlcpy(info.path, settings->libretro_directory, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_LIST), sizeof(info.label)); + break; + case ACTION_OK_DL_DEFERRED_CORE_LIST_SET: + info.type = 0; + info.directory_ptr = idx; + rdb_entry_start_game_selection_ptr = idx; + strlcpy(info.path, settings->libretro_directory, sizeof(info.path)); + strlcpy(info.label, + menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_LIST_SET), sizeof(info.label)); + break; + } + + info.list = menu_list->menu_stack; + + return menu_displaylist_push_list(&info, dl_type); +} + static int rarch_defer_core_wrapper(menu_displaylist_info_t *info, size_t idx, size_t entry_idx, const char *path, uint32_t hash_label, bool is_carchive) @@ -95,14 +419,8 @@ static int rarch_defer_core_wrapper(menu_displaylist_info_t *info, switch (hash_label) { case MENU_LABEL_COLLECTION: - info->list = menu_list->menu_stack; - info->type = 0; - info->directory_ptr = idx; - rdb_entry_start_game_selection_ptr = idx; - strlcpy(info->path, settings->libretro_directory, sizeof(info->path)); - strlcpy(info->label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_LIST_SET), sizeof(info->label)); - ret = menu_displaylist_push_list(info, DISPLAYLIST_GENERIC); + ret = generic_action_ok_displaylist_push(path, + info->label, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST_SET); break; default: event_command(EVENT_CMD_LOAD_CORE); @@ -1026,312 +1344,6 @@ static int action_ok_lookup_setting(const char *path, return menu_setting_set(type, label, MENU_ACTION_OK, false); } -enum -{ - ACTION_OK_DL_DEFAULT = 0, - ACTION_OK_DL_OPEN_ARCHIVE, - ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE, - ACTION_OK_DL_HELP, - ACTION_OK_DL_RPL_ENTRY, - ACTION_OK_DL_RDB_ENTRY, - ACTION_OK_DL_RDB_ENTRY_SUBMENU, - ACTION_OK_DL_AUDIO_DSP_PLUGIN, - ACTION_OK_DL_SHADER_PASS, - ACTION_OK_DL_SHADER_PARAMETERS, - ACTION_OK_DL_SHADER_PRESET, - ACTION_OK_DL_GENERIC, - ACTION_OK_DL_PUSH_DEFAULT, - ACTION_OK_DL_DOWNLOADS_DIR, - ACTION_OK_DL_CONTENT_LIST, - ACTION_OK_DL_REMAP_FILE, - ACTION_OK_DL_RECORD_CONFIGFILE, - ACTION_OK_DL_DISK_IMAGE_APPEND_LIST, - ACTION_OK_DL_PLAYLIST_COLLECTION, - ACTION_OK_DL_CONTENT_COLLECTION_LIST, - ACTION_OK_DL_CHEAT_FILE, - ACTION_OK_DL_CORE_LIST, - ACTION_OK_DL_CONFIGURATIONS_LIST, - ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH, - ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE, - ACTION_OK_DL_DIRECTORY_PUSH, - ACTION_OK_DL_DATABASE_MANAGER_LIST, - ACTION_OK_DL_CURSOR_MANAGER_LIST, - ACTION_OK_DL_CUSTOM_VIEWPORT, - ACTION_OK_DL_CORE_UPDATER_LIST, - ACTION_OK_DL_CORE_CONTENT_LIST -}; - -static int generic_action_ok_displaylist_push(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx, - unsigned action_type) -{ - unsigned dl_type = DISPLAYLIST_GENERIC; - menu_displaylist_info_t info = {0}; - const char *menu_label = NULL; - const char *menu_path = NULL; - const char *content_path = NULL; - global_t *global = global_get_ptr(); - settings_t *settings = config_get_ptr(); - menu_list_t *menu_list = menu_list_get_ptr(); - menu_handle_t *menu = menu_driver_get_ptr(); - - if (!menu_list) - return -1; - - menu_list_get_last_stack(menu_list, - &menu_path, &menu_label, NULL, NULL); - - switch (action_type) - { - case ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE: - case ACTION_OK_DL_OPEN_ARCHIVE: - if (menu) - { - menu_path = menu->scratch2_buf; - content_path = menu->scratch_buf; - } - fill_pathname_join(detect_content_path, menu_path, content_path, - sizeof(detect_content_path)); - - switch (action_type) - { - case ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE: - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE), - sizeof(info.label)); - break; - case ACTION_OK_DL_OPEN_ARCHIVE: - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_OPEN), sizeof(info.label)); - break; - } - strlcpy(info.path, path, sizeof(info.path)); - info.type = type; - info.directory_ptr = idx; - break; - case ACTION_OK_DL_HELP: - strlcpy(info.label, label, sizeof(info.label)); - menu->push_help_screen = true; - dl_type = DISPLAYLIST_HELP; - break; - case ACTION_OK_DL_RPL_ENTRY: - strlcpy(menu->deferred_path, label, sizeof(menu->deferred_path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_RPL_ENTRY_ACTIONS), sizeof(info.label)); - info.type = 0; - info.directory_ptr = idx; - rpl_entry_selection_ptr = idx; - break; - case ACTION_OK_DL_AUDIO_DSP_PLUGIN: - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, settings->audio.filter_dir, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_AUDIO_DSP_PLUGIN), sizeof(info.label)); - break; - case ACTION_OK_DL_SHADER_PASS: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->video.shader_dir, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_SHADER_PARAMETERS: - info.type = MENU_SETTING_ACTION; - info.directory_ptr = idx; - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_GENERIC: - if (path) - strlcpy(menu->deferred_path, path, - sizeof(menu->deferred_path)); - - info.type = type; - info.directory_ptr = idx; - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_PUSH_DEFAULT: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, label, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_SHADER_PRESET: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->video.shader_dir, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_DOWNLOADS_DIR: - info.type = MENU_FILE_DIRECTORY; - info.directory_ptr = idx; - strlcpy(info.path, settings->core_assets_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_CONTENT_LIST: - info.type = MENU_FILE_DIRECTORY; - info.directory_ptr = idx; - strlcpy(info.path, settings->menu_content_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_REMAP_FILE: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->input_remapping_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_RECORD_CONFIGFILE: - info.list = menu_list->menu_stack; - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, global->record.config_dir, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->menu_content_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_PLAYLIST_COLLECTION: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_CHEAT_FILE: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->cheat_database, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_CORE_LIST: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->libretro_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_CONTENT_COLLECTION_LIST: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, settings->playlist_directory, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_RDB_ENTRY: - { - char tmp[PATH_MAX_LENGTH]; - fill_pathname_join_delim(tmp, menu_hash_to_str(MENU_LABEL_DEFERRED_RDB_ENTRY_DETAIL), - path, '|', sizeof(tmp)); - - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, label, sizeof(info.path)); - strlcpy(info.label, tmp, sizeof(info.label)); - } - break; - case ACTION_OK_DL_RDB_ENTRY_SUBMENU: - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.label, label, sizeof(info.label)); - strlcpy(info.path, path, sizeof(info.path)); - break; - case ACTION_OK_DL_CONFIGURATIONS_LIST: - info.type = type; - info.directory_ptr = idx; - if (path) - strlcpy(info.path, path, sizeof(info.path)); - else - strlcpy(info.path, label, sizeof(info.path)); - strlcpy(info.label, label, sizeof(info.label)); - break; - case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: - case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: - - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - switch (action_type) - { - case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE: - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION_DETECT_CORE), sizeof(info.label)); - break; - case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH: - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_ARCHIVE_ACTION), sizeof(info.label)); - break; - } - - strlcpy(menu->scratch_buf, path, sizeof(menu->scratch_buf)); - strlcpy(menu->scratch2_buf, menu_path, sizeof(menu->scratch2_buf)); - break; - case ACTION_OK_DL_DIRECTORY_PUSH: - { - char cat_path[PATH_MAX_LENGTH] = {0}; - - fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); - - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, cat_path, sizeof(info.path)); - strlcpy(info.label, menu_label, sizeof(info.label)); - } - break; - case ACTION_OK_DL_DATABASE_MANAGER_LIST: - { - char rdb_path[PATH_MAX_LENGTH] = {0}; - - fill_pathname_join(rdb_path, settings->content_database, - path, sizeof(rdb_path)); - - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, rdb_path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST), - sizeof(info.label)); - } - break; - case ACTION_OK_DL_CURSOR_MANAGER_LIST: - { - char cursor_path[PATH_MAX_LENGTH] = {0}; - - fill_pathname_join(cursor_path, settings->cursor_directory, - path, sizeof(cursor_path)); - - info.type = 0; - info.directory_ptr = idx; - strlcpy(info.path, cursor_path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CURSOR_MANAGER_LIST), - sizeof(info.label)); - } - break; - case ACTION_OK_DL_CUSTOM_VIEWPORT: - info.type = MENU_SETTINGS_CUSTOM_VIEWPORT; - info.directory_ptr = idx; - strlcpy(info.label, menu_hash_to_str(MENU_LABEL_CUSTOM_VIEWPORT_1), sizeof(info.label)); - break; - case ACTION_OK_DL_CORE_UPDATER_LIST: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_UPDATER_LIST), sizeof(info.label)); - break; - case ACTION_OK_DL_CORE_CONTENT_LIST: - info.type = type; - info.directory_ptr = idx; - strlcpy(info.path, path, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_CONTENT_LIST), sizeof(info.label)); - break; - } - - info.list = menu_list->menu_stack; - - return menu_displaylist_push_list(&info, dl_type); -} static int action_ok_core_content_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1704,14 +1716,8 @@ static int action_ok_load_archive_detect_core(const char *path, menu_common_load_content(false, CORE_TYPE_PLAIN); break; case 0: - info.list = menu_list->menu_stack; - info.type = 0; - info.directory_ptr = selected; - strlcpy(info.path, settings->libretro_directory, sizeof(info.path)); - strlcpy(info.label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_LIST), sizeof(info.label)); - - ret = menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); + ret = generic_action_ok_displaylist_push(path, label, type, + selected, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST); break; } From c83c8fe970620657cf7c8e12f0a89b5e140c6a7c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 15:39:57 +0200 Subject: [PATCH 601/822] Code cleanups --- menu/cbs/menu_cbs_ok.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index a7eddb1e41..381f14c807 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -420,7 +420,7 @@ static int rarch_defer_core_wrapper(menu_displaylist_info_t *info, { case MENU_LABEL_COLLECTION: ret = generic_action_ok_displaylist_push(path, - info->label, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST_SET); + NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST_SET); break; default: event_command(EVENT_CMD_LOAD_CORE); @@ -430,25 +430,18 @@ static int rarch_defer_core_wrapper(menu_displaylist_info_t *info, } break; case 0: - info->list = menu_list->menu_stack; - info->type = 0; - info->directory_ptr = idx; - strlcpy(info->path, settings->libretro_directory, sizeof(info->path)); - switch (hash_label) { case MENU_LABEL_COLLECTION: - rdb_entry_start_game_selection_ptr = idx; - strlcpy(info->label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_LIST_SET), sizeof(info->label)); + ret = generic_action_ok_displaylist_push(path, + NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST_SET); break; default: - strlcpy(info->label, - menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_LIST), sizeof(info->label)); + ret = generic_action_ok_displaylist_push(path, + NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST); break; } - ret = menu_displaylist_push_list(info, DISPLAYLIST_GENERIC); break; } From 47936965e6514d7c2e34807fffcf847f81dd191b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 15:43:01 +0200 Subject: [PATCH 602/822] Cleanup rarch_defer_core_wrapper --- menu/cbs/menu_cbs_ok.c | 44 ++++++++++++++---------------------------- 1 file changed, 14 insertions(+), 30 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 381f14c807..b2832610e4 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -371,8 +371,7 @@ static int generic_action_ok_displaylist_push(const char *path, return menu_displaylist_push_list(&info, dl_type); } -static int rarch_defer_core_wrapper(menu_displaylist_info_t *info, - size_t idx, size_t entry_idx, const char *path, uint32_t hash_label, +static int rarch_defer_core_wrapper(size_t idx, size_t entry_idx, const char *path, uint32_t hash_label, bool is_carchive) { char menu_path_new[PATH_MAX_LENGTH]; @@ -413,35 +412,22 @@ static int rarch_defer_core_wrapper(menu_displaylist_info_t *info, fill_pathname_join(detect_content_path, menu_path_new, path, sizeof(detect_content_path)); + if (hash_label == MENU_LABEL_COLLECTION) + { + ret = generic_action_ok_displaylist_push(path, + NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST_SET); + } + else switch (ret) { case -1: - switch (hash_label) - { - case MENU_LABEL_COLLECTION: - ret = generic_action_ok_displaylist_push(path, - NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST_SET); - break; - default: - event_command(EVENT_CMD_LOAD_CORE); - menu_common_load_content(false, CORE_TYPE_PLAIN); - ret = -1; - break; - } + event_command(EVENT_CMD_LOAD_CORE); + menu_common_load_content(false, CORE_TYPE_PLAIN); + ret = -1; break; case 0: - switch (hash_label) - { - case MENU_LABEL_COLLECTION: - ret = generic_action_ok_displaylist_push(path, - NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST_SET); - break; - default: - ret = generic_action_ok_displaylist_push(path, - NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST); - break; - } - + ret = generic_action_ok_displaylist_push(path, + NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST); break; } @@ -452,22 +438,20 @@ static int action_ok_file_load_with_detect_core_carchive( const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - menu_displaylist_info_t info = {0}; uint32_t hash_label = menu_hash_calculate(label); fill_pathname_join_delim(detect_content_path, detect_content_path, path, '#', sizeof(detect_content_path)); - return rarch_defer_core_wrapper(&info, idx, entry_idx, path, hash_label, true); + return rarch_defer_core_wrapper(idx, entry_idx, path, hash_label, true); } static int action_ok_file_load_with_detect_core(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - menu_displaylist_info_t info = {0}; uint32_t hash_label = menu_hash_calculate(label); - return rarch_defer_core_wrapper(&info, idx, entry_idx, path, hash_label, false); + return rarch_defer_core_wrapper(idx, entry_idx, path, hash_label, false); } static int action_ok_file_load_detect_core(const char *path, From 4c41cadf22f0894b0f9144cb0d41196333f792a6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 16:55:26 +0200 Subject: [PATCH 603/822] Have menu_common_load_content return int --- menu/cbs/menu_cbs_ok.c | 23 ++++++----------------- menu/menu.c | 6 +++--- menu/menu.h | 2 +- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index b2832610e4..3b9b2f3de3 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -422,9 +422,7 @@ static int rarch_defer_core_wrapper(size_t idx, size_t entry_idx, const char *pa { case -1: event_command(EVENT_CMD_LOAD_CORE); - menu_common_load_content(false, CORE_TYPE_PLAIN); - ret = -1; - break; + return menu_common_load_content(false, CORE_TYPE_PLAIN); case 0: ret = generic_action_ok_displaylist_push(path, NULL, 0, idx, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST); @@ -463,9 +461,7 @@ static int action_ok_file_load_detect_core(const char *path, strlcpy(global->path.fullpath, detect_content_path, sizeof(global->path.fullpath)); strlcpy(settings->libretro, path, sizeof(settings->libretro)); event_command(EVENT_CMD_LOAD_CORE); - menu_common_load_content(false, CORE_TYPE_PLAIN); - - return -1; + return menu_common_load_content(false, CORE_TYPE_PLAIN); } @@ -858,9 +854,7 @@ static int action_ok_core_load_deferred(const char *path, strlcpy(global->path.fullpath, menu->deferred_path, sizeof(global->path.fullpath)); - menu_common_load_content(false, CORE_TYPE_PLAIN); - - return -1; + return menu_common_load_content(false, CORE_TYPE_PLAIN); } static int action_ok_database_manager_list_deferred(const char *path, @@ -904,9 +898,7 @@ static int action_ok_core_load(const char *path, if (menu->load_no_content && settings->core.set_supports_no_game_enable) { *global->path.fullpath = '\0'; - - menu_common_load_content(false, CORE_TYPE_PLAIN); - return -1; + return menu_common_load_content(false, CORE_TYPE_PLAIN); } /* Core selection on non-console just updates directory listing. @@ -1055,9 +1047,7 @@ static int action_ok_file_load(const char *path, fill_pathname_join(global->path.fullpath, menu_path_new, path, sizeof(global->path.fullpath)); - menu_common_load_content(true, CORE_TYPE_PLAIN); - - return -1; + return menu_common_load_content(true, CORE_TYPE_PLAIN); } return 0; @@ -1690,8 +1680,7 @@ static int action_ok_load_archive_detect_core(const char *path, { case -1: event_command(EVENT_CMD_LOAD_CORE); - menu_common_load_content(false, CORE_TYPE_PLAIN); - break; + return menu_common_load_content(false, CORE_TYPE_PLAIN); case 0: ret = generic_action_ok_displaylist_push(path, label, type, selected, entry_idx, ACTION_OK_DL_DEFERRED_CORE_LIST); diff --git a/menu/menu.c b/menu/menu.c index 2ffc1dc6bf..33705a92d0 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -149,12 +149,10 @@ void menu_common_push_content_settings(void) menu_displaylist_push_list(&info, DISPLAYLIST_CONTENT_SETTINGS); } -void menu_common_load_content(bool persist, enum rarch_core_type type) +int menu_common_load_content(bool persist, enum rarch_core_type type) { menu_display_t *disp = menu_display_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); - if (!menu_list) - return; switch (type) { @@ -178,6 +176,8 @@ void menu_common_load_content(bool persist, enum rarch_core_type type) disp->msg_force = true; menu_common_push_content_settings(); + + return -1; } /** diff --git a/menu/menu.h b/menu/menu.h index dfefa79044..f0ee90901b 100644 --- a/menu/menu.h +++ b/menu/menu.h @@ -195,7 +195,7 @@ void menu_free(menu_handle_t *menu); **/ bool menu_load_content(enum rarch_core_type type); -void menu_common_load_content(bool persist, enum rarch_core_type type); +int menu_common_load_content(bool persist, enum rarch_core_type type); void menu_common_push_content_settings(void); From 78b6acf986adc7d7ba1ca5f840945c3c8eb5a332 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 17:08:39 +0200 Subject: [PATCH 604/822] Cleanups --- menu/cbs/menu_cbs_deferred_push.c | 53 +++++++++++++------------------ 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 49949d742a..2782ba9596 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -50,7 +50,6 @@ static int deferred_push_help(menu_displaylist_info_t *info) static int deferred_push_rdb_entry_detail(menu_displaylist_info_t *info) { - int ret; struct string_list *str_list = string_split(info->label, "|"); if (!str_list) @@ -59,11 +58,9 @@ static int deferred_push_rdb_entry_detail(menu_displaylist_info_t *info) strlcpy(info->path_b, str_list->elems[1].data, sizeof(info->path_b)); strlcpy(info->label, str_list->elems[0].data, sizeof(info->label)); - ret = menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_ENTRY); - string_list_free(str_list); - return ret; + return menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_ENTRY); } static int deferred_push_rpl_entry_actions(menu_displaylist_info_t *info) @@ -92,19 +89,20 @@ static int deferred_push_database_manager_list_deferred(menu_displaylist_info_t static int deferred_push_cursor_manager_list_deferred(menu_displaylist_info_t *info) { char rdb_path[PATH_MAX_LENGTH]; + int ret = -1; char *query = NULL; char *rdb = NULL; settings_t *settings = config_get_ptr(); config_file_t *conf = config_file_new(info->path); if (!conf || !settings) - goto error; + goto end; if (!config_get_string(conf, "query", &query)) - goto error; + goto end; if (!config_get_string(conf, "rdb", &rdb)) - goto error; + goto end; fill_pathname_join(rdb_path, settings->content_database, rdb, sizeof(rdb_path)); @@ -113,31 +111,25 @@ static int deferred_push_cursor_manager_list_deferred(menu_displaylist_info_t *i strlcpy(info->path, rdb_path, sizeof(info->path)); strlcpy(info->path_c, query, sizeof(info->path_c)); - menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_QUERY); + ret = menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_QUERY); - config_file_free(conf); - return 0; - -error: +end: if (conf) config_file_free(conf); - return -1; + return ret; } static int deferred_push_cursor_manager_list_deferred_query_subsearch(menu_displaylist_info_t *info) { + int ret = -1; #ifdef HAVE_LIBRETRODB - int ret; char query[PATH_MAX_LENGTH] = {0}; struct string_list *str_list = string_split(info->path, "|"); database_info_build_query(query, sizeof(query), info->label, str_list->elems[0].data); if (query[0] == '\0') - { - string_list_free(str_list); - return -1; - } + goto end; strlcpy(info->path, str_list->elems[1].data, sizeof(info->path)); strlcpy(info->path_b, str_list->elems[0].data, sizeof(info->path_b)); @@ -145,12 +137,11 @@ static int deferred_push_cursor_manager_list_deferred_query_subsearch(menu_displ ret = menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_QUERY); - string_list_free(str_list); - - return ret; -#else - return 0; +end: + if (str_list) + string_list_free(str_list); #endif + return ret; } static int deferred_push_video_shader_preset_parameters(menu_displaylist_info_t *info) @@ -254,13 +245,14 @@ size_t core_len; static int cb_net_generic(void *data_, size_t len) { + int ret = -1; char *data = (char*)data_; menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) - goto error; + goto end; if (!data) - goto error; + goto end; if (core_buf) free(core_buf); @@ -268,18 +260,17 @@ static int cb_net_generic(void *data_, size_t len) core_buf = (char*)malloc((len+1) * sizeof(char)); if (!core_buf) - goto error; + goto end; memcpy(core_buf, data, len * sizeof(char)); core_buf[len] = '\0'; - core_len = len; + core_len = len; + ret = 0; menu_entries_unset_refresh(true); - return 0; - -error: - return -1; +end: + return ret; } int cb_core_updater_list(void *data_, size_t len) From 6006fa98b24b88495b6d79b48efd9d33c1d52187 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 17:25:42 +0200 Subject: [PATCH 605/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 3b9b2f3de3..fc202629e0 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -857,14 +857,7 @@ static int action_ok_core_load_deferred(const char *path, return menu_common_load_content(false, CORE_TYPE_PLAIN); } -static int action_ok_database_manager_list_deferred(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - return 0; -} - - -static int action_ok_cursor_manager_list_deferred(const char *path, +static int action_ok_deferred_list_stub(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { return 0; @@ -894,31 +887,24 @@ static int action_ok_core_load(const char *path, #if defined(HAVE_DYNAMIC) /* No content needed for this core, load core immediately. */ - if (menu->load_no_content && settings->core.set_supports_no_game_enable) { *global->path.fullpath = '\0'; return menu_common_load_content(false, CORE_TYPE_PLAIN); } +#elif defined(RARCH_CONSOLE) + event_command(EVENT_CMD_RESTART_RETROARCH); +#endif +#if defined(RARCH_CONSOLE) + return -1; +#else /* Core selection on non-console just updates directory listing. * Will take effect on new content load. */ return 0; -#elif defined(RARCH_CONSOLE) - event_command(EVENT_CMD_RESTART_RETROARCH); - return -1; -#else - return 0; #endif } -static int action_ok_core_download(const char *path, - const char *label, unsigned type, size_t idx, size_t entry_idx) -{ - return 0; -} - - static int action_ok_config_load(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -2137,7 +2123,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, cbs->action_ok = action_ok_core_load; break; case MENU_LABEL_CORE_UPDATER_LIST: - cbs->action_ok = action_ok_core_download; + cbs->action_ok = action_ok_deferred_list_stub; break; } break; @@ -2153,7 +2139,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, switch (menu_label_hash) { case MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST: - cbs->action_ok = action_ok_database_manager_list_deferred; + cbs->action_ok = action_ok_deferred_list_stub; break; case MENU_LABEL_DATABASE_MANAGER_LIST: case MENU_VALUE_HORIZONTAL_MENU: @@ -2168,7 +2154,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, switch (menu_label_hash) { case MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST: - cbs->action_ok = action_ok_cursor_manager_list_deferred; + cbs->action_ok = action_ok_deferred_list_stub; break; case MENU_LABEL_CURSOR_MANAGER_LIST: cbs->action_ok = action_ok_cursor_manager_list; From 56c8a57e0c831bc67ce664c44a21fe590c6500f9 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 18:38:29 +0200 Subject: [PATCH 606/822] Create retro_dirent.c/retro_dirent.h --- Makefile.common | 1 + griffin/griffin.c | 1 + libretro-common/file/dir_list.c | 143 +++-------------------- libretro-common/file/retro_dirent.c | 155 +++++++++++++++++++++++++ libretro-common/include/retro_dirent.h | 61 ++++++++++ 5 files changed, 232 insertions(+), 129 deletions(-) create mode 100644 libretro-common/file/retro_dirent.c create mode 100644 libretro-common/include/retro_dirent.h diff --git a/Makefile.common b/Makefile.common index 00a5e7c0ce..ffa0299863 100644 --- a/Makefile.common +++ b/Makefile.common @@ -130,6 +130,7 @@ OBJ += frontend/frontend.o \ content.o \ libretro-common/file/file_list.o \ libretro-common/file/dir_list.o \ + libretro-common/file/retro_dirent.o \ libretro-common/string/string_list.o \ libretro-common/string/stdstring.o \ libretro-common/memmap/memalign.o \ diff --git a/griffin/griffin.c b/griffin/griffin.c index f7cef3f818..30cdf96a80 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -584,6 +584,7 @@ FILE #ifndef IOS #include "../libretro-common/file/dir_list.c" #endif +#include "../libretro-common/file/retro_dirent.c" #include "../dir_list_special.c" #include "../libretro-common/string/string_list.c" #include "../libretro-common/string/stdstring.c" diff --git a/libretro-common/file/dir_list.c b/libretro-common/file/dir_list.c index 744a36d0fa..e9d8a81aaa 100644 --- a/libretro-common/file/dir_list.c +++ b/libretro-common/file/dir_list.c @@ -20,36 +20,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include + #include #include #include #include - -#if defined(_WIN32) -#ifdef _MSC_VER -#define setmode _setmode -#endif -#ifdef _XBOX -#include -#define INVALID_FILE_ATTRIBUTES -1 -#else -#include -#include -#include -#include -#endif -#elif defined(VITA) -#include -#include -#else -#if defined(PSP) -#include -#endif -#include -#include -#include -#include -#endif +#include #include @@ -102,46 +79,6 @@ void dir_list_free(struct string_list *list) string_list_free(list); } -/** - * - * dirent_is_directory: - * @path : path to the directory entry. - * @entry : pointer to the directory entry. - * - * Is the directory listing entry a directory? - * - * Returns: true if directory listing entry is - * a directory, false if not. - */ - -static bool dirent_is_directory(const char *path, const void *data) -{ -#if defined(_WIN32) - const WIN32_FIND_DATA *entry = (const WIN32_FIND_DATA*)data; - return entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; -#elif defined(PSP) || defined(VITA) - - const SceIoDirent *entry = (const SceIoDirent*)data; -#if defined(PSP) - return (entry->d_stat.st_attr & FIO_SO_IFDIR) == FIO_SO_IFDIR; -#elif defined(VITA) - return PSP2_S_ISDIR(entry->d_stat.st_mode); -#endif - -#elif defined(DT_DIR) - const struct dirent *entry = (const struct dirent*)data; - if (entry->d_type == DT_DIR) - return true; - else if (entry->d_type == DT_UNKNOWN /* This can happen on certain file systems. */ - || entry->d_type == DT_LNK) - return path_is_directory(path); - return false; -#else /* dirent struct doesn't have d_type, do it the slow way ... */ - const struct dirent *entry = (const struct dirent*)data; - return path_is_directory(path); -#endif -} - /** * parse_dir_entry: * @name : name of the directory listing entry. @@ -208,44 +145,6 @@ static int parse_dir_entry(const char *name, char *file_path, return 0; } -#if defined(_WIN32) -#define dirent_opendir(directory, dir) \ -{ \ - char path_buf[PATH_MAX_LENGTH]; \ - snprintf(path_buf, sizeof(path_buf), "%s\\*", dir); \ - directory = FindFirstFile(path_buf, &entry); \ -} -#elif defined(VITA) || defined(PSP) -#define dirent_opendir(directory, dir) directory = sceIoDopen(dir) -#else -#define dirent_opendir(directory, dir) directory = opendir(dir) -#endif - -#if defined(_WIN32) -#define dirent_error(directory) ((directory) == INVALID_HANDLE_VALUE) -#elif defined(VITA) || defined(PSP) -#define dirent_error(directory) ((directory) < 0) -#else -#define dirent_error(directory) (!(directory)) -#endif - -#if defined(_WIN32) -#define dirent_readdir(directory, entry) (FindNextFile((directory), &(entry)) != 0) -#elif defined(VITA) || defined(PSP) -#define dirent_readdir(directory, entry) (sceIoDread((directory), &(entry)) > 0) -#else -#define dirent_readdir(directory, entry) (entry = readdir(directory)) -#endif - -#if defined(_WIN32) -#define dirent_closedir(directory) if (directory != INVALID_HANDLE_VALUE) FindClose(directory) -#elif defined(VITA) || defined(PSP) -#define dirent_closedir(directory) sceIoDclose(directory) -#else -#define dirent_closedir(directory) if (directory) closedir(directory) -#endif - - /** * dir_list_new: * @dir : directory path. @@ -261,16 +160,7 @@ static int parse_dir_entry(const char *name, char *file_path, struct string_list *dir_list_new(const char *dir, const char *ext, bool include_dirs, bool include_compressed) { -#if defined(_WIN32) - WIN32_FIND_DATA entry; - HANDLE directory = INVALID_HANDLE_VALUE; -#elif defined(VITA) || defined(PSP) - SceUID directory; - SceIoDirent entry; -#else - DIR *directory = NULL; - const struct dirent *entry = NULL; -#endif + struct RDIR *entry = NULL; struct string_list *ext_list = NULL; struct string_list *list = NULL; @@ -280,25 +170,20 @@ struct string_list *dir_list_new(const char *dir, if (ext) ext_list = string_split(ext, "|"); - dirent_opendir(directory, dir); + entry = retro_opendir(dir); - if (dirent_error(directory)) + if (!entry) goto error; - while (dirent_readdir(directory, entry)) + if (retro_dirent_error(entry)) + goto error; + + while (retro_readdir(entry)) { char file_path[PATH_MAX_LENGTH]; int ret = 0; -#ifdef _WIN32 - const char *name = entry.cFileName; - bool is_dir = dirent_is_directory(file_path, &entry); -#elif defined(VITA) || defined(PSP) - const char *name = entry.d_name; - bool is_dir = dirent_is_directory(file_path, &entry); -#else - const char *name = entry->d_name; - bool is_dir = dirent_is_directory(file_path, entry); -#endif + const char *name = retro_dirent_get_name(entry); + bool is_dir = retro_dirent_is_dir(entry, file_path); const char *file_ext = path_get_extension(name); fill_pathname_join(file_path, dir, name, sizeof(file_path)); @@ -313,13 +198,13 @@ struct string_list *dir_list_new(const char *dir, continue; } - dirent_closedir(directory); + retro_closedir(entry); string_list_free(ext_list); return list; error: - dirent_closedir(directory); + retro_closedir(entry); string_list_free(list); string_list_free(ext_list); diff --git a/libretro-common/file/retro_dirent.c b/libretro-common/file/retro_dirent.c new file mode 100644 index 0000000000..f2194442b4 --- /dev/null +++ b/libretro-common/file/retro_dirent.c @@ -0,0 +1,155 @@ +#include + +#if defined(_WIN32) +#ifdef _MSC_VER +#define setmode _setmode +#endif +#ifdef _XBOX +#include +#define INVALID_FILE_ATTRIBUTES -1 +#else +#include +#include +#include +#include +#endif +#elif defined(VITA) +#include +#include +#else +#if defined(PSP) +#include +#endif +#include +#include +#include +#include +#endif + +#include + +#include + +struct RDIR +{ +#if defined(_WIN32) + WIN32_FIND_DATA entry; + HANDLE directory; +#elif defined(VITA) || defined(PSP) + SceUID directory; + SceIoDirent entry; +#else + DIR *directory; + const struct dirent *entry; +#endif +}; + +struct RDIR *retro_opendir(const char *name) +{ + char path_buf[1024]; + struct RDIR *rdir = (struct RDIR*)calloc(1, sizeof(*rdir)); + if (!rdir) + return NULL; +#if defined(_WIN32) + snprintf(path_buf, sizeof(path_buf), "%s\\*", name); + rdir->directory = FindFirstFile(path_buf, &rdir->entry); +#elif defined(VITA) || defined(PSP) + rdir->directory = sceIoDopen(name); + rdir->entry = NULL; +#else + rdir->directory = opendir(name); + rdir->entry = NULL; +#endif + + return rdir; +} + +bool retro_dirent_error(struct RDIR *rdir) +{ +#if defined(_WIN32) + return (rdir->directory == INVALID_HANDLE_VALUE); +#elif defined(VITA) || defined(PSP) + return (rdir->directory < 0); +#else + return !(rdir->directory); +#endif +} + +int retro_readdir(struct RDIR *rdir) +{ +#if defined(_WIN32) + return (FindNextFile(rdir->directory, &rdir->entry) != 0); +#elif defined(VITA) || defined(PSP) + return (sceIoDread(rdir->directory, &rdir->entry) > 0); +#else + return ((rdir->entry = readdir(rdir->directory)) != NULL); +#endif +} + +const char *retro_dirent_get_name(struct RDIR *rdir) +{ +#if defined(_WIN32) + return rdir->entry.cFileName; +#elif defined(VITA) || defined(PSP) + return rdir->entry.d_name; +#else + return rdir->entry->d_name; +#endif +} + +/** + * + * retro_dirent_is_dir: + * @rdir : pointer to the directory entry. + * @path : path to the directory entry. + * + * Is the directory listing entry a directory? + * + * Returns: true if directory listing entry is + * a directory, false if not. + */ +bool retro_dirent_is_dir(struct RDIR *rdir, const char *path) +{ +#if defined(_WIN32) + const WIN32_FIND_DATA *entry = (const WIN32_FIND_DATA*)rdir->entry; + return entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; +#elif defined(PSP) || defined(VITA) + + const SceIoDirent *entry = (const SceIoDirent*)rdir->entry; +#if defined(PSP) + return (entry->d_stat.st_attr & FIO_SO_IFDIR) == FIO_SO_IFDIR; +#elif defined(VITA) + return PSP2_S_ISDIR(entry->d_stat.st_mode); +#endif + +#elif defined(DT_DIR) + const struct dirent *entry = (const struct dirent*)rdir->entry; + if (entry->d_type == DT_DIR) + return true; + else if (entry->d_type == DT_UNKNOWN /* This can happen on certain file systems. */ + || entry->d_type == DT_LNK) + return path_is_directory(path); + return false; +#else /* dirent struct doesn't have d_type, do it the slow way ... */ + const struct dirent *entry = (const struct dirent*)data; + return path_is_directory(path); +#endif +} + +void retro_closedir(struct RDIR *rdir) +{ + if (!rdir) + return; + +#if defined(_WIN32) + if (rdir->directory != INVALID_HANDLE_VALUE) + FindClose(rdir->directory); +#elif defined(VITA) || defined(PSP) + sceIoDclose(rdir->directory); +#else + if (rdir->directory) + closedir(rdir->directory); +#endif + + free(rdir); +} diff --git a/libretro-common/include/retro_dirent.h b/libretro-common/include/retro_dirent.h new file mode 100644 index 0000000000..6ef801ed82 --- /dev/null +++ b/libretro-common/include/retro_dirent.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2010-2015 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (retro_dirent.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __RETRO_DIRENT_H +#define __RETRO_DIRENT_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct RDIR; + +struct RDIR *retro_opendir(const char *name); + +int retro_readdir(struct RDIR *rdir); + +bool retro_dirent_error(struct RDIR *rdir); + +const char *retro_dirent_get_name(struct RDIR *rdir); + +/** + * + * retro_dirent_is_dir: + * @rdir : pointer to the directory entry. + * @path : path to the directory entry. + * + * Is the directory listing entry a directory? + * + * Returns: true if directory listing entry is + * a directory, false if not. + */ +bool retro_dirent_is_dir(struct RDIR *rdir, const char *path); + +void retro_closedir(struct RDIR *rdir); + +#ifdef __cplusplus +} +#endif + +#endif From b0f54b896a0f9baf3dd03201fe479e42a1be207e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 18:41:53 +0200 Subject: [PATCH 607/822] Clean up unused variables --- libretro-common/file/retro_dirent.c | 5 ++++- menu/cbs/menu_cbs_ok.c | 3 --- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libretro-common/file/retro_dirent.c b/libretro-common/file/retro_dirent.c index f2194442b4..7310c886d1 100644 --- a/libretro-common/file/retro_dirent.c +++ b/libretro-common/file/retro_dirent.c @@ -48,8 +48,12 @@ struct RDIR *retro_opendir(const char *name) { char path_buf[1024]; struct RDIR *rdir = (struct RDIR*)calloc(1, sizeof(*rdir)); + if (!rdir) return NULL; + + (void)path_buf; + #if defined(_WIN32) snprintf(path_buf, sizeof(path_buf), "%s\\*", name); rdir->directory = FindFirstFile(path_buf, &rdir->entry); @@ -114,7 +118,6 @@ bool retro_dirent_is_dir(struct RDIR *rdir, const char *path) const WIN32_FIND_DATA *entry = (const WIN32_FIND_DATA*)rdir->entry; return entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; #elif defined(PSP) || defined(VITA) - const SceIoDirent *entry = (const SceIoDirent*)rdir->entry; #if defined(PSP) return (entry->d_stat.st_attr & FIO_SO_IFDIR) == FIO_SO_IFDIR; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index fc202629e0..1f90b4aa6c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -380,7 +380,6 @@ static int rarch_defer_core_wrapper(size_t idx, size_t entry_idx, const char *pa int ret = 0; menu_handle_t *menu = menu_driver_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); - settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); if (!menu) @@ -1644,8 +1643,6 @@ static int action_ok_load_archive_detect_core(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { int ret = 0; - menu_displaylist_info_t info = {0}; - settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); size_t selected = menu_navigation_get_current_selection(); menu_handle_t *menu = menu_driver_get_ptr(); From 9b77a7ecae190cb0aeafc56ac481436514c0b092 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 18:50:09 +0200 Subject: [PATCH 608/822] Don't make retro_dirent.c dependent on file/file_path.c --- libretro-common/file/retro_dirent.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/libretro-common/file/retro_dirent.c b/libretro-common/file/retro_dirent.c index 7310c886d1..7f96808efe 100644 --- a/libretro-common/file/retro_dirent.c +++ b/libretro-common/file/retro_dirent.c @@ -28,8 +28,6 @@ #include -#include - struct RDIR { #if defined(_WIN32) @@ -101,6 +99,14 @@ const char *retro_dirent_get_name(struct RDIR *rdir) #endif } +#if defined(__CELLOS_LV2__) + +#ifndef S_ISDIR +#define S_ISDIR(x) (x & 0040000) +#endif + +#endif + /** * * retro_dirent_is_dir: @@ -124,18 +130,28 @@ bool retro_dirent_is_dir(struct RDIR *rdir, const char *path) #elif defined(VITA) return PSP2_S_ISDIR(entry->d_stat.st_mode); #endif - +#elif defined(__CELLOS_LV2__) + return S_ISDIR(entry->d_stat.st_mode); #elif defined(DT_DIR) const struct dirent *entry = (const struct dirent*)rdir->entry; if (entry->d_type == DT_DIR) return true; else if (entry->d_type == DT_UNKNOWN /* This can happen on certain file systems. */ || entry->d_type == DT_LNK) - return path_is_directory(path); + { + struct stat buf; + if (stat(path, &buf) < 0) + return false; + + return S_ISDIR(buf.st_mode); + } return false; #else /* dirent struct doesn't have d_type, do it the slow way ... */ - const struct dirent *entry = (const struct dirent*)data; - return path_is_directory(path); + struct stat buf; + if (stat(path, &buf) < 0) + return false; + + return S_ISDIR(buf.st_mode); #endif } From eb8ca30a6cf1c13c0b01c5c1b3e64cab2c020986 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 18:54:29 +0200 Subject: [PATCH 609/822] Add retro_dirent.c to Salamander --- Makefile.ps3.salamander | 1 + Makefile.psp1.salamander | 1 + Makefile.wii.salamander | 14 +++++++- libretro-common/file/retro_dirent.c | 2 -- .../RetroArch-Salamander.vcxproj | 8 +++++ .../RetroArch-Salamander.vcproj | 33 +++++++++++++++++++ 6 files changed, 56 insertions(+), 3 deletions(-) diff --git a/Makefile.ps3.salamander b/Makefile.ps3.salamander index 81c02a5e43..2842f195c9 100644 --- a/Makefile.ps3.salamander +++ b/Makefile.ps3.salamander @@ -25,6 +25,7 @@ PPU_SRCS = frontend/frontend_salamander.c \ frontend/drivers/platform_null.c \ libretro-common/file/file_path.c \ libretro-common/file/dir_list.c \ + libretro-common/file/retro_dirent.c \ libretro-common/hash/rhash.c \ libretro-common/string/string_list.c \ libretro-common/compat/compat.c \ diff --git a/Makefile.psp1.salamander b/Makefile.psp1.salamander index fa44cc85ff..28208574c1 100644 --- a/Makefile.psp1.salamander +++ b/Makefile.psp1.salamander @@ -38,6 +38,7 @@ OBJS = frontend/frontend_salamander.o \ libretro-common/file/file_path.o \ libretro-common/string/string_list.o \ libretro-common/file/dir_list.o \ + libretro-common/file/retro_dirent.o \ libretro-common/compat/compat.o \ libretro-common/file/config_file.o \ libretro-common/hash/rhash.o \ diff --git a/Makefile.wii.salamander b/Makefile.wii.salamander index c5cf4c4ee6..af395708f5 100644 --- a/Makefile.wii.salamander +++ b/Makefile.wii.salamander @@ -39,7 +39,19 @@ LIBS := -lfat -lwiiuse -logc -lbte APP_BOOTER_DIR = wii/app_booter -OBJ = frontend/frontend_salamander.o frontend/frontend_driver.o frontend/drivers/platform_gx.o frontend/drivers/platform_wii.o frontend/drivers/platform_null.o libretro-common/file/file_path.o libretro-common/hash/rhash.o libretro-common/string/string_list.o libretro-common/file/dir_list.o libretro-common/compat/compat.o libretro-common/file/config_file.o $(APP_BOOTER_DIR)/app_booter.binobj +OBJ = frontend/frontend_salamander.o \ + frontend/frontend_driver.o \ + frontend/drivers/platform_gx.o \ + frontend/drivers/platform_wii.o \ + frontend/drivers/platform_null.o \ + libretro-common/file/file_path.o \ + libretro-common/hash/rhash.o \ + libretro-common/string/string_list.o \ + libretro-common/file/dir_list.o \ + libretro-common/file/retro_dirent.o \ + libretro-common/compat/compat.o \ + libretro-common/file/config_file.o \ + $(APP_BOOTER_DIR)/app_booter.binobj ifeq ($(HAVE_LOGGER), 1) CFLAGS += -DHAVE_LOGGER diff --git a/libretro-common/file/retro_dirent.c b/libretro-common/file/retro_dirent.c index 7f96808efe..ccba119a57 100644 --- a/libretro-common/file/retro_dirent.c +++ b/libretro-common/file/retro_dirent.c @@ -130,8 +130,6 @@ bool retro_dirent_is_dir(struct RDIR *rdir, const char *path) #elif defined(VITA) return PSP2_S_ISDIR(entry->d_stat.st_mode); #endif -#elif defined(__CELLOS_LV2__) - return S_ISDIR(entry->d_stat.st_mode); #elif defined(DT_DIR) const struct dirent *entry = (const struct dirent*)rdir->entry; if (entry->d_type == DT_DIR) diff --git a/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj b/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj index 2600de7daf..0c4658ff43 100644 --- a/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj +++ b/msvc/RetroArch-360-Salamander/RetroArch-Salamander.vcxproj @@ -286,6 +286,14 @@ CompileAsC CompileAsC + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + CompileAsC + CompileAsC + CompileAsC CompileAsC diff --git a/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj b/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj index f1335c8f13..6c51523bb7 100644 --- a/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj +++ b/msvc/RetroArch-Xbox1-Salamander/RetroArch-Salamander.vcproj @@ -423,6 +423,39 @@ ObjectFile="$(IntDir)/$(InputName)1.obj"/> + + + + + + + + + + + + + + + + + Date: Fri, 4 Sep 2015 19:11:20 +0200 Subject: [PATCH 610/822] (retro_dirent.c) Add PS3 codepaths --- libretro-common/file/retro_dirent.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/libretro-common/file/retro_dirent.c b/libretro-common/file/retro_dirent.c index ccba119a57..c04ee6a40a 100644 --- a/libretro-common/file/retro_dirent.c +++ b/libretro-common/file/retro_dirent.c @@ -26,6 +26,10 @@ #include #endif +#ifdef __CELLOS_LV2__ +#include +#endif + #include struct RDIR @@ -36,6 +40,10 @@ struct RDIR #elif defined(VITA) || defined(PSP) SceUID directory; SceIoDirent entry; +#elif defined(__CELLOS_LV2__) + CellFsErrno error; + int directory; + CellFsDirent entry; #else DIR *directory; const struct dirent *entry; @@ -58,6 +66,8 @@ struct RDIR *retro_opendir(const char *name) #elif defined(VITA) || defined(PSP) rdir->directory = sceIoDopen(name); rdir->entry = NULL; +#elif defined(__CELLOS_LV2__) + rdir->error = cellFsOpendir(name, &rdir->directory); #else rdir->directory = opendir(name); rdir->entry = NULL; @@ -72,6 +82,8 @@ bool retro_dirent_error(struct RDIR *rdir) return (rdir->directory == INVALID_HANDLE_VALUE); #elif defined(VITA) || defined(PSP) return (rdir->directory < 0); +#elif defined(__CELLOS_LV2__) + return (rdir->error != CELL_FS_SUCCEEDED); #else return !(rdir->directory); #endif @@ -83,6 +95,10 @@ int retro_readdir(struct RDIR *rdir) return (FindNextFile(rdir->directory, &rdir->entry) != 0); #elif defined(VITA) || defined(PSP) return (sceIoDread(rdir->directory, &rdir->entry) > 0); +#elif defined(__CELLOS_LV2__) + uint64_t nread; + rdir->error = cellFsReaddir(rdir->directory, &rdir->entry, &nread); + return (nread != 0); #else return ((rdir->entry = readdir(rdir->directory)) != NULL); #endif @@ -92,7 +108,7 @@ const char *retro_dirent_get_name(struct RDIR *rdir) { #if defined(_WIN32) return rdir->entry.cFileName; -#elif defined(VITA) || defined(PSP) +#elif defined(VITA) || defined(PSP) || defined(__CELLOS_LV2__) return rdir->entry.d_name; #else return rdir->entry->d_name; @@ -130,6 +146,9 @@ bool retro_dirent_is_dir(struct RDIR *rdir, const char *path) #elif defined(VITA) return PSP2_S_ISDIR(entry->d_stat.st_mode); #endif +#elif defined(__CELLOS_LV2__) + CellFsDirent *entry = (CellFsDirent*)&rdir->entry; + return (entry->d_type == CELL_FS_TYPE_DIRECTORY); #elif defined(DT_DIR) const struct dirent *entry = (const struct dirent*)rdir->entry; if (entry->d_type == DT_DIR) @@ -163,6 +182,8 @@ void retro_closedir(struct RDIR *rdir) FindClose(rdir->directory); #elif defined(VITA) || defined(PSP) sceIoDclose(rdir->directory); +#elif defined(__CELLOS_LV2__) + rdir->error = cellFsClosedir(rdir->directory); #else if (rdir->directory) closedir(rdir->directory); From 97f8c39865ccd5a7948133759f39c112932b1db4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 19:12:19 +0200 Subject: [PATCH 611/822] (retro_dirent.c) PS3 - cleanup --- libretro-common/file/retro_dirent.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/libretro-common/file/retro_dirent.c b/libretro-common/file/retro_dirent.c index c04ee6a40a..52bb356943 100644 --- a/libretro-common/file/retro_dirent.c +++ b/libretro-common/file/retro_dirent.c @@ -115,14 +115,6 @@ const char *retro_dirent_get_name(struct RDIR *rdir) #endif } -#if defined(__CELLOS_LV2__) - -#ifndef S_ISDIR -#define S_ISDIR(x) (x & 0040000) -#endif - -#endif - /** * * retro_dirent_is_dir: From bdc07f4c8cbebedc9e018fa2fe163717bfa1599c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 20:09:53 +0200 Subject: [PATCH 612/822] (Vita) retro_dirent.c - build fixes --- libretro-common/file/retro_dirent.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libretro-common/file/retro_dirent.c b/libretro-common/file/retro_dirent.c index 52bb356943..5534e82e02 100644 --- a/libretro-common/file/retro_dirent.c +++ b/libretro-common/file/retro_dirent.c @@ -65,7 +65,6 @@ struct RDIR *retro_opendir(const char *name) rdir->directory = FindFirstFile(path_buf, &rdir->entry); #elif defined(VITA) || defined(PSP) rdir->directory = sceIoDopen(name); - rdir->entry = NULL; #elif defined(__CELLOS_LV2__) rdir->error = cellFsOpendir(name, &rdir->directory); #else @@ -132,7 +131,7 @@ bool retro_dirent_is_dir(struct RDIR *rdir, const char *path) const WIN32_FIND_DATA *entry = (const WIN32_FIND_DATA*)rdir->entry; return entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; #elif defined(PSP) || defined(VITA) - const SceIoDirent *entry = (const SceIoDirent*)rdir->entry; + const SceIoDirent *entry = (const SceIoDirent*)&rdir->entry; #if defined(PSP) return (entry->d_stat.st_attr & FIO_SO_IFDIR) == FIO_SO_IFDIR; #elif defined(VITA) From 8920f6aabd5d8c120cbc1bf58c215eaa4b295eeb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 20:11:46 +0200 Subject: [PATCH 613/822] Cleanups --- menu/cbs/menu_cbs_ok.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 1f90b4aa6c..277f1157d3 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1297,6 +1297,7 @@ static int action_ok_lookup_setting(const char *path, } +#ifdef HAVE_NETWORKING static int action_ok_core_content_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1308,7 +1309,6 @@ static int action_ok_core_content_list(const char *path, if (settings->network.buildbot_url[0] == '\0') return -1; -#ifdef HAVE_NETWORKING event_command(EVENT_CMD_NETWORK_INIT); fill_pathname_join(url_path, settings->network.buildbot_assets_url, @@ -1316,7 +1316,6 @@ static int action_ok_core_content_list(const char *path, rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_content_list", 0, 1, true); -#endif return generic_action_ok_displaylist_push(path, label, type, idx, entry_idx, ACTION_OK_DL_CORE_CONTENT_LIST); @@ -1333,7 +1332,6 @@ static int action_ok_core_updater_list(const char *path, if (settings->network.buildbot_url[0] == '\0') return -1; -#ifdef HAVE_NETWORKING event_command(EVENT_CMD_NETWORK_INIT); fill_pathname_join(url_path, settings->network.buildbot_url, @@ -1341,11 +1339,12 @@ static int action_ok_core_updater_list(const char *path, rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_updater_list", 0, 1, true); -#endif return generic_action_ok_displaylist_push(path, label, type, idx, entry_idx, ACTION_OK_DL_CORE_UPDATER_LIST); } +#endif + static int action_ok_custom_viewport(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -1892,12 +1891,14 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_RECORD_CONFIG: cbs->action_ok = action_ok_record_configfile; break; +#ifdef HAVE_NETWORKING case MENU_LABEL_DOWNLOAD_CORE_CONTENT: cbs->action_ok = action_ok_core_content_list; break; case MENU_LABEL_VALUE_CORE_UPDATER_LIST: cbs->action_ok = action_ok_core_updater_list; break; +#endif case MENU_LABEL_VIDEO_SHADER_PARAMETERS: case MENU_LABEL_VIDEO_SHADER_PRESET_PARAMETERS: cbs->action_ok = action_ok_shader_parameters; From acd1ad656af7de15c8a53ef694c0a9a02d9cef8b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 20:14:12 +0200 Subject: [PATCH 614/822] Cleanups --- file_ops.c | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/file_ops.c b/file_ops.c index 3e61219421..e55113f431 100644 --- a/file_ops.c +++ b/file_ops.c @@ -40,33 +40,6 @@ #include "decompress/zip_support.h" #endif -#ifdef __HAIKU__ -#include -#endif - -#if defined(_WIN32) -#ifdef _MSC_VER -#define setmode _setmode -#endif -#ifdef _XBOX -#include -#define INVALID_FILE_ATTRIBUTES -1 -#else -#include -#include -#include -#include -#endif -#elif defined(VITA) -#include -#include -#else -#include -#include -#include -#include -#endif - /** * write_file: * @path : path to file. From b79c2ced37940a1a69cce776278e1cfa6b0e001c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 20:27:41 +0200 Subject: [PATCH 615/822] Remove win32/compat/dirent.c --- libretro-common/compat/win32/dirent.c | 138 ------------------ libretro-common/include/compat/win32/dirent.h | 49 ------- 2 files changed, 187 deletions(-) delete mode 100644 libretro-common/compat/win32/dirent.c delete mode 100644 libretro-common/include/compat/win32/dirent.h diff --git a/libretro-common/compat/win32/dirent.c b/libretro-common/compat/win32/dirent.c deleted file mode 100644 index f39eac0fec..0000000000 --- a/libretro-common/compat/win32/dirent.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - - Implementation of POSIX directory browsing functions and types for Win32. - - Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com) - History: Created March 1997. Updated June 2003 and July 2012. - - Copyright Kevlin Henney, 1997, 2003, 2012. All rights reserved. - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose is hereby granted without fee, provided - that this copyright and permissions notice appear in all copies and - derivatives. - - This software is supplied "as is" without express or implied warranty. - - But that said, if there are any problems please get in touch. - -*/ - -#ifdef _WIN32 - -#include -#include -#include /* _findfirst and _findnext set errno iff they return -1 */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef ptrdiff_t handle_type; /* C99's intptr_t not sufficiently portable */ - -struct DIR -{ - handle_type handle; /* -1 for failed rewind */ - struct _finddata_t info; - struct dirent result; /* d_name null iff first time */ - char *name; /* null-terminated char string */ -}; - -DIR *opendir(const char *name) -{ - DIR *dir = 0; - - if(name && name[0]) - { - size_t base_length = strlen(name); - const char *all = /* search pattern must end with suitable wildcard */ - strchr("/\\", name[base_length - 1]) ? "*" : "/*"; - - if((dir = (DIR *) malloc(sizeof *dir)) != 0 && - (dir->name = (char *) malloc(base_length + strlen(all) + 1)) != 0) - { - strcat(strcpy(dir->name, name), all); - - if((dir->handle = - (handle_type) _findfirst(dir->name, &dir->info)) != -1) - dir->result.d_name = 0; - else /* rollback */ - { - free(dir->name); - free(dir); - dir = 0; - } - } - else /* rollback */ - { - free(dir); - dir = 0; - errno = ENOMEM; - } - } - else - errno = EINVAL; - - return dir; -} - -int closedir(DIR *dir) -{ - int result = -1; - - if(dir) - { - if(dir->handle != -1) - result = _findclose(dir->handle); - - free(dir->name); - free(dir); - } - - /* map all errors to EBADF */ - if(result == -1) - errno = EBADF; - - return result; -} - -struct dirent *readdir(DIR *dir) -{ - struct dirent *result = 0; - - if(dir && dir->handle != -1) - { - if(!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1) - { - result = &dir->result; - result->d_name = dir->info.name; - } - } - else - errno = EBADF; - - return result; -} - -void rewinddir(DIR *dir) -{ - if(dir && dir->handle != -1) - { - _findclose(dir->handle); - dir->handle = (handle_type) _findfirst(dir->name, &dir->info); - dir->result.d_name = 0; - } - else - errno = EBADF; -} - -#ifdef __cplusplus -} -#endif - - -#endif diff --git a/libretro-common/include/compat/win32/dirent.h b/libretro-common/include/compat/win32/dirent.h deleted file mode 100644 index c6744d1241..0000000000 --- a/libretro-common/include/compat/win32/dirent.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef _LIBRETRO_SDK_COMPAT_WIN32_DIRENT -#define _LIBRETRO_SDK_COMPAT_WIN32_DIRENT - -/* - Declaration of POSIX directory browsing functions and types for Win32. - -Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com) -History: Created March 1997. Updated June 2003. -Rights: See end of file. - -*/ - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef struct DIR DIR; - -struct dirent -{ - char *d_name; -}; - -DIR *opendir(const char *); -int closedir(DIR *); -struct dirent *readdir(DIR *); -void rewinddir(DIR *); - -/* - - Copyright Kevlin Henney, 1997, 2003. All rights reserved. - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose is hereby granted without fee, provided - that this copyright and permissions notice appear in all copies and - derivatives. - - This software is supplied "as is" without express or implied warranty. - - But that said, if there are any problems please get in touch. - -*/ - -#ifdef __cplusplus -} -#endif - -#endif From f7f32f522d4743077c10623082ad348f10dfbb1e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 20:37:18 +0200 Subject: [PATCH 616/822] (platform_linux.c) Use retro_dirent.h --- frontend/drivers/platform_gx.c | 6 ---- frontend/drivers/platform_linux.c | 48 ++++++++++++++++--------------- 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index 9fe0d9eadf..77abac8269 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -20,12 +20,6 @@ #include #include #include -#include -#ifndef _DIRENT_HAVE_D_TYPE -#include -#endif -#include -#include #if defined(HW_RVL) && !defined(IS_SALAMANDER) #include diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index be203581a9..28e4e1c355 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include #include @@ -359,37 +359,33 @@ bool frontend_linux_powerstate_check_apm(enum frontend_powerstate *state, bool frontend_linux_powerstate_check_acpi(enum frontend_powerstate *state, int *seconds, int *percent) { - struct dirent *dent = NULL; - DIR *dirp = NULL; + bool ret = false; + struct RDIR *entry = NULL; bool have_battery = false; bool have_ac = false; bool charging = false; *state = FRONTEND_POWERSTATE_NONE; - dirp = opendir(proc_acpi_battery_path); - if (dirp == NULL) - return false; /* can't use this interface. */ + entry = retro_opendir(proc_acpi_battery_path); + if (!entry) + goto end; - while ((dent = readdir(dirp)) != NULL) - { - const char *node = dent->d_name; - check_proc_acpi_battery(node, &have_battery, &charging, - seconds, percent); - } - closedir(dirp); + if (retro_dirent_error(entry)) + goto end; - dirp = opendir(proc_acpi_ac_adapter_path); - if (dirp == NULL) - return false; /* can't use this interface. */ + while (retro_readdir(entry)) + check_proc_acpi_battery(retro_dirent_get_name(entry), + &have_battery, &charging, seconds, percent); - while ((dent = readdir(dirp)) != NULL) - { - const char *node = dent->d_name; + retro_closedir(entry); - check_proc_acpi_ac_adapter(node, &have_ac); - } - closedir(dirp); + entry = retro_opendir(proc_acpi_ac_adapter_path); + if (!entry) + goto end; + + while (retro_readdir(entry)) + check_proc_acpi_ac_adapter(retro_dirent_get_name(entry), &have_ac); if (!have_battery) *state = FRONTEND_POWERSTATE_NO_SOURCE; @@ -400,7 +396,13 @@ bool frontend_linux_powerstate_check_acpi(enum frontend_powerstate *state, else *state = FRONTEND_POWERSTATE_ON_POWER_SOURCE; - return true; /* definitive answer. */ + ret = true; + +end: + if (entry) + retro_closedir(entry); + + return ret; } static enum frontend_powerstate From 603f95cbf4a11241fc8a5eeb785d46d059cb1043 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 4 Sep 2015 20:45:02 +0200 Subject: [PATCH 617/822] Remove frontend_xenon.c - implement platform_xenon.c instead --- frontend/drivers/platform_xenon.c | 87 ++++++++++++ frontend/frontend_driver.c | 3 + frontend/frontend_driver.h | 1 + frontend/frontend_xenon.c | 229 ------------------------------ griffin/griffin.c | 6 +- 5 files changed, 93 insertions(+), 233 deletions(-) create mode 100644 frontend/drivers/platform_xenon.c delete mode 100644 frontend/frontend_xenon.c diff --git a/frontend/drivers/platform_xenon.c b/frontend/drivers/platform_xenon.c new file mode 100644 index 0000000000..21337841b6 --- /dev/null +++ b/frontend/drivers/platform_xenon.c @@ -0,0 +1,87 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2015 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include