Add BSV movie flags

This commit is contained in:
LibretroAdmin 2022-10-15 14:32:26 +02:00
parent bbd6c0ae9a
commit e62abac647
5 changed files with 34 additions and 30 deletions

View File

@ -294,19 +294,22 @@ command_t* command_uds_new(void);
bool command_network_send(const char *cmd_);
#ifdef HAVE_BSV_MOVIE
enum bsv_flags
{
BSV_FLAG_MOVIE_START_RECORDING = (1 << 0),
BSV_FLAG_MOVIE_START_PLAYBACK = (1 << 1),
BSV_FLAG_MOVIE_PLAYBACK = (1 << 2),
BSV_FLAG_MOVIE_EOF_EXIT = (1 << 3),
BSV_FLAG_MOVIE_END = (1 << 4)
};
struct bsv_state
{
uint8_t flags;
/* Movie playback/recording support. */
char movie_path[PATH_MAX_LENGTH];
/* Immediate playback/recording. */
char movie_start_path[PATH_MAX_LENGTH];
bool movie_start_recording;
bool movie_start_playback;
bool movie_playback;
bool eof_exit;
bool movie_end;
};
struct bsv_movie

View File

@ -222,9 +222,9 @@ enum input_turbo_default_button
#define GET_HAT(x) (x & (~HAT_MASK))
#ifdef HAVE_BSV_MOVIE
#define BSV_MOVIE_IS_PLAYBACK_ON() (input_st->bsv_movie_state_handle && input_st->bsv_movie_state.movie_playback)
#define BSV_MOVIE_IS_PLAYBACK_OFF() (input_st->bsv_movie_state_handle && \
!input_st->bsv_movie_state.movie_playback)
#define BSV_MOVIE_IS_PLAYBACK_ON() (input_st->bsv_movie_state_handle && (input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_PLAYBACK))
#define BSV_MOVIE_IS_PLAYBACK_OFF() (input_st->bsv_movie_state_handle && (!(input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_PLAYBACK)))
#endif
RETRO_END_DECLS

View File

@ -4765,7 +4765,7 @@ void bsv_movie_frame_rewind(void)
bool bsv_movie_init(input_driver_state_t *input_st)
{
bsv_movie_t *state = NULL;
if (input_st->bsv_movie_state.movie_start_playback)
if (input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_START_PLAYBACK)
{
const char *starting_movie_str = NULL;
if (!(state = bsv_movie_init_internal(
@ -4778,8 +4778,8 @@ bool bsv_movie_init(input_driver_state_t *input_st)
return false;
}
input_st->bsv_movie_state_handle = state;
input_st->bsv_movie_state.movie_playback = true;
input_st->bsv_movie_state_handle = state;
input_st->bsv_movie_state.flags |= BSV_FLAG_MOVIE_PLAYBACK;
starting_movie_str =
msg_hash_to_str(MSG_STARTING_MOVIE_PLAYBACK);
@ -4790,7 +4790,7 @@ bool bsv_movie_init(input_driver_state_t *input_st)
return true;
}
else if (input_st->bsv_movie_state.movie_start_recording)
else if (input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_START_RECORDING)
{
char msg[8192];
const char *movie_rec_str = msg_hash_to_str(MSG_STARTING_MOVIE_RECORD_TO);
@ -4837,11 +4837,11 @@ bool bsv_movie_check(input_driver_state_t *input_st,
if (!input_st->bsv_movie_state_handle)
return runloop_check_movie_init(input_st, settings);
if (input_st->bsv_movie_state.movie_playback)
if (input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_PLAYBACK)
{
const char *movie_playback_end_str = NULL;
/* Checks if movie is being played back. */
if (!input_st->bsv_movie_state.movie_end)
if (!(input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_END))
return false;
movie_playback_end_str = msg_hash_to_str(MSG_MOVIE_PLAYBACK_ENDED);
runloop_msg_queue_push(
@ -4851,9 +4851,9 @@ bool bsv_movie_check(input_driver_state_t *input_st,
bsv_movie_deinit(input_st);
input_st->bsv_movie_state.movie_end = false;
input_st->bsv_movie_state.movie_playback = false;
input_st->bsv_movie_state.flags &= ~(
BSV_FLAG_MOVIE_END
| BSV_FLAG_MOVIE_PLAYBACK);
return true;
}
@ -5102,7 +5102,7 @@ int16_t input_driver_state_wrapper(unsigned port, unsigned device,
return swap_if_big16(bsv_result);
}
input_st->bsv_movie_state.movie_end = true;
input_st->bsv_movie_state.flags |= BSV_FLAG_MOVIE_END;
}
#endif

View File

@ -4879,9 +4879,10 @@ static bool retroarch_parse_input_and_config(
input_driver_state_t *input_st = input_state_get_ptr();
strlcpy(input_st->bsv_movie_state.movie_start_path, optarg,
sizeof(input_st->bsv_movie_state.movie_start_path));
input_st->bsv_movie_state.movie_start_playback = true;
input_st->bsv_movie_state.movie_start_recording = false;
input_st->bsv_movie_state.flags |=
BSV_FLAG_MOVIE_START_PLAYBACK;
input_st->bsv_movie_state.flags &=
~BSV_FLAG_MOVIE_START_RECORDING;
}
#endif
break;
@ -4891,9 +4892,10 @@ static bool retroarch_parse_input_and_config(
input_driver_state_t *input_st = input_state_get_ptr();
strlcpy(input_st->bsv_movie_state.movie_start_path, optarg,
sizeof(input_st->bsv_movie_state.movie_start_path));
input_st->bsv_movie_state.movie_start_playback = false;
input_st->bsv_movie_state.movie_start_recording = true;
input_st->bsv_movie_state.flags &=
~BSV_FLAG_MOVIE_START_PLAYBACK;
input_st->bsv_movie_state.flags |=
BSV_FLAG_MOVIE_START_RECORDING;
}
#endif
break;
@ -5051,8 +5053,8 @@ static bool retroarch_parse_input_and_config(
case RA_OPT_EOF_EXIT:
#ifdef HAVE_BSV_MOVIE
{
input_driver_state_t *input_st = input_state_get_ptr();
input_st->bsv_movie_state.eof_exit = true;
input_driver_state_t *input_st = input_state_get_ptr();
input_st->bsv_movie_state.flags |= BSV_FLAG_MOVIE_EOF_EXIT;
}
#endif
break;

View File

@ -306,8 +306,7 @@ struct runloop
typedef struct runloop runloop_state_t;
#ifdef HAVE_BSV_MOVIE
#define BSV_MOVIE_IS_EOF() || (input_st->bsv_movie_state.movie_end && \
input_st->bsv_movie_state.eof_exit)
#define BSV_MOVIE_IS_EOF() || (((input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_END) && (input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_EOF_EXIT)))
#else
#define BSV_MOVIE_IS_EOF()
#endif