Trait events_loop::EventsLoop [−][src]
pub trait EventsLoop<Event> { fn poll_events<F>(&mut self, callback: F)
where
F: FnMut(Event); fn run<F>(&mut self, callback: F)
where
F: FnMut(Event) -> ControlFlow; fn create_proxy(&self) -> Box<EventsLoopProxy>; }
Provides a way to retrieve events from the system and from the windows that were registered to the events loop.
An EventsLoop
can be seen more or less as a "context". Calling EventsLoop::new()
initializes everything that will be required to create windows. For example on Linux creating
an events loop opens a connection to the X or Wayland server.
To wake up an EventsLoop
from a another thread, see the EventsLoopProxy
docs.
Note that the EventsLoop
cannot be shared accross threads (due to platform-dependant logic
forbiding it), as such it is neither Send
nor Sync
. If you need cross-thread access, the
Window
created from this EventsLoop
can be sent to an other thread, and the
EventsLoopProxy
allows you to wakeup an EventsLoop
from an other thread.
Required Methods
fn poll_events<F>(&mut self, callback: F) where
F: FnMut(Event),
F: FnMut(Event),
Fetches all the events that are pending, calls the callback function for each of them, and returns.
fn run<F>(&mut self, callback: F) where
F: FnMut(Event) -> ControlFlow,
F: FnMut(Event) -> ControlFlow,
Calls callback
every time an event is received. If no event is available, sleeps the
current thread and waits for an event. If the callback returns ControlFlow::Break
then
run
will immediately return.
Danger!
The callback is run after every event, so if its execution time is non-trivial the event queue may not empty at a sufficient rate. Rendering in the callback with vsync enabled will cause significant lag.
fn create_proxy(&self) -> Box<EventsLoopProxy>
Creates an EventsLoopProxy
that can be used to wake up the EventsLoop
from another
thread.