@@ -3,12 +3,14 @@ use std::{os::raw::c_char, sync::Mutex};
3
3
use crate :: {
4
4
driver_context:: { try_init_driver_context, DRIVER_CONTEXT } ,
5
5
factory:: { get_hmd_driver_factory, TOKIO_RUNTIME } ,
6
+ log:: try_init_driver_log,
6
7
setting,
7
8
settings:: Setting ,
8
9
try_vr,
9
10
} ;
10
11
use cppvtbl:: { impl_vtables, HasVtable , VtableRef , WithVtables } ;
11
12
use once_cell:: sync:: Lazy ;
13
+ use openvr:: { IVRDriverLogVtable , IVRDriverLog_Version } ;
12
14
use tokio:: task:: LocalSet ;
13
15
use tracing:: info;
14
16
use valve_pm:: { start_manager, StationCommand , StationControl , StationState } ;
@@ -36,8 +38,13 @@ impl IServerTrackedDeviceProvider for ServerTrackedProvider {
36
38
& self ,
37
39
pDriverContext : * const cppvtbl:: VtableRef < IVRDriverContextVtable > ,
38
40
) -> EVRInitError {
39
- let _ = try_init_driver_context ( unsafe { & * pDriverContext } ) ;
41
+ try_init_driver_context ( unsafe { & * pDriverContext } ) ;
40
42
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 } ) ;
41
48
42
49
let power_management = POWER_MANAGEMENT . get ( ) ;
43
50
* self . standby_state . lock ( ) . expect ( "lock" ) = match power_management {
@@ -56,8 +63,8 @@ impl IServerTrackedDeviceProvider for ServerTrackedProvider {
56
63
break ' stations;
57
64
}
58
65
let Ok ( manager) = TOKIO_RUNTIME . block_on ( start_manager ( ) ) else {
59
- break ' stations;
60
- } ;
66
+ break ' stations;
67
+ } ;
61
68
let stations: Vec < _ > = stations
62
69
. iter ( )
63
70
. filter_map ( |line| {
0 commit comments