@@ -3,12 +3,14 @@ use std::{os::raw::c_char, sync::Mutex};
33use crate :: {
44 driver_context:: { try_init_driver_context, DRIVER_CONTEXT } ,
55 factory:: { get_hmd_driver_factory, TOKIO_RUNTIME } ,
6+ log:: try_init_driver_log,
67 setting,
78 settings:: Setting ,
89 try_vr,
910} ;
1011use cppvtbl:: { impl_vtables, HasVtable , VtableRef , WithVtables } ;
1112use once_cell:: sync:: Lazy ;
13+ use openvr:: { IVRDriverLogVtable , IVRDriverLog_Version } ;
1214use tokio:: task:: LocalSet ;
1315use tracing:: info;
1416use valve_pm:: { start_manager, StationCommand , StationControl , StationState } ;
@@ -36,8 +38,13 @@ impl IServerTrackedDeviceProvider for ServerTrackedProvider {
3638 & self ,
3739 pDriverContext : * const cppvtbl:: VtableRef < IVRDriverContextVtable > ,
3840 ) -> EVRInitError {
39- let _ = try_init_driver_context ( unsafe { & * pDriverContext } ) ;
41+ try_init_driver_context ( unsafe { & * pDriverContext } ) ;
4042 let context = DRIVER_CONTEXT . get ( ) . expect ( "context just initialized" ) ;
43+ let logger: * const cppvtbl:: VtableRef < IVRDriverLogVtable > = context
44+ . get_generic_interface ( IVRDriverLog_Version )
45+ . expect ( "always able to initialize driver log" )
46+ . cast ( ) ;
47+ try_init_driver_log ( unsafe { & * logger } ) ;
4148
4249 let power_management = POWER_MANAGEMENT . get ( ) ;
4350 * self . standby_state . lock ( ) . expect ( "lock" ) = match power_management {
@@ -56,8 +63,8 @@ impl IServerTrackedDeviceProvider for ServerTrackedProvider {
5663 break ' stations;
5764 }
5865 let Ok ( manager) = TOKIO_RUNTIME . block_on ( start_manager ( ) ) else {
59- break ' stations;
60- } ;
66+ break ' stations;
67+ } ;
6168 let stations: Vec < _ > = stations
6269 . iter ( )
6370 . filter_map ( |line| {
0 commit comments