Skip to content

Commit 549371b

Browse files
committed
Update SteamVR framerate on statistics thread, support Linux
1 parent 112984a commit 549371b

File tree

3 files changed

+20
-17
lines changed

3 files changed

+20
-17
lines changed

alvr/server/src/connection.rs

+17-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::{
22
bitrate::BitrateManager,
33
buttons::BUTTON_PATH_FROM_ID,
44
face_tracking::FaceTrackingSink,
5-
haptics,
5+
haptics, openvr_props,
66
sockets::WelcomeSocket,
77
statistics::StatisticsManager,
88
tracking::{self, TrackingManager},
@@ -24,7 +24,10 @@ use alvr_packets::{
2424
ButtonValue, ClientConnectionResult, ClientControlPacket, ClientListAction, ClientStatistics,
2525
ServerControlPacket, StreamConfigPacket, Tracking, AUDIO, HAPTICS, STATISTICS, TRACKING, VIDEO,
2626
};
27-
use alvr_session::{CodecType, ControllersEmulationMode, FrameSize, OpenvrConfig};
27+
use alvr_session::{
28+
CodecType, ControllersEmulationMode, FrameSize, OpenvrConfig, OpenvrPropValue,
29+
OpenvrPropertyKey,
30+
};
2831
use alvr_sockets::{
2932
spawn_cancelable, ControlSocketReceiver, ControlSocketSender, PeerType, ProtoControlSocket,
3033
StreamSocketBuilder, KEEPALIVE_INTERVAL,
@@ -612,8 +615,8 @@ async fn connection_pipeline(
612615
crate::SetOpenvrProperty(
613616
*alvr_common::HEAD_ID,
614617
crate::openvr_props::to_ffi_openvr_prop(
615-
alvr_session::OpenvrPropertyKey::AudioDefaultPlaybackDeviceId,
616-
alvr_session::OpenvrPropValue::String(id),
618+
OpenvrPropertyKey::AudioDefaultPlaybackDeviceId,
619+
OpenvrPropValue::String(id),
617620
),
618621
)
619622
}
@@ -636,8 +639,8 @@ async fn connection_pipeline(
636639
crate::SetOpenvrProperty(
637640
*alvr_common::HEAD_ID,
638641
crate::openvr_props::to_ffi_openvr_prop(
639-
alvr_session::OpenvrPropertyKey::AudioDefaultPlaybackDeviceId,
640-
alvr_session::OpenvrPropValue::String(id),
642+
OpenvrPropertyKey::AudioDefaultPlaybackDeviceId,
643+
OpenvrPropValue::String(id),
641644
),
642645
)
643646
}
@@ -661,8 +664,8 @@ async fn connection_pipeline(
661664
crate::SetOpenvrProperty(
662665
*alvr_common::HEAD_ID,
663666
crate::openvr_props::to_ffi_openvr_prop(
664-
alvr_session::OpenvrPropertyKey::AudioDefaultRecordingDeviceId,
665-
alvr_session::OpenvrPropValue::String(id),
667+
OpenvrPropertyKey::AudioDefaultRecordingDeviceId,
668+
OpenvrPropValue::String(id),
666669
),
667670
)
668671
}
@@ -900,6 +903,12 @@ async fn connection_pipeline(
900903
network_latency,
901904
decoder_latency,
902905
);
906+
907+
openvr_props::set_prop(
908+
*HEAD_ID,
909+
OpenvrPropertyKey::DisplayFrequency,
910+
OpenvrPropValue::Float(1.0 / stats.frame_interval_average().as_secs_f32()),
911+
);
903912
}
904913
}
905914
}

alvr/server/src/lib.rs

+2-8
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ use alvr_common::{
2828
once_cell::sync::{Lazy, OnceCell},
2929
parking_lot::{Mutex, RwLock},
3030
prelude::*,
31-
RelaxedAtomic, HEAD_ID,
31+
RelaxedAtomic,
3232
};
3333
use alvr_events::EventType;
3434
use alvr_filesystem::{self as afs, Layout};
3535
use alvr_packets::{
3636
ClientListAction, DecoderInitializationConfig, Haptics, ServerControlPacket, VideoPacketHeader,
3737
};
3838
use alvr_server_io::ServerDataManager;
39-
use alvr_session::{CodecType, OpenvrPropValue, OpenvrPropertyKey};
39+
use alvr_session::CodecType;
4040
use bitrate::BitrateManager;
4141
use statistics::StatisticsManager;
4242
use std::{
@@ -480,12 +480,6 @@ pub unsafe extern "C" fn HmdDriverFactory(
480480

481481
extern "C" fn wait_for_vsync() {
482482
if let Some(stats) = &mut *STATISTICS_MANAGER.lock() {
483-
openvr_props::set_prop(
484-
*HEAD_ID,
485-
OpenvrPropertyKey::DisplayFrequency,
486-
OpenvrPropValue::Float(1.0 / stats.get_frame_interval().as_secs_f32()),
487-
);
488-
489483
thread::sleep(stats.duration_until_next_vsync());
490484
}
491485
}

alvr/server/src/statistics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ impl StatisticsManager {
293293
.saturating_sub(self.total_pipeline_latency_average.get_average())
294294
}
295295

296-
pub fn get_frame_interval(&self) -> Duration {
296+
pub fn frame_interval_average(&self) -> Duration {
297297
self.predicted_frame_interval_average.get_average()
298298
}
299299

0 commit comments

Comments
 (0)