diff --git a/input/input_driver.c b/input/input_driver.c index 714cbd0b98..cadd4e366f 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -862,7 +862,7 @@ static int16_t input_joypad_axis( const input_device_driver_t *drv, unsigned port, uint32_t joyaxis, float normal_mag) { - int16_t val = ((joyaxis != AXIS_NONE) && drv) ? drv->axis(port, joyaxis) : 0; + int16_t val = ((joyaxis != AXIS_NONE) && drv && drv->axis) ? drv->axis(port, joyaxis) : 0; if (input_analog_deadzone) { diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index cc71dfe0c7..22e5f10165 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -11314,6 +11314,7 @@ static void materialui_list_insert(void *userdata, node->thumbnails.secondary.height = 0; node->thumbnails.secondary.alpha = 0.0f; node->thumbnails.secondary.delay_timer = 0.0f; + node->thumbnails.secondary.flags = 0; node->thumbnails.secondary.flags &= ~GFX_THUMB_FLAG_FADE_ACTIVE; } else diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 4ddcf3e7b4..d55836b56b 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -3552,7 +3552,9 @@ static void ozone_draw_sidebar( { enum msg_hash_enums value_idx = ozone_system_tabs_value[ozone->tabs[i]]; const char *title = msg_hash_to_str(value_idx); - uint32_t text_color = selected + uint32_t text_color = 0; + if (ozone->theme) + text_color = selected ? COLOR_TEXT_ALPHA(ozone->theme->text_selected_rgba, text_alpha) : COLOR_TEXT_ALPHA(ozone->theme->text_sidebar_rgba, text_alpha); gfx_display_draw_text( @@ -3609,7 +3611,9 @@ static void ozone_draw_sidebar( ozone_node_t *node = (ozone_node_t*)ozone->horizontal_list.list[i].userdata; float *col = NULL; bool selected = (ozone->categories_selection_ptr == ozone->system_tab_end + 1 + i); - uint32_t text_color = COLOR_TEXT_ALPHA((selected + uint32_t text_color = 0; + if (ozone->theme) + text_color = COLOR_TEXT_ALPHA((selected ? ozone->theme->text_selected_rgba : ozone->theme->text_sidebar_rgba), text_alpha); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 3d21aaec8d..e2b4104678 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -15420,7 +15420,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, { if (new_exts[_len-1] != '\0') _len += strlcpy(new_exts + _len, "|", sizeof(new_exts) - _len); - _len += strlcpy(new_exts + _len, "slangp", sizeof(new_exts) - _len); + strlcpy(new_exts + _len, "slangp", sizeof(new_exts) - _len); } break; diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 0faae2fd0a..c5c17358fc 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -6314,6 +6314,8 @@ void menu_driver_toggle( bool input_overlay_enable = false; #endif bool video_adaptive_vsync = false; + bool video_vsync = false; + bool video_frame_delay_auto = false; if (settings) { @@ -6330,6 +6332,9 @@ void menu_driver_toggle( input_overlay_hide_in_menu = settings->bools.input_overlay_hide_in_menu; input_overlay_enable = settings->bools.input_overlay_enable; #endif + video_adaptive_vsync = settings->bools.video_adaptive_vsync; + video_vsync = settings->bools.video_vsync; + video_frame_delay_auto = settings->bools.video_frame_delay_auto; } if (on) @@ -6368,7 +6373,7 @@ void menu_driver_toggle( if (menu_driver_alive) { - video_adaptive_vsync = settings->bools.video_adaptive_vsync + video_adaptive_vsync = video_adaptive_vsync && video_driver_test_all_flags(GFX_CTX_FLAGS_ADAPTIVE_VSYNC); #ifdef WIIU @@ -6379,7 +6384,7 @@ void menu_driver_toggle( menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH; /* Menu should always run with swap interval 1 if vsync is on. */ - if ( settings->bools.video_vsync + if ( video_vsync && current_video->set_nonblock_state) current_video->set_nonblock_state( video_driver_data, diff --git a/menu/menu_explore.c b/menu/menu_explore.c index 85b8a9a20b..038f4bf7ff 100644 --- a/menu/menu_explore.c +++ b/menu/menu_explore.c @@ -598,17 +598,20 @@ explore_state_t *menu_explore_build_list(const char *directory_playlist, continue; rdb = &rdbs[rdb_num - 1]; - rdb->count++; - entry_crc32 = (uint32_t)strtoul( - (entry->crc32 ? entry->crc32 : ""), NULL, 16); - src.source = entry; - if (entry_crc32) + if (rdb) { - RHMAP_SET(rdb->playlist_crcs, entry_crc32, src); - } - else - { - RHMAP_SET_STR(rdb->playlist_names, entry->label, src); + rdb->count++; + entry_crc32 = (uint32_t)strtoul( + (entry->crc32 ? entry->crc32 : ""), NULL, 16); + src.source = entry; + if (entry_crc32) + { + RHMAP_SET(rdb->playlist_crcs, entry_crc32, src); + } + else + { + RHMAP_SET_STR(rdb->playlist_names, entry->label, src); + } } used_entries++; } diff --git a/retroarch.c b/retroarch.c index de9120e734..b5b2a24470 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2129,7 +2129,7 @@ struct string_list *dir_list_new_special(const char *input_dir, _len += strlcpy(ext_shaders + _len, "slangp", sizeof(ext_shaders) - _len); if (ext_shaders[_len-1] != '\0') _len += strlcpy(ext_shaders + _len, "|", sizeof(ext_shaders) - _len); - _len += strlcpy(ext_shaders + _len, "slang", sizeof(ext_shaders) - _len); + strlcpy(ext_shaders + _len, "slang", sizeof(ext_shaders) - _len); } exts = ext_shaders; @@ -4251,11 +4251,14 @@ bool command_event(enum event_command cmd, void *data) * runtime variables, otherwise runahead will * remain disabled until the user restarts * RetroArch */ - if (!(runloop_st->flags & RUNLOOP_FLAG_RUNAHEAD_AVAILABLE)) - runahead_clear_variables(runloop_st); + if (runloop_st) + { + if (!(runloop_st->flags & RUNLOOP_FLAG_RUNAHEAD_AVAILABLE)) + runahead_clear_variables(runloop_st); - /* Deallocate preemptive frames */ - preempt_deinit(runloop_st); + /* Deallocate preemptive frames */ + preempt_deinit(runloop_st); + } #endif if (hwr) @@ -4797,6 +4800,7 @@ bool command_event(enum event_command cmd, void *data) /* init netplay manually */ case CMD_EVENT_NETPLAY_INIT: { + bool ret; char tmp_netplay_server[256]; char tmp_netplay_session[256]; char *netplay_server = NULL; @@ -4829,16 +4833,19 @@ bool command_event(enum event_command cmd, void *data) if (!netplay_port) netplay_port = settings->uints.netplay_port; - if (!init_netplay(netplay_server, netplay_port, netplay_session)) + ret = init_netplay(netplay_server, netplay_port, netplay_session); + + if (netplay_session) + free(netplay_session); + netplay_session = NULL; + + if (!ret) { command_event(CMD_EVENT_NETPLAY_DEINIT, NULL); if (p_rarch->connect_mitm_id) { free(p_rarch->connect_mitm_id); - if (netplay_session) - free(netplay_session); p_rarch->connect_mitm_id = NULL; - netplay_session = NULL; } return false; } @@ -4846,9 +4853,7 @@ bool command_event(enum event_command cmd, void *data) if (p_rarch->connect_mitm_id) { free(p_rarch->connect_mitm_id); - free(netplay_session); p_rarch->connect_mitm_id = NULL; - netplay_session = NULL; } /* Disable rewind & SRAM autosave if it was enabled @@ -6566,7 +6571,7 @@ static void retroarch_print_help(const char *arg0) , sizeof(buf) - _len); #endif - _len = strlcpy(buf + _len, + strlcpy(buf + _len, " -f, --fullscreen " "Start the program in fullscreen regardless of config setting.\n" " --set-shader=PATH " diff --git a/tasks/task_autodetect.c b/tasks/task_autodetect.c index bf8a73109a..d2b0fe18a5 100644 --- a/tasks/task_autodetect.c +++ b/tasks/task_autodetect.c @@ -1074,6 +1074,7 @@ bool input_autoconfigure_disconnect(unsigned port, const char *name) input_driver_state_t *input_st = input_state_get_ptr(); bool notification_show_autoconfig = settings ? settings->bools.notification_show_autoconfig : true; bool pause_on_disconnect = settings ? settings->bools.pause_on_disconnect : true; + bool menu_pause_libretro = settings ? settings->bools.menu_pause_libretro : false; bool core_is_running = (runloop_state_get_ptr()->flags & RUNLOOP_FLAG_CORE_RUNNING) ? true : false; if (port >= MAX_INPUT_DEVICES) @@ -1122,8 +1123,8 @@ bool input_autoconfigure_disconnect(unsigned port, const char *name) if (pause_on_disconnect && core_is_running) { #ifdef HAVE_MENU - bool menu_pause_libretro = settings->bools.menu_pause_libretro; - bool menu_is_alive = (menu_state_get_ptr()->flags & MENU_ST_FLAG_ALIVE) ? true : false; + bool menu_is_alive = (menu_state_get_ptr()->flags & MENU_ST_FLAG_ALIVE) + ? true : false; if (menu_pause_libretro && !menu_is_alive) command_event(CMD_EVENT_MENU_TOGGLE, NULL); diff --git a/tasks/task_save.c b/tasks/task_save.c index d46ed636fe..f94c23acb5 100644 --- a/tasks/task_save.c +++ b/tasks/task_save.c @@ -566,10 +566,8 @@ static void task_save_handler(retro_task_t *task) task_set_error(task, strdup(msg)); task_save_handler_finished(task, state); - return; } - - if (state->written == state->size) + else if (state->written == state->size) { char *msg = NULL;