diff options
Diffstat (limited to '')
| -rw-r--r-- | winit/src/application.rs | 21 | ||||
| -rw-r--r-- | winit/src/settings.rs (renamed from winit/src/settings/mod.rs) | 19 | 
2 files changed, 24 insertions, 16 deletions
| diff --git a/winit/src/application.rs b/winit/src/application.rs index b9d5fed8..d5f957bf 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -28,7 +28,13 @@ pub trait Application: Sized {      /// [`Application`]: trait.Application.html      type Message: std::fmt::Debug + Send; -    /// Initializes the [`Application`]. +    /// The data needed to initialize your [`Application`]. +    /// +    /// [`Application`]: trait.Application.html +    type Flags; + +    /// Initializes the [`Application`] with the flags provided to +    /// [`run`] as part of the [`Settings`]:      ///      /// Here is where you should return the initial state of your app.      /// @@ -38,7 +44,9 @@ pub trait Application: Sized {      /// request, etc.      ///      /// [`Application`]: trait.Application.html -    fn new() -> (Self, Command<Self::Message>); +    /// [`run`]: #method.run.html +    /// [`Settings`]: struct.Settings.html +    fn new(flags: Self::Flags) -> (Self, Command<Self::Message>);      /// Returns the current title of the [`Application`].      /// @@ -90,7 +98,7 @@ pub trait Application: Sized {          Mode::Windowed      } -    /// Runs the [`Application`]. +    /// Runs the [`Application`] with the provided [`Settings`].      ///      /// This method will take control of the current thread and __will NOT      /// return__. @@ -98,8 +106,9 @@ pub trait Application: Sized {      /// It should probably be that last thing you call in your `main` function.      ///      /// [`Application`]: trait.Application.html +    /// [`Settings`]: struct.Settings.html      fn run( -        settings: Settings, +        settings: Settings<Self::Flags>,          backend_settings: <Self::Backend as window::Backend>::Settings,      ) where          Self: 'static, @@ -123,7 +132,9 @@ pub trait Application: Sized {              Runtime::new(executor, Proxy::new(event_loop.create_proxy()))          }; -        let (mut application, init_command) = runtime.enter(Self::new); +        let flags = settings.flags; +        let (mut application, init_command) = +            runtime.enter(|| Self::new(flags));          runtime.spawn(init_command);          let subscription = application.subscription(); diff --git a/winit/src/settings/mod.rs b/winit/src/settings.rs index b2290b46..d58c51f0 100644 --- a/winit/src/settings/mod.rs +++ b/winit/src/settings.rs @@ -1,28 +1,25 @@  //! Configure your application.  #[cfg(target_os = "windows")] -#[path = "windows.rs"] +#[path = "settings/windows.rs"]  mod platform;  #[cfg(not(target_os = "windows"))] -#[path = "not_windows.rs"] +#[path = "settings/not_windows.rs"]  mod platform;  pub use platform::PlatformSpecific;  /// The settings of an application. -#[derive(Debug, Clone, Copy, PartialEq)] -pub struct Settings { +#[derive(Debug, Clone, Copy, PartialEq, Default)] +pub struct Settings<Flags> {      /// The [`Window`] settings      ///      /// [`Window`]: struct.Window.html      pub window: Window, -} -impl Default for Settings { -    fn default() -> Settings { -        Settings { -            window: Window::default(), -        } -    } +    /// The data needed to initialize an [`Application`]. +    /// +    /// [`Application`]: trait.Application.html +    pub flags: Flags,  }  /// The window settings of an application. | 
