Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GLUI: Add save state thumbnails #17592

Merged
merged 1 commit into from
Feb 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion gfx/gfx_thumbnail.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

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

#define DEFAULT_GFX_THUMBNAIL_STREAM_DELAY 83.333333f
#define DEFAULT_GFX_THUMBNAIL_STREAM_DELAY 16.66667f * 3
#define DEFAULT_GFX_THUMBNAIL_FADE_DURATION 166.66667f

/* Utility structure, sent as userdata when pushing
Expand Down Expand Up @@ -886,6 +886,16 @@ void gfx_thumbnail_get_draw_dimensions(
*draw_width = *draw_width / (thumbnail_aspect / core_aspect);
}

/* Final overwidth check */
if (*draw_width > width)
{
*draw_width = (float)width;
*draw_height = (float)thumbnail->height * (*draw_width / (float)thumbnail->width);

if (thumbnail->flags & GFX_THUMB_FLAG_CORE_ASPECT)
*draw_height = *draw_height * (thumbnail_aspect / core_aspect);
}

/* Account for scale factor
* > Side note: We cannot use the gfx_display_ctx_draw_t
* 'scale_factor' parameter for scaling thumbnails,
Expand Down
10 changes: 0 additions & 10 deletions menu/cbs/menu_cbs_cancel.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,16 +83,6 @@ int action_cancel_pop_default(const char *path,
new_selection_ptr = menu_st->selection_ptr;
menu_entries_pop_stack(&new_selection_ptr, 0, 1);
menu_st->selection_ptr = new_selection_ptr;

if (menu_st->driver_ctx)
{
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
menu_st->driver_ctx->update_savestate_thumbnail_path(
menu_st->userdata, (unsigned)selection);
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
}

return 0;
}

Expand Down
21 changes: 7 additions & 14 deletions menu/cbs/menu_cbs_left.c
Original file line number Diff line number Diff line change
Expand Up @@ -951,25 +951,25 @@ static int action_left_video_gpu_index(unsigned type, const char *label,
static int action_left_state_slot(unsigned type, const char *label,
bool wraparound)
{
struct menu_state *menu_st = menu_state_get_ptr();
settings_t *settings = config_get_ptr();
struct menu_state *menu_st = menu_state_get_ptr();
settings_t *settings = config_get_ptr();

settings->ints.state_slot--;
if (settings->ints.state_slot < -1)
settings->ints.state_slot = 999;

if (menu_st->driver_ctx)
{
size_t selection = menu_st->selection_ptr;
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
menu_st->driver_ctx->update_savestate_thumbnail_path(
menu_st->userdata, (unsigned)selection);
menu_st->userdata, (unsigned)menu_st->selection_ptr);
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
}

return 0;
}

static int action_left_replay_slot(unsigned type, const char *label,
bool wraparound)
{
Expand All @@ -980,16 +980,6 @@ static int action_left_replay_slot(unsigned type, const char *label,
if (settings->ints.replay_slot < -1)
settings->ints.replay_slot = 999;

if (menu_st->driver_ctx)
{
size_t selection = menu_st->selection_ptr;
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
menu_st->driver_ctx->update_savestate_thumbnail_path(
menu_st->userdata, (unsigned)selection);
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
}

return 0;
}

Expand Down Expand Up @@ -1103,6 +1093,9 @@ static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_CORE_NAME:
BIND_ACTION_LEFT(cbs, manual_content_scan_core_name_left);
break;
case MENU_ENUM_LABEL_STATE_SLOT:
BIND_ACTION_LEFT(cbs, action_left_state_slot);
break;
#ifdef HAVE_LAKKA
case MENU_ENUM_LABEL_CPU_PERF_MODE:
BIND_ACTION_LEFT(cbs, cpu_policy_mode_change);
Expand Down
9 changes: 0 additions & 9 deletions menu/cbs/menu_cbs_ok.c
Original file line number Diff line number Diff line change
Expand Up @@ -4687,15 +4687,6 @@ static int action_ok_cheat_delete(const char *path,
menu_entries_pop_stack(&new_selection_ptr, 0, 1);
menu_st->selection_ptr = new_selection_ptr;

if (menu_st->driver_ctx)
{
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
menu_st->driver_ctx->update_savestate_thumbnail_path(
menu_st->userdata, (unsigned)selection);
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
}

return 0;
}
#endif
Expand Down
18 changes: 5 additions & 13 deletions menu/cbs/menu_cbs_right.c
Original file line number Diff line number Diff line change
Expand Up @@ -951,19 +951,18 @@ static int disk_options_disk_idx_right(unsigned type, const char *label,
static int action_right_state_slot(unsigned type, const char *label,
bool wraparound)
{
settings_t *settings = config_get_ptr();
struct menu_state *menu_st = menu_state_get_ptr();
settings_t *settings = config_get_ptr();

settings->ints.state_slot++;
if (settings->ints.state_slot > 999)
settings->ints.state_slot = -1;

if (menu_st->driver_ctx)
{
size_t selection = menu_st->selection_ptr;
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
menu_st->driver_ctx->update_savestate_thumbnail_path(
menu_st->userdata, (unsigned)selection);
menu_st->userdata, (unsigned)menu_st->selection_ptr);
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
}
Expand All @@ -975,22 +974,12 @@ static int action_right_replay_slot(unsigned type, const char *label,
bool wraparound)
{
struct menu_state *menu_st = menu_state_get_ptr();
size_t selection = menu_st->selection_ptr;
settings_t *settings = config_get_ptr();

settings->ints.replay_slot++;
if (settings->ints.replay_slot > 999)
settings->ints.replay_slot = -1;

if (menu_st->driver_ctx)
{
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
menu_st->driver_ctx->update_savestate_thumbnail_path(
menu_st->userdata, (unsigned)selection);
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
}

return 0;
}

Expand Down Expand Up @@ -1242,6 +1231,9 @@ static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_CORE_NAME:
BIND_ACTION_RIGHT(cbs, manual_content_scan_core_name_right);
break;
case MENU_ENUM_LABEL_STATE_SLOT:
BIND_ACTION_RIGHT(cbs, action_right_state_slot);
break;
#ifdef HAVE_LAKKA
case MENU_ENUM_LABEL_CPU_PERF_MODE:
BIND_ACTION_RIGHT(cbs, cpu_policy_mode_change);
Expand Down
3 changes: 1 addition & 2 deletions menu/cbs/menu_cbs_start.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,6 @@ static int action_start_state_slot(
unsigned type, size_t idx, size_t entry_idx)
{
struct menu_state *menu_st = menu_state_get_ptr();
size_t selection = menu_st->selection_ptr;
settings_t *settings = config_get_ptr();

settings->ints.state_slot = 0;
Expand All @@ -494,7 +493,7 @@ static int action_start_state_slot(
{
if (menu_st->driver_ctx->update_savestate_thumbnail_path)
menu_st->driver_ctx->update_savestate_thumbnail_path(
menu_st->userdata, (unsigned)selection);
menu_st->userdata, (unsigned)menu_st->selection_ptr);
if (menu_st->driver_ctx->update_savestate_thumbnail_image)
menu_st->driver_ctx->update_savestate_thumbnail_image(menu_st->userdata);
}
Expand Down
Loading
Loading