[][src]Trait events_loop::EventsLoop

pub trait EventsLoop<Event> {
    pub fn poll_events(&mut self, callback: &mut dyn FnMut(Event));
pub fn run(&mut self, callback: &mut dyn FnMut(Event) -> ControlFlow);
pub fn create_proxy(&self) -> Box<dyn 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

pub fn poll_events(&mut self, callback: &mut dyn FnMut(Event))[src]

Fetches all the events that are pending, calls the callback function for each of them, and returns.

pub fn run(&mut self, callback: &mut dyn FnMut(Event) -> ControlFlow)[src]

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.

pub fn create_proxy(&self) -> Box<dyn EventsLoopProxy>[src]

Creates an EventsLoopProxy that can be used to wake up the EventsLoop from another thread.

Loading content...

Implementors

Loading content...