Skip to content

Commit a897da3

Browse files
committed
Reapply "Use RETRO_SAVESTATE_CONTEXT_RUNAHEAD_SAME_INSTANCE for rewind savesta…" (#18383)
This reverts commit b550976.
1 parent cf3c678 commit a897da3

3 files changed

Lines changed: 27 additions & 14 deletions

File tree

runloop.c

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3150,29 +3150,37 @@ bool runloop_environment_cb(unsigned cmd, void *data)
31503150
{
31513151
int result = RETRO_SAVESTATE_CONTEXT_NORMAL;
31523152

3153-
#if defined(HAVE_RUNAHEAD) || defined(HAVE_NETWORKING)
3154-
if (runloop_st->flags & RUNLOOP_FLAG_REQUEST_SPECIAL_SAVESTATE)
3153+
#ifdef HAVE_REWIND
3154+
if (runloop_st->rewind_st.flags &
3155+
STATE_MGR_REWIND_ST_FLAG_IS_REWIND_SERIALIZE)
3156+
result = RETRO_SAVESTATE_CONTEXT_RUNAHEAD_SAME_INSTANCE;
3157+
else
3158+
#endif
31553159
{
3160+
#if defined(HAVE_RUNAHEAD) || defined(HAVE_NETWORKING)
3161+
if (runloop_st->flags & RUNLOOP_FLAG_REQUEST_SPECIAL_SAVESTATE)
3162+
{
31563163
#ifdef HAVE_NETWORKING
3157-
if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL))
3158-
result = RETRO_SAVESTATE_CONTEXT_ROLLBACK_NETPLAY;
3159-
else
3164+
if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL))
3165+
result = RETRO_SAVESTATE_CONTEXT_ROLLBACK_NETPLAY;
3166+
else
31603167
#endif
3161-
{
3168+
{
31623169
#ifdef HAVE_RUNAHEAD
31633170
#if defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)
3164-
settings_t *settings = config_get_ptr();
3165-
if ( settings->bools.run_ahead_secondary_instance
3166-
&& (runloop_st->flags & RUNLOOP_FLAG_RUNAHEAD_SECONDARY_CORE_AVAILABLE)
3167-
&& secondary_core_ensure_exists(runloop_st, settings))
3168-
result = RETRO_SAVESTATE_CONTEXT_RUNAHEAD_SAME_BINARY;
3169-
else
3171+
settings_t *settings = config_get_ptr();
3172+
if ( settings->bools.run_ahead_secondary_instance
3173+
&& (runloop_st->flags & RUNLOOP_FLAG_RUNAHEAD_SECONDARY_CORE_AVAILABLE)
3174+
&& secondary_core_ensure_exists(runloop_st, settings))
3175+
result = RETRO_SAVESTATE_CONTEXT_RUNAHEAD_SAME_BINARY;
3176+
else
31703177
#endif
31713178
result = RETRO_SAVESTATE_CONTEXT_RUNAHEAD_SAME_INSTANCE;
31723179
#endif
3180+
}
31733181
}
3174-
}
31753182
#endif
3183+
}
31763184

31773185
if (data)
31783186
*(int*)data = result;

state_manager.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,9 @@ void state_manager_event_init(
606606

607607
state_manager_push_where(rewind_st->state, &state);
608608

609+
rewind_st->flags |= STATE_MGR_REWIND_ST_FLAG_IS_REWIND_SERIALIZE;
609610
content_serialize_state_rewind(state, rewind_st->size);
611+
rewind_st->flags &= ~STATE_MGR_REWIND_ST_FLAG_IS_REWIND_SERIALIZE;
610612

611613
state_manager_push_do(rewind_st->state);
612614
}
@@ -783,7 +785,9 @@ bool state_manager_check_rewind(
783785
void *state = NULL;
784786
state_manager_push_where(rewind_st->state, &state);
785787

788+
rewind_st->flags |= STATE_MGR_REWIND_ST_FLAG_IS_REWIND_SERIALIZE;
786789
content_serialize_state_rewind(state, rewind_st->size);
790+
rewind_st->flags &= ~STATE_MGR_REWIND_ST_FLAG_IS_REWIND_SERIALIZE;
787791

788792
state_manager_push_do(rewind_st->state);
789793
}

state_manager.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ enum state_manager_rewind_st_flags
3333
STATE_MGR_REWIND_ST_FLAG_FRAME_IS_REVERSED = (1 << 0),
3434
STATE_MGR_REWIND_ST_FLAG_INIT_ATTEMPTED = (1 << 1),
3535
STATE_MGR_REWIND_ST_FLAG_HOTKEY_WAS_CHECKED = (1 << 2),
36-
STATE_MGR_REWIND_ST_FLAG_HOTKEY_WAS_PRESSED = (1 << 3)
36+
STATE_MGR_REWIND_ST_FLAG_HOTKEY_WAS_PRESSED = (1 << 3),
37+
STATE_MGR_REWIND_ST_FLAG_IS_REWIND_SERIALIZE = (1 << 4)
3738
};
3839

3940
struct state_manager

0 commit comments

Comments
 (0)