Made poll events loop over as many events as there may be instead of just one.
@@ -44,11 +44,14 @@ impl EventsLoop {
MonitorId
}
+
pub fn poll_events<F>(&mut self, mut callback: F)
where F: FnMut(::Event)
{
- let event = match self.event_rx.try_recv() {
- Ok(android_glue::Event::EventMotion(motion)) => {
+ while let Ok(event) = self.event_rx.try_recv() {
+
+ let e = match event{
+ android_glue::Event::EventMotion(motion) => {
Some(Event::WindowEvent {
window_id: RootWindowId(WindowId),
event: WindowEvent::Touch(Touch {
@@ -64,16 +67,16 @@ impl EventsLoop {
}),
})
},
- Ok(android_glue::Event::InitWindow) => {
+ android_glue::Event::InitWindow => {
// The activity went to foreground.
Some(Event::Suspended(false))
},
- Ok(android_glue::Event::TermWindow) => {
+ android_glue::Event::TermWindow => {
// The activity went to background.
Some(Event::Suspended(true))
},
- Ok(android_glue::Event::WindowResized) |
- Ok(android_glue::Event::ConfigChanged) => {
+ android_glue::Event::WindowResized |
+ android_glue::Event::ConfigChanged => {
// Activity Orientation changed or resized.
let native_window = unsafe { android_glue::get_native_window() };
if native_window.is_null() {
@@ -87,7 +90,7 @@ impl EventsLoop {
})
}
},
- Ok(android_glue::Event::WindowRedrawNeeded) => {
+ android_glue::Event::WindowRedrawNeeded => {
// The activity needs to be redrawn.
Some(Event::WindowEvent {
window_id: RootWindowId(WindowId),
@@ -99,9 +102,10 @@ impl EventsLoop {
}
};
- if let Some(event) = event {
+ if let Some(event) = e {
callback(event);
}
+ };
}
pub fn run_forever<F>(&mut self, mut callback: F)
