diff options
author | Tomaka17 <pierre.krieger1708@gmail.com> | 2014-10-25 11:22:52 +0200 |
---|---|---|
committer | Pierre Krieger <pierre.krieger1708@gmail.com> | 2015-02-10 08:27:52 +0100 |
commit | 49e3fbdd718a31eb62c80f2a0789098303eae159 (patch) | |
tree | e8c969554a4e21b917902619ff2aa9e390de85b0 /src/lib.rs | |
parent | 9884908240af9c76a1009336b05ba500a620f3bb (diff) | |
download | glutin-49e3fbdd718a31eb62c80f2a0789098303eae159.tar.gz glutin-49e3fbdd718a31eb62c80f2a0789098303eae159.zip |
Win32: use platform-specific iterators instead
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 34 |
1 files changed, 6 insertions, 28 deletions
@@ -565,7 +565,7 @@ impl Window { /// Contrary to `wait_events`, this function never blocks. #[inline] pub fn poll_events(&self) -> PollEventsIterator { - PollEventsIterator { window: self, data: self.window.poll_events().into_iter() } + PollEventsIterator(self.window.poll_events()) } /// Returns an iterator that returns events one by one, blocking if necessary until one is @@ -574,7 +574,7 @@ impl Window { /// The iterator never returns `None`. #[inline] pub fn wait_events(&self) -> WaitEventsIterator { - WaitEventsIterator { window: self, data: self.window.wait_events().into_iter() } + WaitEventsIterator(self.window.wait_events()) } /// Sets the context as the current context. @@ -727,24 +727,13 @@ impl gl_common::GlFunctionsSource for HeadlessContext { // Implementation note: we retreive the list once, then serve each element by one by one. // This may change in the future. #[cfg(feature = "window")] -pub struct PollEventsIterator<'a> { - window: &'a Window, - data: RingBufIter<Event>, -} +pub struct PollEventsIterator<'a>(winimpl::PollEventsIterator<'a>); #[cfg(feature = "window")] impl<'a> Iterator for PollEventsIterator<'a> { type Item = Event; fn next(&mut self) -> Option<Event> { - if let Some(ev) = self.data.next() { - return Some(ev); - } - - let PollEventsIterator { window, data } = self.window.poll_events(); - self.window = window; - self.data = data; - - self.data.next() + self.0.next() } } @@ -752,24 +741,13 @@ impl<'a> Iterator for PollEventsIterator<'a> { // Implementation note: we retreive the list once, then serve each element by one by one. // This may change in the future. #[cfg(feature = "window")] -pub struct WaitEventsIterator<'a> { - window: &'a Window, - data: RingBufIter<Event>, -} +pub struct WaitEventsIterator<'a>(winimpl::WaitEventsIterator<'a>); #[cfg(feature = "window")] impl<'a> Iterator for WaitEventsIterator<'a> { type Item = Event; fn next(&mut self) -> Option<Event> { - if let Some(ev) = self.data.next() { - return Some(ev); - } - - let WaitEventsIterator { window, data } = self.window.wait_events(); - self.window = window; - self.data = data; - - self.next() + self.0.next() } } |