Skip to content

Commit 73abadd

Browse files
authored
GLUI: Add save state thumbnails (#17592)
1 parent cd85a4d commit 73abadd

File tree

12 files changed

+1659
-848
lines changed

12 files changed

+1659
-848
lines changed

gfx/gfx_thumbnail.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
#include "../tasks/tasks_internal.h"
3737

38-
#define DEFAULT_GFX_THUMBNAIL_STREAM_DELAY 83.333333f
38+
#define DEFAULT_GFX_THUMBNAIL_STREAM_DELAY 16.66667f * 3
3939
#define DEFAULT_GFX_THUMBNAIL_FADE_DURATION 166.66667f
4040

4141
/* Utility structure, sent as userdata when pushing
@@ -886,6 +886,16 @@ void gfx_thumbnail_get_draw_dimensions(
886886
*draw_width = *draw_width / (thumbnail_aspect / core_aspect);
887887
}
888888

889+
/* Final overwidth check */
890+
if (*draw_width > width)
891+
{
892+
*draw_width = (float)width;
893+
*draw_height = (float)thumbnail->height * (*draw_width / (float)thumbnail->width);
894+
895+
if (thumbnail->flags & GFX_THUMB_FLAG_CORE_ASPECT)
896+
*draw_height = *draw_height * (thumbnail_aspect / core_aspect);
897+
}
898+
889899
/* Account for scale factor
890900
* > Side note: We cannot use the gfx_display_ctx_draw_t
891901
* 'scale_factor' parameter for scaling thumbnails,

menu/cbs/menu_cbs_cancel.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,6 @@ int action_cancel_pop_default(const char *path,
8383
new_selection_ptr = menu_st->selection_ptr;
8484
menu_entries_pop_stack(&new_selection_ptr, 0, 1);
8585
menu_st->selection_ptr = new_selection_ptr;
86-
87-
if (menu_st->driver_ctx)
88-
{
89-
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
90-
menu_st->driver_ctx->update_savestate_thumbnail_path(
91-
menu_st->userdata, (unsigned)selection);
92-
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
93-
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
94-
}
95-
9686
return 0;
9787
}
9888

menu/cbs/menu_cbs_left.c

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -951,25 +951,25 @@ static int action_left_video_gpu_index(unsigned type, const char *label,
951951
static int action_left_state_slot(unsigned type, const char *label,
952952
bool wraparound)
953953
{
954-
struct menu_state *menu_st = menu_state_get_ptr();
955-
settings_t *settings = config_get_ptr();
954+
struct menu_state *menu_st = menu_state_get_ptr();
955+
settings_t *settings = config_get_ptr();
956956

957957
settings->ints.state_slot--;
958958
if (settings->ints.state_slot < -1)
959959
settings->ints.state_slot = 999;
960960

961961
if (menu_st->driver_ctx)
962962
{
963-
size_t selection = menu_st->selection_ptr;
964963
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
965964
menu_st->driver_ctx->update_savestate_thumbnail_path(
966-
menu_st->userdata, (unsigned)selection);
965+
menu_st->userdata, (unsigned)menu_st->selection_ptr);
967966
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
968967
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
969968
}
970969

971970
return 0;
972971
}
972+
973973
static int action_left_replay_slot(unsigned type, const char *label,
974974
bool wraparound)
975975
{
@@ -980,16 +980,6 @@ static int action_left_replay_slot(unsigned type, const char *label,
980980
if (settings->ints.replay_slot < -1)
981981
settings->ints.replay_slot = 999;
982982

983-
if (menu_st->driver_ctx)
984-
{
985-
size_t selection = menu_st->selection_ptr;
986-
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
987-
menu_st->driver_ctx->update_savestate_thumbnail_path(
988-
menu_st->userdata, (unsigned)selection);
989-
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
990-
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
991-
}
992-
993983
return 0;
994984
}
995985

@@ -1103,6 +1093,9 @@ static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs,
11031093
case MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_CORE_NAME:
11041094
BIND_ACTION_LEFT(cbs, manual_content_scan_core_name_left);
11051095
break;
1096+
case MENU_ENUM_LABEL_STATE_SLOT:
1097+
BIND_ACTION_LEFT(cbs, action_left_state_slot);
1098+
break;
11061099
#ifdef HAVE_LAKKA
11071100
case MENU_ENUM_LABEL_CPU_PERF_MODE:
11081101
BIND_ACTION_LEFT(cbs, cpu_policy_mode_change);

menu/cbs/menu_cbs_ok.c

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4687,15 +4687,6 @@ static int action_ok_cheat_delete(const char *path,
46874687
menu_entries_pop_stack(&new_selection_ptr, 0, 1);
46884688
menu_st->selection_ptr = new_selection_ptr;
46894689

4690-
if (menu_st->driver_ctx)
4691-
{
4692-
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
4693-
menu_st->driver_ctx->update_savestate_thumbnail_path(
4694-
menu_st->userdata, (unsigned)selection);
4695-
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
4696-
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
4697-
}
4698-
46994690
return 0;
47004691
}
47014692
#endif

menu/cbs/menu_cbs_right.c

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -951,19 +951,18 @@ static int disk_options_disk_idx_right(unsigned type, const char *label,
951951
static int action_right_state_slot(unsigned type, const char *label,
952952
bool wraparound)
953953
{
954-
settings_t *settings = config_get_ptr();
955954
struct menu_state *menu_st = menu_state_get_ptr();
955+
settings_t *settings = config_get_ptr();
956956

957957
settings->ints.state_slot++;
958958
if (settings->ints.state_slot > 999)
959959
settings->ints.state_slot = -1;
960960

961961
if (menu_st->driver_ctx)
962962
{
963-
size_t selection = menu_st->selection_ptr;
964963
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
965964
menu_st->driver_ctx->update_savestate_thumbnail_path(
966-
menu_st->userdata, (unsigned)selection);
965+
menu_st->userdata, (unsigned)menu_st->selection_ptr);
967966
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
968967
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
969968
}
@@ -975,22 +974,12 @@ static int action_right_replay_slot(unsigned type, const char *label,
975974
bool wraparound)
976975
{
977976
struct menu_state *menu_st = menu_state_get_ptr();
978-
size_t selection = menu_st->selection_ptr;
979977
settings_t *settings = config_get_ptr();
980978

981979
settings->ints.replay_slot++;
982980
if (settings->ints.replay_slot > 999)
983981
settings->ints.replay_slot = -1;
984982

985-
if (menu_st->driver_ctx)
986-
{
987-
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
988-
menu_st->driver_ctx->update_savestate_thumbnail_path(
989-
menu_st->userdata, (unsigned)selection);
990-
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
991-
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
992-
}
993-
994983
return 0;
995984
}
996985

@@ -1242,6 +1231,9 @@ static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs,
12421231
case MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_CORE_NAME:
12431232
BIND_ACTION_RIGHT(cbs, manual_content_scan_core_name_right);
12441233
break;
1234+
case MENU_ENUM_LABEL_STATE_SLOT:
1235+
BIND_ACTION_RIGHT(cbs, action_right_state_slot);
1236+
break;
12451237
#ifdef HAVE_LAKKA
12461238
case MENU_ENUM_LABEL_CPU_PERF_MODE:
12471239
BIND_ACTION_RIGHT(cbs, cpu_policy_mode_change);

menu/cbs/menu_cbs_start.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,6 @@ static int action_start_state_slot(
485485
unsigned type, size_t idx, size_t entry_idx)
486486
{
487487
struct menu_state *menu_st = menu_state_get_ptr();
488-
size_t selection = menu_st->selection_ptr;
489488
settings_t *settings = config_get_ptr();
490489

491490
settings->ints.state_slot = 0;
@@ -494,7 +493,7 @@ static int action_start_state_slot(
494493
{
495494
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
496495
menu_st->driver_ctx->update_savestate_thumbnail_path(
497-
menu_st->userdata, (unsigned)selection);
496+
menu_st->userdata, (unsigned)menu_st->selection_ptr);
498497
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
499498
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
500499
}

0 commit comments

Comments
 (0)