Avii revidoval tento gist 1 month ago. Přejít na revizi
1 file changed, 32 insertions
snippet.rs(vytvořil soubor)
| @@ -0,0 +1,32 @@ | |||
| 1 | + | #[unsafe(no_mangle)] | |
| 2 | + | unsafe extern "system" fn xrCreateApiLayerInstance( | |
| 3 | + | info: *const InstanceCreateInfo, | |
| 4 | + | layer_info: *const ApiLayerCreateInfo, | |
| 5 | + | instance: *mut Instance, | |
| 6 | + | ) -> openxr_sys::Result { | |
| 7 | + | let r_info: &InstanceCreateInfo = unsafe { &*info }; | |
| 8 | + | let r_layer_info: &ApiLayerCreateInfo = unsafe { &*layer_info }; | |
| 9 | + | let r_instance: &mut Instance = unsafe { &mut *instance }; | |
| 10 | + | ||
| 11 | + | let mut next_layer_info: ApiLayerCreateInfo = *r_layer_info; | |
| 12 | + | next_layer_info.next_info = unsafe { &*r_layer_info.next_info }.next; | |
| 13 | + | ||
| 14 | + | dbg!(&r_info); | |
| 15 | + | ||
| 16 | + | let Some(next_create_api_layer_instance) = | |
| 17 | + | unsafe { &*r_layer_info.next_info }.next_create_api_layer_instance | |
| 18 | + | else { | |
| 19 | + | // no can do | |
| 20 | + | eprintln!("Unable to get next_create_api_layer_instance from layer_info.next_info"); | |
| 21 | + | return openxr_sys::Result::ERROR_RUNTIME_FAILURE; | |
| 22 | + | }; | |
| 23 | + | ||
| 24 | + | let result = unsafe { next_create_api_layer_instance(r_info, &next_layer_info, r_instance) }; | |
| 25 | + | ||
| 26 | + | if result != openxr_sys::Result::SUCCESS { | |
| 27 | + | eprintln!("Next xrCreateApiLayerInstance failed: {}", result); // This gets triggerd | |
| 28 | + | return result; | |
| 29 | + | } | |
| 30 | + | ||
| 31 | + | openxr_sys::Result::SUCCESS | |
| 32 | + | } | |
Novější
Starší