@@ -446,6 +446,7 @@ pub fn entry_point() {
446446 let mut views_history = VecDeque :: new ( ) ;
447447
448448 let ( history_view_sender, history_view_receiver) = mpsc:: channel ( ) ;
449+ let mut frame_interval_sender = None ;
449450 let mut reference_space_sender = None :: < mpsc:: Sender < _ > > ;
450451
451452 let default_view = xr:: View {
@@ -667,10 +668,13 @@ pub fn entry_point() {
667668
668669 let ( sender, reference_space_receiver) = mpsc:: channel ( ) ;
669670 reference_space_sender = Some ( sender) ;
671+ let ( sender, frame_interval_receiver) = mpsc:: channel ( ) ;
672+ frame_interval_sender = Some ( sender) ;
670673
671674 streaming_input_thread = Some ( thread:: spawn ( move || {
672675 let mut deadline = Instant :: now ( ) ;
673- let frame_interval = Duration :: from_secs_f32 ( 1.0 / refresh_rate_hint) ;
676+ let mut frame_interval =
677+ Duration :: from_secs_f32 ( 1.0 / refresh_rate_hint) ;
674678
675679 while is_streaming. value ( ) {
676680 update_streaming_input ( & mut context) ;
@@ -679,7 +683,11 @@ pub fn entry_point() {
679683 context. reference_space = reference_space;
680684 }
681685
682- deadline += frame_interval / 3 ;
686+ if let Ok ( interval) = frame_interval_receiver. try_recv ( ) {
687+ frame_interval = interval;
688+ }
689+
690+ deadline += frame_interval;
683691 thread:: sleep ( deadline. saturating_duration_since ( Instant :: now ( ) ) ) ;
684692 }
685693 } ) ) ;
@@ -765,6 +773,10 @@ pub fn entry_point() {
765773 let vsync_time =
766774 Duration :: from_nanos ( frame_state. predicted_display_time . as_nanos ( ) as _ ) ;
767775
776+ if let Some ( sender) = & frame_interval_sender {
777+ sender. send ( frame_interval) . ok ( ) ;
778+ }
779+
768780 xr_frame_stream. begin ( ) . unwrap ( ) ;
769781
770782 if !frame_state. should_render {
@@ -841,7 +853,11 @@ pub fn entry_point() {
841853
842854 if !hardware_buffer. is_null ( ) {
843855 if let Some ( now) = xr_runtime_now ( & xr_instance) {
844- alvr_client_core:: report_submit ( timestamp, vsync_time. saturating_sub ( now) ) ;
856+ alvr_client_core:: report_submit (
857+ timestamp,
858+ frame_interval,
859+ vsync_time. saturating_sub ( now) ,
860+ ) ;
845861 }
846862 }
847863
0 commit comments