diff options
author | tomaka <pierre.krieger1708@gmail.com> | 2014-10-24 12:31:33 +0200 |
---|---|---|
committer | tomaka <pierre.krieger1708@gmail.com> | 2014-10-24 12:31:33 +0200 |
commit | 2c9eaf86512a77da5f20acc87d9c5cd949078a85 (patch) | |
tree | 9afb2be42ba29021699d5b2611be0cd4e11e53cb /src/x11/window/mod.rs | |
parent | fe8646c55681d6ecbd290010ab702f8f0feecc00 (diff) | |
parent | 97c471dc05b2b9c928758ae23f2f8cafd9d36dda (diff) | |
download | glutin-2c9eaf86512a77da5f20acc87d9c5cd949078a85.tar.gz glutin-2c9eaf86512a77da5f20acc87d9c5cd949078a85.zip |
Merge pull request #65 from glennw/x-threads
Add an interface for providing system wide initialization options to the windowing system.
Diffstat (limited to 'src/x11/window/mod.rs')
-rw-r--r-- | src/x11/window/mod.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/x11/window/mod.rs b/src/x11/window/mod.rs index 3d69a3e..99cbf9d 100644 --- a/src/x11/window/mod.rs +++ b/src/x11/window/mod.rs @@ -3,12 +3,23 @@ use libc; use std::{mem, ptr}; use std::sync::atomic::AtomicBool; use super::ffi; +use sync::one::{Once, ONCE_INIT}; pub use self::monitor::{MonitorID, get_available_monitors, get_primary_monitor}; mod events; mod monitor; +static THREAD_INIT: Once = ONCE_INIT; + +fn ensure_thread_init() { + THREAD_INIT.doit(|| { + unsafe { + ffi::XInitThreads(); + } + }); +} + pub struct Window { display: *mut ffi::Display, window: ffi::Window, @@ -24,6 +35,7 @@ pub struct Window { impl Window { pub fn new(builder: WindowBuilder) -> Result<Window, String> { + ensure_thread_init(); let dimensions = builder.dimensions.unwrap_or((800, 600)); // calling XOpenDisplay |