@@ -761,6 +761,26 @@ vlc_player_input_HandleAtoBLoop(struct vlc_player_input *input, vlc_tick_t time,
761
761
vlc_player_SetPosition (player , input -> abloop_state [0 ].pos );
762
762
}
763
763
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
+
764
784
static int
765
785
vlc_player_input_Start (struct vlc_player_input * input )
766
786
{
@@ -2212,9 +2232,7 @@ input_thread_Events(input_thread_t *input_thread,
2212
2232
vlc_player_SendEvent (player , on_position_changed ,
2213
2233
input -> time , input -> position );
2214
2234
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 );
2218
2236
}
2219
2237
if (input -> length != event -> times .length )
2220
2238
{
@@ -2694,18 +2712,18 @@ vlc_player_GetTime(vlc_player_t *player)
2694
2712
{
2695
2713
struct vlc_player_input * input = vlc_player_get_input_locked (player );
2696
2714
2697
- if (!input || input -> time == VLC_TICK_INVALID )
2715
+ if (!input )
2698
2716
return VLC_TICK_INVALID ;
2699
2717
2700
- return input -> time ;
2718
+ return vlc_player_input_GetTime ( input ) ;
2701
2719
}
2702
2720
2703
2721
float
2704
2722
vlc_player_GetPosition (vlc_player_t * player )
2705
2723
{
2706
2724
struct vlc_player_input * input = vlc_player_get_input_locked (player );
2707
2725
2708
- return input ? input -> position : -1.f ;
2726
+ return input ? vlc_player_input_GetPos ( input ) : -1.f ;
2709
2727
}
2710
2728
2711
2729
static inline void
@@ -2739,7 +2757,7 @@ vlc_player_vout_OSDPosition(vlc_player_t *player,
2739
2757
{
2740
2758
if (whence == VLC_PLAYER_WHENCE_RELATIVE )
2741
2759
{
2742
- time += input -> time ; /* XXX: TOCTOU */
2760
+ time += vlc_player_input_GetTime ( input ) ; /* XXX: TOCTOU */
2743
2761
if (time < 0 )
2744
2762
time = 0 ;
2745
2763
}
@@ -2760,7 +2778,7 @@ vlc_player_vout_OSDPosition(vlc_player_t *player,
2760
2778
{
2761
2779
if (whence == VLC_PLAYER_WHENCE_RELATIVE )
2762
2780
{
2763
- position += input -> position ; /* XXX: TOCTOU */
2781
+ position += vlc_player_input_GetPos ( input ) ; /* XXX: TOCTOU */
2764
2782
if (position < 0.f )
2765
2783
position = 0.f ;
2766
2784
}
@@ -2775,8 +2793,10 @@ vlc_player_DisplayPosition(vlc_player_t *player)
2775
2793
struct vlc_player_input * input = vlc_player_get_input_locked (player );
2776
2794
if (!input )
2777
2795
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 );
2780
2800
}
2781
2801
2782
2802
void
0 commit comments