From bbd919e70836590a246872fa8d50bac05cf607c5 Mon Sep 17 00:00:00 2001 From: Benjamin Saunders Date: Sun, 14 May 2017 11:52:30 -0700 Subject: [PATCH 1/3] Fix invalid atomic orderings --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index c65fad9..d2ef572 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -20,7 +20,7 @@ static INITIALIZED: AtomicBool = ATOMIC_BOOL_INIT; /// # Panics /// When the library has already been initialized pub fn init(ty: ApplicationType) -> Result { - if INITIALIZED.swap(true, Ordering::AcqRel) { + if INITIALIZED.swap(true, Ordering::Acquire) { panic!("OpenVR has already been initialized!"); } @@ -65,7 +65,7 @@ impl Context { impl Drop for Context { fn drop(&mut self) { unsafe { sys::VR_ShutdownInternal() } - INITIALIZED.store(false, Ordering::AcqRel); + INITIALIZED.store(false, Ordering::Release); } } From 74ed377ecb8ba98bcce960be79ec103fd1131bc8 Mon Sep 17 00:00:00 2001 From: Benjamin Saunders Date: Sun, 14 May 2017 11:52:42 -0700 Subject: [PATCH 2/3] Update nalgebra dev dependency 0.8.2 was being rejected by current rustc. --- Cargo.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 24b5fea..d16f89d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,5 +20,4 @@ openvr_sys = { git = "https://github.com/Ralith/rust-openvr-sys.git", branch = " [dev_dependencies] glium = "0.14.0" -num = "0.1.31" -nalgebra = "0.8.2" +nalgebra = "0.12" From 17c9c7fc7ab83a74b160484632dcc01b1f308110 Mon Sep 17 00:00:00 2001 From: Benjamin Saunders Date: Sun, 14 May 2017 11:59:01 -0700 Subject: [PATCH 3/3] Update README --- Readme.md | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/Readme.md b/Readme.md index fa3b502..379bb6d 100644 --- a/Readme.md +++ b/Readme.md @@ -15,11 +15,13 @@ Using rust-openvr # Requirements -When trying to start a program that uses rust-openvr you will probably get an error message because it can't find openvr.dll (or openvr.so) -You can download the latest version here (https://github.com/ValveSoftware/openvr/tree/master/bin). After downloading please add it into your project folder (also for production releases!). +openvr-sys needs cmake and a C++ compiler so that it can compile and statically link the OpenVR client library. # Building on Windows -Rust provides 2 pre-compiled version for windows. MSVC ABI and GNU ABI. OpenVR doesn't have an offical build yet for the GNU Bindung and therefore MSVC is required! For more informations about the ABI in Rust see https://www.rust-lang.org/en-US/downloads.html#win-foot + +Rust provides 2 pre-compiled version for windows. MSVC ABI and GNU ABI. The proprietary OpenVR library which is loaded +behind the scenes by the client library is MSVC only, and therefore MSVC is required! For more informations about the +ABI in Rust see https://www.rust-lang.org/en-US/downloads.html#win-foot # Initializing @@ -28,17 +30,11 @@ Rust provides 2 pre-compiled version for windows. MSVC ABI and GNU ABI. OpenVR d extern crate openvr; fn main() { - // Initialize system subsystem - let system = match openvr::init() { - Ok(sys) => sys, - Err(err) => { - println!("Could not initialize OpenVR SDK: \n\t{:?}", err); - return; - } - }; + // Initialize OpenVR + let context = openvr::init(openvr::ApplicationType::Scene).unwrap(); - // accessing other sub systems - let ext = openvr::extended_display(); + // accessing subsystems + let system = context.system().unwrap(); // .. }