diff options
Diffstat (limited to 'glfw/src/init.rs')
-rw-r--r-- | glfw/src/init.rs | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/glfw/src/init.rs b/glfw/src/init.rs deleted file mode 100644 index df5a989..0000000 --- a/glfw/src/init.rs +++ /dev/null @@ -1,59 +0,0 @@ -use std::ffi::c_int; -use std::ptr::null_mut; - -use crate::util::is_main_thread; -use crate::{get_glfw_error, Error}; - -/// GLFW 3.x.x is supported -static SUPPORTED_GLFW_VERSION_MAJOR: c_int = 3; - -/// Initializes GLFW and returns a initialization token. -/// -/// # Errors -/// Will return `Err` if -/// - The current thread is not the main thread -/// - A GLFW error occurs -pub fn initialize() -> Result<Glfw, Error> -{ - if !is_main_thread() { - return Err(Error::NotInMainThread); - } - - let mut major: c_int = 0; - - unsafe { crate::ffi::glfwGetVersion(&mut major, null_mut(), null_mut()) }; - - if major != SUPPORTED_GLFW_VERSION_MAJOR { - return Err(Error::UnsupportedVersion); - } - - // SAFETY: The current thread is the main thread - let success = unsafe { crate::ffi::glfwInit() }; - - if success == crate::ffi::GLFW_FALSE { - get_glfw_error()?; - } - - Ok(Glfw { _priv: &() }) -} - -/// GLFW initialization token. -#[derive(Debug)] -pub struct Glfw -{ - /// This field has two purposes - /// - To make the struct not constructable without calling [`initialize`]. - /// - To make the struct `!Send` and `!Sync`. - _priv: *const (), -} - -impl Drop for Glfw -{ - fn drop(&mut self) - { - // SAFETY: The current thread cannot be any other thread than the main thread - // since the initialize function checks it and the GLFW initialization token is - // neither Send or Sync - unsafe { crate::ffi::glfwTerminate() }; - } -} |