diff options
author | tomaka <pierre.krieger1708@gmail.com> | 2015-01-02 09:22:27 +0100 |
---|---|---|
committer | tomaka <pierre.krieger1708@gmail.com> | 2015-01-02 09:22:27 +0100 |
commit | ebe32bb2d803bc22c4b309acbbd48f3dc2a12127 (patch) | |
tree | b2cc041b67dd54f64c6123981bffbd0201f9620a /src/win32/mod.rs | |
parent | f68bf85a85ceb416f714bc36ff5aa5c6ae65c008 (diff) | |
parent | a698146943bcd6df2a61bbfd56badf3018662709 (diff) | |
download | glutin-ebe32bb2d803bc22c4b309acbbd48f3dc2a12127.tar.gz glutin-ebe32bb2d803bc22c4b309acbbd48f3dc2a12127.zip |
Merge pull request #180 from TyOverby/event-change
Change the way that event iterators are represented.
Diffstat (limited to 'src/win32/mod.rs')
-rw-r--r-- | src/win32/mod.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/win32/mod.rs b/src/win32/mod.rs index e90f93f..75706f6 100644 --- a/src/win32/mod.rs +++ b/src/win32/mod.rs @@ -1,5 +1,6 @@ use std::sync::atomic::AtomicBool; use std::ptr; +use std::collections::RingBuf; use libc; use {CreationError, Event}; @@ -14,7 +15,7 @@ mod gl; mod init; mod monitor; -/// +/// pub struct HeadlessContext(Window); impl HeadlessContext { @@ -105,7 +106,7 @@ impl Window { } /// See the docs in the crate root file. - /// + /// /// Calls SetWindowText on the HWND. pub fn set_title(&self, text: &str) { unsafe { @@ -200,11 +201,11 @@ impl Window { /// See the docs in the crate root file. // TODO: return iterator - pub fn poll_events(&self) -> Vec<Event> { - let mut events = Vec::new(); + pub fn poll_events(&self) -> RingBuf<Event> { + let mut events = RingBuf::new(); loop { match self.events_receiver.try_recv() { - Ok(ev) => events.push(ev), + Ok(ev) => events.push_back(ev), Err(_) => break } } @@ -214,13 +215,13 @@ impl Window { use std::sync::atomic::Relaxed; self.is_closed.store(true, Relaxed); } - + events } /// See the docs in the crate root file. // TODO: return iterator - pub fn wait_events(&self) -> Vec<Event> { + pub fn wait_events(&self) -> RingBuf<Event> { match self.events_receiver.recv_opt() { Ok(ev) => { // if the received event is `Closed`, setting `is_closed` to true @@ -241,7 +242,7 @@ impl Window { Err(_) => { use std::sync::atomic::Relaxed; self.is_closed.store(true, Relaxed); - vec![] + RingBuf::new() } } } |