diff --git a/audiomixer-test.diff b/audiomixer-test.diff index 73b1274070..ffd7bc6aba 100644 --- a/audiomixer-test.diff +++ b/audiomixer-test.diff @@ -1,14 +1,28 @@ diff --git a/audio/audio_driver.c b/audio/audio_driver.c -index 10dcbc5b3..dd959f900 100644 +index 10dcbc5b3..203e89d0a 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c -@@ -597,6 +597,9 @@ static bool audio_driver_flush(const int16_t *data, size_t samples) +@@ -597,6 +597,8 @@ static bool audio_driver_flush(const int16_t *data, size_t samples) audio_driver_resampler->process(audio_driver_resampler_data, &src_data); -+ audio_mixer_load_wav("/home/squarepusher/nav.wav"); + audio_mixer_mix(audio_driver_output_samples_buf, src_data.output_frames); + output_data = audio_driver_output_samples_buf; output_frames = (unsigned)src_data.output_frames; +diff --git a/runloop.c b/runloop.c +index 0e3a8dc44..4f79b2ed7 100644 +--- a/runloop.c ++++ b/runloop.c +@@ -1021,7 +1021,10 @@ static enum runloop_state runloop_check_state( + command_event(CMD_EVENT_DISK_PREV, NULL); + + if (runloop_cmd_triggered(trigger_input, RARCH_RESET)) ++ { + command_event(CMD_EVENT_RESET, NULL); ++ audio_mixer_load_wav("/home/squarepusher/piano2.wav"); ++ } + + cheat_manager_state_checks( + runloop_cmd_triggered(trigger_input, RARCH_CHEAT_INDEX_PLUS), diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index c00cb75b2c..60379436a6 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -92,6 +92,10 @@ #define CHEEVOS_JSON_KEY_MEM 0x0b8807e4U #define CHEEVOS_JSON_KEY_FORMAT 0xb341208eU +#define CHEEVOS_SIX_MB ( 6 * 1024 * 1024) +#define CHEEVOS_EIGHT_MB ( 8 * 1024 * 1024) +#define CHEEVOS_SIZE_LIMIT (32 * 1024 * 1024) + enum { /* Don't change those, the values match the console IDs @@ -2704,9 +2708,6 @@ static int cheevos_deactivate_unlocks(unsigned game_id, retro_time_t *timeout) #endif } -#define CHEEVOS_SIX_MB (6 * 1024 * 1024) -#define CHEEVOS_EIGHT_MB (8 * 1024 * 1024) - static INLINE unsigned cheevos_next_power_of_2(unsigned n) { n--; @@ -2736,6 +2737,11 @@ static size_t cheevos_eval_md5( if (info->size - offset < max_size) max_size = info->size - offset; +#ifdef CHEEVOS_SIZE_LIMIT + if (max_size > CHEEVOS_SIZE_LIMIT) + max_size = CHEEVOS_SIZE_LIMIT; +#endif + MD5_Update(ctx, (void*)((uint8_t*)info->data + offset), max_size); return max_size; } @@ -2746,8 +2752,22 @@ static size_t cheevos_eval_md5( if (!file) return 0; + + size = filestream_get_size(file); + + if (max_size == 0) + max_size = size; + + if (size - offset < max_size) + max_size = size - offset; + +#ifdef CHEEVOS_SIZE_LIMIT + if (max_size > CHEEVOS_SIZE_LIMIT) + max_size = CHEEVOS_SIZE_LIMIT; +#endif filestream_seek(file, offset, SEEK_SET); + size = 0; for (;;) { @@ -2755,7 +2775,7 @@ static size_t cheevos_eval_md5( ssize_t num_read; size_t to_read = sizeof(buffer); - if (max_size != 0 && to_read > max_size) + if (to_read > max_size) to_read = max_size; num_read = filestream_read(file, (void*)buffer, to_read); diff --git a/command.c b/command.c index f76c18c6bb..19647df0d0 100644 --- a/command.c +++ b/command.c @@ -1756,24 +1756,6 @@ static bool command_event_main_state(unsigned cmd) return ret; } -void handle_quit_event(void) -{ - command_event(CMD_EVENT_AUTOSAVE_STATE, NULL); - command_event(CMD_EVENT_DISABLE_OVERRIDES, NULL); - command_event(CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET, NULL); - -#ifdef HAVE_DYNAMIC -#ifdef HAVE_MENU - menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_DEINIT, NULL); -#endif -#endif - - runloop_ctl(RUNLOOP_CTL_SET_SHUTDOWN, NULL); -#ifdef HAVE_MENU - rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL); -#endif -} - static bool command_event_resize_windowed_scale(void) { unsigned idx = 0; @@ -1993,8 +1975,7 @@ bool command_event(enum event_command cmd, void *data) } break; case CMD_EVENT_QUIT: - handle_quit_event(); - break; + return retroarch_main_quit(); case CMD_EVENT_CHEEVOS_HARDCORE_MODE_TOGGLE: #ifdef HAVE_CHEEVOS cheevos_toggle_hardcore_mode(); @@ -2067,9 +2048,8 @@ bool command_event(enum event_command cmd, void *data) runloop_set(RUNLOOP_ACTION_AUTOSAVE); else runloop_unset(RUNLOOP_ACTION_AUTOSAVE); -#else - break; #endif + break; case CMD_EVENT_AUTOSAVE_STATE: command_event_save_auto_state(); break; diff --git a/command.h b/command.h index f15b108388..d5365c4c73 100644 --- a/command.h +++ b/command.h @@ -243,6 +243,8 @@ bool command_set(command_handle_t *handle); bool command_free(command_t *handle); +bool command_event_quit(void); + /** * command_event: * @cmd : Command index. diff --git a/config.def.h b/config.def.h index afdb4150a5..00c862396d 100644 --- a/config.def.h +++ b/config.def.h @@ -25,160 +25,6 @@ #include "config.h" #endif -#include "input/input_driver.h" - -enum video_driver_enum -{ - VIDEO_GL = 0, - VIDEO_VULKAN, - VIDEO_DRM, - VIDEO_XVIDEO, - VIDEO_SDL, - VIDEO_SDL2, - VIDEO_EXT, - VIDEO_WII, - VIDEO_WIIU, - VIDEO_XENON360, - VIDEO_XDK_D3D, - VIDEO_PSP1, - VIDEO_VITA2D, - VIDEO_CTR, - VIDEO_D3D9, - VIDEO_VG, - VIDEO_OMAP, - VIDEO_EXYNOS, - VIDEO_SUNXI, - VIDEO_DISPMANX, - VIDEO_CACA, - VIDEO_GDI, - VIDEO_VGA, - VIDEO_NULL -}; - -enum audio_driver_enum -{ - AUDIO_RSOUND = VIDEO_NULL + 1, - AUDIO_OSS, - AUDIO_ALSA, - AUDIO_ALSATHREAD, - AUDIO_ROAR, - AUDIO_AL, - AUDIO_SL, - AUDIO_JACK, - AUDIO_SDL, - AUDIO_SDL2, - AUDIO_XAUDIO, - AUDIO_PULSE, - AUDIO_EXT, - AUDIO_DSOUND, - AUDIO_WASAPI, - AUDIO_COREAUDIO, - AUDIO_PS3, - AUDIO_XENON360, - AUDIO_WII, - AUDIO_WIIU, - AUDIO_RWEBAUDIO, - AUDIO_PSP, - AUDIO_CTR, - AUDIO_NULL -}; - -enum audio_resampler_driver_enum -{ - AUDIO_RESAMPLER_CC = AUDIO_NULL + 1, - AUDIO_RESAMPLER_SINC, - AUDIO_RESAMPLER_NEAREST, - AUDIO_RESAMPLER_NULL -}; - -enum input_driver_enum -{ - INPUT_ANDROID = AUDIO_RESAMPLER_NULL + 1, - INPUT_SDL, - INPUT_SDL2, - INPUT_X, - INPUT_WAYLAND, - INPUT_DINPUT, - INPUT_PS3, - INPUT_PSP, - INPUT_CTR, - INPUT_XENON360, - INPUT_WII, - INPUT_WIIU, - INPUT_XINPUT, - INPUT_UDEV, - INPUT_LINUXRAW, - INPUT_COCOA, - INPUT_QNX, - INPUT_RWEBINPUT, - INPUT_DOS, - INPUT_NULL -}; - -enum joypad_driver_enum -{ - JOYPAD_PS3 = INPUT_NULL + 1, - JOYPAD_XINPUT, - JOYPAD_GX, - JOYPAD_WIIU, - JOYPAD_XDK, - JOYPAD_PSP, - JOYPAD_CTR, - JOYPAD_DINPUT, - JOYPAD_UDEV, - JOYPAD_LINUXRAW, - JOYPAD_ANDROID, - JOYPAD_SDL, - JOYPAD_DOS, - JOYPAD_HID, - JOYPAD_QNX, - JOYPAD_NULL -}; - -enum camera_driver_enum -{ - CAMERA_V4L2 = JOYPAD_NULL + 1, - CAMERA_RWEBCAM, - CAMERA_ANDROID, - CAMERA_AVFOUNDATION, - CAMERA_NULL -}; - -enum wifi_driver_enum -{ - WIFI_CONNMANCTL = CAMERA_NULL + 1, - WIFI_NULL -}; - -enum location_driver_enum -{ - LOCATION_ANDROID = WIFI_NULL + 1, - LOCATION_CORELOCATION, - LOCATION_NULL -}; - -enum osk_driver_enum -{ - OSK_PS3 = LOCATION_NULL + 1, - OSK_NULL -}; - -enum menu_driver_enum -{ - MENU_RGUI = OSK_NULL + 1, - MENU_XUI, - MENU_MATERIALUI, - MENU_XMB, - MENU_NUKLEAR, - MENU_NULL -}; - -enum record_driver_enum -{ - RECORD_FFMPEG = MENU_NULL + 1, - RECORD_NULL -}; - #if defined(HW_RVL) #define MAX_GAMMA_SETTING 30 #elif defined(GEKKO) @@ -187,226 +33,6 @@ enum record_driver_enum #define MAX_GAMMA_SETTING 1 #endif -#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) || defined(__CELLOS_LV2__) -#define VIDEO_DEFAULT_DRIVER VIDEO_GL -#elif defined(GEKKO) -#define VIDEO_DEFAULT_DRIVER VIDEO_WII -#elif defined(WIIU) -#define VIDEO_DEFAULT_DRIVER VIDEO_WIIU -#elif defined(XENON) -#define VIDEO_DEFAULT_DRIVER VIDEO_XENON360 -#elif (defined(_XBOX1) || defined(_XBOX360)) && (defined(HAVE_D3D8) || defined(HAVE_D3D9)) -#define VIDEO_DEFAULT_DRIVER VIDEO_XDK_D3D -#elif defined(HAVE_D3D9) -#define VIDEO_DEFAULT_DRIVER VIDEO_D3D9 -#elif defined(HAVE_VG) -#define VIDEO_DEFAULT_DRIVER VIDEO_VG -#elif defined(HAVE_VITA2D) -#define VIDEO_DEFAULT_DRIVER VIDEO_VITA2D -#elif defined(PSP) -#define VIDEO_DEFAULT_DRIVER VIDEO_PSP1 -#elif defined(_3DS) -#define VIDEO_DEFAULT_DRIVER VIDEO_CTR -#elif defined(HAVE_XVIDEO) -#define VIDEO_DEFAULT_DRIVER VIDEO_XVIDEO -#elif defined(HAVE_SDL) -#define VIDEO_DEFAULT_DRIVER VIDEO_SDL -#elif defined(HAVE_SDL2) -#define VIDEO_DEFAULT_DRIVER VIDEO_SDL2 -#elif defined(_WIN32) && !defined(_XBOX) -#define VIDEO_DEFAULT_DRIVER VIDEO_GDI -#elif defined(DJGPP) -#define VIDEO_DEFAULT_DRIVER VIDEO_VGA -#elif defined(HAVE_DYLIB) && !defined(ANDROID) -#define VIDEO_DEFAULT_DRIVER VIDEO_EXT -#else -#define VIDEO_DEFAULT_DRIVER VIDEO_NULL -#endif - -#if defined(__CELLOS_LV2__) -#define AUDIO_DEFAULT_DRIVER AUDIO_PS3 -#elif defined(XENON) -#define AUDIO_DEFAULT_DRIVER AUDIO_XENON360 -#elif defined(GEKKO) -#define AUDIO_DEFAULT_DRIVER AUDIO_WII -#elif defined(WIIU) -#define AUDIO_DEFAULT_DRIVER AUDIO_WIIU -#elif defined(PSP) || defined(VITA) -#define AUDIO_DEFAULT_DRIVER AUDIO_PSP -#elif defined(_3DS) -#define AUDIO_DEFAULT_DRIVER AUDIO_CTR -#elif defined(HAVE_PULSE) -#define AUDIO_DEFAULT_DRIVER AUDIO_PULSE -#elif defined(HAVE_ALSA) && defined(HAVE_VIDEOCORE) -#define AUDIO_DEFAULT_DRIVER AUDIO_ALSATHREAD -#elif defined(HAVE_ALSA) -#define AUDIO_DEFAULT_DRIVER AUDIO_ALSA -#elif defined(HAVE_OSS) -#define AUDIO_DEFAULT_DRIVER AUDIO_OSS -#elif defined(HAVE_JACK) -#define AUDIO_DEFAULT_DRIVER AUDIO_JACK -#elif defined(HAVE_COREAUDIO) -#define AUDIO_DEFAULT_DRIVER AUDIO_COREAUDIO -#elif defined(HAVE_XAUDIO) -#define AUDIO_DEFAULT_DRIVER AUDIO_XAUDIO -#elif defined(HAVE_DSOUND) -#define AUDIO_DEFAULT_DRIVER AUDIO_DSOUND -#elif defined(HAVE_WASAPI) -#define AUDIO_DEFAULT_DRIVER AUDIO_WASAPI -#elif defined(HAVE_AL) -#define AUDIO_DEFAULT_DRIVER AUDIO_AL -#elif defined(HAVE_SL) -#define AUDIO_DEFAULT_DRIVER AUDIO_SL -#elif defined(EMSCRIPTEN) -#define AUDIO_DEFAULT_DRIVER AUDIO_RWEBAUDIO -#elif defined(HAVE_SDL) -#define AUDIO_DEFAULT_DRIVER AUDIO_SDL -#elif defined(HAVE_SDL2) -#define AUDIO_DEFAULT_DRIVER AUDIO_SDL2 -#elif defined(HAVE_RSOUND) -#define AUDIO_DEFAULT_DRIVER AUDIO_RSOUND -#elif defined(HAVE_ROAR) -#define AUDIO_DEFAULT_DRIVER AUDIO_ROAR -#elif defined(HAVE_DYLIB) && !defined(ANDROID) -#define AUDIO_DEFAULT_DRIVER AUDIO_EXT -#else -#define AUDIO_DEFAULT_DRIVER AUDIO_NULL -#endif - -#if defined(PSP) || defined(EMSCRIPTEN) -#define AUDIO_DEFAULT_RESAMPLER_DRIVER AUDIO_RESAMPLER_CC -#else -#define AUDIO_DEFAULT_RESAMPLER_DRIVER AUDIO_RESAMPLER_SINC -#endif - -#if defined(HAVE_FFMPEG) -#define RECORD_DEFAULT_DRIVER RECORD_FFMPEG -#else -#define RECORD_DEFAULT_DRIVER RECORD_NULL -#endif - -#if defined(XENON) -#define INPUT_DEFAULT_DRIVER INPUT_XENON360 -#elif defined(_XBOX360) || defined(_XBOX) || defined(HAVE_XINPUT2) || defined(HAVE_XINPUT_XBOX1) -#define INPUT_DEFAULT_DRIVER INPUT_XINPUT -#elif defined(ANDROID) -#define INPUT_DEFAULT_DRIVER INPUT_ANDROID -#elif defined(EMSCRIPTEN) && defined(HAVE_SDL2) -#define INPUT_DEFAULT_DRIVER INPUT_SDL2 -#elif defined(EMSCRIPTEN) -#define INPUT_DEFAULT_DRIVER INPUT_RWEBINPUT -#elif defined(_WIN32) -#define INPUT_DEFAULT_DRIVER INPUT_DINPUT -#elif defined(__CELLOS_LV2__) -#define INPUT_DEFAULT_DRIVER INPUT_PS3 -#elif defined(PSP) || defined(VITA) -#define INPUT_DEFAULT_DRIVER INPUT_PSP -#elif defined(_3DS) -#define INPUT_DEFAULT_DRIVER INPUT_CTR -#elif defined(GEKKO) -#define INPUT_DEFAULT_DRIVER INPUT_WII -#elif defined(WIIU) -#define INPUT_DEFAULT_DRIVER INPUT_WIIU -#elif defined(HAVE_UDEV) -#define INPUT_DEFAULT_DRIVER INPUT_UDEV -#elif defined(__linux__) && !defined(ANDROID) -#define INPUT_DEFAULT_DRIVER INPUT_LINUXRAW -#elif defined(HAVE_X11) -#define INPUT_DEFAULT_DRIVER INPUT_X -#elif defined(HAVE_WAYLAND) -#define INPUT_DEFAULT_DRIVER INPUT_WAYLAND -#elif defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) -#define INPUT_DEFAULT_DRIVER INPUT_COCOA -#elif defined(__QNX__) -#define INPUT_DEFAULT_DRIVER INPUT_QNX -#elif defined(HAVE_SDL) -#define INPUT_DEFAULT_DRIVER INPUT_SDL -#elif defined(HAVE_SDL2) -#define INPUT_DEFAULT_DRIVER INPUT_SDL2 -#elif defined(DJGPP) -#define INPUT_DEFAULT_DRIVER INPUT_DOS -#else -#define INPUT_DEFAULT_DRIVER INPUT_NULL -#endif - -#if defined(__CELLOS_LV2__) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_PS3 -#elif defined(HAVE_XINPUT) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_XINPUT -#elif defined(GEKKO) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_GX -#elif defined(WIIU) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_WIIU -#elif defined(_XBOX) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_XDK -#elif defined(PSP) || defined(VITA) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_PSP -#elif defined(_3DS) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_CTR -#elif defined(HAVE_DINPUT) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_DINPUT -#elif defined(HAVE_UDEV) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_UDEV -#elif defined(__linux) && !defined(ANDROID) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_LINUXRAW -#elif defined(ANDROID) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_ANDROID -#elif defined(HAVE_SDL) || defined(HAVE_SDL2) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_SDL -#elif defined(DJGPP) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_DOS -#elif defined(HAVE_HID) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_HID -#elif defined(__QNX__) -#define JOYPAD_DEFAULT_DRIVER JOYPAD_QNX -#else -#define JOYPAD_DEFAULT_DRIVER JOYPAD_NULL -#endif - -#if defined(HAVE_V4L2) -#define CAMERA_DEFAULT_DRIVER CAMERA_V4L2 -#elif defined(EMSCRIPTEN) -#define CAMERA_DEFAULT_DRIVER CAMERA_RWEBCAM -#elif defined(ANDROID) -#define CAMERA_DEFAULT_DRIVER CAMERA_ANDROID -#elif defined(HAVE_AVFOUNDATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)) -#define CAMERA_DEFAULT_DRIVER CAMERA_AVFOUNDATION -#else -#define CAMERA_DEFAULT_DRIVER CAMERA_NULL -#endif - -#if defined(HAVE_LAKKA) -#define WIFI_DEFAULT_DRIVER WIFI_CONNMANCTL -#else -#define WIFI_DEFAULT_DRIVER WIFI_NULL -#endif - -#if defined(ANDROID) -#define LOCATION_DEFAULT_DRIVER LOCATION_ANDROID -#elif defined(HAVE_CORELOCATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)) -#define LOCATION_DEFAULT_DRIVER LOCATION_CORELOCATION -#else -#define LOCATION_DEFAULT_DRIVER LOCATION_NULL -#endif - -#if defined(__CELLOS_LV2__) -#define OSK_DEFAULT_DRIVER OSK_PS3 -#else -#define OSK_DEFAULT_DRIVER OSK_NULL -#endif - -#if defined(HAVE_XUI) -#define MENU_DEFAULT_DRIVER MENU_XUI -#elif defined(HAVE_MATERIALUI) && defined(RARCH_MOBILE) -#define MENU_DEFAULT_DRIVER MENU_MATERIALUI -#elif defined(HAVE_XMB) -#define MENU_DEFAULT_DRIVER MENU_XMB -#elif defined(HAVE_RGUI) -#define MENU_DEFAULT_DRIVER MENU_RGUI -#else -#define MENU_DEFAULT_DRIVER MENU_NULL -#endif - #if defined(XENON) || defined(_XBOX360) || defined(__CELLOS_LV2__) #define DEFAULT_ASPECT_RATIO 1.7778f #elif defined(_XBOX1) || defined(GEKKO) || defined(ANDROID) @@ -421,8 +47,6 @@ static const bool pointer_enable = true; static const bool pointer_enable = false; #endif - - /* Certain platforms might have assets stored in the bundle that * we need to extract to a user-writable directory on first boot. * diff --git a/configuration.c b/configuration.c index 662b6cd617..066b3b8c07 100644 --- a/configuration.c +++ b/configuration.c @@ -105,6 +105,374 @@ struct config_path_setting bool handle; }; +enum video_driver_enum +{ + VIDEO_GL = 0, + VIDEO_VULKAN, + VIDEO_DRM, + VIDEO_XVIDEO, + VIDEO_SDL, + VIDEO_SDL2, + VIDEO_EXT, + VIDEO_WII, + VIDEO_WIIU, + VIDEO_XENON360, + VIDEO_XDK_D3D, + VIDEO_PSP1, + VIDEO_VITA2D, + VIDEO_CTR, + VIDEO_D3D9, + VIDEO_VG, + VIDEO_OMAP, + VIDEO_EXYNOS, + VIDEO_SUNXI, + VIDEO_DISPMANX, + VIDEO_CACA, + VIDEO_GDI, + VIDEO_VGA, + VIDEO_NULL +}; + +enum audio_driver_enum +{ + AUDIO_RSOUND = VIDEO_NULL + 1, + AUDIO_OSS, + AUDIO_ALSA, + AUDIO_ALSATHREAD, + AUDIO_ROAR, + AUDIO_AL, + AUDIO_SL, + AUDIO_JACK, + AUDIO_SDL, + AUDIO_SDL2, + AUDIO_XAUDIO, + AUDIO_PULSE, + AUDIO_EXT, + AUDIO_DSOUND, + AUDIO_WASAPI, + AUDIO_COREAUDIO, + AUDIO_PS3, + AUDIO_XENON360, + AUDIO_WII, + AUDIO_WIIU, + AUDIO_RWEBAUDIO, + AUDIO_PSP, + AUDIO_CTR, + AUDIO_NULL +}; + +enum audio_resampler_driver_enum +{ + AUDIO_RESAMPLER_CC = AUDIO_NULL + 1, + AUDIO_RESAMPLER_SINC, + AUDIO_RESAMPLER_NEAREST, + AUDIO_RESAMPLER_NULL +}; + +enum input_driver_enum +{ + INPUT_ANDROID = AUDIO_RESAMPLER_NULL + 1, + INPUT_SDL, + INPUT_SDL2, + INPUT_X, + INPUT_WAYLAND, + INPUT_DINPUT, + INPUT_PS3, + INPUT_PSP, + INPUT_CTR, + INPUT_XENON360, + INPUT_WII, + INPUT_WIIU, + INPUT_XINPUT, + INPUT_UDEV, + INPUT_LINUXRAW, + INPUT_COCOA, + INPUT_QNX, + INPUT_RWEBINPUT, + INPUT_DOS, + INPUT_NULL +}; + +enum joypad_driver_enum +{ + JOYPAD_PS3 = INPUT_NULL + 1, + JOYPAD_XINPUT, + JOYPAD_GX, + JOYPAD_WIIU, + JOYPAD_XDK, + JOYPAD_PSP, + JOYPAD_CTR, + JOYPAD_DINPUT, + JOYPAD_UDEV, + JOYPAD_LINUXRAW, + JOYPAD_ANDROID, + JOYPAD_SDL, + JOYPAD_DOS, + JOYPAD_HID, + JOYPAD_QNX, + JOYPAD_NULL +}; + +enum camera_driver_enum +{ + CAMERA_V4L2 = JOYPAD_NULL + 1, + CAMERA_RWEBCAM, + CAMERA_ANDROID, + CAMERA_AVFOUNDATION, + CAMERA_NULL +}; + +enum wifi_driver_enum +{ + WIFI_CONNMANCTL = CAMERA_NULL + 1, + WIFI_NULL +}; + +enum location_driver_enum +{ + LOCATION_ANDROID = WIFI_NULL + 1, + LOCATION_CORELOCATION, + LOCATION_NULL +}; + +enum osk_driver_enum +{ + OSK_PS3 = LOCATION_NULL + 1, + OSK_NULL +}; + +enum menu_driver_enum +{ + MENU_RGUI = OSK_NULL + 1, + MENU_XUI, + MENU_MATERIALUI, + MENU_XMB, + MENU_NUKLEAR, + MENU_NULL +}; + +enum record_driver_enum +{ + RECORD_FFMPEG = MENU_NULL + 1, + RECORD_NULL +}; + + +#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES) || defined(__CELLOS_LV2__) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GL; +#elif defined(GEKKO) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_WII; +#elif defined(WIIU) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_WIIU; +#elif defined(XENON) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_XENON360; +#elif (defined(_XBOX1) || defined(_XBOX360)) && (defined(HAVE_D3D8) || defined(HAVE_D3D9)) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_XDK_D3D; +#elif defined(HAVE_D3D9) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_D3D9; +#elif defined(HAVE_VG) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VG; +#elif defined(HAVE_VITA2D) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VITA2D; +#elif defined(PSP) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_PSP1; +#elif defined(_3DS) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_CTR; +#elif defined(HAVE_XVIDEO) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_XVIDEO; +#elif defined(HAVE_SDL) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL; +#elif defined(HAVE_SDL2) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_SDL2; +#elif defined(_WIN32) && !defined(_XBOX) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_GDI; +#elif defined(DJGPP) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_VGA; +#elif defined(HAVE_DYLIB) && !defined(ANDROID) +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_EXT; +#else +static enum video_driver_enum VIDEO_DEFAULT_DRIVER = VIDEO_NULL; +#endif + +#if defined(__CELLOS_LV2__) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_PS3; +#elif defined(XENON) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_XENON360; +#elif defined(GEKKO) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_WII; +#elif defined(WIIU) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_WIIU; +#elif defined(PSP) || defined(VITA) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_PSP; +#elif defined(_3DS) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_CTR; +#elif defined(HAVE_PULSE) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_PULSE; +#elif defined(HAVE_ALSA) && defined(HAVE_VIDEOCORE) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_ALSATHREAD; +#elif defined(HAVE_ALSA) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_ALSA; +#elif defined(HAVE_OSS) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_OSS; +#elif defined(HAVE_JACK) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_JACK; +#elif defined(HAVE_COREAUDIO) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_COREAUDIO; +#elif defined(HAVE_XAUDIO) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_XAUDIO; +#elif defined(HAVE_DSOUND) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_DSOUND; +#elif defined(HAVE_WASAPI) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_WASAPI; +#elif defined(HAVE_AL) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_AL; +#elif defined(HAVE_SL) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_SL; +#elif defined(EMSCRIPTEN) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_RWEBAUDIO; +#elif defined(HAVE_SDL) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_SDL; +#elif defined(HAVE_SDL2) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_SDL2; +#elif defined(HAVE_RSOUND) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_RSOUND; +#elif defined(HAVE_ROAR) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_ROAR; +#elif defined(HAVE_DYLIB) && !defined(ANDROID) +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_EXT; +#else +static enum audio_driver_enum AUDIO_DEFAULT_DRIVER = AUDIO_NULL; +#endif + +#if defined(PSP) || defined(EMSCRIPTEN) +static enum audio_resampler_driver_enum AUDIO_DEFAULT_RESAMPLER_DRIVER = AUDIO_RESAMPLER_CC; +#else +static enum audio_resampler_driver_enum AUDIO_DEFAULT_RESAMPLER_DRIVER = AUDIO_RESAMPLER_SINC; +#endif + +#if defined(HAVE_FFMPEG) +static enum record_driver_enum RECORD_DEFAULT_DRIVER = RECORD_FFMPEG; +#else +static enum record_driver_enum RECORD_DEFAULT_DRIVER = RECORD_NULL; +#endif + +#if defined(XENON) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_XENON360; +#elif defined(_XBOX360) || defined(_XBOX) || defined(HAVE_XINPUT2) || defined(HAVE_XINPUT_XBOX1) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_XINPUT; +#elif defined(ANDROID) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_ANDROID; +#elif defined(EMSCRIPTEN) && defined(HAVE_SDL2) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_SDL2; +#elif defined(EMSCRIPTEN) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_RWEBINPUT; +#elif defined(_WIN32) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_DINPUT; +#elif defined(__CELLOS_LV2__) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_PS3; +#elif defined(PSP) || defined(VITA) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_PSP; +#elif defined(_3DS) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_CTR; +#elif defined(GEKKO) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_WII; +#elif defined(WIIU) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_WIIU; +#elif defined(HAVE_UDEV) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_UDEV; +#elif defined(__linux__) && !defined(ANDROID) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_LINUXRAW; +#elif defined(HAVE_X11) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_X; +#elif defined(HAVE_WAYLAND) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_WAYLAND; +#elif defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_COCOA; +#elif defined(__QNX__) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_QNX; +#elif defined(HAVE_SDL) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_SDL; +#elif defined(HAVE_SDL2) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_SDL2; +#elif defined(DJGPP) +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_DOS; +#else +static enum input_driver_enum INPUT_DEFAULT_DRIVER = INPUT_NULL; +#endif + +#if defined(__CELLOS_LV2__) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_PS3; +#elif defined(HAVE_XINPUT) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_XINPUT; +#elif defined(GEKKO) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_GX; +#elif defined(WIIU) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_WIIU; +#elif defined(_XBOX) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_XDK; +#elif defined(PSP) || defined(VITA) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_PSP; +#elif defined(_3DS) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_CTR; +#elif defined(HAVE_DINPUT) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_DINPUT; +#elif defined(HAVE_UDEV) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_UDEV; +#elif defined(__linux) && !defined(ANDROID) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_LINUXRAW; +#elif defined(ANDROID) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_ANDROID; +#elif defined(HAVE_SDL) || defined(HAVE_SDL2) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_SDL; +#elif defined(DJGPP) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_DOS; +#elif defined(HAVE_HID) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_HID; +#elif defined(__QNX__) +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_QNX; +#else +static enum joypad_driver_enum JOYPAD_DEFAULT_DRIVER = JOYPAD_NULL; +#endif + +#if defined(HAVE_V4L2) +static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_V4L2; +#elif defined(EMSCRIPTEN) +static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_RWEBCAM; +#elif defined(ANDROID) +static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_ANDROID; +#elif defined(HAVE_AVFOUNDATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)) +static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_AVFOUNDATION; +#else +static enum camera_driver_enum CAMERA_DEFAULT_DRIVER = CAMERA_NULL; +#endif + +#if defined(HAVE_LAKKA) +static enum wifi_driver_enum WIFI_DEFAULT_DRIVER = WIFI_CONNMANCTL; +#else +static enum wifi_driver_enum WIFI_DEFAULT_DRIVER = WIFI_NULL; +#endif + +#if defined(ANDROID) +static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_ANDROID; +#elif defined(HAVE_CORELOCATION) && (defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)) +static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_CORELOCATION; +#else +static enum location_driver_enum LOCATION_DEFAULT_DRIVER = LOCATION_NULL; +#endif + +#if defined(HAVE_XUI) +static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XUI; +#elif defined(HAVE_MATERIALUI) && defined(RARCH_MOBILE) +static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_MATERIALUI; +#elif defined(HAVE_XMB) +static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_XMB; +#elif defined(HAVE_RGUI) +static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_RGUI; +#else +static enum menu_driver_enum MENU_DEFAULT_DRIVER = MENU_NULL; +#endif + + #define GENERAL_SETTING(key, configval, default_enable, default_setting, type, handle_setting) \ { \ tmp[count].ident = key; \ diff --git a/griffin/griffin.c b/griffin/griffin.c index cd66acbc9c..5be8e8af3a 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -134,7 +134,7 @@ ACHIEVEMENTS #include "../libretro-common/formats/json/jsonsax.c" #include "../network/net_http_special.c" -#include "../tasks/task_cheevos.c" +#include "../cheevos/cheevos.c" #endif /*============================================================ diff --git a/libretro-common/audio/audio_mixer.c b/libretro-common/audio/audio_mixer.c index 796d725068..f5b5d038c0 100644 --- a/libretro-common/audio/audio_mixer.c +++ b/libretro-common/audio/audio_mixer.c @@ -425,10 +425,10 @@ audio_mixer_voice_t* audio_mixer_play(audio_mixer_sound_t* sound, bool repeat, float volume, audio_mixer_stop_cb_t stop_cb) { unsigned i; - audio_mixer_voice_t* voice = NULL; bool res = false; + audio_mixer_voice_t* voice = s_voices; - for (i = 0, voice = s_voices; i < AUDIO_MIXER_MAX_VOICES; i++, voice++) + for (i = 0; i < AUDIO_MIXER_MAX_VOICES; i++, voice++) { if (voice->type == AUDIO_MIXER_TYPE_NONE) { @@ -455,7 +455,8 @@ audio_mixer_voice_t* audio_mixer_play(audio_mixer_sound_t* sound, bool repeat, void audio_mixer_stop(audio_mixer_voice_t* voice) { - voice->stop_cb(voice, AUDIO_MIXER_SOUND_STOPPED); + if (voice && voice->stop_cb) + voice->stop_cb(voice, AUDIO_MIXER_SOUND_STOPPED); } static void mix_wav(float* buffer, size_t num_frames, audio_mixer_voice_t* voice) @@ -579,9 +580,9 @@ void audio_mixer_mix(float* buffer, size_t num_frames) unsigned i; size_t j = 0; float* sample = NULL; - audio_mixer_voice_t* voice = NULL; + audio_mixer_voice_t* voice = s_voices; - for (i = 0, voice = s_voices; i < AUDIO_MIXER_MAX_VOICES; i++, voice++) + for (i = 0; i < AUDIO_MIXER_MAX_VOICES; i++, voice++) { if (voice->type == AUDIO_MIXER_TYPE_WAV) mix_wav(buffer, num_frames, voice); diff --git a/movie.c b/movie.c index 0f57076b61..5b3179b82b 100644 --- a/movie.c +++ b/movie.c @@ -73,7 +73,7 @@ static struct bsv_state bsv_movie_state; static bool bsv_movie_init_playback(bsv_movie_t *handle, const char *path) { - uint32_t state_size; + uint32_t state_size = 0; uint32_t content_crc = 0; uint32_t header[4] = {0}; RFILE *file = filestream_open(path, RFILE_MODE_READ, -1); @@ -149,7 +149,7 @@ static bool bsv_movie_init_playback(bsv_movie_t *handle, const char *path) static bool bsv_movie_init_record(bsv_movie_t *handle, const char *path) { retro_ctx_size_info_t info; - uint32_t state_size; + uint32_t state_size = 0; uint32_t content_crc = 0; uint32_t header[4] = {0}; RFILE *file = filestream_open(path, RFILE_MODE_WRITE, -1); @@ -464,9 +464,11 @@ void bsv_movie_set_start_path(const char *path) bool bsv_movie_init_handle(const char *path, enum rarch_movie_type type) { - bsv_movie_state_handle = bsv_movie_init_internal(path, type); - if (!bsv_movie_state_handle) + bsv_movie_t *state = bsv_movie_init_internal(path, type); + if (!state) return false; + + bsv_movie_state_handle = state; return true; } @@ -536,24 +538,20 @@ static bool runloop_check_movie_init(void) bsv_movie_init_handle(path, RARCH_MOVIE_RECORD); if (!bsv_movie_state_handle) - return false; - - if (bsv_movie_state_handle) - { - runloop_msg_queue_push(msg, 2, 180, true); - RARCH_LOG("%s \"%s\".\n", - msg_hash_to_str(MSG_STARTING_MOVIE_RECORD_TO), - path); - } - else { runloop_msg_queue_push( msg_hash_to_str(MSG_FAILED_TO_START_MOVIE_RECORD), 2, 180, true); RARCH_ERR("%s\n", msg_hash_to_str(MSG_FAILED_TO_START_MOVIE_RECORD)); + return false; } + runloop_msg_queue_push(msg, 2, 180, true); + RARCH_LOG("%s \"%s\".\n", + msg_hash_to_str(MSG_STARTING_MOVIE_RECORD_TO), + path); + return true; } diff --git a/network/httpserver/httpserver.c b/network/httpserver/httpserver.c index c46ba87f2f..77b7c79a16 100644 --- a/network/httpserver/httpserver.c +++ b/network/httpserver/httpserver.c @@ -29,7 +29,7 @@ #include "../../core.h" #include "../../gfx/video_driver.h" #include "../../managers/core_option_manager.h" -#include "../../tasks/task_cheevos.h" +#include "../../cheevos/cheevos.h" #include "../../content.h" #define BASIC_INFO "info" diff --git a/retroarch.c b/retroarch.c index 2de763d56c..259827db50 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1044,7 +1044,8 @@ bool retroarch_main_init(int argc, char *argv[]) return false; } - rarch_ctl(RARCH_CTL_SET_ERROR_ON_INIT, NULL); + rarch_error_on_init = true; + retro_main_log_file_init(NULL); retroarch_parse_input(argc, argv); @@ -1116,14 +1117,14 @@ bool retroarch_main_init(int argc, char *argv[]) command_event(CMD_EVENT_SET_PER_GAME_RESOLUTION, NULL); - rarch_ctl(RARCH_CTL_UNSET_ERROR_ON_INIT, NULL); - rarch_ctl(RARCH_CTL_SET_INITED, NULL); + rarch_error_on_init = false; + rarch_is_inited = true; return true; error: command_event(CMD_EVENT_CORE_DEINIT, NULL); - rarch_ctl(RARCH_CTL_UNSET_INITED, NULL); + rarch_is_inited = false; return false; } @@ -1190,12 +1191,6 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data) return has_set_username; case RARCH_CTL_IS_INITED: return rarch_is_inited; - case RARCH_CTL_UNSET_INITED: - rarch_is_inited = false; - break; - case RARCH_CTL_SET_INITED: - rarch_is_inited = true; - break; case RARCH_CTL_DESTROY: has_set_username = false; rarch_is_inited = false; @@ -1250,7 +1245,7 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data) path_deinit_subsystem(); path_deinit_savefile(); - rarch_ctl(RARCH_CTL_UNSET_INITED, NULL); + rarch_is_inited = false; #ifdef HAVE_THREAD_STORAGE sthread_tls_delete(&rarch_tls); @@ -1313,14 +1308,6 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data) case RARCH_CTL_UNSET_SRAM_ENABLE: rarch_use_sram = false; break; - case RARCH_CTL_SET_ERROR_ON_INIT: - rarch_error_on_init = true; - break; - case RARCH_CTL_UNSET_ERROR_ON_INIT: - rarch_error_on_init = false; - break; - case RARCH_CTL_IS_ERROR_ON_INIT: - return rarch_error_on_init; case RARCH_CTL_SET_FORCE_FULLSCREEN: rarch_force_fullscreen = true; break; @@ -1671,8 +1658,28 @@ void retroarch_fail(int error_code, const char *error) /* We cannot longjmp unless we're in retroarch_main_init(). * If not, something went very wrong, and we should * just exit right away. */ - retro_assert(rarch_ctl(RARCH_CTL_IS_ERROR_ON_INIT, NULL)); + retro_assert(rarch_error_on_init); strlcpy(error_string, error, sizeof(error_string)); longjmp(error_sjlj_context, error_code); } + +bool retroarch_main_quit(void) +{ + command_event(CMD_EVENT_AUTOSAVE_STATE, NULL); + command_event(CMD_EVENT_DISABLE_OVERRIDES, NULL); + command_event(CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET, NULL); + +#ifdef HAVE_DYNAMIC +#ifdef HAVE_MENU + menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_DEINIT, NULL); +#endif +#endif + + runloop_ctl(RUNLOOP_CTL_SET_SHUTDOWN, NULL); +#ifdef HAVE_MENU + rarch_ctl(RARCH_CTL_MENU_RUNNING_FINISHED, NULL); +#endif + + return true; +} diff --git a/retroarch.h b/retroarch.h index 32d9a860aa..3e22d5ac08 100644 --- a/retroarch.h +++ b/retroarch.h @@ -39,10 +39,6 @@ enum rarch_ctl_state /* Deinitializes RetroArch. */ RARCH_CTL_MAIN_DEINIT, - RARCH_CTL_UNSET_INITED, - - RARCH_CTL_SET_INITED, - RARCH_CTL_IS_INITED, RARCH_CTL_IS_PLAIN_CORE, @@ -98,11 +94,6 @@ enum rarch_ctl_state RARCH_CTL_UNSET_BLOCK_CONFIG_READ, RARCH_CTL_IS_BLOCK_CONFIG_READ, - /* Error */ - RARCH_CTL_SET_ERROR_ON_INIT, - RARCH_CTL_UNSET_ERROR_ON_INIT, - RARCH_CTL_IS_ERROR_ON_INIT, - /* Username */ RARCH_CTL_HAS_SET_USERNAME, RARCH_CTL_USERNAME_SET, @@ -191,6 +182,8 @@ void retroarch_fail(int error_code, const char *error); **/ bool retroarch_main_init(int argc, char *argv[]); +bool retroarch_main_quit(void); + RETRO_END_DECLS #endif diff --git a/runloop.c b/runloop.c index a46fc524ae..0e3a8dc44f 100644 --- a/runloop.c +++ b/runloop.c @@ -56,6 +56,7 @@ #endif #include "autosave.h" +#include "command.h" #include "configuration.h" #include "driver.h" #include "movie.h" @@ -447,14 +448,6 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) runloop_idle = *ptr; } break; - case RUNLOOP_CTL_SET_SLOWMOTION: - { - bool *ptr = (bool*)data; - if (!ptr) - return false; - runloop_slowmotion = *ptr; - } - break; case RUNLOOP_CTL_SET_PAUSED: { bool *ptr = (bool*)data; @@ -516,9 +509,6 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) break; case RUNLOOP_CTL_IS_SHUTDOWN: return runloop_shutdown_initiated; - case RUNLOOP_CTL_SET_EXEC: - runloop_exec = true; - break; case RUNLOOP_CTL_DATA_DEINIT: task_queue_deinit(); break; @@ -750,7 +740,10 @@ static enum runloop_state runloop_check_state( content_info.environ_get = NULL; if (!task_push_start_dummy_core(&content_info)) + { + retroarch_main_quit(); return RUNLOOP_STATE_QUIT; + } /* Loads dummy core instead of exiting RetroArch completely. * Aborts core shutdown if invoked. */ @@ -758,7 +751,10 @@ static enum runloop_state runloop_check_state( runloop_core_shutdown_initiated = false; } else + { + retroarch_main_quit(); return RUNLOOP_STATE_QUIT; + } } #ifdef HAVE_MENU diff --git a/runloop.h b/runloop.h index f2899307f2..363dae314e 100644 --- a/runloop.h +++ b/runloop.h @@ -68,8 +68,6 @@ enum runloop_ctl_state RUNLOOP_CTL_SET_LIBRETRO_PATH, - RUNLOOP_CTL_SET_SLOWMOTION, - RUNLOOP_CTL_IS_PAUSED, RUNLOOP_CTL_SET_PAUSED, RUNLOOP_CTL_SET_MAX_FRAMES, @@ -80,8 +78,6 @@ enum runloop_ctl_state RUNLOOP_CTL_SET_SHUTDOWN, RUNLOOP_CTL_IS_SHUTDOWN, - RUNLOOP_CTL_SET_EXEC, - /* Runloop state */ RUNLOOP_CTL_CLEAR_STATE, RUNLOOP_CTL_STATE_FREE, diff --git a/tasks/task_content.c b/tasks/task_content.c index 780dd7eac1..77caf2358b 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -1051,10 +1051,10 @@ bool task_push_start_dummy_core(content_ctx_info_t *content_info) /* Preliminary stuff that has to be done before we * load the actual content. Can differ per mode. */ - runloop_ctl(RUNLOOP_CTL_STATE_FREE, NULL); #ifdef HAVE_MENU menu_driver_ctl(RARCH_MENU_CTL_UNSET_LOAD_NO_CONTENT, NULL); #endif + runloop_ctl(RUNLOOP_CTL_STATE_FREE, NULL); runloop_ctl(RUNLOOP_CTL_DATA_DEINIT, NULL); runloop_ctl(RUNLOOP_CTL_TASK_INIT, NULL);