diff options
Diffstat (limited to 'winit')
| -rw-r--r-- | winit/src/application.rs | 8 | ||||
| -rw-r--r-- | winit/src/multi_window.rs | 14 | ||||
| -rw-r--r-- | winit/src/multi_window/window_manager.rs | 7 | 
3 files changed, 17 insertions, 12 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index d639a36b..c5e11167 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -106,7 +106,7 @@ pub fn run<A, E, C>(  where      A: Application + 'static,      E: Executor + 'static, -    C: Compositor<Arc<winit::window::Window>, Renderer = A::Renderer> + 'static, +    C: Compositor<Renderer = A::Renderer> + 'static,      <A::Renderer as core::Renderer>::Theme: StyleSheet,  {      use futures::task; @@ -258,7 +258,7 @@ async fn run_instance<A, E, C>(  ) where      A: Application + 'static,      E: Executor + 'static, -    C: Compositor<Arc<winit::window::Window>, Renderer = A::Renderer> + 'static, +    C: Compositor<Renderer = A::Renderer> + 'static,      <A::Renderer as core::Renderer>::Theme: StyleSheet,  {      use futures::stream::StreamExt; @@ -612,7 +612,7 @@ pub fn update<A: Application, C, E: Executor>(      messages: &mut Vec<A::Message>,      window: &winit::window::Window,  ) where -    C: Compositor<Arc<winit::window::Window>, Renderer = A::Renderer> + 'static, +    C: Compositor<Renderer = A::Renderer> + 'static,      <A::Renderer as core::Renderer>::Theme: StyleSheet,  {      for message in messages.drain(..) { @@ -663,7 +663,7 @@ pub fn run_command<A, C, E>(  ) where      A: Application,      E: Executor, -    C: Compositor<Arc<winit::window::Window>, Renderer = A::Renderer> + 'static, +    C: Compositor<Renderer = A::Renderer> + 'static,      <A::Renderer as core::Renderer>::Theme: StyleSheet,  {      use crate::runtime::command; diff --git a/winit/src/multi_window.rs b/winit/src/multi_window.rs index 84c81bea..21196460 100644 --- a/winit/src/multi_window.rs +++ b/winit/src/multi_window.rs @@ -24,6 +24,7 @@ use crate::{Clipboard, Error, Proxy, Settings};  use std::collections::HashMap;  use std::mem::ManuallyDrop; +use std::sync::Arc;  use std::time::Instant;  /// An interactive, native, cross-platform, multi-windowed application. @@ -150,9 +151,11 @@ where      log::info!("Window builder: {:#?}", builder); -    let main_window = builder -        .build(&event_loop) -        .map_err(Error::WindowCreationFailed)?; +    let main_window = Arc::new( +        builder +            .build(&event_loop) +            .map_err(Error::WindowCreationFailed)?, +    );      #[cfg(target_arch = "wasm32")]      { @@ -184,7 +187,8 @@ where          };      } -    let mut compositor = C::new(compositor_settings, Some(&main_window))?; +    let mut compositor = +        C::new(compositor_settings, Some(main_window.clone()))?;      let mut window_manager = WindowManager::new();      let _ = window_manager.insert( @@ -388,7 +392,7 @@ async fn run_instance<A, E, C>(              } => {                  let window = window_manager.insert(                      id, -                    window, +                    Arc::new(window),                      &application,                      &mut compositor,                      exit_on_close_request, diff --git a/winit/src/multi_window/window_manager.rs b/winit/src/multi_window/window_manager.rs index d54156e7..9e15f9ea 100644 --- a/winit/src/multi_window/window_manager.rs +++ b/winit/src/multi_window/window_manager.rs @@ -6,6 +6,7 @@ use crate::multi_window::{Application, State};  use crate::style::application::StyleSheet;  use std::collections::BTreeMap; +use std::sync::Arc;  use winit::monitor::MonitorHandle;  #[allow(missing_debug_implementations)] @@ -34,7 +35,7 @@ where      pub fn insert(          &mut self,          id: Id, -        window: winit::window::Window, +        window: Arc<winit::window::Window>,          application: &A,          compositor: &mut C,          exit_on_close_request: bool, @@ -43,7 +44,7 @@ where          let viewport_version = state.viewport_version();          let physical_size = state.physical_size();          let surface = compositor.create_surface( -            &window, +            window.clone(),              physical_size.width,              physical_size.height,          ); @@ -122,7 +123,7 @@ where      C: Compositor<Renderer = A::Renderer>,      <A::Renderer as crate::core::Renderer>::Theme: StyleSheet,  { -    pub raw: winit::window::Window, +    pub raw: Arc<winit::window::Window>,      pub state: State<A>,      pub viewport_version: u64,      pub exit_on_close_request: bool,  | 
