Struct winit::event_loop::EventLoop
source · pub struct EventLoop<T: 'static> { /* private fields */ }Expand description
Provides a way to retrieve events from the system and from the windows that were registered to the events loop.
An EventLoop can be seen more or less as a “context”. Calling EventLoop::new
initializes everything that will be required to create windows. For example on Linux creating
an event loop opens a connection to the X or Wayland server.
To wake up an EventLoop from a another thread, see the EventLoopProxy docs.
Note that this cannot be shared across threads (due to platform-dependant logic
forbidding it), as such it is neither Send nor Sync. If you need cross-thread access, the
Window created from this can be sent to an other thread, and the
EventLoopProxy allows you to wake up an EventLoop from another thread.
Implementations§
source§impl EventLoop<()>
impl EventLoop<()>
sourcepub fn new() -> EventLoop<()>
pub fn new() -> EventLoop<()>
Alias for EventLoopBuilder::new().build().
source§impl<T> EventLoop<T>
impl<T> EventLoop<T>
pub fn with_user_event() -> EventLoop<T>
EventLoopBuilder::<T>::with_user_event().build() instead.sourcepub fn run<F>(self, event_handler: F) -> !
pub fn run<F>(self, event_handler: F) -> !
Hijacks the calling thread and initializes the winit event loop with the provided
closure. Since the closure is 'static, it must be a move closure if it needs to
access any data from the calling context.
See the ControlFlow docs for information on how changes to &mut ControlFlow impact the
event loop’s behavior.
Any values not passed to this function will not be dropped.
Platform-specific
- X11 / Wayland: The program terminates with exit code 1 if the display server disconnects.
sourcepub fn create_proxy(&self) -> EventLoopProxy<T>
pub fn create_proxy(&self) -> EventLoopProxy<T>
Creates an EventLoopProxy that can be used to dispatch user events to the main event loop.
Methods from Deref<Target = EventLoopWindowTarget<T>>§
sourcepub fn available_monitors(&self) -> impl Iterator<Item = MonitorHandle>
pub fn available_monitors(&self) -> impl Iterator<Item = MonitorHandle>
Returns the list of all the monitors available on the system.
sourcepub fn primary_monitor(&self) -> Option<MonitorHandle>
pub fn primary_monitor(&self) -> Option<MonitorHandle>
Returns the primary monitor of the system.
Returns None if it can’t identify any monitor as a primary one.
Platform-specific
Wayland: Always returns None.
sourcepub fn set_device_event_filter(&self, _filter: DeviceEventFilter)
pub fn set_device_event_filter(&self, _filter: DeviceEventFilter)
Change DeviceEvent filter mode.
Since the DeviceEvent capture can lead to high CPU usage for unfocused windows, winit
will ignore them by default for unfocused windows on Linux/BSD. This method allows changing
this filter at runtime to explicitly capture them again.
Platform-specific
- Wayland / macOS / iOS / Android / Web / Orbital: Unsupported.
Trait Implementations§
source§impl<T> Deref for EventLoop<T>
impl<T> Deref for EventLoop<T>
§type Target = EventLoopWindowTarget<T>
type Target = EventLoopWindowTarget<T>
source§fn deref(&self) -> &EventLoopWindowTarget<T>
fn deref(&self) -> &EventLoopWindowTarget<T>
source§impl<T> EventLoopExtRunReturn for EventLoop<T>
impl<T> EventLoopExtRunReturn for EventLoop<T>
§type UserEvent = T
type UserEvent = T
Event::UserEvent.source§fn run_return<F>(&mut self, event_handler: F) -> i32where
F: FnMut(Event<'_, Self::UserEvent>, &EventLoopWindowTarget<Self::UserEvent>, &mut ControlFlow),
fn run_return<F>(&mut self, event_handler: F) -> i32where
F: FnMut(Event<'_, Self::UserEvent>, &EventLoopWindowTarget<Self::UserEvent>, &mut ControlFlow),
winit event loop. Read moresource§impl<T> HasRawDisplayHandle for EventLoop<T>
impl<T> HasRawDisplayHandle for EventLoop<T>
source§fn raw_display_handle(&self) -> RawDisplayHandle
fn raw_display_handle(&self) -> RawDisplayHandle
Returns a raw_window_handle::RawDisplayHandle for the event loop.