Add EventLoop::builder, which replaces EventLoopBuilder::new
Similarly for EventLoop::with_user_event and EventLoopBuilder::with_user_event
This commit is contained in:
parent
569c44a632
commit
8862ce0163
3 changed files with 31 additions and 23 deletions
|
|
@ -111,7 +111,10 @@ Unreleased` header.
|
||||||
- **Breaking:** Add `Event::MemoryWarning`; implemented on iOS/Android.
|
- **Breaking:** Add `Event::MemoryWarning`; implemented on iOS/Android.
|
||||||
- **Breaking:** Bump `ndk` version to `0.8.0`, ndk-sys to `0.5.0`, `android-activity` to `0.5.0`.
|
- **Breaking:** Bump `ndk` version to `0.8.0`, ndk-sys to `0.5.0`, `android-activity` to `0.5.0`.
|
||||||
- **Breaking:** Change default `ControlFlow` from `Poll` to `Wait`.
|
- **Breaking:** Change default `ControlFlow` from `Poll` to `Wait`.
|
||||||
|
- Added `EventLoop::builder`, which is intended to replace the (now deprecated) `EventLoopBuilder::new`.
|
||||||
- Added `Window::builder`, which is intended to replace the (now deprecated) `WindowBuilder::new`.
|
- Added `Window::builder`, which is intended to replace the (now deprecated) `WindowBuilder::new`.
|
||||||
|
- **Breaking:** Changed the signature of `EventLoop::with_user_event` to return a builder.
|
||||||
|
- **Breaking:** Removed `EventLoopBuilder::with_user_event`, the functionality is now available in `EventLoop::with_user_event`.
|
||||||
- Make iOS `MonitorHandle` and `VideoMode` usable from other threads.
|
- Make iOS `MonitorHandle` and `VideoMode` usable from other threads.
|
||||||
- Fix window size sometimes being invalid when resizing on macOS.
|
- Fix window size sometimes being invalid when resizing on macOS.
|
||||||
- On Web, `ControlFlow::Poll` and `ControlFlow::WaitUntil` are now using the Prioritized Task Scheduling API. `setTimeout()` with a trick to circumvent throttling to 4ms is used as a fallback.
|
- On Web, `ControlFlow::Poll` and `ControlFlow::WaitUntil` are now using the Prioritized Task Scheduling API. `setTimeout()` with a trick to circumvent throttling to 4ms is used as a fallback.
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ fn main() -> Result<(), impl std::error::Error> {
|
||||||
use simple_logger::SimpleLogger;
|
use simple_logger::SimpleLogger;
|
||||||
use winit::{
|
use winit::{
|
||||||
event::{Event, WindowEvent},
|
event::{Event, WindowEvent},
|
||||||
event_loop::EventLoopBuilder,
|
event_loop::EventLoop,
|
||||||
window::Window,
|
window::Window,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -18,9 +18,7 @@ fn main() -> Result<(), impl std::error::Error> {
|
||||||
}
|
}
|
||||||
|
|
||||||
SimpleLogger::new().init().unwrap();
|
SimpleLogger::new().init().unwrap();
|
||||||
let event_loop = EventLoopBuilder::<CustomEvent>::with_user_event()
|
let event_loop = EventLoop::<CustomEvent>::with_user_event().build().unwrap();
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let window = Window::builder()
|
let window = Window::builder()
|
||||||
.with_title("A fantastic window!")
|
.with_title("A fantastic window!")
|
||||||
|
|
|
||||||
|
|
@ -57,33 +57,26 @@ pub struct EventLoopWindowTarget {
|
||||||
///
|
///
|
||||||
/// This is used to make specifying options that affect the whole application
|
/// This is used to make specifying options that affect the whole application
|
||||||
/// easier. But note that constructing multiple event loops is not supported.
|
/// easier. But note that constructing multiple event loops is not supported.
|
||||||
|
///
|
||||||
|
/// This can be created using [`EventLoop::new`] or [`EventLoop::with_user_event`].
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct EventLoopBuilder<T: 'static> {
|
pub struct EventLoopBuilder<T: 'static> {
|
||||||
pub(crate) platform_specific: platform_impl::PlatformSpecificEventLoopAttributes,
|
pub(crate) platform_specific: platform_impl::PlatformSpecificEventLoopAttributes,
|
||||||
_p: PhantomData<T>,
|
_p: PhantomData<T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static EVENT_LOOP_CREATED: AtomicBool = AtomicBool::new(false);
|
||||||
|
|
||||||
impl EventLoopBuilder<()> {
|
impl EventLoopBuilder<()> {
|
||||||
/// Start building a new event loop.
|
/// Start building a new event loop.
|
||||||
#[inline]
|
#[inline]
|
||||||
|
#[deprecated = "use `EventLoop::builder` instead"]
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self::with_user_event()
|
EventLoop::builder()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static EVENT_LOOP_CREATED: AtomicBool = AtomicBool::new(false);
|
|
||||||
|
|
||||||
impl<T> EventLoopBuilder<T> {
|
impl<T> EventLoopBuilder<T> {
|
||||||
/// Start building a new event loop, with the given type as the user event
|
|
||||||
/// type.
|
|
||||||
#[inline]
|
|
||||||
pub fn with_user_event() -> Self {
|
|
||||||
Self {
|
|
||||||
platform_specific: Default::default(),
|
|
||||||
_p: PhantomData,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Builds a new event loop.
|
/// Builds a new event loop.
|
||||||
///
|
///
|
||||||
/// ***For cross-platform compatibility, the [`EventLoop`] must be created on the main thread,
|
/// ***For cross-platform compatibility, the [`EventLoop`] must be created on the main thread,
|
||||||
|
|
@ -193,19 +186,33 @@ impl ControlFlow {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EventLoop<()> {
|
impl EventLoop<()> {
|
||||||
/// Alias for [`EventLoopBuilder::new().build()`].
|
/// Create the event loop.
|
||||||
///
|
///
|
||||||
/// [`EventLoopBuilder::new().build()`]: EventLoopBuilder::build
|
/// This is an alias of `EventLoop::builder().build()`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new() -> Result<EventLoop<()>, EventLoopError> {
|
pub fn new() -> Result<EventLoop<()>, EventLoopError> {
|
||||||
EventLoopBuilder::new().build()
|
Self::builder().build()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Start building a new event loop.
|
||||||
|
///
|
||||||
|
/// This returns an [`EventLoopBuilder`], to allow configuring the event loop before creation.
|
||||||
|
///
|
||||||
|
/// To get the actual event loop, call [`build`][EventLoopBuilder::build] on that.
|
||||||
|
#[inline]
|
||||||
|
pub fn builder() -> EventLoopBuilder<()> {
|
||||||
|
Self::with_user_event()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> EventLoop<T> {
|
impl<T> EventLoop<T> {
|
||||||
#[deprecated = "Use `EventLoopBuilder::<T>::with_user_event().build()` instead."]
|
/// Start building a new event loop, with the given type as the user event
|
||||||
pub fn with_user_event() -> Result<EventLoop<T>, EventLoopError> {
|
/// type.
|
||||||
EventLoopBuilder::<T>::with_user_event().build()
|
pub fn with_user_event() -> EventLoopBuilder<T> {
|
||||||
|
EventLoopBuilder {
|
||||||
|
platform_specific: Default::default(),
|
||||||
|
_p: PhantomData,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Runs the event loop in the calling thread and calls the given `event_handler` closure
|
/// Runs the event loop in the calling thread and calls the given `event_handler` closure
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue