Skip to content

Commit 3d0cabd

Browse files
committed
player: add helper to get input time/pos
1 parent feccaa4 commit 3d0cabd

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

src/input/player.c

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,26 @@ vlc_player_input_HandleAtoBLoop(struct vlc_player_input *input, vlc_tick_t time,
761761
vlc_player_SetPosition(player, input->abloop_state[0].pos);
762762
}
763763

764+
static inline vlc_tick_t
765+
vlc_player_input_GetTime(struct vlc_player_input *input)
766+
{
767+
return input->time;
768+
}
769+
770+
static inline float
771+
vlc_player_input_GetPos(struct vlc_player_input *input)
772+
{
773+
return input->position;
774+
}
775+
776+
static void
777+
vlc_player_input_UpdateTime(struct vlc_player_input *input)
778+
{
779+
if (input->abloop_state[0].set && input->abloop_state[1].set)
780+
vlc_player_input_HandleAtoBLoop(input, vlc_player_input_GetTime(input),
781+
vlc_player_input_GetPos(input));
782+
}
783+
764784
static int
765785
vlc_player_input_Start(struct vlc_player_input *input)
766786
{
@@ -2212,9 +2232,7 @@ input_thread_Events(input_thread_t *input_thread,
22122232
vlc_player_SendEvent(player, on_position_changed,
22132233
input->time, input->position);
22142234

2215-
if (input->abloop_state[0].set && input->abloop_state[1].set)
2216-
vlc_player_input_HandleAtoBLoop(input, input->time,
2217-
input->position);
2235+
vlc_player_input_UpdateTime(input);
22182236
}
22192237
if (input->length != event->times.length)
22202238
{
@@ -2694,18 +2712,18 @@ vlc_player_GetTime(vlc_player_t *player)
26942712
{
26952713
struct vlc_player_input *input = vlc_player_get_input_locked(player);
26962714

2697-
if (!input || input->time == VLC_TICK_INVALID)
2715+
if (!input)
26982716
return VLC_TICK_INVALID;
26992717

2700-
return input->time;
2718+
return vlc_player_input_GetTime(input);
27012719
}
27022720

27032721
float
27042722
vlc_player_GetPosition(vlc_player_t *player)
27052723
{
27062724
struct vlc_player_input *input = vlc_player_get_input_locked(player);
27072725

2708-
return input ? input->position : -1.f;
2726+
return input ? vlc_player_input_GetPos(input) : -1.f;
27092727
}
27102728

27112729
static inline void
@@ -2739,7 +2757,7 @@ vlc_player_vout_OSDPosition(vlc_player_t *player,
27392757
{
27402758
if (whence == VLC_PLAYER_WHENCE_RELATIVE)
27412759
{
2742-
time += input->time; /* XXX: TOCTOU */
2760+
time += vlc_player_input_GetTime(input); /* XXX: TOCTOU */
27432761
if (time < 0)
27442762
time = 0;
27452763
}
@@ -2760,7 +2778,7 @@ vlc_player_vout_OSDPosition(vlc_player_t *player,
27602778
{
27612779
if (whence == VLC_PLAYER_WHENCE_RELATIVE)
27622780
{
2763-
position += input->position; /* XXX: TOCTOU */
2781+
position += vlc_player_input_GetPos(input); /* XXX: TOCTOU */
27642782
if (position < 0.f)
27652783
position = 0.f;
27662784
}
@@ -2775,8 +2793,10 @@ vlc_player_DisplayPosition(vlc_player_t *player)
27752793
struct vlc_player_input *input = vlc_player_get_input_locked(player);
27762794
if (!input)
27772795
return;
2778-
vlc_player_vout_OSDPosition(player, input, input->time, input->position,
2779-
VLC_PLAYER_WHENCE_ABSOLUTE);
2796+
vlc_player_vout_OSDPosition(player, input,
2797+
vlc_player_input_GetTime(input),
2798+
vlc_player_input_GetPos(input),
2799+
VLC_PLAYER_WHENCE_ABSOLUTE);
27802800
}
27812801

27822802
void

0 commit comments

Comments
 (0)